From c8ba35e268f17d633874bdffe135d9fc6d4c2216 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Wed, 11 Mar 2026 16:55:46 -0700 Subject: [PATCH 01/31] Gracefully handle plugin init failures (#424) Co-authored-by: Claude Opus 4.6 --- crates-tauri/yaak-app/src/lib.rs | 8 +++--- crates-tauri/yaak-app/src/plugins_ext.rs | 9 ++++++- crates/yaak-plugins/src/manager.rs | 19 +++++++++----- src-web/lib/initGlobalListeners.tsx | 33 ++++++++++++++++++++++++ src-web/lib/tauri.ts | 1 + 5 files changed, 59 insertions(+), 11 deletions(-) diff --git a/crates-tauri/yaak-app/src/lib.rs b/crates-tauri/yaak-app/src/lib.rs index 23da70a3..966c692b 100644 --- a/crates-tauri/yaak-app/src/lib.rs +++ b/crates-tauri/yaak-app/src/lib.rs @@ -1383,13 +1383,12 @@ async fn cmd_reload_plugins( app_handle: AppHandle, window: WebviewWindow, plugin_manager: State<'_, PluginManager>, -) -> YaakResult<()> { +) -> YaakResult> { let plugins = app_handle.db().list_plugins()?; let plugin_context = PluginContext::new(Some(window.label().to_string()), window.workspace_id()); - let _errors = plugin_manager.initialize_all_plugins(plugins, &plugin_context).await; - // Note: errors are returned but we don't show toasts here since this is a manual reload - Ok(()) + let errors = plugin_manager.initialize_all_plugins(plugins, &plugin_context).await; + Ok(errors) } #[tauri::command] @@ -1731,6 +1730,7 @@ pub fn run() { git_ext::cmd_git_rm_remote, // // Plugin commands + plugins_ext::cmd_plugin_init_errors, plugins_ext::cmd_plugins_install_from_directory, plugins_ext::cmd_plugins_search, plugins_ext::cmd_plugins_install, diff --git a/crates-tauri/yaak-app/src/plugins_ext.rs b/crates-tauri/yaak-app/src/plugins_ext.rs index 143ae769..714d7948 100644 --- a/crates-tauri/yaak-app/src/plugins_ext.rs +++ b/crates-tauri/yaak-app/src/plugins_ext.rs @@ -198,6 +198,13 @@ pub async fn cmd_plugins_uninstall( Ok(delete_and_uninstall(plugin_manager, &query_manager, &plugin_context, plugin_id).await?) } +#[command] +pub async fn cmd_plugin_init_errors( + plugin_manager: State<'_, PluginManager>, +) -> Result> { + Ok(plugin_manager.take_init_errors().await) +} + #[command] pub async fn cmd_plugins_updates( app_handle: AppHandle, @@ -306,7 +313,7 @@ pub fn init() -> TauriPlugin { dev_mode, ) .await - .expect("Failed to initialize plugins"); + .expect("Failed to start plugin runtime"); app_handle_clone.manage(manager); }); diff --git a/crates/yaak-plugins/src/manager.rs b/crates/yaak-plugins/src/manager.rs index 26400e63..91d02a59 100644 --- a/crates/yaak-plugins/src/manager.rs +++ b/crates/yaak-plugins/src/manager.rs @@ -50,6 +50,8 @@ pub struct PluginManager { vendored_plugin_dir: PathBuf, pub(crate) installed_plugin_dir: PathBuf, dev_mode: bool, + /// Errors from plugin initialization, retrievable once via `take_init_errors`. + init_errors: Arc>>, } /// Callback for plugin initialization events (e.g., toast notifications) @@ -93,6 +95,7 @@ impl PluginManager { vendored_plugin_dir, installed_plugin_dir, dev_mode, + init_errors: Default::default(), }; // Forward events to subscribers @@ -183,17 +186,21 @@ impl PluginManager { let init_errors = plugin_manager.initialize_all_plugins(plugins, plugin_context).await; if !init_errors.is_empty() { - let joined = init_errors - .into_iter() - .map(|(dir, err)| format!("{dir}: {err}")) - .collect::>() - .join("; "); - return Err(PluginErr(format!("Failed to initialize plugin(s): {joined}"))); + for (dir, err) in &init_errors { + warn!("Plugin failed to initialize: {dir}: {err}"); + } + *plugin_manager.init_errors.lock().await = init_errors; } Ok(plugin_manager) } + /// Take any initialization errors, clearing them from the manager. + /// Returns a list of `(plugin_directory, error_message)` pairs. + pub async fn take_init_errors(&self) -> Vec<(String, String)> { + std::mem::take(&mut *self.init_errors.lock().await) + } + /// Get the vendored plugin directory path (resolves dev mode path if applicable) pub fn get_plugins_dir(&self) -> PathBuf { if self.dev_mode { diff --git a/src-web/lib/initGlobalListeners.tsx b/src-web/lib/initGlobalListeners.tsx index 796c4234..1df5d723 100644 --- a/src-web/lib/initGlobalListeners.tsx +++ b/src-web/lib/initGlobalListeners.tsx @@ -123,6 +123,39 @@ export function initGlobalListeners() { console.log('Got plugin updates event', payload); showPluginUpdatesToast(payload); }); + + // Check for plugin initialization errors + invokeCmd<[string, string][]>('cmd_plugin_init_errors').then((errors) => { + for (const [dir, message] of errors) { + const dirBasename = dir.split('/').pop() ?? dir; + showToast({ + id: `plugin-init-error-${dirBasename}`, + color: 'warning', + timeout: null, + message: ( + +

Plugin failed to load

+

+ {dirBasename}: {message} +

+
+ ), + action: ({ hide }) => ( + + ), + }); + } + }); } function showUpdateInstalledToast(version: string) { diff --git a/src-web/lib/tauri.ts b/src-web/lib/tauri.ts index b8946752..df37d0d1 100644 --- a/src-web/lib/tauri.ts +++ b/src-web/lib/tauri.ts @@ -42,6 +42,7 @@ type TauriCmd = | 'cmd_new_child_window' | 'cmd_new_main_window' | 'cmd_plugin_info' + | 'cmd_plugin_init_errors' | 'cmd_reload_plugins' | 'cmd_render_template' | 'cmd_save_response' From b83d9e676593783477be993e98ca3923f56a73db Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 13 Mar 2026 06:33:20 -0700 Subject: [PATCH 02/31] Vite 8 upgrade --- .../yaak-templates/pkg/yaak_templates_bg.wasm | Bin 66127 -> 65788 bytes src-web/package.json | 10 +++++----- src-web/vite.config.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/yaak-templates/pkg/yaak_templates_bg.wasm b/crates/yaak-templates/pkg/yaak_templates_bg.wasm index 716adf950cac0f4673cc16fdcd372f273e730aa0..11bc3ada51ea7d8d8484e071bb3fd0669b627c02 100644 GIT binary patch delta 10933 zcma)C3w%`7(ZA>JX0yrWaTD^`yzed{YzUA9l1+G;i#+9xia=2a5R`=gf$$O}p+p7c z5g39z0t5j?1bJ+Dv|>$LzF%#dDy@9|te;g>DyR|Bq9UMt|2cO9i*K zWShu%i^E|Hw>WGe7E4$N{%jVys1~Tj#gu93(%ly|yL8UnvI&)C<+Ep$R+cH#W9H2) zn>)F5b`Wkx%!COGCQX|;<d+m=4N=ia`HnKe6X}uA9FRN{diri8 zU1_Ji_HKju;lg-xRTEaHb*JjEXa6OgKO;O&{L2w&kVgv~Sz;J%cZ@`P$q|P(B;p~o z4@Z0zS1%lDiEcHXtgfzJ*gsOyZQ4MZ6j>pL(3!~jmhO=XEejh#+oE#Ccl4*IG_)Dv zxs)88ghdrZw-Wn!SbO^g$mR~qj^yFA__M$rEFp~=$}UKb?Hc83LIRqA1|Vm-A<_>CAxe@%E46M84k z5*O%|#Ct_EeVynR=ja7zvE#kQCdKDgbc=D0K6QH1TaJ|sjkN1Zq-rQ0^}?|dx6+UM zj~QyE(M-8XZ)3V8xe?P(Bo7Kq55j%R@jftT0TCRF^$MnsQ-8VA@tckr}q-fPdxv2?Nq$YbjpF2m$pE(&~MUS16-Y66KyIGdQ*Wm8AD)@i5bZq%*9<1w^nB} zR|nM1<=N!&c4w4zVXd(x!y}4~8QN!|F3?k2mp-9jpdiUA?42dw_cA8NIJ# zHNvCX-C@{KuZk{=Bu!I&92=s;4F{)qRdm=2ChIF;Ew`$fHtBhTR)7#2j@ZzZ;gJHC z)oorCShn$v46nNCI5Q3Ls_!&15av}+O8`{O3`nc7^?%_?t7?IBdDSZte@?Z43=(p;AK>k_|0;!T?C5?^za`P53hNmC=?RT95R!Y0is32%`224@h_1_{^8fxT4f zPNW)lY}Ibr-!I4ZOZY?(+$iBjiEj#mPfGZt#J>>)pOWw?i9a0#H%qu#;@=5^&t%HZ z898t^2!2n(?@9ax>elvDm9hI6o8S;{sZlTC-4fm};S&-zY4%IFQR16|Xc{GaQsUnT zqB$wyQxbnVh~|`pn2&Fs$2*XdlOqVl4Ez5iD>psBBWdXHw|O zbmXToa8jRP_qh?qaByAKLk)pMU}fL)86H5Gh+Hkas#@>apy63kn@$=edd+u~B0w?w%u0p2S5=cvAYK?2MP(}6LBxREKOjjzz! z>@>T~mMqcXNj5W@fyK2@uBUx8(hfEdY9MoX;F+#52Pa)-L1;q z110YsY!KKzQ2k{0YL1sgSU8nHlH}CN1cEH)bWUe-^RX z;*iWNL*?NCU^=_mU6;Jbc7~c1Z3IPi_?>OT27smh|LyPxTj*{HD>NcEo{o3Q@wen3 z7VT?Hq(hI=Bcak|o?5Cn^awq|u=w;gFfe22RM+zbM+HuFyS7WXBO`?#0!Kn|Vb>kn zB0U5Lzf0wp=CVfE9T;_DR2xqp6g(ux`-=*{!b$GWF3Pls@ieUa%7kHRAa{py3Rebj zs@H~6Mel4%=+P+y#R(G_A8~zT)mposaMyxzX;P1McPok#{pmfE?piV>(xhH(!@EbS z@I>8*f@p0oRC{#1*Y3NkG)4@iKlFYTWKZ353`Iz<60e-%rF|tXK+PrN+L%Sj?ThJV z?694Z_Vd4Q9I@CM86M%^*sn!I92JIeS)qi`cKO!~Fi`sVPY+bN0(yH;Pqf;7^U$6i z=%nrUy(ONenS;B*f_n$QZ4n!3$?#mUn)VORj^D=dV~4HfNytrvwwgX0t~ zcN8DQR9Ca*3{~4m?h!nB)QG@j-l*Fq*N)J|Haa{a9fD4e$OEkynI1bjB21QDMvWN6 z1)esV@<%3%(KKXa1_;wfwTtwyL)5V#D|FaCG6!t_FfuK18_E%vKqO*I)u8!524;4F zh>@dm%(WB;)G>7epLL`36uHVgA69c3sj@+efOkarw0vqF)gD@09_5C##QR6zW?5P@ zV1U2r{!ljS8xOEqLmpg!_K64oZd_UUYgLi@JV^56N^`4#ismeYgXgw%#f7q&uJ{0u z=}HDA%V7yfxiXoW*%uk~SPAEU3?l=&twSTFN?^$)7GRgkW1P-HjO;)zYx0*E0{0}%14m^| z_xnp)IRRu$qo0;fcd3W`^uqLGg(r9%9&Ps-hx|>jkkKSxngeD)Iy)#_p(dw8e!d5o z4A#v!nueL!FHtews{%C7u9Ga@=T%SA?BBL9(4pp_%ip)d6}60!Mr3~=Dweol6;fN z5VzoxU6LY=g0%B|PF6$b_Yirsa=zO&8Z6nJ3ycl5SVIn0RNyme7;ZwN4W{P#X-Ngl zLO1JwK$(#1G%u{`f+3tothlF2r=f8R%5f`wV?j^nFc=0!TJ=J&>f{dsVK^zRK5ZDK zE*u1ssS96)Te%mNB%2|^_f)H4sW2>NL_(<+TC%8bYt+h+xJ-Xq6cn|RChYNEH!CC| zD%ST?N$JbwDG?_Q;=2Oe1>1ds5^5e%S8SpAH3QU|!}NMh8o$;pcMhmI ze4D@^w*S8oDGS`aN2oQ zO}F+DMQSR%I`Tjt{VAgn=mRxH77uCwtKmWVapH|D!X-W(r_tf3mN@EVgo7FOr}*i1 zg`6j=d{L^Ra_wrU-4({jC*rJM^PW8NCn74n}EU1%cIr<2*D7z0>_vQz}Q$5FN5Ys z1f7akju-b(-Ab>6r^>Xx!B2l(ncWRiaE#)9Ct34x4xYf^DkeGdw*|>amkG=c*ELfh z6+bg2su_oekG~zU=nJ&(na*MO!lGLd?HBwXJ`*eS-TO*O;KXJB>19x^d$M zvWuw9Rd(;AHmk;~cvYTiUkZ`Te5~44;R{x%gYsZQK68hP?C)9?G^zOP@ z@ka$DB8PD#3Y>RVBSPCpkE~B~RwL^8eu^yNRXGx&U#8;NK>NremeOnMmx=9k4;3WK zlfxE)D8>yS!fgxGcsA6Ct0`67ns6^AZfGY8sn-T4rjFk5pQcjNhW_Frh1R*mmy})S zLEST|t{8RCvvr+QzJ9q0zN5ofR!EHrSMdFYdy4TDovABKs5OsokGdDz6v%3O{gkn> z=ur&uQIF)S<1U3QVK2lN7r9$Xw#6QB0bOKUOi$s$CJ(ERmKBay^`MU#sd$~m9g5>d zdX5f+(`Q`Zd(||0ZDXg7<-lM(Xu^uRJ15ivhY1PKjmK#>_qkqZ4?mZV_Vjbk_IyMt zsCM0|=H(2d$iMko>Wp*!kZeELl#1B9zG)cv4c^=j z?Yhm(`_SfA-p)IDr{2!{%gy(w4XY_{OO`06hqk0;tQLH0u;LQK7dTglTB7rZH5|OE zJdaQV35*JFkHO`s~(K|rr;P!HQrbYWDW>YLBQ~3G&rp- zTZ?0NgO)RxYGyFiP-*AZj8c^SL&~7dxISIm<_8u?6-8Lpf;fuOF_w^91TBa?GVlGmlNmr5ug+?cLStP1JY$ z6KQoQ9U&1mwSd}+j_S~kqCCQ-dKbOFefxi;D5N)cBsrfJ3Nul4KCN{XUszdBB=Q?O z1|;>w2m;n>2)=#;vdj3z=!Ax9QAcMR;_NJwa|2y(*n$5j$XbtUBAL42k9Bl#XGTml z!O~r{J&=YW6&ya;*UgA=_8 z4LU8|J$=BLjZN4%7=#Z2_UFuYW}Oe5B%Fvod&Jhp8E$+Y!T#w2 z6$qnH0pK4C450)7m0BtD3MvHn5t0xV1K1Jmpp^&Op+-G;pc6fNpe;`9g9rM?*6%YH zBsh5Du)SR<5RRc z_`A5k&Ajq5LC)IG%$D6h{ZR5yT5^1xE|RcyZEX+%9_RaFIAfzdD@bd`xlV znBIpn5#9%lnWPViBRQf!x9g8MY4(wJ-I16a?44kSJZLgzT0Z2oI^njUZ%er-IV6$1y{!q9=}ZLG5$s*vM=wH3lNNVnTyd zt^p$tXXp-_#YW3uGhPCIce9F4j4$ZXv$=~1vE**`z-p8;$4U* z3eSzepB6^Pe?3g~gi+{kzEumt>Beue#6rsYZQHPha7|$uduh~f2Uop^9*h49Z(io_ zz>pU-1p;^_>3AaWu&x<+bUZFR{Ks4v&ueRoClgOQJXv@&JUrGOj|WdS9$oC-rcbyKu`8YMbX``ICj)X@gYErrML^}Ughp-XoCV*-xC7(`7u0byr zy>z^JRWO45i%9SfKYc`mWoy;UhAGXdcEiY5z+AJz9oqqGD zL~}bYD4km_E{%u7jil;tq*>>3>5m_4qL+jm=QOqVNSb|4r(Wms@%>=dxqCzj)qa&nADq*KL6^?;&FT~V zlV42Td*_d+`nEE0(bj)xYQJ94BZHd%ksjOsCqKa&aEr3nCz?8NAeCHBqQ^eTRR>K9 zvRkgWPimNRUK4|<=lNW9NHO$Gpx4gFQr&q?9opJ;<0IbL^8>|j%DzyH|AS4sP$Wju zmJ5Sv^M#%IyRXso zswG){Xb^pPUZ>hCA#~~eC|dPdf;#37lo(4FKN}P_&Q@MlKDm7M_{&iF6ltk3(X z58p}r2>tN+gX)B0xjnuXw>oh;7CQotk%F7n)s|v0iMoE#L7jXrRh&(r?f(-+%fHAF zQ)t&0g=*O_c#VtJex%XKA0o+lQB$Yhfr@|h&Y!V8))9+Kp)nU@Q0n+Dc2<2E^!JMy zw(05ovpCvuF@@f}=vK?;VGlAW?aR^eGh>5(>o&(U$}ISUhYo$|6tksgeE+2;DkRkX zk|yRzXfdF<5;_T}QbIofnkS*&Uuj~#gsK27091mM_2;i9s*AeO?9bC^#Mi0faiBd^ z_q9`9+=c#ptqtw?C_1LNYnOte!YkM_)x z5t#Q~PrC8Xc(p1E>&_C@)cf)n%QDeQnM8lQtXX~@)Yrbz#By?dlVhpD_aEc)bSnQQ zQ9Mb%_@*uG#n@ATy5gqv#W(q41!a8O&$1H#b!CUG{_vOGm%$frI_4Z?i&H zi(3kfw5&l)^PX<`F4eMDWK;dy$(mlau(E8<%sFLK^|_BtE3c)uuDL1Xie^~{f??tg zg7wtrN{)p@zkp-5vups@fRX53OsvC1*5C2HBV?oS-84vVD*ryg@?6l&P59`LceOih z{wSW(u4-a4b-wzTWlIphSApG1%~#Vb^#QKo*Bq8@u#lPNT=+^h>{@%v4$+SN%Q0u( z+{y{FOJ`1-+(6r}<%ylN`G*pE^ID;3AFyedWw+=o;nmkQv4^%_?Y_?Mi<}ci(igDal>ml0%gDaER){75rbco_6w+y7&~F^W3%SXm||)>VSblJfw;|x uuOL^AHyQW+i`WTiWqUc?oYyFIbkmAc!Ch!#Qy<%B}}dW delta 10712 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 PxZ}F|ZL0U!tz7oMxduHm diff --git a/src-web/package.json b/src-web/package.json index a0129314..1d28f08f 100644 --- a/src-web/package.json +++ b/src-web/package.json @@ -87,17 +87,17 @@ "@types/react-syntax-highlighter": "^15.5.13", "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^3.0.2", - "@vitejs/plugin-react": "^4.6.0", + "@vitejs/plugin-react": "^6.0.0", "autoprefixer": "^10.4.21", "decompress": "^4.2.1", "internal-ip": "^8.0.0", "postcss": "^8.5.6", "postcss-nesting": "^13.0.2", "tailwindcss": "^3.4.17", - "vite": "^7.0.8", - "vite-plugin-static-copy": "^3.1.2", - "vite-plugin-svgr": "^4.3.0", - "vite-plugin-top-level-await": "^1.5.0", + "vite": "^8.0.0", + "vite-plugin-static-copy": "^3.3.0", + "vite-plugin-svgr": "^4.5.0", + "vite-plugin-top-level-await": "^1.6.0", "vite-plugin-wasm": "^3.5.0" } } diff --git a/src-web/vite.config.ts b/src-web/vite.config.ts index 857f182b..fa49644c 100644 --- a/src-web/vite.config.ts +++ b/src-web/vite.config.ts @@ -42,7 +42,7 @@ export default defineConfig(async () => { sourcemap: true, outDir: '../dist', emptyOutDir: true, - rollupOptions: { + rolldownOptions: { output: { // Make chunk names readable chunkFileNames: 'assets/chunk-[name]-[hash].js', From 6cc47bea3827721f1694c3617be9a3d2987c1be3 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 13 Mar 2026 06:46:27 -0700 Subject: [PATCH 03/31] Fixes for wasm --- .npmrc | 2 + package-lock.json | 1056 ++++++++++++++--- .../importer-postman-environment/src/index.ts | 2 - src-web/package.json | 1 + 4 files changed, 876 insertions(+), 185 deletions(-) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..dc68961c --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +# vite-plugin-wasm has not yet declared Vite 8 in its peerDependencies +legacy-peer-deps=true diff --git a/package-lock.json b/package-lock.json index 61ec4464..127cb9c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -185,7 +185,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -195,7 +195,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -226,7 +226,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -236,7 +236,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", @@ -253,7 +253,7 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.2", @@ -270,7 +270,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -280,7 +280,7 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -290,7 +290,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -304,7 +304,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", @@ -332,7 +332,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -351,7 +351,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -361,7 +361,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", @@ -375,7 +375,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.5" @@ -419,38 +419,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", @@ -464,7 +432,7 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -479,7 +447,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -498,7 +466,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -1003,6 +971,40 @@ "react": ">=16.8.0" } }, + "node_modules/@emnapi/core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", @@ -1513,7 +1515,7 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -1524,7 +1526,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1535,7 +1537,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1551,7 +1553,7 @@ "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2051,6 +2053,23 @@ "url": "https://github.com/sponsors/Brooooooklyn" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2086,6 +2105,26 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/runtime": { + "version": "0.115.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.115.0.tgz", + "integrity": "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.115.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz", + "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@prantlf/jsonlint": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/@prantlf/jsonlint/-/jsonlint-16.1.0.tgz", @@ -2163,12 +2202,260 @@ "@codemirror/view": "^6.0.0" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.9.tgz", + "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.9.tgz", + "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.9.tgz", + "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.9.tgz", + "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.9.tgz", + "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.9.tgz", + "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz", + "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.9.tgz", + "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, "node_modules/@rollup/plugin-virtual": { "version": "3.0.2", @@ -3677,6 +3964,17 @@ "@tauri-apps/api": "^2.8.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/aws4": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@types/aws4/-/aws4-1.11.6.tgz", @@ -3687,51 +3985,6 @@ "@types/node": "*" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -3885,6 +4138,7 @@ "version": "19.2.7", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -3894,6 +4148,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.2.0" @@ -3945,27 +4200,6 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, - "node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, "node_modules/@vitest/expect": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", @@ -4849,7 +5083,7 @@ "version": "2.9.14", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -4930,7 +5164,7 @@ "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -5133,7 +5367,7 @@ "version": "1.0.30001763", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -5540,7 +5774,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -6220,6 +6454,16 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -6410,7 +6654,7 @@ "version": "1.5.267", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { @@ -7362,7 +7606,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7628,11 +7872,10 @@ } }, "node_modules/graphql": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", - "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.1.tgz", + "integrity": "sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==", "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -7881,16 +8124,6 @@ "node": ">=16.9.0" } }, - "node_modules/hono-rate-limiter": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/hono-rate-limiter/-/hono-rate-limiter-0.4.2.tgz", - "integrity": "sha512-AAtFqgADyrmbDijcRTT/HJfwqfvhalya2Zo+MgfdrMPas3zSMD8SU03cv+ZsYwRU1swv7zgVt0shwN059yzhjw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "hono": "^4.1.1" - } - }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -8871,7 +9104,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9092,6 +9325,267 @@ "@lezer/lr": "^1.0.0" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -9247,7 +9741,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -10646,7 +11140,7 @@ "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/nodejs-file-downloader": { @@ -12325,16 +12819,6 @@ } } }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-syntax-highlighter": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-16.1.0.tgz", @@ -12833,6 +13317,47 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rolldown": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.9.tgz", + "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.115.0", + "@rolldown/pluginutils": "1.0.0-rc.9" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.9", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.9", + "@rolldown/binding-darwin-x64": "1.0.0-rc.9", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.9", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9" + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.9.tgz", + "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup": { "version": "4.59.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", @@ -14656,7 +15181,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -14859,7 +15384,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -15111,25 +15636,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-plugin-static-copy": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.1.4.tgz", - "integrity": "sha512-iCmr4GSw4eSnaB+G8zc2f4dxSuDjbkjwpuBLLGvQYR9IW7rnDzftnUjOH5p4RYR+d4GsiBqXRvzuFhs5bnzVyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.6.0", - "p-map": "^7.0.3", - "picocolors": "^1.1.1", - "tinyglobby": "^0.2.15" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, "node_modules/vite-plugin-svgr": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.5.0.tgz", @@ -15616,7 +16122,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -16043,6 +16549,7 @@ "eventemitter3": "^5.0.1", "focus-trap-react": "^11.0.4", "fuzzbunny": "^1.0.1", + "graphql": "^16.0.0", "hexy": "^0.3.5", "history": "^5.3.0", "jotai": "^2.12.2", @@ -16082,20 +16589,27 @@ "@types/react-syntax-highlighter": "^15.5.13", "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^3.0.2", - "@vitejs/plugin-react": "^4.6.0", + "@vitejs/plugin-react": "^6.0.0", "autoprefixer": "^10.4.21", "decompress": "^4.2.1", "internal-ip": "^8.0.0", "postcss": "^8.5.6", "postcss-nesting": "^13.0.2", "tailwindcss": "^3.4.17", - "vite": "^7.0.8", - "vite-plugin-static-copy": "^3.1.2", - "vite-plugin-svgr": "^4.3.0", - "vite-plugin-top-level-await": "^1.5.0", + "vite": "^8.0.0", + "vite-plugin-static-copy": "^3.3.0", + "vite-plugin-svgr": "^4.5.0", + "vite-plugin-top-level-await": "^1.6.0", "vite-plugin-wasm": "^3.5.0" } }, + "src-web/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.7", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz", + "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==", + "dev": true, + "license": "MIT" + }, "src-web/node_modules/@types/node": { "version": "24.10.4", "dev": true, @@ -16104,6 +16618,32 @@ "undici-types": "~7.16.0" } }, + "src-web/node_modules/@vitejs/plugin-react": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz", + "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.7" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, "src-web/node_modules/nanoid": { "version": "5.1.6", "funding": [ @@ -16120,6 +16660,54 @@ "node": "^18 || >=20" } }, + "src-web/node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "src-web/node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "src-web/node_modules/uuid": { "version": "11.1.0", "funding": [ @@ -16130,6 +16718,108 @@ "bin": { "uuid": "dist/esm/bin/uuid" } + }, + "src-web/node_modules/vite": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", + "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "0.115.0", + "lightningcss": "^1.32.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.9", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.0.0-alpha.31", + "esbuild": "^0.27.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "src-web/node_modules/vite-plugin-static-copy": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.3.0.tgz", + "integrity": "sha512-XiAtZcev7nppxNFgKoD55rfL+ukVp/RtrnTJONRwRuzv/B2FK2h2ZRCYjvxhwBV/Oarse83SiyXBSxMTfeEM0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.6.0", + "p-map": "^7.0.4", + "picocolors": "^1.1.1", + "tinyglobby": "^0.2.15" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/sapphi-red" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } } } } diff --git a/plugins/importer-postman-environment/src/index.ts b/plugins/importer-postman-environment/src/index.ts index ba12c173..7b480b2c 100644 --- a/plugins/importer-postman-environment/src/index.ts +++ b/plugins/importer-postman-environment/src/index.ts @@ -132,5 +132,3 @@ function generateId(model: string): string { idCount[model] = (idCount[model] ?? -1) + 1; return `GENERATE_ID::${model.toUpperCase()}_${idCount[model]}`; } - -export default plugin; diff --git a/src-web/package.json b/src-web/package.json index 1d28f08f..fac8401c 100644 --- a/src-web/package.json +++ b/src-web/package.json @@ -48,6 +48,7 @@ "eventemitter3": "^5.0.1", "focus-trap-react": "^11.0.4", "fuzzbunny": "^1.0.1", + "graphql": "^16.0.0", "hexy": "^0.3.5", "history": "^5.3.0", "jotai": "^2.12.2", From b5928af1d750b8bc520874d686b86fae96665673 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 13 Mar 2026 06:47:42 -0700 Subject: [PATCH 04/31] Bump react --- package-lock.json | 8 ++++---- src-web/package.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 127cb9c0..38b4bb1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16560,9 +16560,9 @@ "nanoid": "^5.0.9", "papaparse": "^5.4.1", "parse-color": "^1.0.0", - "react": "^19.1.0", + "react": "^19.2.0", "react-colorful": "^5.6.1", - "react-dom": "^19.1.0", + "react-dom": "^19.2.0", "react-markdown": "^10.1.0", "react-pdf": "^10.0.1", "react-syntax-highlighter": "^16.1.0", @@ -16584,8 +16584,8 @@ "@types/node": "^24.0.13", "@types/papaparse": "^5.3.16", "@types/parse-color": "^1.0.3", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", "@types/react-syntax-highlighter": "^15.5.13", "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^3.0.2", diff --git a/src-web/package.json b/src-web/package.json index fac8401c..1de14f0f 100644 --- a/src-web/package.json +++ b/src-web/package.json @@ -59,9 +59,9 @@ "nanoid": "^5.0.9", "papaparse": "^5.4.1", "parse-color": "^1.0.0", - "react": "^19.1.0", + "react": "^19.2.0", "react-colorful": "^5.6.1", - "react-dom": "^19.1.0", + "react-dom": "^19.2.0", "react-markdown": "^10.1.0", "react-pdf": "^10.0.1", "react-syntax-highlighter": "^16.1.0", @@ -83,8 +83,8 @@ "@types/node": "^24.0.13", "@types/papaparse": "^5.3.16", "@types/parse-color": "^1.0.3", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", "@types/react-syntax-highlighter": "^15.5.13", "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^3.0.2", From aed7bd12ea2e3c3b8106351d60370d27bf81bd0b Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 13 Mar 2026 06:49:14 -0700 Subject: [PATCH 05/31] Add react compiler --- package-lock.json | 11 +++++++++++ src-web/package.json | 1 + src-web/vite.config.ts | 6 +++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 38b4bb1b..649ac575 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5042,6 +5042,16 @@ "@babel/types": "^7.23.6" } }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -16591,6 +16601,7 @@ "@types/whatwg-mimetype": "^3.0.2", "@vitejs/plugin-react": "^6.0.0", "autoprefixer": "^10.4.21", + "babel-plugin-react-compiler": "^1.0.0", "decompress": "^4.2.1", "internal-ip": "^8.0.0", "postcss": "^8.5.6", diff --git a/src-web/package.json b/src-web/package.json index 1de14f0f..fff91d49 100644 --- a/src-web/package.json +++ b/src-web/package.json @@ -88,6 +88,7 @@ "@types/react-syntax-highlighter": "^15.5.13", "@types/uuid": "^10.0.0", "@types/whatwg-mimetype": "^3.0.2", + "babel-plugin-react-compiler": "^1.0.0", "@vitejs/plugin-react": "^6.0.0", "autoprefixer": "^10.4.21", "decompress": "^4.2.1", diff --git a/src-web/vite.config.ts b/src-web/vite.config.ts index fa49644c..40a7a3fd 100644 --- a/src-web/vite.config.ts +++ b/src-web/vite.config.ts @@ -29,7 +29,11 @@ export default defineConfig(async () => { autoCodeSplitting: true, }), svgr(), - react(), + react({ + babel: { + plugins: ['babel-plugin-react-compiler'], + }, + }), topLevelAwait(), viteStaticCopy({ targets: [ From 45262edfbdd60d6336aa0ec79420fdd04167bfd4 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 13 Mar 2026 09:27:56 -0700 Subject: [PATCH 06/31] Migrate to Vite+ unified toolchain (#428) --- .github/workflows/ci.yml | 9 +- .github/workflows/release-app.yml | 11 +- .node-version | 1 + {.husky => .vite-hooks}/post-checkout | 0 .vite-hooks/pre-commit | 1 + .vscode/extensions.json | 2 +- .vscode/settings.json | 8 +- biome.json | 55 - crates-tauri/yaak-license/index.ts | 2 +- crates/yaak-git/index.ts | 12 +- crates/yaak-models/guest-js/store.ts | 1 + crates/yaak-sync/index.ts | 4 +- crates/yaak-templates/build-wasm.cjs | 19 + crates/yaak-templates/pkg/yaak_templates.js | 9 +- package-lock.json | 2576 +++++++++-------- package.json | 19 +- packages/common-lib/debounce.ts | 4 +- .../src/plugins/AuthenticationPlugin.ts | 2 +- .../src/plugins/Context.ts | 2 +- .../src/plugins/TemplateFunctionPlugin.ts | 2 +- packages/plugin-runtime/src/PluginInstance.ts | 15 +- .../plugin-runtime/src/interceptStdout.ts | 3 +- packages/plugin-runtime/tests/common.test.ts | 2 +- packages/plugin-runtime/tsconfig.json | 6 +- plugins-external/faker/package.json | 2 +- plugins-external/faker/tests/init.test.ts | 3 +- plugins-external/httpsnippet/src/index.ts | 4 +- plugins-external/mcp-server/src/index.ts | 2 +- plugins-external/mcp-server/src/server.ts | 4 +- plugins/action-copy-curl/package.json | 2 +- plugins/action-copy-curl/tests/index.test.ts | 2 +- plugins/action-copy-grpcurl/package.json | 2 +- .../action-copy-grpcurl/tests/index.test.ts | 2 +- plugins/auth-basic/package.json | 2 +- plugins/auth-basic/tests/index.test.ts | 2 +- plugins/auth-bearer/package.json | 2 +- plugins/auth-bearer/tests/index.test.ts | 2 +- plugins/auth-ntlm/package.json | 2 +- plugins/auth-ntlm/tests/index.test.ts | 3 +- plugins/auth-oauth2/package.json | 2 +- plugins/auth-oauth2/src/fetchAccessToken.ts | 2 +- .../src/getOrRefreshAccessToken.ts | 2 +- .../src/grants/authorizationCode.ts | 2 +- .../src/grants/clientCredentials.ts | 1 + plugins/auth-oauth2/src/grants/implicit.ts | 2 +- plugins/auth-oauth2/src/index.ts | 4 +- plugins/auth-oauth2/tests/util.test.ts | 2 +- plugins/filter-jsonpath/src/index.ts | 2 +- plugins/filter-xpath/src/index.ts | 5 +- plugins/importer-curl/package.json | 2 +- plugins/importer-curl/src/index.ts | 2 +- plugins/importer-curl/tests/index.test.ts | 2 +- plugins/importer-insomnia/package.json | 2 +- plugins/importer-insomnia/src/common.ts | 2 +- plugins/importer-insomnia/src/v4.ts | 4 +- plugins/importer-insomnia/src/v5.ts | 6 +- plugins/importer-insomnia/tests/index.test.ts | 2 +- plugins/importer-openapi/package.json | 2 +- plugins/importer-openapi/src/index.ts | 4 +- plugins/importer-openapi/tests/index.test.ts | 2 +- .../importer-postman-environment/package.json | 2 +- .../importer-postman-environment/src/index.ts | 3 +- .../tests/index.test.ts | 2 +- plugins/importer-postman/package.json | 2 +- plugins/importer-postman/src/index.ts | 7 +- plugins/importer-postman/tests/index.test.ts | 2 +- plugins/importer-yaak/package.json | 2 +- plugins/importer-yaak/src/index.ts | 2 +- plugins/importer-yaak/tests/index.test.ts | 2 +- .../template-function-1password/src/index.ts | 5 +- plugins/template-function-prompt/src/index.ts | 2 +- plugins/template-function-regex/package.json | 2 +- .../tests/regex.test.ts | 2 +- .../template-function-timestamp/package.json | 2 +- .../tests/formatDatetime.test.ts | 2 +- plugins/template-function-xml/src/index.ts | 3 +- scripts/install-wasm-pack.cjs | 2 +- scripts/run-workspaces-dev.mjs | 2 +- scripts/vendor-node.cjs | 2 +- scripts/vendor-protoc.cjs | 2 +- src-web/commands/commands.tsx | 2 +- src-web/commands/openWorkspaceFromSyncDir.tsx | 2 +- src-web/components/DnsOverridesEditor.tsx | 3 +- src-web/components/DynamicForm.tsx | 6 +- src-web/components/EnvironmentEditDialog.tsx | 5 +- src-web/components/ExportDataDialog.tsx | 2 +- src-web/components/FolderLayout.tsx | 3 +- .../components/GrpcProtoSelectionDialog.tsx | 6 +- src-web/components/GrpcResponsePane.tsx | 2 +- src-web/components/ImportCurlButton.tsx | 4 +- src-web/components/JsonBodyEditor.tsx | 5 +- src-web/components/Markdown.tsx | 2 +- .../components/RedirectToLatestWorkspace.tsx | 5 +- src-web/components/ResponseCookies.tsx | 4 +- src-web/components/ResponseHeaders.tsx | 4 +- src-web/components/RouteError.tsx | 2 +- .../Settings/SettingsCertificates.tsx | 2 +- src-web/components/Sidebar.tsx | 3 +- src-web/components/TemplateFunctionDialog.tsx | 2 +- .../components/WorkspaceEncryptionSetting.tsx | 4 +- src-web/components/core/AutoScroller.tsx | 2 +- src-web/components/core/DetailsBanner.tsx | 2 +- src-web/components/core/Dropdown.tsx | 13 +- src-web/components/core/Editor/Editor.tsx | 4 +- .../components/core/Editor/filter/filter.ts | 2 +- .../core/Editor/hyperlink/extension.ts | 2 +- src-web/components/core/Editor/json-lint.ts | 2 +- .../components/core/Editor/twig/twig.test.ts | 4 +- src-web/components/core/Hotkey.tsx | 2 +- src-web/components/core/Input.tsx | 4 +- src-web/components/core/JsonAttributeTree.tsx | 6 +- src-web/components/core/KeyValueRow.tsx | 2 +- src-web/components/core/Label.tsx | 2 +- src-web/components/core/PairEditor.tsx | 2 +- src-web/components/core/PlainInput.tsx | 4 +- src-web/components/core/SegmentedControl.tsx | 4 +- src-web/components/core/Stacks.tsx | 6 +- src-web/components/core/Tabs/Tabs.tsx | 3 +- src-web/components/core/Tooltip.tsx | 2 +- src-web/components/core/tree/Tree.tsx | 4 +- .../components/core/tree/TreeIndentGuide.tsx | 2 +- src-web/components/core/tree/common.ts | 2 +- src-web/components/git/GitDropdown.tsx | 5 +- src-web/components/git/HistoryDialog.tsx | 2 +- .../graphql/GraphQLDocsExplorer.tsx | 34 +- .../responseViewers/AudioViewer.tsx | 2 +- .../components/responseViewers/CsvViewer.tsx | 2 +- .../responseViewers/MultipartViewer.tsx | 2 +- .../components/responseViewers/PdfViewer.tsx | 7 +- .../responseViewers/VideoViewer.tsx | 2 +- src-web/font-size.ts | 3 +- src-web/font.ts | 3 +- src-web/hooks/useActiveCookieJar.ts | 2 +- src-web/hooks/useActiveRequest.ts | 2 +- src-web/hooks/useCreateDropdownItems.tsx | 4 +- src-web/hooks/useFastMutation.ts | 4 +- src-web/hooks/useFolderActions.ts | 2 +- src-web/hooks/useGrpcRequestActions.ts | 2 +- src-web/hooks/useHttpRequestActions.ts | 2 +- src-web/hooks/useHttpResponseEvents.ts | 5 +- src-web/hooks/useIntrospectGraphQL.ts | 6 +- src-web/hooks/useKeyValue.ts | 4 +- src-web/hooks/useKeyboardEvent.ts | 2 +- src-web/hooks/usePinnedGrpcConnection.ts | 5 +- src-web/hooks/usePinnedWebsocketConnection.ts | 5 +- src-web/hooks/useRequestEditor.tsx | 2 +- src-web/hooks/useStateWithDeps.ts | 2 +- src-web/hooks/useWebsocketRequestActions.ts | 2 +- src-web/hooks/useWindowFocus.ts | 3 +- src-web/hooks/useWorkspaceActions.ts | 2 +- src-web/lib/fireAndForget.ts | 16 + src-web/lib/getNodeText.ts | 4 +- src-web/lib/initGlobalListeners.tsx | 9 +- src-web/lib/model_util.test.ts | 2 +- src-web/lib/setWorkspaceSearchParams.ts | 4 +- src-web/lib/theme/appearance.ts | 7 +- src-web/lib/theme/window.ts | 2 +- src-web/package.json | 13 +- .../routes/workspaces/$workspaceId/index.tsx | 2 +- src-web/tailwind.config.cjs | 1 + src-web/tsconfig.json | 2 +- src-web/tsconfig.node.json | 5 +- src-web/vite-env.d.ts | 2 +- src-web/vite.config.ts | 21 +- tsconfig.json | 8 +- vite.config.ts | 16 + 166 files changed, 1762 insertions(+), 1519 deletions(-) create mode 100644 .node-version rename {.husky => .vite-hooks}/post-checkout (100%) create mode 100644 .vite-hooks/pre-commit delete mode 100644 biome.json create mode 100644 src-web/lib/fireAndForget.ts create mode 100644 vite.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf32f4a3..3797737b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,17 +14,20 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: voidzero-dev/setup-vp@v1 + with: + node-version: '24' + cache: true - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: shared-key: ci cache-on-failure: true - - run: npm ci + - run: vp install - run: npm run bootstrap - run: npm run lint - name: Run JS Tests - run: npm test + run: vp test - name: Run Rust Tests run: cargo test --all diff --git a/.github/workflows/release-app.yml b/.github/workflows/release-app.yml index 0506d436..32d62a7a 100644 --- a/.github/workflows/release-app.yml +++ b/.github/workflows/release-app.yml @@ -50,8 +50,11 @@ jobs: - name: Checkout yaakapp/app uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 + - name: Setup Vite+ + uses: voidzero-dev/setup-vp@v1 + with: + node-version: '24' + cache: true - name: install Rust stable uses: dtolnay/rust-toolchain@stable @@ -87,13 +90,13 @@ jobs: echo $dir >> $env:GITHUB_PATH & $exe --version - - run: npm ci + - run: vp install - run: npm run bootstrap env: YAAK_TARGET_ARCH: ${{ matrix.yaak_arch }} - run: npm run lint - name: Run JS Tests - run: npm test + run: vp test - name: Run Rust Tests run: cargo test --all --exclude yaak-cli diff --git a/.node-version b/.node-version new file mode 100644 index 00000000..d845d9d8 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +24.14.0 diff --git a/.husky/post-checkout b/.vite-hooks/post-checkout similarity index 100% rename from .husky/post-checkout rename to .vite-hooks/post-checkout diff --git a/.vite-hooks/pre-commit b/.vite-hooks/pre-commit new file mode 100644 index 00000000..05b9080e --- /dev/null +++ b/.vite-hooks/pre-commit @@ -0,0 +1 @@ +vp lint diff --git a/.vscode/extensions.json b/.vscode/extensions.json index df9e35ce..bab062e5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["biomejs.biome", "rust-lang.rust-analyzer", "bradlc.vscode-tailwindcss"] + "recommendations": ["rust-lang.rust-analyzer", "bradlc.vscode-tailwindcss", "VoidZero.vite-plus-extension-pack"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index ce1fe758..b8065359 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,8 @@ { - "editor.defaultFormatter": "biomejs.biome", + "editor.defaultFormatter": "oxc.oxc-vscode", "editor.formatOnSave": true, - "biome.enabled": true, - "biome.lint.format.enable": true + "editor.formatOnSaveMode": "file", + "editor.codeActionsOnSave": { + "source.fixAll.oxc": "explicit" + } } diff --git a/biome.json b/biome.json deleted file mode 100644 index 2d8c601e..00000000 --- a/biome.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/2.3.13/schema.json", - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "a11y": { - "useKeyWithClickEvents": "off" - } - } - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 100, - "bracketSpacing": true - }, - "css": { - "parser": { - "tailwindDirectives": true - }, - "linter": { - "enabled": false - } - }, - "javascript": { - "formatter": { - "quoteStyle": "single", - "jsxQuoteStyle": "double", - "trailingCommas": "all", - "semicolons": "always" - } - }, - "files": { - "includes": [ - "**", - "!**/node_modules", - "!**/dist", - "!**/build", - "!target", - "!scripts", - "!crates", - "!crates-tauri", - "!src-web/tailwind.config.cjs", - "!src-web/postcss.config.cjs", - "!src-web/vite.config.ts", - "!src-web/routeTree.gen.ts", - "!packages/plugin-runtime-types/lib", - "!**/bindings", - "!flatpak", - "!npm" - ] - } -} diff --git a/crates-tauri/yaak-license/index.ts b/crates-tauri/yaak-license/index.ts index 2a2fab8f..7de30646 100644 --- a/crates-tauri/yaak-license/index.ts +++ b/crates-tauri/yaak-license/index.ts @@ -29,7 +29,7 @@ export function useLicense() { await queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }); }); return () => { - unlisten.then((fn) => fn()); + void unlisten.then((fn) => fn()); }; }, []); diff --git a/crates/yaak-git/index.ts b/crates/yaak-git/index.ts index b08d838b..559b1e5e 100644 --- a/crates/yaak-git/index.ts +++ b/crates/yaak-git/index.ts @@ -89,8 +89,8 @@ export const gitMutations = (dir: string, callbacks: GitCallbacks) => { const handleError = (err: unknown) => { showToast({ - id: `${err}`, - message: `${err}`, + id: err instanceof Error ? err.message : String(err), + message: err instanceof Error ? err.message : String(err), color: 'danger', timeout: 5000, }); @@ -186,16 +186,16 @@ export const gitMutations = (dir: string, callbacks: GitCallbacks) => { } if (result.type === 'uncommitted_changes') { - callbacks.promptUncommittedChanges().then(async (strategy) => { + void callbacks.promptUncommittedChanges().then(async (strategy) => { if (strategy === 'cancel') return; await invoke('cmd_git_reset_changes', { dir }); return invoke('cmd_git_pull', { dir }); - }).then(async () => { onSuccess(); await callbacks.forceSync(); }, handleError); + }).then(async () => { await onSuccess(); await callbacks.forceSync(); }, handleError); } if (result.type === 'diverged') { - callbacks.promptDiverged(result).then((strategy) => { + void callbacks.promptDiverged(result).then((strategy) => { if (strategy === 'cancel') return; if (strategy === 'force_reset') { @@ -211,7 +211,7 @@ export const gitMutations = (dir: string, callbacks: GitCallbacks) => { remote: result.remote, branch: result.branch, }); - }).then(async () => { onSuccess(); await callbacks.forceSync(); }, handleError); + }).then(async () => { await onSuccess(); await callbacks.forceSync(); }, handleError); } return result; diff --git a/crates/yaak-models/guest-js/store.ts b/crates/yaak-models/guest-js/store.ts index 6cd4d8cb..38ff71f9 100644 --- a/crates/yaak-models/guest-js/store.ts +++ b/crates/yaak-models/guest-js/store.ts @@ -88,6 +88,7 @@ export function getAnyModel( ): AnyModel | null { let data = mustStore().get(modelStoreDataAtom); for (const t of Object.keys(data)) { + // oxlint-disable-next-line no-explicit-any let v = (data as any)[t]?.[id]; if (v?.model === t) return v; } diff --git a/crates/yaak-sync/index.ts b/crates/yaak-sync/index.ts index 38f9e30e..295c03a6 100644 --- a/crates/yaak-sync/index.ts +++ b/crates/yaak-sync/index.ts @@ -39,7 +39,7 @@ export function watchWorkspaceFiles( channel, }); - unlistenPromise.then(({ unlistenEvent }) => { + void unlistenPromise.then(({ unlistenEvent }) => { addWatchKey(unlistenEvent); }); @@ -53,7 +53,7 @@ export function watchWorkspaceFiles( } function unlistenToWatcher(unlistenEvent: string) { - emit(unlistenEvent).then(() => { + void emit(unlistenEvent).then(() => { removeWatchKey(unlistenEvent); }); } diff --git a/crates/yaak-templates/build-wasm.cjs b/crates/yaak-templates/build-wasm.cjs index 4f86941b..23611d0d 100644 --- a/crates/yaak-templates/build-wasm.cjs +++ b/crates/yaak-templates/build-wasm.cjs @@ -1,4 +1,6 @@ const { execSync } = require('node:child_process'); +const fs = require('node:fs'); +const path = require('node:path'); if (process.env.SKIP_WASM_BUILD === '1') { console.log('Skipping wasm-pack build (SKIP_WASM_BUILD=1)'); @@ -6,3 +8,20 @@ if (process.env.SKIP_WASM_BUILD === '1') { } execSync('wasm-pack build --target bundler', { stdio: 'inherit' }); + +// Rewrite the generated entry to use Vite's ?init import style instead of +// the ES Module Integration style that wasm-pack generates, which Vite/rolldown +// does not support in production builds. +const entry = path.join(__dirname, 'pkg', 'yaak_templates.js'); +fs.writeFileSync( + entry, + [ + 'import init from "./yaak_templates_bg.wasm?init";', + 'export * from "./yaak_templates_bg.js";', + 'import * as bg from "./yaak_templates_bg.js";', + 'const instance = await init({ "./yaak_templates_bg.js": bg });', + 'bg.__wbg_set_wasm(instance.exports);', + 'instance.exports.__wbindgen_start();', + '', + ].join('\n'), +); diff --git a/crates/yaak-templates/pkg/yaak_templates.js b/crates/yaak-templates/pkg/yaak_templates.js index 8d2a7738..aa78c841 100644 --- a/crates/yaak-templates/pkg/yaak_templates.js +++ b/crates/yaak-templates/pkg/yaak_templates.js @@ -1,5 +1,6 @@ -import * as wasm from "./yaak_templates_bg.wasm"; +import init from "./yaak_templates_bg.wasm?init"; export * from "./yaak_templates_bg.js"; -import { __wbg_set_wasm } from "./yaak_templates_bg.js"; -__wbg_set_wasm(wasm); -wasm.__wbindgen_start(); +import * as bg from "./yaak_templates_bg.js"; +const instance = await init({ "./yaak_templates_bg.js": bg }); +bg.__wbg_set_wasm(instance.exports); +instance.exports.__wbindgen_start(); diff --git a/package-lock.json b/package-lock.json index 649ac575..11978a5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,15 +71,14 @@ "@codemirror/legacy-modes": "^6.5.2" }, "devDependencies": { - "@biomejs/biome": "^2.3.13", "@tauri-apps/cli": "^2.9.6", "@yaakapp/cli": "^0.5.1", "dotenv-cli": "^11.0.0", - "husky": "^9.1.7", "nodejs-file-downloader": "^4.13.0", "npm-run-all": "^4.1.5", "typescript": "^5.8.3", - "vitest": "^3.2.4" + "vite-plus": "latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" } }, "crates-tauri/yaak-app": { @@ -476,169 +475,6 @@ "node": ">=6.9.0" } }, - "node_modules/@biomejs/biome": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.3.13.tgz", - "integrity": "sha512-Fw7UsV0UAtWIBIm0M7g5CRerpu1eKyKAXIazzxhbXYUyMkwNrkX/KLkGI7b+uVDQ5cLUMfOC9vR60q9IDYDstA==", - "dev": true, - "license": "MIT OR Apache-2.0", - "bin": { - "biome": "bin/biome" - }, - "engines": { - "node": ">=14.21.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/biome" - }, - "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.3.13", - "@biomejs/cli-darwin-x64": "2.3.13", - "@biomejs/cli-linux-arm64": "2.3.13", - "@biomejs/cli-linux-arm64-musl": "2.3.13", - "@biomejs/cli-linux-x64": "2.3.13", - "@biomejs/cli-linux-x64-musl": "2.3.13", - "@biomejs/cli-win32-arm64": "2.3.13", - "@biomejs/cli-win32-x64": "2.3.13" - } - }, - "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.3.13.tgz", - "integrity": "sha512-0OCwP0/BoKzyJHnFdaTk/i7hIP9JHH9oJJq6hrSCPmJPo8JWcJhprK4gQlhFzrwdTBAW4Bjt/RmCf3ZZe59gwQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.3.13.tgz", - "integrity": "sha512-AGr8OoemT/ejynbIu56qeil2+F2WLkIjn2d8jGK1JkchxnMUhYOfnqc9sVzcRxpG9Ycvw4weQ5sprRvtb7Yhcw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.3.13.tgz", - "integrity": "sha512-xvOiFkrDNu607MPMBUQ6huHmBG1PZLOrqhtK6pXJW3GjfVqJg0Z/qpTdhXfcqWdSZHcT+Nct2fOgewZvytESkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.3.13.tgz", - "integrity": "sha512-TUdDCSY+Eo/EHjhJz7P2GnWwfqet+lFxBZzGHldrvULr59AgahamLs/N85SC4+bdF86EhqDuuw9rYLvLFWWlXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-x64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.3.13.tgz", - "integrity": "sha512-s+YsZlgiXNq8XkgHs6xdvKDFOj/bwTEevqEY6rC2I3cBHbxXYU1LOZstH3Ffw9hE5tE1sqT7U23C00MzkXztMw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.3.13.tgz", - "integrity": "sha512-0bdwFVSbbM//Sds6OjtnmQGp4eUjOTt6kHvR/1P0ieR9GcTUAlPNvPC3DiavTqq302W34Ae2T6u5VVNGuQtGlQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.3.13.tgz", - "integrity": "sha512-QweDxY89fq0VvrxME+wS/BXKmqMrOTZlN9SqQ79kQSIc3FrEwvW/PvUegQF6XIVaekncDykB5dzPqjbwSKs9DA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, - "node_modules/@biomejs/cli-win32-x64": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.3.13.tgz", - "integrity": "sha512-trDw2ogdM2lyav9WFQsdsfdVy1dvZALymRpgmWsvSez0BJzBjulhOT/t+wyKeh3pZWvwP3VMs1SoOKwO3wecMQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.21.3" - } - }, "node_modules/@changesets/changelog-github": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/@changesets/changelog-github/-/changelog-github-0.4.8.tgz", @@ -2125,6 +1961,743 @@ "url": "https://github.com/sponsors/Boshen" } }, + "node_modules/@oxfmt/binding-android-arm-eabi": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.40.0.tgz", + "integrity": "sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-android-arm64": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.40.0.tgz", + "integrity": "sha512-/mbS9UUP/5Vbl2D6osIdcYiP0oie63LKMoTyGj5hyMCK/SFkl3EhtyRAfdjPvuvHC0SXdW6ePaTKkBSq1SNcIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-darwin-arm64": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.40.0.tgz", + "integrity": "sha512-wRt8fRdfLiEhnRMBonlIbKrJWixoEmn6KCjKE9PElnrSDSXETGZfPb8ee+nQNTobXkCVvVLytp2o0obAsxl78Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-darwin-x64": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.40.0.tgz", + "integrity": "sha512-fzowhqbOE/NRy+AE5ob0+Y4X243WbWzDb00W+pKwD7d9tOqsAFbtWUwIyqqCoCLxj791m2xXIEeLH/3uz7zCCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-freebsd-x64": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.40.0.tgz", + "integrity": "sha512-agZ9ITaqdBjcerRRFEHB8s0OyVcQW8F9ZxsszjxzeSthQ4fcN2MuOtQFWec1ed8/lDa50jSLHVE2/xPmTgtCfQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.40.0.tgz", + "integrity": "sha512-ZM2oQ47p28TP1DVIp7HL1QoMUgqlBFHey0ksHct7tMXoU5BqjNvPWw7888azzMt25lnyPODVuye1wvNbvVUFOA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm-musleabihf": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.40.0.tgz", + "integrity": "sha512-RBFPAxRAIsMisKM47Oe6Lwdv6agZYLz02CUhVCD1sOv5ajAcRMrnwCFBPWwGXpazToW2mjnZxFos8TuFjTU15A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm64-gnu": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.40.0.tgz", + "integrity": "sha512-Nb2XbQ+wV3W2jSIihXdPj7k83eOxeSgYP3N/SRXvQ6ZYPIk6Q86qEh5Gl/7OitX3bQoQrESqm1yMLvZV8/J7dA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-arm64-musl": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.40.0.tgz", + "integrity": "sha512-tGmWhLD/0YMotCdfezlT6tC/MJG/wKpo4vnQ3Cq+4eBk/BwNv7EmkD0VkD5F/dYkT3b8FNU01X2e8vvJuWoM1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-ppc64-gnu": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.40.0.tgz", + "integrity": "sha512-rVbFyM3e7YhkVnp0IVYjaSHfrBWcTRWb60LEcdNAJcE2mbhTpbqKufx0FrhWfoxOrW/+7UJonAOShoFFLigDqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-riscv64-gnu": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.40.0.tgz", + "integrity": "sha512-3ZqBw14JtWeEoLiioJcXSJz8RQyPE+3jLARnYM1HdPzZG4vk+Ua8CUupt2+d+vSAvMyaQBTN2dZK+kbBS/j5mA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-riscv64-musl": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.40.0.tgz", + "integrity": "sha512-JJ4PPSdcbGBjPvb+O7xYm2FmAsKCyuEMYhqatBAHMp/6TA6rVlf9Z/sYPa4/3Bommb+8nndm15SPFRHEPU5qFA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-s390x-gnu": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.40.0.tgz", + "integrity": "sha512-Kp0zNJoX9Ik77wUya2tpBY3W9f40VUoMQLWVaob5SgCrblH/t2xr/9B2bWHfs0WCefuGmqXcB+t0Lq77sbBmZw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-x64-gnu": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.40.0.tgz", + "integrity": "sha512-7YTCNzleWTaQTqNGUNQ66qVjpoV6DjbCOea+RnpMBly2bpzrI/uu7Rr+2zcgRfNxyjXaFTVQKaRKjqVdeUfeVA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-linux-x64-musl": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.40.0.tgz", + "integrity": "sha512-hWnSzJ0oegeOwfOEeejYXfBqmnRGHusgtHfCPzmvJvHTwy1s3Neo59UKc1CmpE3zxvrCzJoVHos0rr97GHMNPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-openharmony-arm64": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.40.0.tgz", + "integrity": "sha512-28sJC1lR4qtBJGzSRRbPnSW3GxU2+4YyQFE6rCmsUYqZ5XYH8jg0/w+CvEzQ8TuAQz5zLkcA25nFQGwoU0PT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-arm64-msvc": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.40.0.tgz", + "integrity": "sha512-cDkRnyT0dqwF5oIX1Cv59HKCeZQFbWWdUpXa3uvnHFT2iwYSSZspkhgjXjU6iDp5pFPaAEAe9FIbMoTgkTmKPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-ia32-msvc": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.40.0.tgz", + "integrity": "sha512-7rPemBJjqm5Gkv6ZRCPvK8lE6AqQ/2z31DRdWazyx2ZvaSgL7QGofHXHNouRpPvNsT9yxRNQJgigsWkc+0qg4w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxfmt/binding-win32-x64-msvc": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.40.0.tgz", + "integrity": "sha512-/Zmj0yTYSvmha6TG1QnoLqVT7ZMRDqXvFXXBQpIjteEwx9qvUYMBH2xbiOFhDeMUJkGwC3D6fdKsFtaqUvkwNA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint-tsgolint/darwin-arm64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/darwin-arm64/-/darwin-arm64-0.16.0.tgz", + "integrity": "sha512-WQt5lGwRPJBw7q2KNR0mSPDAaMmZmVvDlEEti96xLO7ONhyomQc6fBZxxwZ4qTFedjJnrHX94sFelZ4OKzS7UQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint-tsgolint/darwin-x64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/darwin-x64/-/darwin-x64-0.16.0.tgz", + "integrity": "sha512-VJo29XOzdkalvCTiE2v6FU3qZlgHaM8x8hUEVJGPU2i5W+FlocPpmn00+Ld2n7Q0pqIjyD5EyvZ5UmoIEJMfqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint-tsgolint/linux-arm64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/linux-arm64/-/linux-arm64-0.16.0.tgz", + "integrity": "sha512-MPfqRt1+XRHv9oHomcBMQ3KpTE+CSkZz14wUxDQoqTNdUlV0HWdzwIE9q65I3D9YyxEnqpM7j4qtDQ3apqVvbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint-tsgolint/linux-x64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/linux-x64/-/linux-x64-0.16.0.tgz", + "integrity": "sha512-XQSwVUsnwLokMhe1TD6IjgvW5WMTPzOGGkdFDtXWQmlN2YeTw94s/NN0KgDrn2agM1WIgAenEkvnm0u7NgwEyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint-tsgolint/win32-arm64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/win32-arm64/-/win32-arm64-0.16.0.tgz", + "integrity": "sha512-EWdlspQiiFGsP2AiCYdhg5dTYyAlj6y1nRyNI2dQWq4Q/LITFHiSRVPe+7m7K7lcsZCEz2icN/bCeSkZaORqIg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxlint-tsgolint/win32-x64": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@oxlint-tsgolint/win32-x64/-/win32-x64-0.16.0.tgz", + "integrity": "sha512-1ufk8cgktXJuJZHKF63zCHAkaLMwZrEXnZ89H2y6NO85PtOXqu4zbdNl0VBpPP3fCUuUBu9RvNqMFiv0VsbXWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.55.0.tgz", + "integrity": "sha512-NhvgAhncTSOhRahQSCnkK/4YIGPjTmhPurQQ2dwt2IvwCMTvZRW5vF2K10UBOxFve4GZDMw6LtXZdC2qeuYIVQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.55.0.tgz", + "integrity": "sha512-P9iWRh+Ugqhg+D7rkc7boHX8o3H2h7YPcZHQIgvVBgnua5tk4LR2L+IBlreZs58/95cd2x3/004p5VsQM9z4SA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.55.0.tgz", + "integrity": "sha512-esakkJIt7WFAhT30P/Qzn96ehFpzdZ1mNuzpOb8SCW7lI4oB8VsyQnkSHREM671jfpuBb/o2ppzBCx5l0jpgMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.55.0.tgz", + "integrity": "sha512-xDMFRCCAEK9fOH6As2z8ELsC+VDGSFRHwIKVSilw+xhgLwTDFu37rtmRbmUlx8rRGS6cWKQPTc47AVxAZEVVPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.55.0.tgz", + "integrity": "sha512-mYZqnwUD7ALCRxGenyLd1uuG+rHCL+OTT6S8FcAbVm/ZT2AZMGjvibp3F6k1SKOb2aeqFATmwRykrE41Q0GWVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.55.0.tgz", + "integrity": "sha512-LcX6RYcF9vL9ESGwJW3yyIZ/d/ouzdOKXxCdey1q0XJOW1asrHsIg5MmyKdEBR4plQx+shvYeQne7AzW5f3T1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.55.0.tgz", + "integrity": "sha512-C+8GS1rPtK+dI7mJFkqoRBkDuqbrNihnyYQsJPS9ez+8zF9JzfvU19lawqt4l/Y23o5uQswE/DORa8aiXUih3w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.55.0.tgz", + "integrity": "sha512-ErLE4XbmcCopA4/CIDiH6J1IAaDOMnf/KSx/aFObs4/OjAAM3sFKWGZ57pNOMxhhyBdcmcXwYymph9GwcpcqgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.55.0.tgz", + "integrity": "sha512-/kp65avi6zZfqEng56TTuhiy3P/3pgklKIdf38yvYeJ9/PgEeRA2A2AqKAKbZBNAqUzrzHhz9jF6j/PZvhJzTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.55.0.tgz", + "integrity": "sha512-A6pTdXwcEEwL/nmz0eUJ6WxmxcoIS+97GbH96gikAyre3s5deC7sts38ZVVowjS2QQFuSWkpA4ZmQC0jZSNvJQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.55.0.tgz", + "integrity": "sha512-clj0lnIN+V52G9tdtZl0LbdTSurnZ1NZj92Je5X4lC7gP5jiCSW+Y/oiDiSauBAD4wrHt2S7nN3pA0zfKYK/6Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.55.0.tgz", + "integrity": "sha512-NNu08pllN5x/O94/sgR3DA8lbrGBnTHsINZZR0hcav1sj79ksTiKKm1mRzvZvacwQ0hUnGinFo+JO75ok2PxYg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.55.0.tgz", + "integrity": "sha512-BvfQz3PRlWZRoEZ17dZCqgQsMRdpzGZomJkVATwCIGhHVVeHJMQdmdXPSjcT1DCNUrOjXnVyj1RGDj5+/Je2+Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.55.0.tgz", + "integrity": "sha512-ngSOoFCSBMKVQd24H8zkbcBNc7EHhjnF1sv3mC9NNXQ/4rRjI/4Dj9+9XoDZeFEkF1SX1COSBXF1b2Pr9rqdEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.55.0.tgz", + "integrity": "sha512-BDpP7W8GlaG7BR6QjGZAleYzxoyKc/D24spZIF2mB3XsfALQJJT/OBmP8YpeTb1rveFSBHzl8T7l0aqwkWNdGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.55.0.tgz", + "integrity": "sha512-PS6GFvmde/pc3fCA2Srt51glr8Lcxhpf6WIBFfLphndjRrD34NEcses4TSxQrEcxYo6qVywGfylM0ZhSCF2gGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.55.0.tgz", + "integrity": "sha512-P6JcLJGs/q1UOvDLzN8otd9JsH4tsuuPDv+p7aHqHM3PrKmYdmUvkNj4K327PTd35AYcznOCN+l4ZOaq76QzSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.55.0.tgz", + "integrity": "sha512-gzkk4zE2zsE+WmRxFOiAZHpCpUNDFytEakqNXoNHW+PnYEOTPKDdW6nrzgSeTbGKVPXNAKQnRnMgrh7+n3Xueg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.55.0.tgz", + "integrity": "sha512-ZFALNow2/og75gvYzNP7qe+rREQ5xunktwA+lgykoozHZ6hw9bqg4fn5j2UvG4gIn1FXqrZHkOAXuPf5+GOYTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, "node_modules/@prantlf/jsonlint": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/@prantlf/jsonlint/-/jsonlint-16.1.0.tgz", @@ -2457,20 +3030,33 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rollup/plugin-virtual": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", - "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "node_modules/@rolldown/plugin-babel": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rolldown/plugin-babel/-/plugin-babel-0.2.1.tgz", + "integrity": "sha512-pHDVHqFv26JNC8I500JZ0H4h1kvSyiE3V9gjEO9pRAgD1KrIdJvcHCokV6f7gG7Rx4vMOD11V8VUOpqdyGbKBw==", "dev": true, "license": "MIT", + "dependencies": { + "picomatch": "^4.0.3" + }, "engines": { - "node": ">=14.0.0" + "node": ">=22.12.0 || ^24.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "@babel/core": "^7.29.0 || ^8.0.0-rc.1", + "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", + "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", + "rolldown": "^1.0.0-rc.5", + "vite": "^8.0.0" }, "peerDependenciesMeta": { - "rollup": { + "@babel/plugin-transform-runtime": { + "optional": true + }, + "@babel/runtime": { + "optional": true + }, + "vite": { "optional": true } } @@ -2505,356 +3091,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sagold/json-pointer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@sagold/json-pointer/-/json-pointer-5.1.2.tgz", @@ -2881,6 +3117,13 @@ "@lezer/lr": "^1.3.7" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -3162,239 +3405,6 @@ "@svgr/core": "*" } }, - "node_modules/@swc/core": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", - "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.8", - "@swc/core-darwin-x64": "1.15.8", - "@swc/core-linux-arm-gnueabihf": "1.15.8", - "@swc/core-linux-arm64-gnu": "1.15.8", - "@swc/core-linux-arm64-musl": "1.15.8", - "@swc/core-linux-x64-gnu": "1.15.8", - "@swc/core-linux-x64-musl": "1.15.8", - "@swc/core-win32-arm64-msvc": "1.15.8", - "@swc/core-win32-ia32-msvc": "1.15.8", - "@swc/core-win32-x64-msvc": "1.15.8" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.17" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", - "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", - "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", - "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", - "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", - "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", - "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", - "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", - "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", - "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", - "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@swc/wasm": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/wasm/-/wasm-1.15.8.tgz", - "integrity": "sha512-RG2BxGbbsjtddFCo1ghKH6A/BMXbY1eMBfpysV0lJMCpI4DZOjW1BNBnxvBt7YsYmlJtmy5UXIg9/4ekBTFFaQ==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/@tailwindcss/container-queries": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", @@ -3985,6 +3995,51 @@ "@types/node": "*" } }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -4201,39 +4256,40 @@ "license": "ISC" }, "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz", + "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==", "dev": true, "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "chai": "^6.2.2", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz", + "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.4", + "@vitest/spy": "4.1.0", "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" + "magic-string": "^0.30.21" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -4245,42 +4301,42 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz", + "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^2.0.0" + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz", + "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" + "@vitest/utils": "4.1.0", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz", + "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", + "@vitest/pretty-format": "4.1.0", + "@vitest/utils": "4.1.0", + "magic-string": "^0.30.21", "pathe": "^2.0.3" }, "funding": { @@ -4288,33 +4344,291 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz", + "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz", + "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" + "@vitest/pretty-format": "4.1.0", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/@voidzero-dev/vite-plus-core": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.1.11.tgz", + "integrity": "sha512-feyYRSg3u8acYNC1fF4EGfgYZm2efZB8YWTjz4NrU0Ulhlni1C6COMwHSDVpu9F4Jh+WcSsBWL3ZC1WvLa7jCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "=0.115.0", + "@oxc-project/types": "=0.115.0", + "lightningcss": "^1.30.2", + "postcss": "^8.5.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "@tsdown/css": "0.21.2", + "@tsdown/exe": "0.21.2", + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.0.0-alpha.31", + "esbuild": "^0.27.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "publint": "^0.3.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "typescript": "^5.0.0", + "unplugin-unused": "^0.5.0", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, + "@tsdown/css": { + "optional": true + }, + "@tsdown/exe": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "publint": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-unused": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/@voidzero-dev/vite-plus-darwin-arm64": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-arm64/-/vite-plus-darwin-arm64-0.1.11.tgz", + "integrity": "sha512-ENokEkMhDMJ9nM/tUDAXvtah/P3cAnEbkeKCCxJgFvTTGnGM8eBvP2qpJeTrfhy9ndIWihcsfMufszinLsfhUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@voidzero-dev/vite-plus-darwin-x64": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-darwin-x64/-/vite-plus-darwin-x64-0.1.11.tgz", + "integrity": "sha512-gOSGYtXq5qigDsiW+oCrefv4K8WUSnZ5vH+kPHDvpsMXlqxR0rY6xrJgkJ2tCkWdCig8YHVDascSV/cj4nGwsw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@voidzero-dev/vite-plus-linux-arm64-gnu": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-arm64-gnu/-/vite-plus-linux-arm64-gnu-0.1.11.tgz", + "integrity": "sha512-aDVe1vvhtXBqZdmCiCSm3DUl5/O+x5CeAcjPPTLSsEX79cSfvkD0UU26lQ8eX+pr3xVDEocJTtTLmOMVImGlyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@voidzero-dev/vite-plus-linux-x64-gnu": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-linux-x64-gnu/-/vite-plus-linux-x64-gnu-0.1.11.tgz", + "integrity": "sha512-rkaKCGq/CFML2M7c0ixUOuhE6qi961x84/ZFQhkUy2MJw3RP7R/M1BDyWr2qEq20SgRWLkffcWMni3P2JnmrBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@voidzero-dev/vite-plus-test": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-test/-/vite-plus-test-0.1.11.tgz", + "integrity": "sha512-3kBfi/LyPOGnLCmvYtgM5GZVAyiJiYjgdm9Fu9WLLl56zcSljj0TBG19eaKY6v/j2VJ+7o80n/A/MPz46lzMFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@voidzero-dev/vite-plus-core": "0.1.11", + "es-module-lexer": "^1.7.0", + "obug": "^2.1.1", + "pixelmatch": "^7.1.0", + "pngjs": "^7.0.0", + "sirv": "^3.0.2", + "std-env": "^4.0.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "ws": "^8.18.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/ui": "4.1.0", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/@voidzero-dev/vite-plus-test/node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@voidzero-dev/vite-plus-win32-arm64-msvc": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-arm64-msvc/-/vite-plus-win32-arm64-msvc-0.1.11.tgz", + "integrity": "sha512-MerozzH8QYY+V5l6ZQq+vrtx75rnPlmc+TauH5hL08oEWx7ScwfrNKyamnv5rg7HWBx/ryuaYaJCjODOu7MjSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@voidzero-dev/vite-plus-win32-x64-msvc": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-win32-x64-msvc/-/vite-plus-win32-x64-msvc-0.1.11.tgz", + "integrity": "sha512-ubGlfvkfWT4Eivg3O2lxMyA6h7u1XZm4XdW3MUZIXXd9Q/iIRVJdSsEg78C/OZ3e8Qofszsro6P8ZrQo8ROQxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.9.8", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", @@ -5405,18 +5719,11 @@ } }, "node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, "engines": { "node": ">=18" } @@ -5485,16 +5792,6 @@ "node": ">=4.0.0" } }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -6338,16 +6635,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/deep-equal": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", @@ -6841,9 +7128,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT" }, @@ -8250,22 +8537,6 @@ "node": ">=14.18.0" } }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, "node_modules/hyphenate-style-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", @@ -9082,13 +9353,6 @@ "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==", "license": "MIT" }, - "node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -9716,13 +9980,6 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -10983,6 +11240,16 @@ "integrity": "sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww==", "license": "MIT" }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -11802,6 +12069,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -11914,6 +12192,109 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/oxfmt": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.40.0.tgz", + "integrity": "sha512-g0C3I7xUj4b4DcagevM9kgH6+pUHytikxUcn3/VUkvzTNaaXBeyZqb7IBsHwojeXm4mTBEC/aBjBTMVUkZwWUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinypool": "2.1.0" + }, + "bin": { + "oxfmt": "bin/oxfmt" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxfmt/binding-android-arm-eabi": "0.40.0", + "@oxfmt/binding-android-arm64": "0.40.0", + "@oxfmt/binding-darwin-arm64": "0.40.0", + "@oxfmt/binding-darwin-x64": "0.40.0", + "@oxfmt/binding-freebsd-x64": "0.40.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.40.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.40.0", + "@oxfmt/binding-linux-arm64-gnu": "0.40.0", + "@oxfmt/binding-linux-arm64-musl": "0.40.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.40.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.40.0", + "@oxfmt/binding-linux-riscv64-musl": "0.40.0", + "@oxfmt/binding-linux-s390x-gnu": "0.40.0", + "@oxfmt/binding-linux-x64-gnu": "0.40.0", + "@oxfmt/binding-linux-x64-musl": "0.40.0", + "@oxfmt/binding-openharmony-arm64": "0.40.0", + "@oxfmt/binding-win32-arm64-msvc": "0.40.0", + "@oxfmt/binding-win32-ia32-msvc": "0.40.0", + "@oxfmt/binding-win32-x64-msvc": "0.40.0" + } + }, + "node_modules/oxlint": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.55.0.tgz", + "integrity": "sha512-T+FjepiyWpaZMhekqRpH8Z3I4vNM610p6w+Vjfqgj5TZUxHXl7N8N5IPvmOU8U4XdTRxqtNNTh9Y4hLtr7yvFg==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.55.0", + "@oxlint/binding-android-arm64": "1.55.0", + "@oxlint/binding-darwin-arm64": "1.55.0", + "@oxlint/binding-darwin-x64": "1.55.0", + "@oxlint/binding-freebsd-x64": "1.55.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.55.0", + "@oxlint/binding-linux-arm-musleabihf": "1.55.0", + "@oxlint/binding-linux-arm64-gnu": "1.55.0", + "@oxlint/binding-linux-arm64-musl": "1.55.0", + "@oxlint/binding-linux-ppc64-gnu": "1.55.0", + "@oxlint/binding-linux-riscv64-gnu": "1.55.0", + "@oxlint/binding-linux-riscv64-musl": "1.55.0", + "@oxlint/binding-linux-s390x-gnu": "1.55.0", + "@oxlint/binding-linux-x64-gnu": "1.55.0", + "@oxlint/binding-linux-x64-musl": "1.55.0", + "@oxlint/binding-openharmony-arm64": "1.55.0", + "@oxlint/binding-win32-arm64-msvc": "1.55.0", + "@oxlint/binding-win32-ia32-msvc": "1.55.0", + "@oxlint/binding-win32-x64-msvc": "1.55.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=0.15.0" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + } + } + }, + "node_modules/oxlint-tsgolint": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/oxlint-tsgolint/-/oxlint-tsgolint-0.16.0.tgz", + "integrity": "sha512-4RuJK2jP08XwqtUu+5yhCbxEauCm6tv2MFHKEMsjbosK2+vy5us82oI3VLuHwbNyZG7ekZA26U2LLHnGR4frIA==", + "dev": true, + "license": "MIT", + "bin": { + "tsgolint": "bin/tsgolint.js" + }, + "optionalDependencies": { + "@oxlint-tsgolint/darwin-arm64": "0.16.0", + "@oxlint-tsgolint/darwin-x64": "0.16.0", + "@oxlint-tsgolint/linux-arm64": "0.16.0", + "@oxlint-tsgolint/linux-x64": "0.16.0", + "@oxlint-tsgolint/win32-arm64": "0.16.0", + "@oxlint-tsgolint/win32-x64": "0.16.0" + } + }, "node_modules/p-event": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", @@ -12154,16 +12535,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/pdfjs-dist": { "version": "5.4.296", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz", @@ -12258,6 +12629,19 @@ "node": ">= 6" } }, + "node_modules/pixelmatch": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", + "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", + "dev": true, + "license": "ISC", + "dependencies": { + "pngjs": "^7.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, "node_modules/pkce-challenge": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", @@ -12267,6 +12651,16 @@ "node": ">=16.20.0" } }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.19.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -12277,9 +12671,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dev": true, "funding": [ { @@ -13368,51 +13762,6 @@ "dev": true, "license": "MIT" }, - "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", - "fsevents": "~2.3.2" - } - }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -13941,6 +14290,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -14114,9 +14478,9 @@ } }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", "dev": true, "license": "MIT" }, @@ -14409,19 +14773,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/style-mod": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", @@ -14900,11 +15251,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -14924,29 +15278,19 @@ } }, "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-2.1.0.tgz", + "integrity": "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==", "dev": true, "license": "MIT", "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.0.0 || >=22.0.0" } }, "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -14995,6 +15339,16 @@ "node": ">=0.6" } }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -15549,17 +15903,17 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", + "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", + "@oxc-project/runtime": "0.115.0", + "lightningcss": "^1.32.0", "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.9", "tinyglobby": "^0.2.15" }, "bin": { @@ -15576,9 +15930,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.0.0-alpha.31", + "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -15591,15 +15946,18 @@ "@types/node": { "optional": true }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, "jiti": { "optional": true }, "less": { "optional": true }, - "lightningcss": { - "optional": true - }, "sass": { "optional": true }, @@ -15623,29 +15981,6 @@ } } }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite-plugin-svgr": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.5.0.tgz", @@ -15661,106 +15996,106 @@ "vite": ">=2.6.0" } }, - "node_modules/vite-plugin-top-level-await": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.6.0.tgz", - "integrity": "sha512-bNhUreLamTIkoulCR9aDXbTbhLk6n1YE8NJUTTxl5RYskNRtzOR0ASzSjBVRtNdjIfngDXo11qOsybGLNsrdww==", + "node_modules/vite-plus": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/vite-plus/-/vite-plus-0.1.11.tgz", + "integrity": "sha512-mDUbWirSUWtS/diQiq1QkHGsMNQWu90kSH5s7RWqVnV9s1PRxQ1IcH6mIeOG7YzPJlfO1vQbONZRsOfdyj9IKw==", "dev": true, "license": "MIT", "dependencies": { - "@rollup/plugin-virtual": "^3.0.2", - "@swc/core": "^1.12.14", - "@swc/wasm": "^1.12.14", - "uuid": "10.0.0" + "@oxc-project/types": "=0.115.0", + "@voidzero-dev/vite-plus-core": "0.1.11", + "@voidzero-dev/vite-plus-test": "0.1.11", + "cac": "^6.7.14", + "cross-spawn": "^7.0.5", + "oxfmt": "=0.40.0", + "oxlint": "=1.55.0", + "oxlint-tsgolint": "=0.16.0", + "picocolors": "^1.1.1" }, - "peerDependencies": { - "vite": ">=2.8" - } - }, - "node_modules/vite-plugin-top-level-await/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite-plugin-wasm": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.5.0.tgz", - "integrity": "sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vite": "^2 || ^3 || ^4 || ^5 || ^6 || ^7" + "oxfmt": "bin/oxfmt", + "oxlint": "bin/oxlint", + "vp": "bin/vp" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@voidzero-dev/vite-plus-darwin-arm64": "0.1.11", + "@voidzero-dev/vite-plus-darwin-x64": "0.1.11", + "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.11", + "@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.11", + "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.11", + "@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.11" } }, "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz", + "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==", "dev": true, "license": "MIT", "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", + "@vitest/expect": "4.1.0", + "@vitest/mocker": "4.1.0", + "@vitest/pretty-format": "4.1.0", + "@vitest/runner": "4.1.0", + "@vitest/snapshot": "4.1.0", + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.0", + "@vitest/browser-preview": "4.1.0", + "@vitest/browser-webdriverio": "4.1.0", + "@vitest/ui": "4.1.0", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { "optional": true }, - "@types/debug": { + "@opentelemetry/api": { "optional": true }, "@types/node": { "optional": true }, - "@vitest/browser": { + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { "optional": true }, "@vitest/ui": { @@ -15771,6 +16106,9 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, @@ -16588,9 +16926,11 @@ }, "devDependencies": { "@lezer/generator": "^1.8.0", + "@rolldown/plugin-babel": "^0.2.1", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tanstack/router-plugin": "^1.127.5", + "@types/babel__core": "^7.20.5", "@types/node": "^24.0.13", "@types/papaparse": "^5.3.16", "@types/parse-color": "^1.0.3", @@ -16607,11 +16947,10 @@ "postcss": "^8.5.6", "postcss-nesting": "^13.0.2", "tailwindcss": "^3.4.17", - "vite": "^8.0.0", + "vite": "npm:@voidzero-dev/vite-plus-core@latest", "vite-plugin-static-copy": "^3.3.0", "vite-plugin-svgr": "^4.5.0", - "vite-plugin-top-level-await": "^1.6.0", - "vite-plugin-wasm": "^3.5.0" + "vite-plus": "latest" } }, "src-web/node_modules/@rolldown/pluginutils": { @@ -16671,54 +17010,6 @@ "node": "^18 || >=20" } }, - "src-web/node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "src-web/node_modules/postcss/node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "src-web/node_modules/uuid": { "version": "11.1.0", "funding": [ @@ -16730,85 +17021,6 @@ "uuid": "dist/esm/bin/uuid" } }, - "src-web/node_modules/vite": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", - "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/runtime": "0.115.0", - "lightningcss": "^1.32.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.8", - "rolldown": "1.0.0-rc.9", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.0.0-alpha.31", - "esbuild": "^0.27.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, "src-web/node_modules/vite-plugin-static-copy": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.3.0.tgz", diff --git a/package.json b/package.json index 3467c2b8..aca27ec0 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "src-web" ], "scripts": { - "prepare": "husky", + "prepare": "vp config", "init": "npm install && npm run bootstrap", "start": "npm run app-dev", "app-build": "tauri build", @@ -83,27 +83,27 @@ "vendor:vendor-protoc": "node scripts/vendor-protoc.cjs", "vendor:vendor-node": "node scripts/vendor-node.cjs", "lint": "run-p lint:*", - "lint:biome": "biome lint", - "lint:extra": "npm run --workspaces --if-present lint", - "format": "biome format --write .", + "lint:vp": "vp lint", + "lint:workspaces": "npm run --workspaces --if-present lint", "replace-version": "node scripts/replace-version.cjs", "tauri": "tauri", "tauri-before-build": "npm run bootstrap", "tauri-before-dev": "node scripts/run-workspaces-dev.mjs" }, "overrides": { - "js-yaml": "^4.1.1" + "js-yaml": "^4.1.1", + "vite": "npm:@voidzero-dev/vite-plus-core@latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" }, "devDependencies": { - "@biomejs/biome": "^2.3.13", "@tauri-apps/cli": "^2.9.6", "@yaakapp/cli": "^0.5.1", "dotenv-cli": "^11.0.0", - "husky": "^9.1.7", "nodejs-file-downloader": "^4.13.0", "npm-run-all": "^4.1.5", "typescript": "^5.8.3", - "vitest": "^3.2.4" + "vite-plus": "latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" }, "dependencies": { "@codemirror/lang-go": "^6.0.1", @@ -111,5 +111,6 @@ "@codemirror/lang-php": "^6.0.2", "@codemirror/lang-python": "^6.2.1", "@codemirror/legacy-modes": "^6.5.2" - } + }, + "packageManager": "npm@11.11.1" } diff --git a/packages/common-lib/debounce.ts b/packages/common-lib/debounce.ts index 4118f25b..e6dc28aa 100644 --- a/packages/common-lib/debounce.ts +++ b/packages/common-lib/debounce.ts @@ -1,7 +1,7 @@ -// biome-ignore lint/suspicious/noExplicitAny: none +// oxlint-disable-next-line no-explicit-any export function debounce(fn: (...args: any[]) => void, delay = 500) { let timer: ReturnType; - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any const result = (...args: any[]) => { clearTimeout(timer); timer = setTimeout(() => fn(...args), delay); diff --git a/packages/plugin-runtime-types/src/plugins/AuthenticationPlugin.ts b/packages/plugin-runtime-types/src/plugins/AuthenticationPlugin.ts index 5da5f0b9..4102c27d 100644 --- a/packages/plugin-runtime-types/src/plugins/AuthenticationPlugin.ts +++ b/packages/plugin-runtime-types/src/plugins/AuthenticationPlugin.ts @@ -16,7 +16,7 @@ type AddDynamicMethod = { ) => MaybePromise | null | undefined>; }; -// biome-ignore lint/suspicious/noExplicitAny: distributive conditional type pattern +// oxlint-disable-next-line no-explicit-any -- distributive conditional type pattern type AddDynamic = T extends any ? T extends { inputs?: FormInput[] } ? Omit & { diff --git a/packages/plugin-runtime-types/src/plugins/Context.ts b/packages/plugin-runtime-types/src/plugins/Context.ts index 7191a4c6..1e139b6c 100644 --- a/packages/plugin-runtime-types/src/plugins/Context.ts +++ b/packages/plugin-runtime-types/src/plugins/Context.ts @@ -42,7 +42,7 @@ type AddDynamicMethod = { ) => MaybePromise | null | undefined>; }; -// biome-ignore lint/suspicious/noExplicitAny: distributive conditional type pattern +// oxlint-disable-next-line no-explicit-any -- distributive conditional type pattern type AddDynamic = T extends any ? T extends { inputs?: FormInput[] } ? Omit & { diff --git a/packages/plugin-runtime-types/src/plugins/TemplateFunctionPlugin.ts b/packages/plugin-runtime-types/src/plugins/TemplateFunctionPlugin.ts index b589e14e..747c4b7d 100644 --- a/packages/plugin-runtime-types/src/plugins/TemplateFunctionPlugin.ts +++ b/packages/plugin-runtime-types/src/plugins/TemplateFunctionPlugin.ts @@ -9,7 +9,7 @@ type AddDynamicMethod = { ) => MaybePromise | null | undefined>; }; -// biome-ignore lint/suspicious/noExplicitAny: distributive conditional type pattern +// oxlint-disable-next-line no-explicit-any -- distributive conditional type pattern type AddDynamic = T extends any ? T extends { inputs?: FormInput[] } ? Omit & { diff --git a/packages/plugin-runtime/src/PluginInstance.ts b/packages/plugin-runtime/src/PluginInstance.ts index dcbc8753..d8459a20 100644 --- a/packages/plugin-runtime/src/PluginInstance.ts +++ b/packages/plugin-runtime/src/PluginInstance.ts @@ -91,7 +91,7 @@ export class PluginInstance { ); } catch (err: unknown) { await ctx.toast.show({ - message: `Failed to initialize plugin ${this.#workerData.bootRequest.dir.split('/').pop()}: ${err}`, + message: `Failed to initialize plugin ${this.#workerData.bootRequest.dir.split('/').pop()}: ${err instanceof Error ? err.message : String(err)}`, color: 'notice', icon: 'alert_triangle', timeout: 30000, @@ -328,7 +328,8 @@ export class PluginInstance { payload.values = applyFormInputDefaults(args, payload.values); const resolvedArgs = await applyDynamicFormInput(ctx, args, payload); const resolvedActions: HttpAuthenticationAction[] = []; - for (const { onSelect, ...action } of actions ?? []) { + // oxlint-disable-next-line unbound-method + for (const { onSelect: _onSelect, ...action } of actions ?? []) { resolvedActions.push(action); } @@ -474,7 +475,7 @@ export class PluginInstance { { type: 'call_template_function_response', value: null, - error: `${err}`.replace(/^Error:\s*/g, ''), + error: (err instanceof Error ? err.message : String(err)).replace(/^Error:\s*/g, ''), }, replyId, ); @@ -483,7 +484,7 @@ export class PluginInstance { } } } catch (err) { - const error = `${err}`.replace(/^Error:\s*/g, ''); + const error = (err instanceof Error ? err.message : String(err)).replace(/^Error:\s*/g, ''); console.log('Plugin call threw exception', payload.type, '→', error); this.#sendPayload(context, { type: 'error_response', error }, replyId); return; @@ -909,7 +910,7 @@ export class PluginInstance { render: async (args: TemplateRenderRequest) => { const payload = { type: 'template_render_request', ...args } as const; const result = await this.#sendForReply(context, payload); - // biome-ignore lint/suspicious/noExplicitAny: That's okay + // oxlint-disable-next-line no-explicit-any -- That's okay return result.data as any; }, }, @@ -972,8 +973,8 @@ export class PluginInstance { function stripDynamicCallbacks(inputs: { dynamic?: unknown }[]): FormInput[] { return inputs.map((input) => { - // biome-ignore lint/suspicious/noExplicitAny: stripping dynamic from union type - const { dynamic, ...rest } = input as any; + // oxlint-disable-next-line no-explicit-any -- stripping dynamic from union type + const { dynamic: _dynamic, ...rest } = input as any; if ('inputs' in rest && Array.isArray(rest.inputs)) { rest.inputs = stripDynamicCallbacks(rest.inputs); } diff --git a/packages/plugin-runtime/src/interceptStdout.ts b/packages/plugin-runtime/src/interceptStdout.ts index 089d0a31..4729da31 100644 --- a/packages/plugin-runtime/src/interceptStdout.ts +++ b/packages/plugin-runtime/src/interceptStdout.ts @@ -1,3 +1,4 @@ +/* oxlint-disable unbound-method */ import process from 'node:process'; export function interceptStdout(intercept: (text: string) => string) { @@ -24,5 +25,5 @@ export function interceptStdout(intercept: (text: string) => string) { } function interceptor(text: string, fn: (text: string) => string) { - return fn(text).replace(/\n$/, '') + (fn(text) && /\n$/.test(text) ? '\n' : ''); + return fn(text).replace(/\n$/, '') + (fn(text) && text.endsWith('\n') ? '\n' : ''); } diff --git a/packages/plugin-runtime/tests/common.test.ts b/packages/plugin-runtime/tests/common.test.ts index 700d1106..10799ce5 100644 --- a/packages/plugin-runtime/tests/common.test.ts +++ b/packages/plugin-runtime/tests/common.test.ts @@ -1,7 +1,7 @@ import { applyFormInputDefaults } from '@yaakapp-internal/lib/templateFunction'; import type { CallTemplateFunctionArgs } from '@yaakapp-internal/plugins'; import type { Context, DynamicTemplateFunctionArg } from '@yaakapp/api'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { applyDynamicFormInput } from '../src/common'; describe('applyFormInputDefaults', () => { diff --git a/packages/plugin-runtime/tsconfig.json b/packages/plugin-runtime/tsconfig.json index 845d46fa..7b51fbe2 100644 --- a/packages/plugin-runtime/tsconfig.json +++ b/packages/plugin-runtime/tsconfig.json @@ -10,11 +10,7 @@ "moduleResolution": "node16", "resolveJsonModule": true, "sourceMap": true, - "outDir": "build", - "baseUrl": ".", - "paths": { - "*": ["node_modules/*", "src/types/*"] - } + "outDir": "build" }, "include": ["src"] } diff --git a/plugins-external/faker/package.json b/plugins-external/faker/package.json index b5d00a7e..c02a62e9 100755 --- a/plugins-external/faker/package.json +++ b/plugins-external/faker/package.json @@ -12,7 +12,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "@faker-js/faker": "^10.1.0" diff --git a/plugins-external/faker/tests/init.test.ts b/plugins-external/faker/tests/init.test.ts index a4fd4c60..ca779769 100644 --- a/plugins-external/faker/tests/init.test.ts +++ b/plugins-external/faker/tests/init.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; describe('template-function-faker', () => { it('exports all expected template functions', async () => { @@ -13,6 +13,7 @@ describe('template-function-faker', () => { it('renders date results as unquoted ISO strings', async () => { const { plugin } = await import('../src/index'); const fn = plugin.templateFunctions?.find((fn) => fn.name === 'faker.date.future'); + // oxlint-disable-next-line unbound-method const onRender = fn?.onRender; expect(onRender).toBeTypeOf('function'); diff --git a/plugins-external/httpsnippet/src/index.ts b/plugins-external/httpsnippet/src/index.ts index 92303317..bc67d762 100644 --- a/plugins-external/httpsnippet/src/index.ts +++ b/plugins-external/httpsnippet/src/index.ts @@ -173,7 +173,7 @@ function toHarRequest(request: Partial) { return har; } -function maybeParseJSON(v: unknown, fallback: T): T | unknown { +function maybeParseJSON(v: unknown, fallback: T): unknown { if (typeof v !== 'string') return fallback; try { return JSON.parse(v); @@ -305,7 +305,7 @@ export const plugin: PluginDefinition = { }); } catch (err) { await ctx.toast.show({ - message: `Failed to generate snippet: ${err}`, + message: `Failed to generate snippet: ${err instanceof Error ? err.message : String(err)}`, icon: 'alert_triangle', color: 'danger', }); diff --git a/plugins-external/mcp-server/src/index.ts b/plugins-external/mcp-server/src/index.ts index 6561c47e..b92bfd57 100644 --- a/plugins-external/mcp-server/src/index.ts +++ b/plugins-external/mcp-server/src/index.ts @@ -15,7 +15,7 @@ export const plugin: PluginDefinition = { mcpServer = createMcpServer({ yaak: ctx }, serverPort); } catch (err) { console.error('Failed to start MCP server:', err); - ctx.toast.show({ + void ctx.toast.show({ message: `Failed to start MCP Server: ${err instanceof Error ? err.message : String(err)}`, icon: 'alert_triangle', color: 'danger', diff --git a/plugins-external/mcp-server/src/server.ts b/plugins-external/mcp-server/src/server.ts index e30fa76e..12989a3b 100644 --- a/plugins-external/mcp-server/src/server.ts +++ b/plugins-external/mcp-server/src/server.ts @@ -30,7 +30,7 @@ export function createMcpServer(ctx: McpServerContext, port: number) { if (!mcpServer.isConnected()) { // Connect the mcp with the transport await mcpServer.connect(transport); - ctx.yaak.toast.show({ + void ctx.yaak.toast.show({ message: `MCP Server connected`, icon: 'info', color: 'info', @@ -48,7 +48,7 @@ export function createMcpServer(ctx: McpServerContext, port: number) { }, (info) => { console.log('Started MCP server on ', info.address); - ctx.yaak.toast.show({ + void ctx.yaak.toast.show({ message: `MCP Server running on http://127.0.0.1:${info.port}`, icon: 'info', color: 'secondary', diff --git a/plugins/action-copy-curl/package.json b/plugins/action-copy-curl/package.json index 3194af4e..3ab20a0a 100644 --- a/plugins/action-copy-curl/package.json +++ b/plugins/action-copy-curl/package.json @@ -12,6 +12,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/action-copy-curl/tests/index.test.ts b/plugins/action-copy-curl/tests/index.test.ts index 45fdcd7c..744501be 100644 --- a/plugins/action-copy-curl/tests/index.test.ts +++ b/plugins/action-copy-curl/tests/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convertToCurl } from '../src'; describe('exporter-curl', () => { diff --git a/plugins/action-copy-grpcurl/package.json b/plugins/action-copy-grpcurl/package.json index 4f17599c..14407114 100644 --- a/plugins/action-copy-grpcurl/package.json +++ b/plugins/action-copy-grpcurl/package.json @@ -12,6 +12,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/action-copy-grpcurl/tests/index.test.ts b/plugins/action-copy-grpcurl/tests/index.test.ts index 51d43d02..38314c97 100644 --- a/plugins/action-copy-grpcurl/tests/index.test.ts +++ b/plugins/action-copy-grpcurl/tests/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convert } from '../src'; describe('exporter-curl', () => { diff --git a/plugins/auth-basic/package.json b/plugins/auth-basic/package.json index 89affc22..b349b09e 100644 --- a/plugins/auth-basic/package.json +++ b/plugins/auth-basic/package.json @@ -12,6 +12,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/auth-basic/tests/index.test.ts b/plugins/auth-basic/tests/index.test.ts index b337c689..e577a313 100644 --- a/plugins/auth-basic/tests/index.test.ts +++ b/plugins/auth-basic/tests/index.test.ts @@ -1,5 +1,5 @@ import type { Context } from '@yaakapp/api'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { plugin } from '../src'; const ctx = {} as Context; diff --git a/plugins/auth-bearer/package.json b/plugins/auth-bearer/package.json index f0a254d0..fc16e54c 100644 --- a/plugins/auth-bearer/package.json +++ b/plugins/auth-bearer/package.json @@ -12,6 +12,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/auth-bearer/tests/index.test.ts b/plugins/auth-bearer/tests/index.test.ts index 216d80e8..225f854c 100644 --- a/plugins/auth-bearer/tests/index.test.ts +++ b/plugins/auth-bearer/tests/index.test.ts @@ -1,5 +1,5 @@ import type { Context } from '@yaakapp/api'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { plugin } from '../src'; const ctx = {} as Context; diff --git a/plugins/auth-ntlm/package.json b/plugins/auth-ntlm/package.json index 3d0b6e16..9e2a1f4f 100644 --- a/plugins/auth-ntlm/package.json +++ b/plugins/auth-ntlm/package.json @@ -12,7 +12,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "httpntlm": "^1.8.13" diff --git a/plugins/auth-ntlm/tests/index.test.ts b/plugins/auth-ntlm/tests/index.test.ts index e590a80c..0ee52069 100644 --- a/plugins/auth-ntlm/tests/index.test.ts +++ b/plugins/auth-ntlm/tests/index.test.ts @@ -1,5 +1,5 @@ import type { Context } from '@yaakapp/api'; -import { beforeEach, describe, expect, test, vi } from 'vitest'; +import { beforeEach, describe, expect, test, vi } from 'vite-plus/test'; const ntlmMock = vi.hoisted(() => ({ createType1Message: vi.fn(), @@ -17,6 +17,7 @@ describe('auth-ntlm', () => { ntlmMock.parseType2Message.mockReset(); ntlmMock.createType3Message.mockReset(); ntlmMock.createType1Message.mockReturnValue('NTLM TYPE1'); + // oxlint-disable-next-line no-explicit-any ntlmMock.parseType2Message.mockReturnValue({} as any); ntlmMock.createType3Message.mockReturnValue('NTLM TYPE3'); }); diff --git a/plugins/auth-oauth2/package.json b/plugins/auth-oauth2/package.json index 55b69350..8238cab4 100644 --- a/plugins/auth-oauth2/package.json +++ b/plugins/auth-oauth2/package.json @@ -12,7 +12,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "jsonwebtoken": "^9.0.2" diff --git a/plugins/auth-oauth2/src/fetchAccessToken.ts b/plugins/auth-oauth2/src/fetchAccessToken.ts index d0c28c8d..05b524e8 100644 --- a/plugins/auth-oauth2/src/fetchAccessToken.ts +++ b/plugins/auth-oauth2/src/fetchAccessToken.ts @@ -71,7 +71,7 @@ export async function fetchAccessToken( throw new Error(`Failed to fetch access token with status=${resp.status} and body=${body}`); } - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any let response: any; try { response = JSON.parse(body); diff --git a/plugins/auth-oauth2/src/getOrRefreshAccessToken.ts b/plugins/auth-oauth2/src/getOrRefreshAccessToken.ts index fcd47148..be643b59 100644 --- a/plugins/auth-oauth2/src/getOrRefreshAccessToken.ts +++ b/plugins/auth-oauth2/src/getOrRefreshAccessToken.ts @@ -91,7 +91,7 @@ export async function getOrRefreshAccessToken( throw new Error(`Failed to refresh access token with status=${resp.status} and body=${body}`); } - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any let response: any; try { response = JSON.parse(body); diff --git a/plugins/auth-oauth2/src/grants/authorizationCode.ts b/plugins/auth-oauth2/src/grants/authorizationCode.ts index fc2b535f..3138141f 100644 --- a/plugins/auth-oauth2/src/grants/authorizationCode.ts +++ b/plugins/auth-oauth2/src/grants/authorizationCode.ts @@ -148,7 +148,7 @@ async function getCodeViaEmbeddedBrowser( const authorizationUrlStr = authorizationUrl.toString(); console.log('[oauth2] Authorizing via embedded browser', authorizationUrlStr); - // biome-ignore lint/suspicious/noAsyncPromiseExecutor: Required for this pattern + // oxlint-disable-next-line no-async-promise-executor -- Required for this pattern return new Promise(async (resolve, reject) => { let foundCode = false; const { close } = await ctx.window.openUrl({ diff --git a/plugins/auth-oauth2/src/grants/clientCredentials.ts b/plugins/auth-oauth2/src/grants/clientCredentials.ts index 3658a04c..a0dca5f6 100644 --- a/plugins/auth-oauth2/src/grants/clientCredentials.ts +++ b/plugins/auth-oauth2/src/grants/clientCredentials.ts @@ -53,6 +53,7 @@ function buildClientAssertionJwt(params: { signingKey = secret; } else if (trimmed.startsWith('{')) { // Looks like JSON - treat as JWK. There is surely a better way to detect JWK vs a raw secret, but this should work in most cases. + // oxlint-disable-next-line no-explicit-any let jwk: any; try { jwk = JSON.parse(trimmed); diff --git a/plugins/auth-oauth2/src/grants/implicit.ts b/plugins/auth-oauth2/src/grants/implicit.ts index 3ec58502..5b24e562 100644 --- a/plugins/auth-oauth2/src/grants/implicit.ts +++ b/plugins/auth-oauth2/src/grants/implicit.ts @@ -105,7 +105,7 @@ async function getTokenViaEmbeddedBrowser( const authorizationUrlStr = authorizationUrl.toString(); console.log('[oauth2] Authorizing via embedded browser (implicit)', authorizationUrlStr); - // biome-ignore lint/suspicious/noAsyncPromiseExecutor: Required for this pattern + // oxlint-disable-next-line no-async-promise-executor -- Required for this pattern return new Promise(async (resolve, reject) => { let foundAccessToken = false; const { close } = await ctx.window.openUrl({ diff --git a/plugins/auth-oauth2/src/index.ts b/plugins/auth-oauth2/src/index.ts index 3dd55a2f..bf9f5f28 100644 --- a/plugins/auth-oauth2/src/index.ts +++ b/plugins/auth-oauth2/src/index.ts @@ -590,11 +590,11 @@ export const plugin: PluginDefinition = { credentialsInBody, }); } else { - throw new Error(`Invalid grant type ${grantType}`); + throw new Error(`Invalid grant type ${String(grantType)}`); } const headerName = stringArg(values, 'headerName') || 'Authorization'; - const headerValue = `${headerPrefix} ${token.response[tokenName]}`.trim(); + const headerValue = `${headerPrefix} ${token.response[tokenName] ?? ''}`.trim(); return { setHeaders: [{ name: headerName, value: headerValue }] }; }, }, diff --git a/plugins/auth-oauth2/tests/util.test.ts b/plugins/auth-oauth2/tests/util.test.ts index edbe4d71..a3435394 100644 --- a/plugins/auth-oauth2/tests/util.test.ts +++ b/plugins/auth-oauth2/tests/util.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { extractCode } from '../src/util'; describe('extractCode', () => { diff --git a/plugins/filter-jsonpath/src/index.ts b/plugins/filter-jsonpath/src/index.ts index 551d442b..6a9f815e 100644 --- a/plugins/filter-jsonpath/src/index.ts +++ b/plugins/filter-jsonpath/src/index.ts @@ -11,7 +11,7 @@ export const plugin: PluginDefinition = { const filtered = JSONPath({ path: args.filter, json: parsed }); return { content: JSON.stringify(filtered, null, 2) }; } catch (err) { - return { content: '', error: `Invalid filter: ${err}` }; + return { content: '', error: `Invalid filter: ${err instanceof Error ? err.message : String(err)}` }; } }, }, diff --git a/plugins/filter-xpath/src/index.ts b/plugins/filter-xpath/src/index.ts index 538a6529..22e90ebd 100644 --- a/plugins/filter-xpath/src/index.ts +++ b/plugins/filter-xpath/src/index.ts @@ -1,3 +1,4 @@ +/* oxlint-disable no-base-to-string */ import { DOMParser } from '@xmldom/xmldom'; import type { PluginDefinition } from '@yaakapp/api'; import xpath from 'xpath'; @@ -7,7 +8,7 @@ export const plugin: PluginDefinition = { name: 'XPath', description: 'Filter XPath', onFilter(_ctx, args) { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any const doc: any = new DOMParser().parseFromString(args.payload, 'text/xml'); try { const result = xpath.select(args.filter, doc, false); @@ -17,7 +18,7 @@ export const plugin: PluginDefinition = { // Not sure what cases this happens in (?) return { content: String(result) }; } catch (err) { - return { content: '', error: `Invalid filter: ${err}` }; + return { content: '', error: `Invalid filter: ${err instanceof Error ? err.message : String(err)}` }; } }, }, diff --git a/plugins/importer-curl/package.json b/plugins/importer-curl/package.json index 645204ad..f91a6428 100644 --- a/plugins/importer-curl/package.json +++ b/plugins/importer-curl/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "shlex": "^3.0.0" diff --git a/plugins/importer-curl/src/index.ts b/plugins/importer-curl/src/index.ts index c7f2cf86..53c99074 100644 --- a/plugins/importer-curl/src/index.ts +++ b/plugins/importer-curl/src/index.ts @@ -48,7 +48,7 @@ export const plugin: PluginDefinition = { name: 'cURL', description: 'Import cURL commands', onImport(_ctx: Context, args: { text: string }) { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any return convertCurl(args.text) as any; }, }, diff --git a/plugins/importer-curl/tests/index.test.ts b/plugins/importer-curl/tests/index.test.ts index 3c986817..3b6ae65a 100644 --- a/plugins/importer-curl/tests/index.test.ts +++ b/plugins/importer-curl/tests/index.test.ts @@ -1,5 +1,5 @@ import type { HttpRequest, Workspace } from '@yaakapp/api'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convertCurl } from '../src'; describe('importer-curl', () => { diff --git a/plugins/importer-insomnia/package.json b/plugins/importer-insomnia/package.json index 6bbb3286..2bccf9c0 100644 --- a/plugins/importer-insomnia/package.json +++ b/plugins/importer-insomnia/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "yaml": "^2.4.2" diff --git a/plugins/importer-insomnia/src/common.ts b/plugins/importer-insomnia/src/common.ts index 209df933..04f0aa75 100644 --- a/plugins/importer-insomnia/src/common.ts +++ b/plugins/importer-insomnia/src/common.ts @@ -30,7 +30,7 @@ export function deleteUndefinedAttrs(obj: T): T { /** Recursively render all nested object properties */ export function convertTemplateSyntax(obj: T): T { if (typeof obj === 'string') { - // biome-ignore lint/suspicious/noTemplateCurlyInString: Yaak template syntax + // oxlint-disable-next-line no-template-curly-in-string -- Yaak template syntax return obj.replaceAll(/{{\s*(_\.)?([^}]+)\s*}}/g, '${[$2]}') as T; } if (Array.isArray(obj) && obj != null) { diff --git a/plugins/importer-insomnia/src/v4.ts b/plugins/importer-insomnia/src/v4.ts index 4785c281..9f895339 100644 --- a/plugins/importer-insomnia/src/v4.ts +++ b/plugins/importer-insomnia/src/v4.ts @@ -1,4 +1,4 @@ -// biome-ignore-all lint/suspicious/noExplicitAny: too flexible for strict types +/* oxlint-disable no-explicit-any */ import type { PartialImportResources } from '@yaakapp/api'; import { convertId, convertTemplateSyntax, isJSObject } from './common'; @@ -203,7 +203,7 @@ function importEnvironment( variables: Object.entries(e.data).map(([name, value]) => ({ enabled: true, name, - value: `${value}`, + value: String(value), })), }; } diff --git a/plugins/importer-insomnia/src/v5.ts b/plugins/importer-insomnia/src/v5.ts index b22b6f0f..6a236df8 100644 --- a/plugins/importer-insomnia/src/v5.ts +++ b/plugins/importer-insomnia/src/v5.ts @@ -1,4 +1,4 @@ -// biome-ignore-all lint/suspicious/noExplicitAny: too flexible for strict types +/* oxlint-disable no-explicit-any */ import type { PartialImportResources } from '@yaakapp/api'; import { convertId, convertTemplateSyntax, isJSObject } from './common'; @@ -261,7 +261,7 @@ function importFolder( variables: Object.entries(f.environment ?? {}).map(([name, value]) => ({ enabled: true, name, - value: `${value}`, + value: String(value), })), }; } @@ -308,7 +308,7 @@ function importEnvironment( variables: Object.entries(e.data ?? {}).map(([name, value]) => ({ enabled: true, name, - value: `${value}`, + value: String(value), })), }; } diff --git a/plugins/importer-insomnia/tests/index.test.ts b/plugins/importer-insomnia/tests/index.test.ts index a9fb2b1b..6952c520 100644 --- a/plugins/importer-insomnia/tests/index.test.ts +++ b/plugins/importer-insomnia/tests/index.test.ts @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import YAML from 'yaml'; import { convertInsomnia } from '../src'; diff --git a/plugins/importer-openapi/package.json b/plugins/importer-openapi/package.json index ea7b6683..642b0593 100644 --- a/plugins/importer-openapi/package.json +++ b/plugins/importer-openapi/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "openapi-to-postmanv2": "^5.8.0", diff --git a/plugins/importer-openapi/src/index.ts b/plugins/importer-openapi/src/index.ts index 33844be0..9e0e83e0 100644 --- a/plugins/importer-openapi/src/index.ts +++ b/plugins/importer-openapi/src/index.ts @@ -14,11 +14,11 @@ export const plugin: PluginDefinition = { }; export async function convertOpenApi(contents: string): Promise { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any let postmanCollection: any; try { postmanCollection = await new Promise((resolve, reject) => { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any convert({ type: 'string', data: contents }, {}, (err, result: any) => { if (err != null) reject(err); diff --git a/plugins/importer-openapi/tests/index.test.ts b/plugins/importer-openapi/tests/index.test.ts index 92a0e93f..565806c8 100644 --- a/plugins/importer-openapi/tests/index.test.ts +++ b/plugins/importer-openapi/tests/index.test.ts @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convertOpenApi } from '../src'; describe('importer-openapi', () => { diff --git a/plugins/importer-postman-environment/package.json b/plugins/importer-postman-environment/package.json index 888a34f2..b60c3836 100644 --- a/plugins/importer-postman-environment/package.json +++ b/plugins/importer-postman-environment/package.json @@ -8,6 +8,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/importer-postman-environment/src/index.ts b/plugins/importer-postman-environment/src/index.ts index 7b480b2c..8cb31764 100644 --- a/plugins/importer-postman-environment/src/index.ts +++ b/plugins/importer-postman-environment/src/index.ts @@ -1,3 +1,4 @@ +/* oxlint-disable no-base-to-string */ import type { Context, Environment, @@ -84,7 +85,7 @@ function parseJSONToRecord(jsonStr: string): Record | null { } } -function toRecord(value: Record | unknown): Record { +function toRecord(value: unknown): Record { if (value && typeof value === 'object' && !Array.isArray(value)) { return value as Record; } diff --git a/plugins/importer-postman-environment/tests/index.test.ts b/plugins/importer-postman-environment/tests/index.test.ts index f944b865..88c8a16a 100644 --- a/plugins/importer-postman-environment/tests/index.test.ts +++ b/plugins/importer-postman-environment/tests/index.test.ts @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convertPostmanEnvironment } from '../src'; describe('importer-postman-environment', () => { diff --git a/plugins/importer-postman/package.json b/plugins/importer-postman/package.json index 7008d352..8dbb916f 100644 --- a/plugins/importer-postman/package.json +++ b/plugins/importer-postman/package.json @@ -8,6 +8,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/importer-postman/src/index.ts b/plugins/importer-postman/src/index.ts index 5aa957a6..68f4a2d8 100644 --- a/plugins/importer-postman/src/index.ts +++ b/plugins/importer-postman/src/index.ts @@ -1,3 +1,4 @@ +/* oxlint-disable no-base-to-string */ import type { Context, Environment, @@ -158,7 +159,7 @@ export function convertPostman(contents: string): ImportPluginResponse | undefin return { resources }; } -function convertUrl(rawUrl: string | unknown): Pick { +function convertUrl(rawUrl: unknown): Pick { if (typeof rawUrl === 'string') { return { url: rawUrl, urlParameters: [] }; } @@ -172,7 +173,7 @@ function convertUrl(rawUrl: string | unknown): Pick(jsonStr: string): Record | null { } } -function toRecord(value: Record | unknown): Record { +function toRecord(value: unknown): Record { if (value && typeof value === 'object' && !Array.isArray(value)) { return value as Record; } diff --git a/plugins/importer-postman/tests/index.test.ts b/plugins/importer-postman/tests/index.test.ts index aecf8a4f..4bdcf841 100644 --- a/plugins/importer-postman/tests/index.test.ts +++ b/plugins/importer-postman/tests/index.test.ts @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { convertPostman } from '../src'; describe('importer-postman', () => { diff --git a/plugins/importer-yaak/package.json b/plugins/importer-yaak/package.json index 41f24375..3eb501d1 100644 --- a/plugins/importer-yaak/package.json +++ b/plugins/importer-yaak/package.json @@ -7,6 +7,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/importer-yaak/src/index.ts b/plugins/importer-yaak/src/index.ts index bc215ea7..93fca0dd 100644 --- a/plugins/importer-yaak/src/index.ts +++ b/plugins/importer-yaak/src/index.ts @@ -11,7 +11,7 @@ export const plugin: PluginDefinition = { }; export function migrateImport(contents: string) { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any let parsed: any; try { parsed = JSON.parse(contents); diff --git a/plugins/importer-yaak/tests/index.test.ts b/plugins/importer-yaak/tests/index.test.ts index 634f76d0..a0626622 100644 --- a/plugins/importer-yaak/tests/index.test.ts +++ b/plugins/importer-yaak/tests/index.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { migrateImport } from '../src'; describe('importer-yaak', () => { diff --git a/plugins/template-function-1password/src/index.ts b/plugins/template-function-1password/src/index.ts index af11dd02..e8b0655c 100644 --- a/plugins/template-function-1password/src/index.ts +++ b/plugins/template-function-1password/src/index.ts @@ -55,7 +55,8 @@ async function op( } } - return { client: _clients[hash], clientHash: hash }; + // oxlint-disable-next-line no-non-null-assertion + return { client: _clients[hash]!, clientHash: hash }; } async function getValue( @@ -123,7 +124,7 @@ export const plugin: PluginDefinition = { { name: 'token', type: 'text', - // biome-ignore lint/suspicious/noTemplateCurlyInString: Yaak template syntax + // oxlint-disable-next-line no-template-curly-in-string -- Yaak template syntax defaultValue: '${[1PASSWORD_TOKEN]}', dynamic(_ctx, args) { switch (args.values.authMethod) { diff --git a/plugins/template-function-prompt/src/index.ts b/plugins/template-function-prompt/src/index.ts index bc8a008d..4247954f 100644 --- a/plugins/template-function-prompt/src/index.ts +++ b/plugins/template-function-prompt/src/index.ts @@ -53,7 +53,7 @@ export const plugin: PluginDefinition = { type: 'text', name: 'namespace', label: 'Namespace', - // biome-ignore lint/suspicious/noTemplateCurlyInString: Yaak template syntax + // oxlint-disable-next-line no-template-curly-in-string -- Yaak template syntax defaultValue: '${[ctx.workspace()]}', optional: true, }, diff --git a/plugins/template-function-regex/package.json b/plugins/template-function-regex/package.json index 99c95dd7..b37b12f1 100644 --- a/plugins/template-function-regex/package.json +++ b/plugins/template-function-regex/package.json @@ -7,6 +7,6 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" } } diff --git a/plugins/template-function-regex/tests/regex.test.ts b/plugins/template-function-regex/tests/regex.test.ts index 6368e53f..5d6af14d 100644 --- a/plugins/template-function-regex/tests/regex.test.ts +++ b/plugins/template-function-regex/tests/regex.test.ts @@ -1,5 +1,5 @@ import type { Context } from '@yaakapp/api'; -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { plugin } from '../src'; describe('regex.match', () => { diff --git a/plugins/template-function-timestamp/package.json b/plugins/template-function-timestamp/package.json index 5b7ac0cf..570719aa 100755 --- a/plugins/template-function-timestamp/package.json +++ b/plugins/template-function-timestamp/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "yaakcli build", "dev": "yaakcli dev", - "test": "vitest --run tests" + "test": "vp test --run tests" }, "dependencies": { "@date-fns/tz": "^1.4.1", diff --git a/plugins/template-function-timestamp/tests/formatDatetime.test.ts b/plugins/template-function-timestamp/tests/formatDatetime.test.ts index 55cc124c..b4cf5639 100644 --- a/plugins/template-function-timestamp/tests/formatDatetime.test.ts +++ b/plugins/template-function-timestamp/tests/formatDatetime.test.ts @@ -1,5 +1,5 @@ import { tz } from '@date-fns/tz'; -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { calculateDatetime, formatDatetime } from '../src'; describe('formatDatetime', () => { diff --git a/plugins/template-function-xml/src/index.ts b/plugins/template-function-xml/src/index.ts index bb1e732b..01279588 100755 --- a/plugins/template-function-xml/src/index.ts +++ b/plugins/template-function-xml/src/index.ts @@ -1,3 +1,4 @@ +/* oxlint-disable no-base-to-string */ import { DOMParser } from '@xmldom/xmldom'; import type { CallTemplateFunctionArgs, Context, PluginDefinition } from '@yaakapp/api'; import xpath from 'xpath'; @@ -68,7 +69,7 @@ export function filterXPath( result: XPathResult, join: string | null, ): string { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any const doc: any = new DOMParser().parseFromString(body, 'text/xml'); const items = xpath.select(path, doc, false); diff --git a/scripts/install-wasm-pack.cjs b/scripts/install-wasm-pack.cjs index 0cad3e52..ab637941 100644 --- a/scripts/install-wasm-pack.cjs +++ b/scripts/install-wasm-pack.cjs @@ -12,7 +12,7 @@ execSync('cargo install wasm-pack --locked', { stdio: 'inherit' }); function tryExecSync(cmd) { try { return execSync(cmd, { stdio: 'pipe' }).toString('utf-8'); - } catch (_) { + } catch { return ''; } } diff --git a/scripts/run-workspaces-dev.mjs b/scripts/run-workspaces-dev.mjs index 563d93cf..72070fbc 100644 --- a/scripts/run-workspaces-dev.mjs +++ b/scripts/run-workspaces-dev.mjs @@ -52,7 +52,7 @@ for (const ws of workspacesWithDev) { // Cleanup function to kill all children function cleanup() { - for (const { ws, child } of children) { + for (const { child } of children) { if (child.exitCode === null) { // Process still running if (process.platform === 'win32') { diff --git a/scripts/vendor-node.cjs b/scripts/vendor-node.cjs index 92160b3a..1d7b180b 100644 --- a/scripts/vendor-node.cjs +++ b/scripts/vendor-node.cjs @@ -105,7 +105,7 @@ rmSync(tmpDir, { recursive: true, force: true }); function tryExecSync(cmd) { try { return execSync(cmd, { stdio: 'pipe' }).toString('utf-8'); - } catch (_) { + } catch { return ''; } } diff --git a/scripts/vendor-protoc.cjs b/scripts/vendor-protoc.cjs index 439bb10c..0d0deb49 100644 --- a/scripts/vendor-protoc.cjs +++ b/scripts/vendor-protoc.cjs @@ -106,7 +106,7 @@ mkdirSync(dstDir, { recursive: true }); function tryExecSync(cmd) { try { return execSync(cmd, { stdio: 'pipe' }).toString('utf-8'); - } catch (_) { + } catch { return ''; } } diff --git a/src-web/commands/commands.tsx b/src-web/commands/commands.tsx index 53eea3c3..846ec262 100644 --- a/src-web/commands/commands.tsx +++ b/src-web/commands/commands.tsx @@ -143,7 +143,7 @@ export const syncWorkspace = createFastMutation< } return ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {model} {name} diff --git a/src-web/commands/openWorkspaceFromSyncDir.tsx b/src-web/commands/openWorkspaceFromSyncDir.tsx index 83426ce9..1c1f10e4 100644 --- a/src-web/commands/openWorkspaceFromSyncDir.tsx +++ b/src-web/commands/openWorkspaceFromSyncDir.tsx @@ -19,7 +19,7 @@ export const openWorkspaceFromSyncDir = createFastMutation({ await applySync(workspace.id, dir, ops); - router.navigate({ + await router.navigate({ to: '/workspaces/$workspaceId', params: { workspaceId: workspace.id }, }); diff --git a/src-web/components/DnsOverridesEditor.tsx b/src-web/components/DnsOverridesEditor.tsx index 119ce8a5..41530ece 100644 --- a/src-web/components/DnsOverridesEditor.tsx +++ b/src-web/components/DnsOverridesEditor.tsx @@ -1,6 +1,7 @@ import type { DnsOverride, Workspace } from '@yaakapp-internal/models'; import { patchModel } from '@yaakapp-internal/models'; import { useCallback, useId, useMemo } from 'react'; +import { fireAndForget } from '../lib/fireAndForget'; import { Button } from './core/Button'; import { Checkbox } from './core/Checkbox'; import { IconButton } from './core/IconButton'; @@ -29,7 +30,7 @@ export function DnsOverridesEditor({ workspace }: Props) { const handleChange = useCallback( (overrides: DnsOverride[]) => { - patchModel(workspace, { settingDnsOverrides: overrides }); + fireAndForget(patchModel(workspace, { settingDnsOverrides: overrides })); }, [workspace], ); diff --git a/src-web/components/DynamicForm.tsx b/src-web/components/DynamicForm.tsx index 00e79300..72d5fc34 100644 --- a/src-web/components/DynamicForm.tsx +++ b/src-web/components/DynamicForm.tsx @@ -512,16 +512,14 @@ function HttpRequestArg({ help={arg.description} value={value} disabled={arg.disabled} - options={[ - ...httpRequests.map((r) => { + options={httpRequests.map((r) => { return { label: buildRequestBreadcrumbs(r, folders).join(' / ') + (r.id === activeHttpRequest?.id ? ' (current)' : ''), value: r.id, }; - }), - ]} + })} /> ); } diff --git a/src-web/components/EnvironmentEditDialog.tsx b/src-web/components/EnvironmentEditDialog.tsx index ffaca646..c35e1b55 100644 --- a/src-web/components/EnvironmentEditDialog.tsx +++ b/src-web/components/EnvironmentEditDialog.tsx @@ -9,6 +9,7 @@ import { useEnvironmentsBreakdown, } from '../hooks/useEnvironmentsBreakdown'; import { deleteModelWithConfirm } from '../lib/deleteModelWithConfirm'; +import { fireAndForget } from '../lib/fireAndForget'; import { jotaiStore } from '../lib/jotai'; import { isBaseEnvironment, isSubEnvironment } from '../lib/model_util'; import { resolvedModelName } from '../lib/resolvedModelName'; @@ -112,7 +113,7 @@ function EnvironmentEditDialogSidebar({ const treeRef = useRef(null); const { baseEnvironment, baseEnvironments } = useEnvironmentsBreakdown(); - // biome-ignore lint/correctness/useExhaustiveDependencies: none + // oxlint-disable-next-line react-hooks/exhaustive-deps useLayoutEffect(() => { if (selectedEnvironmentId == null) return; treeRef.current?.selectItem(selectedEnvironmentId); @@ -199,7 +200,7 @@ function EnvironmentEditDialogSidebar({ // Not sure why this is needed, but without it the // edit input blurs immediately after opening. requestAnimationFrame(() => { - actions['sidebar.selected.rename'].cb(items); + fireAndForget(actions['sidebar.selected.rename'].cb(items)); }); }, }, diff --git a/src-web/components/ExportDataDialog.tsx b/src-web/components/ExportDataDialog.tsx index 89942fed..cd2589f5 100644 --- a/src-web/components/ExportDataDialog.tsx +++ b/src-web/components/ExportDataDialog.tsx @@ -55,7 +55,7 @@ function ExportDataDialogContent({ const handleToggleAll = () => { setSelectedWorkspaces( - // biome-ignore lint/performance/noAccumulatingSpread: none + // oxlint-disable-next-line no-accumulating-spread allSelected ? {} : workspaces.reduce((acc, w) => ({ ...acc, [w.id]: true }), {}), ); }; diff --git a/src-web/components/FolderLayout.tsx b/src-web/components/FolderLayout.tsx index e3bf3947..8609d2a8 100644 --- a/src-web/components/FolderLayout.tsx +++ b/src-web/components/FolderLayout.tsx @@ -8,6 +8,7 @@ import { allRequestsAtom } from '../hooks/useAllRequests'; import { useFolderActions } from '../hooks/useFolderActions'; import { useLatestHttpResponse } from '../hooks/useLatestHttpResponse'; import { sendAnyHttpRequest } from '../hooks/useSendAnyHttpRequest'; +import { fireAndForget } from '../lib/fireAndForget'; import { showDialog } from '../lib/dialog'; import { resolvedModelName } from '../lib/resolvedModelName'; import { router } from '../lib/router'; @@ -45,7 +46,7 @@ export function FolderLayout({ folder, style }: Props) { }, [folder.id, folders, requests]); const handleSendAll = useCallback(() => { - sendAllAction?.call(folder); + if (sendAllAction) fireAndForget(sendAllAction.call(folder)); }, [sendAllAction, folder]); return ( diff --git a/src-web/components/GrpcProtoSelectionDialog.tsx b/src-web/components/GrpcProtoSelectionDialog.tsx index 2ce297ff..83b4d27c 100644 --- a/src-web/components/GrpcProtoSelectionDialog.tsx +++ b/src-web/components/GrpcProtoSelectionDialog.tsx @@ -103,7 +103,7 @@ function GrpcProtoSelectionDialogWithRequest({ request }: Props & { request: Grp Found services{' '} {services?.slice(0, 5).map((s, i) => { return ( - + m.name).join(',')}> {s.name} {i === services.length - 1 ? '' : i === services.length - 2 ? ' and ' : ', '} @@ -119,7 +119,7 @@ function GrpcProtoSelectionDialogWithRequest({ request }: Props & { request: Grp Server reflection found services {services?.map((s, i) => { return ( - + m.name).join(',')}> {s.name} {i === services.length - 1 ? '' : i === services.length - 2 ? ' and ' : ', '} @@ -144,7 +144,7 @@ function GrpcProtoSelectionDialogWithRequest({ request }: Props & { request: Grp {protoFiles.map((f, i) => { const parts = f.split('/'); return ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key diff --git a/src-web/components/GrpcResponsePane.tsx b/src-web/components/GrpcResponsePane.tsx index 29f8f4e0..ae01dd8f 100644 --- a/src-web/components/GrpcResponsePane.tsx +++ b/src-web/components/GrpcResponsePane.tsx @@ -50,7 +50,7 @@ export function GrpcResponsePane({ style, methodType, activeRequest }: Props) { ); // Set the active message to the first message received if unary - // biome-ignore lint/correctness/useExhaustiveDependencies: none + // oxlint-disable-next-line react-hooks/exhaustive-deps useEffect(() => { if (events.length === 0 || activeEvent != null || methodType !== 'unary') { return; diff --git a/src-web/components/ImportCurlButton.tsx b/src-web/components/ImportCurlButton.tsx index 5d40fc3f..6335cd84 100644 --- a/src-web/components/ImportCurlButton.tsx +++ b/src-web/components/ImportCurlButton.tsx @@ -13,9 +13,9 @@ export function ImportCurlButton() { const importCurl = useImportCurl(); const [isLoading, setIsLoading] = useState(false); - // biome-ignore lint/correctness/useExhaustiveDependencies: none + // oxlint-disable-next-line react-hooks/exhaustive-deps useEffect(() => { - readText().then(setClipboardText); + readText().then(setClipboardText).catch(() => {}); }, [focused]); if (!clipboardText?.trim().startsWith('curl ')) { diff --git a/src-web/components/JsonBodyEditor.tsx b/src-web/components/JsonBodyEditor.tsx index ab33f019..e23b0f7c 100644 --- a/src-web/components/JsonBodyEditor.tsx +++ b/src-web/components/JsonBodyEditor.tsx @@ -2,6 +2,7 @@ import { linter } from '@codemirror/lint'; import type { HttpRequest } from '@yaakapp-internal/models'; import { patchModel } from '@yaakapp-internal/models'; import { useCallback, useMemo } from 'react'; +import { fireAndForget } from '../lib/fireAndForget'; import { useKeyValue } from '../hooks/useKeyValue'; import { textLikelyContainsJsonComments } from '../lib/jsonComments'; import { Banner } from './core/Banner'; @@ -58,12 +59,12 @@ export function JsonBodyEditor({ forceUpdateKey, heightMode, request }: Props) { } else { delete newBody.sendJsonComments; } - patchModel(request, { body: newBody }); + fireAndForget(patchModel(request, { body: newBody })); }, [request, autoFix]); const handleDropdownOpen = useCallback(() => { if (!bannerDismissed) { - setBannerDismissed(true); + fireAndForget(setBannerDismissed(true)); } }, [bannerDismissed, setBannerDismissed]); diff --git a/src-web/components/Markdown.tsx b/src-web/components/Markdown.tsx index ab6df5df..687f9f87 100644 --- a/src-web/components/Markdown.tsx +++ b/src-web/components/Markdown.tsx @@ -102,7 +102,7 @@ const markdownComponents: Partial = { language={match[1]} style={prismTheme} > - {String(children).replace(/\n$/, '')} + {String(children as string).replace(/\n$/, '')} ) : ( diff --git a/src-web/components/RedirectToLatestWorkspace.tsx b/src-web/components/RedirectToLatestWorkspace.tsx index 9c36231b..2202e12d 100644 --- a/src-web/components/RedirectToLatestWorkspace.tsx +++ b/src-web/components/RedirectToLatestWorkspace.tsx @@ -5,6 +5,7 @@ import { getRecentCookieJars } from '../hooks/useRecentCookieJars'; import { getRecentEnvironments } from '../hooks/useRecentEnvironments'; import { getRecentRequests } from '../hooks/useRecentRequests'; import { useRecentWorkspaces } from '../hooks/useRecentWorkspaces'; +import { fireAndForget } from '../lib/fireAndForget'; import { router } from '../lib/router'; export function RedirectToLatestWorkspace() { @@ -20,7 +21,7 @@ export function RedirectToLatestWorkspace() { return; } - (async () => { + fireAndForget((async () => { const workspaceId = recentWorkspaces[0] ?? workspaces[0]?.id ?? 'n/a'; const environmentId = (await getRecentEnvironments(workspaceId))[0] ?? null; const cookieJarId = (await getRecentCookieJars(workspaceId))[0] ?? null; @@ -34,7 +35,7 @@ export function RedirectToLatestWorkspace() { console.log('Redirecting to workspace', params, search); await router.navigate({ to: '/workspaces/$workspaceId', params, search }); - })(); + })()); }, [recentWorkspaces, workspaces, workspaces.length]); return null; diff --git a/src-web/components/ResponseCookies.tsx b/src-web/components/ResponseCookies.tsx index 5e217a9c..a7013961 100644 --- a/src-web/components/ResponseCookies.tsx +++ b/src-web/components/ResponseCookies.tsx @@ -130,7 +130,7 @@ export function ResponseCookies({ response }: Props) { ) : ( {sentCookies.map((cookie, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {cookie.value} @@ -153,7 +153,7 @@ export function ResponseCookies({ response }: Props) { ) : (
{receivedCookies.map((cookie, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key
{requestHeaders.map((h, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {h.value} @@ -84,7 +84,7 @@ export function ResponseHeaders({ response }: Props) { ) : ( {responseHeaders.map((h, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {h.value} diff --git a/src-web/components/RouteError.tsx b/src-web/components/RouteError.tsx index d6ec5cdc..3299fcec 100644 --- a/src-web/components/RouteError.tsx +++ b/src-web/components/RouteError.tsx @@ -7,7 +7,7 @@ import { VStack } from './core/Stacks'; export default function RouteError({ error }: { error: unknown }) { console.log('Error', error); const stringified = JSON.stringify(error); - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any const message = (error as any).message ?? stringified; const stack = typeof error === 'object' && error != null && 'stack' in error ? String(error.stack) : null; diff --git a/src-web/components/Settings/SettingsCertificates.tsx b/src-web/components/Settings/SettingsCertificates.tsx index e6081e72..6146576a 100644 --- a/src-web/components/Settings/SettingsCertificates.tsx +++ b/src-web/components/Settings/SettingsCertificates.tsx @@ -238,7 +238,7 @@ export function SettingsCertificates() { {certificates.map((cert, index) => ( , hidden: workspaces.length <= 1 || requestItems.length === 0 || requestItems.length !== items.length, onSelect: () => { - actions['sidebar.selected.move'].cb(items); + fireAndForget(actions['sidebar.selected.move'].cb(items)); }, }, { diff --git a/src-web/components/TemplateFunctionDialog.tsx b/src-web/components/TemplateFunctionDialog.tsx index 364a0c9b..c57a365e 100644 --- a/src-web/components/TemplateFunctionDialog.tsx +++ b/src-web/components/TemplateFunctionDialog.tsx @@ -141,7 +141,7 @@ function InitializedTemplateFunctionDialog({ }); const tooLarge = rendered.data ? rendered.data.length > 10000 : false; - // biome-ignore lint/correctness/useExhaustiveDependencies: Only update this on rendered data change to keep secrets hidden on input change + // oxlint-disable-next-line react-hooks/exhaustive-deps -- Only update this on rendered data change to keep secrets hidden on input change const dataContainsSecrets = useMemo(() => { for (const [name, value] of Object.entries(argValues)) { const arg = templateFunction.data?.args.find((a) => 'name' in a && a.name === name); diff --git a/src-web/components/WorkspaceEncryptionSetting.tsx b/src-web/components/WorkspaceEncryptionSetting.tsx index 25bd1136..b9c6ebf5 100644 --- a/src-web/components/WorkspaceEncryptionSetting.tsx +++ b/src-web/components/WorkspaceEncryptionSetting.tsx @@ -127,7 +127,7 @@ export function WorkspaceEncryptionSetting({ size, expanded, onDone, onEnabledEn await enableEncryption(workspaceMeta.workspaceId); setJustEnabledEncryption(true); } catch (err) { - setError(`Failed to enable encryption: ${err}`); + setError(`Failed to enable encryption: ${err instanceof Error ? err.message : String(err)}`); } }} > @@ -285,7 +285,7 @@ function HighlightedKey({ keyText, show }: { keyText: string; show: boolean }) { keyText.split('').map((c, i) => { return ( ({ useLayoutEffect(() => { if (!autoScroll) return; - data.length; // Make linter happy. We want to refresh when length changes + void data.length; // Trigger refresh when length changes const el = containerRef.current; if (el == null) return; diff --git a/src-web/components/core/DetailsBanner.tsx b/src-web/components/core/DetailsBanner.tsx index df0f3c4c..333a73d6 100644 --- a/src-web/components/core/DetailsBanner.tsx +++ b/src-web/components/core/DetailsBanner.tsx @@ -22,7 +22,7 @@ export function DetailsBanner({ storageKey, ...extraProps }: Props) { - // biome-ignore lint/correctness/useExhaustiveDependencies: We only want to recompute the atom when storageKey changes + // oxlint-disable-next-line react-hooks/exhaustive-deps -- We only want to recompute the atom when storageKey changes const openAtom = useMemo( () => storageKey diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx index 22b9f074..8fa19f36 100644 --- a/src-web/components/core/Dropdown.tsx +++ b/src-web/components/core/Dropdown.tsx @@ -25,6 +25,7 @@ import { } from 'react'; import { useKey, useWindowSize } from 'react-use'; import { useClickOutside } from '../../hooks/useClickOutside'; +import { fireAndForget } from '../../lib/fireAndForget'; import type { HotkeyAction } from '../../hooks/useHotKey'; import { useHotKey } from '../../hooks/useHotKey'; import { useStateWithDeps } from '../../hooks/useStateWithDeps'; @@ -614,7 +615,7 @@ const Menu = forwardRef @@ -762,8 +763,8 @@ const Menu = forwardRef {item.label}
@@ -777,7 +778,7 @@ const Menu = forwardRef @@ -785,7 +786,7 @@ const Menu = forwardRef {activeSubmenu && ( - // biome-ignore lint/a11y/noStaticElementInteractions: Container div that cancels hover timeout + // oxlint-disable-next-line jsx-a11y/no-static-element-interactions -- Container div that cancels hover timeout
{ diff --git a/src-web/components/core/Editor/Editor.tsx b/src-web/components/core/Editor/Editor.tsx index 01ff2d21..64e58675 100644 --- a/src-web/components/core/Editor/Editor.tsx +++ b/src-web/components/core/Editor/Editor.tsx @@ -327,7 +327,7 @@ function EditorInner({ ); // Update the language extension when the language changes - // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally limited deps + // oxlint-disable-next-line react-hooks/exhaustive-deps -- intentionally limited deps useEffect(() => { if (cm.current === null) return; const { view, languageCompartment } = cm.current; @@ -361,7 +361,7 @@ function EditorInner({ ]); // Initialize the editor when ref mounts - // biome-ignore lint/correctness/useExhaustiveDependencies: only reinitialize when necessary + // oxlint-disable-next-line react-hooks/exhaustive-deps -- only reinitialize when necessary const initEditorRef = useCallback( function initEditorRef(container: HTMLDivElement | null) { if (container === null) { diff --git a/src-web/components/core/Editor/filter/filter.ts b/src-web/components/core/Editor/filter/filter.ts index 70a2310a..e943978f 100644 --- a/src-web/components/core/Editor/filter/filter.ts +++ b/src-web/components/core/Editor/filter/filter.ts @@ -1,4 +1,4 @@ -// biome-ignore-all lint: Disable for generated file +/* oxlint-disable */ // This file was generated by lezer-generator. You probably shouldn't edit it. import { LRParser } from '@lezer/lr'; import { highlight } from './highlight'; diff --git a/src-web/components/core/Editor/hyperlink/extension.ts b/src-web/components/core/Editor/hyperlink/extension.ts index e8c995be..73e5cf8e 100644 --- a/src-web/components/core/Editor/hyperlink/extension.ts +++ b/src-web/components/core/Editor/hyperlink/extension.ts @@ -14,7 +14,7 @@ const tooltip = hoverTooltip( let match: RegExpExecArray | null; let found: { start: number; end: number } | null = null; - // biome-ignore lint/suspicious/noAssignInExpressions: none + // oxlint-disable-next-line no-cond-assign while ((match = REGEX.exec(text))) { const start = from + match.index; const end = start + match[0].length; diff --git a/src-web/components/core/Editor/json-lint.ts b/src-web/components/core/Editor/json-lint.ts index 32652f15..cb859ad1 100644 --- a/src-web/components/core/Editor/json-lint.ts +++ b/src-web/components/core/Editor/json-lint.ts @@ -20,7 +20,7 @@ export function jsonParseLinter(options?: JsonLintOptions) { mode: (options?.allowComments ?? true) ? 'cjson' : 'json', ignoreTrailingCommas: options?.allowTrailingCommas ?? false, }); - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any } catch (err: any) { if (!('location' in err)) { return []; diff --git a/src-web/components/core/Editor/twig/twig.test.ts b/src-web/components/core/Editor/twig/twig.test.ts index c000face..016ed6e1 100644 --- a/src-web/components/core/Editor/twig/twig.test.ts +++ b/src-web/components/core/Editor/twig/twig.test.ts @@ -1,6 +1,6 @@ -// biome-ignore-all lint/suspicious/noTemplateCurlyInString: We're testing this, specifically +/* oxlint-disable no-template-curly-in-string */ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test } from 'vite-plus/test'; import { parser } from './twig'; function getNodeNames(input: string): string[] { diff --git a/src-web/components/core/Hotkey.tsx b/src-web/components/core/Hotkey.tsx index 4a556a83..8d020e21 100644 --- a/src-web/components/core/Hotkey.tsx +++ b/src-web/components/core/Hotkey.tsx @@ -35,7 +35,7 @@ export function HotkeyRaw({ labelParts, className, variant }: HotkeyRawProps) { )} > {labelParts.map((char, index) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key
{char}
diff --git a/src-web/components/core/Input.tsx b/src-web/components/core/Input.tsx index e8efbd40..a92a5b7e 100644 --- a/src-web/components/core/Input.tsx +++ b/src-web/components/core/Input.tsx @@ -144,7 +144,7 @@ function BaseInput({ isFocused: () => editorRef.current?.hasFocus ?? false, value: () => editorRef.current?.state.doc.toString() ?? '', dispatch: (...args) => { - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any editorRef.current?.dispatch(...(args as any)); }, selectAll() { @@ -329,7 +329,7 @@ function BaseInput({ {type === 'password' && !disableObscureToggle && ( ( {childArray.map((child, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {child} ))} diff --git a/src-web/components/core/Label.tsx b/src-web/components/core/Label.tsx index e93a8742..afcc3725 100644 --- a/src-web/components/core/Label.tsx +++ b/src-web/components/core/Label.tsx @@ -37,7 +37,7 @@ export function Label({ {required === true && *} {tags.map((tag, i) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key ({tag}) diff --git a/src-web/components/core/PairEditor.tsx b/src-web/components/core/PairEditor.tsx index 64ebd749..2b7b7867 100644 --- a/src-web/components/core/PairEditor.tsx +++ b/src-web/components/core/PairEditor.tsx @@ -145,7 +145,7 @@ export function PairEditor({ [handle, pairs, setRef], ); - // biome-ignore lint/correctness/useExhaustiveDependencies: Only care about forceUpdateKey + // oxlint-disable-next-line react-hooks/exhaustive-deps -- Only care about forceUpdateKey useEffect(() => { // Remove empty headers on initial render and ensure they all have valid ids (pairs didn't use to have IDs) const newPairs: PairWithId[] = []; diff --git a/src-web/components/core/PlainInput.tsx b/src-web/components/core/PlainInput.tsx index 96a96787..304ea0ec 100644 --- a/src-web/components/core/PlainInput.tsx +++ b/src-web/components/core/PlainInput.tsx @@ -195,7 +195,7 @@ export const PlainInput = forwardRef<{ focus: () => void }, PlainInputProps>(fun key={forceUpdateKey} type={type === 'password' && !obscured ? 'text' : type} name={name} - // biome-ignore lint/a11y/noAutofocus: Who cares + // oxlint-disable-next-line jsx-a11y/no-autofocus autoFocus={autoFocus} defaultValue={defaultValue ?? undefined} autoComplete="off" @@ -213,7 +213,7 @@ export const PlainInput = forwardRef<{ focus: () => void }, PlainInputProps>(fun {type === 'password' && !hideObscureToggle && ( ({ if (e.key === 'ArrowRight') { e.preventDefault(); const newIndex = Math.abs((selectedIndex + 1) % options.length); - options[newIndex] && setSelectedValue(options[newIndex].value); + if (options[newIndex]) setSelectedValue(options[newIndex].value); const child = containerRef.current?.children[newIndex] as HTMLButtonElement; child.focus(); } else if (e.key === 'ArrowLeft') { e.preventDefault(); const newIndex = Math.abs((selectedIndex - 1) % options.length); - options[newIndex] && setSelectedValue(options[newIndex].value); + if (options[newIndex]) setSelectedValue(options[newIndex].value); const child = containerRef.current?.children[newIndex] as HTMLButtonElement; child.focus(); } diff --git a/src-web/components/core/Stacks.tsx b/src-web/components/core/Stacks.tsx index 074f99ba..46e5935b 100644 --- a/src-web/components/core/Stacks.tsx +++ b/src-web/components/core/Stacks.tsx @@ -20,7 +20,7 @@ interface HStackProps extends BaseStackProps { export const HStack = forwardRef(function HStack( { className, space, children, alignItems = 'center', ...props }: HStackProps, - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any ref: ForwardedRef, ) { return ( @@ -41,7 +41,7 @@ export type VStackProps = BaseStackProps & { export const VStack = forwardRef(function VStack( { className, space, children, ...props }: VStackProps, - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any ref: ForwardedRef, ) { return ( @@ -65,7 +65,7 @@ type BaseStackProps = HTMLAttributes & { const BaseStack = forwardRef(function BaseStack( { className, alignItems, justifyContent, wrap, children, as, ...props }: BaseStackProps, - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any ref: ForwardedRef, ) { const Component = as ?? 'div'; diff --git a/src-web/components/core/Tabs/Tabs.tsx b/src-web/components/core/Tabs/Tabs.tsx index dbbdd92a..b8626170 100644 --- a/src-web/components/core/Tabs/Tabs.tsx +++ b/src-web/components/core/Tabs/Tabs.tsx @@ -22,6 +22,7 @@ import { useState, } from 'react'; import { useKeyValue } from '../../../hooks/useKeyValue'; +import { fireAndForget } from '../../../lib/fireAndForget'; import { computeSideForDragMove } from '../../../lib/dnd'; import { DropMarker } from '../../DropMarker'; import { ErrorBoundary } from '../../ErrorBoundary'; @@ -143,7 +144,7 @@ export const Tabs = forwardRef(function Tabs( forwardedRef, () => ({ setActiveTab: (value: string) => { - onChangeValue(value); + fireAndForget(onChangeValue(value)); }, }), [onChangeValue], diff --git a/src-web/components/core/Tooltip.tsx b/src-web/components/core/Tooltip.tsx index 563eb854..194f8dd4 100644 --- a/src-web/components/core/Tooltip.tsx +++ b/src-web/components/core/Tooltip.tsx @@ -110,7 +110,7 @@ export function Tooltip({ children, className, content, tabIndex, size = 'md' }: />
- {/** biome-ignore lint/a11y/useSemanticElements: Needs to be usable in other buttons */} + {/* oxlint-disable-next-line jsx-a11y/prefer-tag-over-role -- Needs to be usable in other buttons */} ( }, []); // Select the first item on first render - // biome-ignore lint/correctness/useExhaustiveDependencies: Only used for initial render + // oxlint-disable-next-line react-hooks/exhaustive-deps -- Only used for initial render useEffect(() => { const ids = jotaiStore.get(selectedIdsFamily(treeId)); const fallback = selectableItems[0]; @@ -736,7 +736,7 @@ function DropRegionAfterList({ onContextMenu?: (e: MouseEvent) => void; }) { const { setNodeRef } = useDroppable({ id }); - // biome-ignore lint/a11y/noStaticElementInteractions: Meh + // oxlint-disable-next-line jsx-a11y/no-static-element-interactions return
; } diff --git a/src-web/components/core/tree/TreeIndentGuide.tsx b/src-web/components/core/tree/TreeIndentGuide.tsx index 55671b0d..1273ed55 100644 --- a/src-web/components/core/tree/TreeIndentGuide.tsx +++ b/src-web/components/core/tree/TreeIndentGuide.tsx @@ -19,7 +19,7 @@ export const TreeIndentGuide = memo(function TreeIndentGuide({
{Array.from({ length: depth }).map((_, i) => (
( } for (let i = 0; i < ak.length; i++) { - // biome-ignore lint/style/noNonNullAssertion: none + // oxlint-disable-next-line no-non-null-assertion if (!equalSubtree(ak[i]!, bk[i]!, getItemKey)) return false; } diff --git a/src-web/components/git/GitDropdown.tsx b/src-web/components/git/GitDropdown.tsx index 210c8452..2c3667e8 100644 --- a/src-web/components/git/GitDropdown.tsx +++ b/src-web/components/git/GitDropdown.tsx @@ -11,6 +11,7 @@ import { useRandomKey } from '../../hooks/useRandomKey'; import { sync } from '../../init/sync'; import { showConfirm, showConfirmDelete } from '../../lib/confirm'; import { showDialog } from '../../lib/dialog'; +import { fireAndForget } from '../../lib/fireAndForget'; import { showPrompt } from '../../lib/prompt'; import { showErrorToast, showToast } from '../../lib/toast'; import { Banner } from '../core/Banner'; @@ -246,7 +247,7 @@ function SyncDropdownWithSyncDir({ syncDir }: { syncDir: string }) { message: 'Changes have been reset', color: 'success', }); - sync({ force: true }); + fireAndForget(sync({ force: true })); }, onError(err) { showErrorToast({ @@ -293,7 +294,7 @@ function SyncDropdownWithSyncDir({ syncDir }: { syncDir: string }) { ), }); - sync({ force: true }); + fireAndForget(sync({ force: true })); }, onError(err) { showErrorToast({ diff --git a/src-web/components/git/HistoryDialog.tsx b/src-web/components/git/HistoryDialog.tsx index 25d6711a..9f09a15e 100644 --- a/src-web/components/git/HistoryDialog.tsx +++ b/src-web/components/git/HistoryDialog.tsx @@ -27,7 +27,7 @@ export function HistoryDialog({ log }: Props) { {log.map((l) => ( - + {l.message || No message} diff --git a/src-web/components/graphql/GraphQLDocsExplorer.tsx b/src-web/components/graphql/GraphQLDocsExplorer.tsx index 6c0e95df..7c8e1cd5 100644 --- a/src-web/components/graphql/GraphQLDocsExplorer.tsx +++ b/src-web/components/graphql/GraphQLDocsExplorer.tsx @@ -45,7 +45,7 @@ interface Props { type ExplorerItem = | { kind: 'type'; type: GraphQLType; from: ExplorerItem } - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any | { kind: 'field'; type: GraphQLField; from: ExplorerItem } | { kind: 'input_field'; type: GraphQLInputField; from: ExplorerItem } | null; @@ -146,7 +146,7 @@ export const GraphQLDocsExplorer = memo(function GraphQLDocsExplorer({
) : (
@@ -182,14 +182,14 @@ function GraphQLExplorerHeader({ {crumbs.map((crumb, i) => { return ( - // biome-ignore lint/suspicious/noArrayIndexKey: none + // oxlint-disable-next-line react/no-array-index-key {i > 0 && } {crumb === item || item == null ? ( ) : crumb === item ? null : ( { const fieldItem: ExplorerItem = toExplorerItem(field, item); return ( -
+
Arguments {item.type.args.map((a) => { return ( -
+
+
+
( {item.type.args.map((arg) => (
{item.type.args.length > 1 && <>  } @@ -674,7 +674,7 @@ function Subheading({ children, count }: { children: ReactNode; count?: number } interface SearchResult { name: string; - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any type: GraphQLNamedType | GraphQLField | GraphQLInputField; score: number; from: GraphQLNamedType | null; @@ -798,7 +798,7 @@ function GqlSchemaSearch({ label="search" hideLabel defaultValue={value} - placeholder={focused ? `Search ${currentItem?.type.toString() ?? 'Schema'}` : 'Search'} + placeholder={focused ? `Search ${currentItem != null && 'name' in currentItem.type ? currentItem.type.name : 'Schema'}` : 'Search'} leftSlot={
@@ -897,10 +897,10 @@ function DocMarkdown({ children, className }: { children: string | null; classNa function walkTypeGraph( schema: GraphQLSchema, - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any start: GraphQLType | GraphQLField | GraphQLInputField | null, cb: ( - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any type: GraphQLNamedType | GraphQLField | GraphQLInputField, from: GraphQLNamedType | null, path: string[], @@ -908,7 +908,7 @@ function walkTypeGraph( ) { const visited = new Set(); const queue: Array<{ - // biome-ignore lint/suspicious/noExplicitAny: none + // oxlint-disable-next-line no-explicit-any current: GraphQLType | GraphQLField | GraphQLInputField; from: GraphQLNamedType | null; path: string[]; @@ -928,7 +928,7 @@ function walkTypeGraph( } while (queue.length > 0) { - // biome-ignore lint/style/noNonNullAssertion: none + // oxlint-disable-next-line no-non-null-assertion const { current, from, path } = queue.shift()!; if (!isNamedType(current)) continue; @@ -981,7 +981,7 @@ function walkTypeGraph( } } -// biome-ignore lint/suspicious/noExplicitAny: none +// oxlint-disable-next-line no-explicit-any function toExplorerItem(t: any, from: ExplorerItem | null): ExplorerItem | null { if (t == null) return null; diff --git a/src-web/components/responseViewers/AudioViewer.tsx b/src-web/components/responseViewers/AudioViewer.tsx index 145ff3fe..dd876ff0 100644 --- a/src-web/components/responseViewers/AudioViewer.tsx +++ b/src-web/components/responseViewers/AudioViewer.tsx @@ -22,6 +22,6 @@ export function AudioViewer({ bodyPath, data }: Props) { } }, [bodyPath, data]); - // biome-ignore lint/a11y/useMediaCaption: none + // oxlint-disable-next-line jsx-a11y/media-has-caption return