From 1487fe4c7ffdc03d6f9c41413c01c25f025073fd Mon Sep 17 00:00:00 2001
From: silviu_simeria
Date: Fri, 20 Dec 2024 17:28:53 +0000
Subject: [PATCH 1/6] Refactor Electron setup and improve MCP server management
Enhanced Electron's window creation process with additional configurations, including handling macOS-specific requirements and custom protocols. Added states and validation for custom MCP server configurations, improving usability and error handling in the MCP server management component.
---
.eslintrc.json | 5 +
README.md | 57 ++++--
biome.json | 6 +-
bun.lockb | Bin 241276 -> 234597 bytes
dist-electron/main.js | 220 +++++++++++++----------
dist-electron/main.js.map | 1 -
dist-electron/preload.js | 14 +-
dist-electron/preload.js.map | 1 -
electron/main.ts | 196 +++++++++++---------
electron/preload.ts | 17 +-
electron/tsconfig.json | 18 +-
electron/tsconfig.tsbuildinfo | 2 +-
eslint.config.js | 4 +-
package.json | 14 +-
public/app.png | Bin 0 -> 597750 bytes
src/App.tsx | 14 +-
src/components/applying-instructions.tsx | 4 +-
src/components/mcp-servers.tsx | 170 +++++++++++++++---
tsconfig.json | 58 +++---
vite.config.ts | 13 ++
20 files changed, 526 insertions(+), 288 deletions(-)
create mode 100644 .eslintrc.json
delete mode 100644 dist-electron/main.js.map
delete mode 100644 dist-electron/preload.js.map
create mode 100644 public/app.png
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..5a84095
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,5 @@
+{
+ "rules": {
+ "@typescript-eslint/no-require-imports": "off"
+ }
+}
diff --git a/README.md b/README.md
index 87a5d59..0076e74 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
MCP Manager for Claude Desktop
-A simple web GUI to manage Model Context Protocol (MCP) servers for the Claude Desktop app on MacOS easily. Just follow the instructions and paste a few commands to give your Claude app instant superpowers.
+A desktop application to manage Model Context Protocol (MCP) servers for the Claude Desktop app on MacOS. Just follow the instructions and paste a few commands to give your Claude app instant superpowers.

@@ -13,8 +13,8 @@ The Model Context Protocol (MCP) enables Claude to access private data, APIs, an
## Features
-- 🚀 Easy-to-use interface for managing MCP servers
-- 🔒 Runs entirely client-side - your data never leaves your computer
+- 🚀 Easy-to-use desktop interface for managing MCP servers
+- 🔒 Runs locally - your data never leaves your computer
- ⚡️ Quick setup for popular MCP servers:
- Apple Notes - Access and search your Apple Notes
- AWS Knowledge Base - Access and query AWS Knowledge Base for information retrieval
@@ -43,14 +43,21 @@ The Model Context Protocol (MCP) enables Claude to access private data, APIs, an
## Tech Stack
-- **Frontend Framework**: React 18 with TypeScript
-- **Build Tool**: Vite
-- **Styling**:
- - TailwindCSS for utility-first CSS
- - DaisyUI for component styling
- - Tiempos Font to match the Anthropic Design Language
+- **Desktop Framework**:
+ - Electron 29.1.4 with React 18.3.1
+ - TypeScript 5.6.2
+- **Build Tool**:
+ - Vite 6.0.1
+ - Electron Builder 25.1.8
+- **UI Components**:
+ - TailwindCSS 3.4.16
+ - DaisyUI 4.12.14
+ - Lucide React 0.468.0 for icons
+ - Tiempos Font
+- **Code Quality**:
+ - Biome 1.9.4
+ - ESLint 9.15.0
- **Package Manager**: Bun
-- **Deployment**: Cloudflare Pages for <60s build times
## Project Structure
@@ -63,32 +70,46 @@ src/
├── App.tsx # Main application component
├── server-configs.ts # MCP server configurations
└── utils.ts # Utility functions
+electron/
+├── main.ts # Electron main process
+└── tsconfig.json # TypeScript config for Electron
```
## Development
1. Install dependencies:
-
```bash
bun install
```
-2. Start the dev server:
-
+2. Start development:
```bash
- bun dev
+ bun electron:dev
```
-3. Build for production:
+3. Build for MacOS:
+ ```bash
+ bun electron:build # Creates .dmg installer
+ ```
+4. Additional commands:
```bash
- bun run build
+ bun check # Run TypeScript checks and Biome formatting
+ bun lint # Run ESLint
```
+## Known Issues
+
+Currently working on implementing:
+- Fetch functionality
+- Time-related features
+- Sentry integration
+
+Contributions to resolve these are welcome!
+
## Contributing
Contributions are extremely welcome! Please open a PR with new MCP servers or any other improvements to the codebase.
-PS. I wasnt able to get fetch, time, and sentry working, if you can help me out, that would be great!
## Disclaimer
@@ -112,4 +133,4 @@ MIT
Contact us for custom AI automation solutions and product development.
-
+
\ No newline at end of file
diff --git a/biome.json b/biome.json
index f19b56e..c56d558 100644
--- a/biome.json
+++ b/biome.json
@@ -7,7 +7,11 @@
"rules": {
"recommended": true,
"suspicious": {
- "noArrayIndexKey": "off"
+ "noArrayIndexKey": "off",
+ "noAssignInExpressions": "off"
+ },
+ "style": {
+ "noCommaOperator": "off"
}
},
"ignore": ["**/*.md", "**/*.css"]
diff --git a/bun.lockb b/bun.lockb
index 3e052cdd41e635da7ff1b02c26cba125ab7f0e7c..d4dabfdd3f8173a857bd11a590049d515c4fb025 100755
GIT binary patch
delta 28545
zcmeHwcUV+c`|X)Cj4~)HR#fb<3xY~fWbBGqQ4uQ&h!p8X!3K6DVmr}|Eq29T5qpW6
zD2X+(C7Rfh*kh`isJUyMqTKJ7?>_f=?)@{Pi+8_kzx&<2%*MDIVf^|)K<;C|Ekel=~v{40kXs)XKId_^%!d<|O=TuY7(T9EFa85bQN
z9T%OF8k;aGG$l%sLerxYQeg5eEXznz))h!AWQLt2IY7om$3?h~3X@`>mxbM5msHeL3*S=`nO8rKZG2he5_9L{pWnmXIVT#D5A2yUJPnv_RGxNM^8=a!-(H
zS;@@HK`;Py6tW^@N@%+3V+VBRU44)w)qz|Ky)>lnU`Z+uxgL_PmO_?-Yy!zVQ-)}K
zHRvp3DM*NF7gLHKhQC%s4zb+_hy3N%{c^s9%RQ8H9^pEWNZR^Q#ui$m3SW{3#jxh
z<(%oLSEp^HX51Xo5s_iBOd?5PX`@F+Bui3sL_~zQXDg`*#v7Z-q}OU$xXB&C0Z^y0e*JHXtme?2|hC`0s)pXF%}~l4hqI-1{)#S41tJevn)b^sLzI^
zeZx4-E)J49nwRC3I>Vk7@X`I&1IGd^j@Rriqd*SOn^d70A+=AWWz>
zJ9vX0aRWLtOpZuR&OlMna<1VCqaqd|-USgk*&>%3{4R=}Ti{s%}FC?08D
zBQp~Fr0eM*=_dxxGugC*5g=jAwUmVLFK0GsFRCIjg=1E!v9gfG^Q${z~HCd~H9d!2D
z-#xUZ{0lYUAPf)1zo-bQPL`HIa&%mB=x9lb8#5|88Qtato&}L1*}|z)G=DG9>};7Q
znR?(ZBr}Mcsud(WDq&naMr)#LTqyiVwWnzgvLM+tX^?b~l9G(!BuT~;OASRLyo{Fd
z)C(G)7#Ev>nKgWdHr9GUvS8&sW@Jf#vbu3
zj)0D0WM(C%X>+YNBG?=@UDktSf=(Z43EDuizhCESdMZXd?Ylv;`mv$oGhD}p#&V-$
zg(7s`7%#1%mw{b9NctU>kQxy`7JaVHK@i3&mK>21F)BJ$dMvbt;wIrqhuX#{#e|Mg
zGvLO-As-PN5uTcy5Z`@?<~R?MHGB%mf^}S~6+AfsOEUc2fzE=Qhpd47vrZwv9*Imy
z#A+=`N0w<#nYvtS`eBglno29Q#ls&ur|e1SY>@*<&n^l}NQjLHjhEs=Q!ycurTZuV
zNzR^PAmFYk}CcSbNzQp=-4a2SGBysL<31
z*U|AQJJ)H3uOT@Yv0JJRZm-vx_6j5mdKQw7cj~h7My&uYko0d4$rcMhddhqG8h;C
zB>fwM&{!qc!LAngCz(4W$pwL4Ak1y&IUOfK
zG6Q!=4ywqAcpm7aOIszW8uV!>SOds5@IilWdJ8t*tK}0Ao|2N9kr=_!s}5EbNKy?L
z&VXdiVTOaKUocV+M@w;RFR-dnp%`qXdVG%q)*?xOE6D}8J1
zbp9^p()0V1n%*Ab@vF;-q!J_N-e`Q*HQ`W@l2y;y-f8KhD$d`16{)z_OSj)QYxVvv
z3E3Nz#G1~^{F=^#dMuiG^PK6*>70=b2fVo2s!T)Ex~}63Y`>gt((BxX8;xh3?%sJ$
zqwy!^O%F{(*v{r$Gp-EyPBp(br?
zHEcarD)U`xEBk@lE4w|1N4un<4zE#n*l;_A#vTbb!NEF`%6i;}sA!{*z)9{$bGdz?RTH~Dlq86JMF
z;jhVSUw7zmYIfNK2e*ou{@wdeY_fFw{B`4FC-^O#+xbn0qi-s|t=r|;jxXny-hA<5
z8@uIEdq&nzG@D8)3p#t7>MOGww=)e_&Ngl*D`q99sm=PtjB^k=#-s!`^|rd(NfO3D
zmYs5`k+(d}P6=pclaJdeIS?=Gl%i%fYY&T&z^Q|`bsjVyB#@L#4ZY>hEJ}{6O)ghL
zacFF_wl5(`Ef6OwPK~|gWROj4)*nH3&`2b2R8o@KK{G2(<9txaq9!(ZLrKM#WBv;`XES>1{g`@wgZ)b6q_}7pd?|mvixnmEr+0Wqp{p}km3+$
zvu+%uWmi=RO!Ss}4OWVfX2)PjYKt_IvS6^cHmm<|%~uJvJF=j4HB79ZLSyHc6t=vC
zRgNuhVb5B9ps}ry4>~R;L@7$QSys_Racu8vtusQajGeNemA5qx8Y_cd_Vc!$fW}Oa
z)aGM9@?Gy@IE;d3Q}YN!vNh0{qpU0#=xzNPT6@(=pqsa)A>MJcQqB$cm4}8Z4r^`J
zmxi(+xOoZIQ
zqsN21t(Ty&Sxjt0Yt_-3KP^o#G#}+$OJB=8gjzAR`297xy@Px68jnIg?T3b5vdd<*(@!iP%focD_=P}N-0XPS=WMKqhd67@|N#K
zDLJ_|YmI25Zx_URTl+v`bIEjMQJ}R`2mGsOr6|rOC&efZ@iyzB7_CI=w6MN_#0>e7SjB%O`5nAL|c#ust-6P^&t7W_3ZRGIHRcv-Us;D~evHt;tHjM4RPDkZqJ+
zO);zR&Zj4$v5uhIk3rM23&c`bE>&^Jv{?gFwb6=d`TN*Ip#=tIq__2l_Zp^bqcp`K
z%VrR0xPJzbBfEx7kwmgT{TOGH(#~LG*?YRLOTOLyl%UR`dlGKkQ)f$Bm$Fo+v
zozU2B=sS3R15IzKw%*pTbghNq0rPw(v>vd;Dg|wFhA~+gcODu`R8sA8=kZ#nl~A}U
z4j8W#O|x0%lT>>3^R-^pqt(%DEk8k+IzrQ`7TD8Uo-;vlm|?S?0?B!5r+WWW
zH?eR&S~^ceZIp9c+uAb#Ba3SEJv0tlb=XUP`P-(0Nmi^FLE4d?ltv~BL
z3V~MeoNTl<*Nix5OrtG5hoRZjx%ua0B_P`-du1v)**0rZrm+fhkXzPsI6k|OL?CoO@g`K2MDa#RRYLdTnUYmHW
zr)rK-XUq;L?No2vrw+c4!kl~tjq_V;&*sy#oG^3H0lCmRzKgp6jTvhznB#PRN{Kkf8CogT!C_5>HV|=I?-xO16R6vj
zwfan>Nx6^&L2Ivip|%K`Rt4@Oub{Ee+KBR<^{%ysVgb@MZOJc$#`Oe^+{D{zpZ%`I
zI(S>UL339eJNR11={&6Z`)eQ+(2(uv!-wbN{EoT6b+r(9@V)v|HoeF?1t
zv`T7R#T>0I(A`)>dO~ZVoNMH3os5t>tT2q5d0V$bWBXZnUa{8tP@7zm+9e6lIwMY7
zu=aeY1T3;ye+9{&Q8x~~iI%S|3h;#sr#n3>s$-GQw#79U8j^ossKfpKEM@oJ!%)
zd^oNw%Mfb8kbEvzDH1lzCvzn!Q0e97Yi&JGl7iKI+3@qBb%UnOn`_WG>X9#UDl=b;
z!@R+E9s$i?&6inigVvi(ZL#8=d}pQCoVNA|1i%1CQaCiTdAw(l2L8qT34~;{>$9|C{b%&xIDElo^96q*L7lLG4qjfMWil8xj3`At{Co~Qj
zwf`*b7sE5#Lmt0aaad`yegdKsqDv`GL%n5-P;x-F5n7H~k;g;xg^7c@4i-T3QgRc0
zEx#j#g|@A))gw=vB*-zyTaL?9idNwS2GT=K7P!dUat@l>=dxvqQnblt9k}G(_&`&y
zgT^{)d--c#@1*sMQ+d^c9DEthEZaCkg|?e&%VG+&zG_Miu`i&pL*S>2kNwBSTE%s&
zGc=BRb=q0SztcFJc0yw^?b!PW8kYoZ(P^-P0k&0d{|i=nYKaH>G&SM@k;6)m&M
zSk|!3TRTFt!BSmxZ7*>`ot@We<+E2V4adR$Jv-qupGakzO)l811QgmV)wgg!^eXg~Q?@8Yg*NL6
z5WSEojvULqE%ml?Y&jPCT1Ft0tQtPvsubq){X+>DwhKL=9a|
z1OC?{#5DjDIm_Gn4K!_|V1L!wtqpDMkP-(?ZEShVZpGn<&GG=mK()BGJ(3i!y4#8n
zyRp3D)ZSZuwnuR|YLnaSRRWIMESY<`1oZ0UYdwmPFRUU?p@`0G0VPm)nL
z^mxjW&~HQ1-#tiH0B4
z4-Cu{jjBxrCR
zlGEr*NcQaw-LSZ1jc@5ZC4=ATdU46w@}tiGlVpAmGIfIokR%@JIwkc-kQ|&p>-_&o
zvWtGx?I^9#-{|^3Nk(<~8$X#5JD7wFN!?6ux}-zmu2V9;wyqbK41bs<@*4|KcYl6(W5htztq7@=n9sylMi4U0==)Lf5u
zhor+6y53T^FD_}{N{{!{av7#
z?qU@u79&V!Db32$i&fOx4W@?JVS4O8N%|bF$5T=d(RE4&Lv@{!@nO17$+C~u`AA5X
zCYr5F!x-I=lKL23r)0teNG3?q`QnnJaXfgYo1n-4lVtov-ENX@H_43pbNo!#iGPwT
zKsMrO@}X{5T(Z>{=sYFo`C>?BC?HwzC3<{u$@rz2y1{Zi!3tep30W2f+ac+24
zYi{4IsQ1z{%kf6*yXU1!ir*t=#qzj^3C}`24pv@1a#T(~?P0>F)6asH{Kt+;+Or-e
zN96>xK~Ef&`aktBl~s~{3Rdi&Ix1J7IVp9X2P^xb&3N9!R6*(fC|HSl=BR9Y)WcLs
z*#w`?KRGInPkNZDD1)B_D`%h`fmT(qJ`GmVpF1jXPkZdS_}s65`wi1a%2!IdJpBIL
zlAFK%vVWz=f$y9r+_V3qq1(L$Z5~B-s%)F`>8$=}ag!XqaIf^UYOemW;(AN|!qPl{p5eTA^hz-Uiejv_}nA8tMRdJR?x<3fl{vfK0jQ$`Rbq8^aL=Dk+0Ep`(atDB@C2o+&
z4gld71fq_Z9R$J$%_yFds3%$v1o42xih&^Ni-#ogdV=T`45Fb}5)8t>7l=0`8jHaB
zAYPIvm=B_v13k^#QSB9Ej$kP6!D5z91qNfbbBzm}EbRN((`>
z6rl@2L(Lp2)2jMf2K1g&D87%1o61PG?bP0d3>FW;nudrD
zJt2mQB@m*~2t>c>iRj^?doK{zNo?x{VuW}_B6}nV$37rJ#o#_5d_qASArUUD9H9?L
z1PuZaAyy9pkrxKSG8jap2pkN;KO95>iD+RO0^%i!h#?@xh+QP|M}ep`6hxc|9SUMl
z1c=il5`@z*5cZ=%qzwa+Bu!fzyqG%@gsQj{-48Y#If^
zCl-Wb1c+&3a0G}4B#w}nA*`c8~RE+|W
zp8#S~6o_1Lmc*b$5U$Z6=824G5cWwRZjo3Z8pnXxPa-!4gd%Q`h)M?GHwMHaF?$RM
z=M)f6NeIz87Q`76D`G(`5f4eEr-JAe2V$965(lDD8i+R}R*3HLAg+_x77t>jcts+6
zEQsL=AXbY_2_SsNfpAO&u~rOD1o42x5fbZ#H3>vsI*7O=5F5n-68;$=Y9xc$B%+f+
zyd-gs#1>IC1w{UM5R+0sY!hcm44MGKl{00BxReUQej*6ZG!VPQlr#|gNqkRYkMI}^
zB5D$dMO=Lf#6zw=&XYm(N(WIWmZXC?L*fmI1EPBdi1bWT8L>UX6ks|eUXf^&1&iV1
zVR1xk8V}++3C9T_j)}n&Kx9t=afHMPVVwxVXDW!ei6Bmj10)`hs4)q|X%RgMMBX$I
z=SX}es!j&sKOMxR$so>(vm{=UaLokqxyZ-_kv{{(EfVKM<17$^W`fAg0&zjyAYnfX
zgx?epm&EKTAoi1ZO5#hgfXh)-Hi+M+g190&OatLO8^ro)Ag+m@Nt_`OG#$hZv3fd)
z^c)bD86dt9fiplf`Vd3`iCe-n6U22A5i>!2Cw7s@o&%!NED(1@=qwOExgbuHxF?*l
zK|COFj_c(2qUvlAd2>NbnhoMdah8PtJP@uqARda091t%_+#>NZ}6slEjQvAWDf#B=VPm@LUbTQA}A4V$gDgz9&&uc&q_ozXHUfH6WbC9TNLVbXg0c
zf>^K?MAXM1ekV~$bXW(%c_oPT>p)ZyKa)5^B4|B`s$%te5b3KxST=yDE&?}zXtWwc
z0f`#Iv=PL05)m6g)DpW$WUnzf_Pp}t%c+Y_&vl*T$}pFF5*~BVVMdy-cA!etJU51d+uj_
zcin1PDKTRH-jfYFoZ6A_OZd8LGcVLCyXB9U6IWXgL>KHSR@{cgOP4nLPR$w(8%(S9
zao5-f(Ho`@ZYYf!)4cWhLpZvA^0wUau161#uXQM->Ve0P2Cmxfce3d3H{X^yc&}rX
z)x(EPO3o-TPWY`iIg7MS=(Wb;1l!@|dbC6R%^;eJq|G4mH-NZ8!d2AS0%Fic5Hq%b
zXf7_1u+InKxfO(mn6eebeiGl4Xem6lfr#1!V$n7bp5hJ(=glCxYzN^j7HkJ`hQ#kA
zT8j=lK%{R0v3>^#U-2`EMq5Dy?F8W`R__FHorGl`QNI9050O*=B7YZ%
zDF;@LJSd0D25jPe9-iHrNWCRO!G~62+B?z{>pSp4LrYNvbR(V#qVwv
zp15h6CX;kDemnWcXgse#eyGYjgyL7IIj&bHi|xluZer&dlbzUk)pVxv;<4H4I9IGRALq;#bVwVp7D3
z6Q+JFibH%tVk)z2n_YPHrfIiXEp+y6(;0F6qN$uZ*^J*p498=CM&8D6B&wW1HdUCg
zu=ahEy=+l`nNKXZhVg|KStV}YGqqL9HLOSz%b>ORzE+JiD2EW_UmBGPSua9ES1B=dtjyjtltRQ+_$Q|I`l
z7rzUo4=t>9#T7h{3SwZvrcx=4f(9Y4xQukDfrJ{tCV)@oWE{Y5nR5`b=SE{;8ucT;{}Kg
z;izK|-9;5pKLdR6sTTa_uL?>#^s@KST~q~^%t*ZY>RdI1({wIS=cnkR)!p`b9E37V*OmCZkVs(I{5*@)0hIU5J--^`hfAMMVM~a0GyBBGJJN2`85QLhsQ>N
z!+-u-sdP&(44>&?urctR&PCEO!%cu_o#ewl^xYJgNiTSf(Ya;_&qJ66jfZ3sS73q8
zCFmTVws{+ZpZP&JURk==8u(}u5+C@`Y%Cg56Pyaq5Dt-@bZrk
z4#{!@krydPWqyqjaSgZ*+ywa1<~P6%;407#X}*HwclG=Lcn**Y%mwBFlYq$pA4bRm
zrT|j`uD@wOD!@lB#sTR-1~3*#0piX0HRLe}!~tBK+X7sC=KyoXf+)EH-p+4|l7Gsq
zhjP~eIBB-PY7>wTYy-9e>w$H^27t@wT3|D<23Q5G2KX4lB0vE?0%ia+fmy&O@XIGZ
zIKKHr$YWId3Gfr}T*h#EiU1#cdIs>3l0={jirI-0umK%`&OihZ4vYeJ!G>!x*I+KW
zTw=MTZU8m{tAXvndLR#22k=?fy}%~mV<6wu2Q@-qDX#BS!wvl*#3WB>{WD0+ayi
z08v0Bz+EH);5y1RlCzwv1XmQU3|vLHgmFdS4#1s*yW9m7#1rZHlyCz`PE<}z&ZX->
zD{xVAC+(p+?g&=_?gC!{R{%Z^d=B7a#YF($Ei?j}08If`zzt|GX2;1XnZ4n!56~9~
z1o{CzfyzJypd8==)C8&nRe%qG`anIPE)WfHL*;rN3A6xO0<8efYtDBrK$8KkCBFeL
zfInsYQt)30yarwYe*oOcxU+k~DK`{uAU6SS8s7rkD7e0J-H(P{Tfmd{Ky$zy@BqF+
z{2oydFW1ZL4>tn@n{)FGZ_*Cp`1nvWE5IGrgFd~NlXQ3AX
zr-3Da431B2e~$1Mz%qd6%#-lRa~vO4<8f&TFdw)L{xa|d&;z;*9D+>N_DIgQOs#F<)T0lkMHWF~d5yF2LQ9I=&63#=c^?OA15bcJpaS3oaGdfpm}9Un2RRXv58&_6!%WMD_ywTN
z65w})4PPwVZ_sN2)dBkb75Eu=4q&)tN*^Hb3}8!ge6j_(B&Px?0DFoBVXut_Sitf?
zV}KbMg`JMfSU?tv1!6WZ1ULh9WJnk2H31fs
z8P)^p0(EpS+z99k^Z{A`&46A&SD*>d5+K(UV7xnU4S6)nM4&m~3VaH}4blUkaeIKy
zTLV6TH{b<$0<8em0c0DX9Y8-ezz=8(_yY9Fu)6C*(q<^Qj*uOIOh$Cp(H+ts=myY`
zg
z1AxH*3o!^71`Gv;16)F80U-##gk+&<69$9>5dgb28j^2sBO#;M|Hb<=1|$m+tIH(F
zM1TnsAmf2;2(xg-)3Hfo01mQb#IaS#@qEFwta%#1SISV=g%>j=5j)0LlYqt|%1(;VdZX244^56vK%89A-@2~e-2p$oCVGR
zjHf&YoClck1>h2pc^N+*0(XEPfLp-#z;Tm!-Y@>ldQ^&7x9Kmszm
z3rT;sfo}o&oB@2Nhwnjl0sJ}tA0Y4}@DyN4YePN(DgcjxvH&yq31Cw{g3VUo7lgS0
z{Q>z3=mRkQpOBn->?WSbxbeP5_)CC;kf#7Apd7G^{a+S=H;60^Sq5+fB!J!U7X06O
z98Yp)fX7E3BRRS)kUUmefs#N8z+Q&~B;zK)4>RTourAV+*Cn~TnINiw;2DLr
zB+rx80iIj<>A($uXUfkYYeMoUz}g;%EmyPp;64EA0d;{oz)bKBAR7YBfTjT73N!}j
z^D2G7WdS{h7Dye
zfWBDk7w}&Z;hubtY8dqZ(GBPXbOAa80YG=41Hi*R6SV_aFn;#v2eb#6hQ~@~%uMK$
z95eIRbrzQX4c~T%^Fsb=qOQe^WR%VhFbc+k6zAx~s0~kTJktgOLjj&u2LpqEU|=8+
z1PlObr{M=)3vX!Bq3zHXUczyj%=cE3XgEzSviP{QaBCs{m?j65@O1NV^N|X>PM1AQ
z7H{zGg%fAUB}~v3iUKzNm)%R+=ho_qtK1LDGXUWd;w`SpxEw_+k?1U{F
zdWM}CMBUFK=0JBbZqhYwKZA!BC@tQMuPGsF!-JQ4buRMwrS}J7uW+dh3)Tk~#wEKQ
z*G*p3*ms{BVp<`_6H8tR5s$Pk#=X2J?zgloE%;%y>fK%UewgJ$E|i7qvgI{(s~dN+
z?yt1E_12mP?#reYTH8r$#hqPpHPK0^?d`HN9(jP9s&bWJ@fx(3aou8N`%y77x4$Zj^0D#Je#V82
zXL2jwjk#YoTQ<1|tJ4!#I*NF>axt#u{bknbTPIgOJfqhQeG?HZChvxK;}XcgC+ptM
z&pY*zUK?*rclg37KP&OC=#J5T_nl=^ORZa_MZw}Zy&G4pe$#m0*q2^^~Y&&G<>c%Cn+cUDdq_}qYordllA(GZi@=w8H4h@Z4WaA4@E-f3psSxFL
zcWXtLd1BcfxoTD8;$!2wyK+Y3<7+$FQ)@b{2SkhGawYL$p*+jQxRm(SinP|9q7Hq@
z7F1iFP4Bi}ZsDTedz|&GQ|PrysmE5sf};eBlHMsUr3Pc=Mr&N3^eU>LewEK<)0;u+
zJ0IN7Dt7Ldojr|vTi1;mF=t3e&b+u>R)?0uw|7x%g)!4wufCUYUGwz6
z3qJnKxl;W50vZ=O-+ywj+VR?NE~!bq*dQrGMAiY+(0o&_r9KuAi>yXZ2;v)5CVPfR<_j%IucE;BnCC*%zd%CEXLZkCP_wDK{
zCamuxnd_yyEk=msT55
zb#Wp>G&?Gf_A>5@Hf~x}i|y`)j~R{Iq>Z~6)wF0}Y*LZp3ugOE$YRvPIUzngg2Uj<
z&W=m+(nB3|Lw8a4qU@!&m$TdiYtcTrh1k7Nu3*M66gfq5P0`|OH0l4>rmXo5M&9LU
z5&Mm?sQqtiqkI!ld(mIU9n%X(j60mP?#Wh^x}~-}bdC|L_QFYEjCi&e)r^P{bqg?E
z^=q%Q8q~eJ?)V13>1sXI#zc=L7GPO3F34_mH)XSB?8^w%LLCFfjo2B>M`zEO+3GH%U&lGksSqLX5r?PlDYZB1zV>7&4luHsH=@vqJ8bxmIF7;E4+gkcb+Y9
zq#Y+}oWy}u`+RuNfX5z(}qgTYsxC+~S>AcGmmjtkh=o9T?+@ihc;E|sD
zT&%qj!>Nt5O)|t>G=ht9|8|QiTN{k`m^cd-*yLCRp9~Ry2IXloShT+-SF(We&k%=6
z4bBkdPC>?Gh$g4dvRIhYPod9dju%_WV9}q%e8%E)a9e(+*bYOkgxuLGhT=l!Fzgm5KOX*5Y)v;D3_hDFhJ7K|maokeld;jr
zcV>#bFR%j`&zoF#oVrT+F#NJweGd*3)pZm3*IA<3IeCp-WwyA8tXzyc#dkz+x$;GY
zqdbvvT;bf=Vz#h5FYlFa=7@vmQTiWp#Iy5Qc8qJr*9EQHyyWvC;c5!?IAvT!zU9N!
zGp9Pf7^P;ewpXbSMdAevo9XAVcq$5#5;j{5zx%`bH&_?
z$kMnWyl1lpd)79n(?T{?oU3(>aS8e9YKhl=w^i-@KCNx8xQVnb#%<$MmfaS=H2L-~
zSa4dPMMCC^a+l!UxB&gu-J8vO{_gJizSzdq=Z;BpJ5{?khZ7cO8V-O(b43W!x)_(K
zzubCr`czLJ9Bow#47UpN#KKFM^#9#^&3WSXCCs^?`NHio`tYy$!v8WFS}YI~sq3|u
zS1%Adp?et@t-B1o_VM~_O)Kf;#GL!@t$=y`7HM6K%h?aT-s04*)w;;{b#$LAT6~F8
zG>;TnU&7M3eLe7AU}k6Q{y$-ApmazAY~`7EpQa65(2;qfssX-dCfyCFh`CD_E*mu4A%S
zKkDfB^tZ{MsI^di+*vB(k=DidGY87RjVAx~ro(Dl^|W|onOJidJ!jm$e#PbZ&Hj5&
zt$Xi%*mCilK8$s36uV&%0SShTO-L$yz1G-bayMt@`}7IbPeY%vmz+^!sY6?~2uTA3
zD0u&jci58gmuHNtz7c~{9b!C;>)VZ+s}a+}ttDs3ptZvN2Q)zFTJidO*|}xxTJ<}a
zEaUELyaz;|a=$R{h&OJ>h7TY06eB`^kgIzcH^Up3Vk4S4BMalMc;lLE#GnoNE^Oy|
zF&UYA8Mno^To^w7#EMmuWYgjGS}~0Ky$>H;Iz4=(#v8@dALX8XjVJ07@-CE}oZVBDGbtOj
z?l7*A-}|cO*YmSJ-mle)Zyo_t^OE2s)
zz-jt*oQRsBOZYM_!uR{szEOYs&kEkhT;C*~A+4-z5{VB{9^>l#`lmPaZ&*FX?tO`s
z&7v(W{(CtLAI3HNWjl5KrmWvnAJvCCuwiljDRR5CRUCycIXz!oe<-Ir)Wi1;_)-sb
zWPD{icfC#(ORyE)w~4urP(R}~{f>Qt`t-_Gj=nFOaSwmBmvK)w^{C6E1jZHHdDu2_
z6KP#yk%JR*2q^gb_P4`s2Wb}cK53gM_ZZ%dyZNQjM^8PSpL7!z_?!v`l5y?-;PLB@
z{9ftX?eEi`+$KUEW4*-~-3lKr#vcy&)TP4P6%Wfgzc0s-?c(-hO#1&`(kDBF+Y|PL
z-p>Cys>;24YmZi%NXuT^#NsE&-Dp*998_$>Q|NzhE8}kzJdT+#)7r*srBR!fQtUR-
z^C|slB@nxxVzv4Y=i>EK*@vWB0_52D8A^hbG0)zWq;gH{6KHRKbn!p?s#xEb_z9;R
z<8K-qne$uMia%w1`hIM_+AHFJLeCg~tYGWcl|4`V(fg8}$pd>4KYn=k=L~)oi)+~~
zta=~Qwm=+4S{LIFAYAg=)A88(Uqaqn#1@F>u&^0_GU4FT2-W!t6ifRVHEomt0X~{VH1vKlxMc(#yi*fsb(XH#ZTt{mm7{P=9lQ7}wui
zN4R%4yNMM&&CNvl9_Bh9Xn%+Wf1oQdG=3D{Uir8thkKw3qoX5T`A1eYr<&5=b$;}NYQMHxuXb}fco4CG*>Md7Mc>_)yh@e
z?qaSXD)lpaiNk%&ZN#xT@OV5CA!R0hl*}~;i>kfM4}@cHbEw$f+q_l`>0=Hn{G*Tg
zu}Nf2GM5zn`k8+(Trk*dXD4oTGFL9_JHnjkRQPA2Suu&bUCh-B^HR*aOBRluV4iCc
z4jVzlPcgg5;zW1UFK3#$r!0olHCGp}x|^$%z_aGf!(+v_UCgz_Uo*^kg>UAWn>*B1
zKSOs*jU10gif|nh9UGex6%iZjnv{mWkCT!ZIxb!$)i8e`RxUMnu1OVthAJ)&J=NT`
zxf*TguI}PO5QfOzrTB3z2-%KWYHriSI19ks2)b&A0cP4hEHo@4ws~?|d}_3)UE5q^
z@hWpkS5=LRKoULViZz%=Y@|qzz@IpYNDfU+NY?DsWbXfi){_6HG5!XgdKmC1G%Yhv
HsPMl4!cKRw
delta 31879
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%0A_M(^f-WrKRO
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 e[k]
- });
- }
- }
- }
- n.default = e;
- return Object.freeze(n);
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } })
+ if (e) {
+ for (const k in e) {
+ if (k !== "default") {
+ const d = Object.getOwnPropertyDescriptor(e, k)
+ Object.defineProperty(
+ n,
+ k,
+ d.get
+ ? d
+ : {
+ enumerable: true,
+ get: () => e[k]
+ }
+ )
+ }
+ }
+ }
+ n.default = e
+ return Object.freeze(n)
}
-const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
-const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
-const os__namespace = /* @__PURE__ */ _interopNamespaceDefault(os);
-let mainWindow = null;
+const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs)
+const os__namespace = /* @__PURE__ */ _interopNamespaceDefault(os)
+const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path)
+let mainWindow = null
async function createWindow() {
- if (mainWindow) return;
- mainWindow = new electron.BrowserWindow({
- width: 1200,
- height: 800,
- webPreferences: {
- nodeIntegration: false,
- contextIsolation: true,
- preload: path__namespace.join(__dirname, "preload.js")
- }
- });
- const configPath = path__namespace.join(os__namespace.homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
- console.log("Config path:", configPath);
- try {
- const configExists = node_fs.existsSync(configPath);
- console.log("Config exists:", configExists);
- if (configExists) {
- const config = node_fs.readFileSync(configPath, "utf8");
- console.log("Config content:", config);
- }
- } catch (error) {
- console.error("Error checking config:", error);
- }
- if (process.env.VITE_DEV_SERVER_URL) {
- await mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL);
- } else {
- mainWindow.loadFile("dist/index.html");
- }
- mainWindow.on("closed", () => {
- mainWindow = null;
- });
+ if (mainWindow) return
+ mainWindow = new electron.BrowserWindow({
+ width: 1200,
+ height: 800,
+ webPreferences: {
+ nodeIntegration: false,
+ contextIsolation: true,
+ preload: path__namespace.join(__dirname, "preload.js"),
+ webSecurity: false
+ // Allow loading local images
+ }
+ })
+ if (process.platform === "darwin") {
+ electron.app.commandLine.appendSwitch(
+ "js-flags",
+ "--max-old-space-size=4096"
+ )
+ }
+ const configPath = path__namespace.join(
+ os__namespace.homedir(),
+ "Library",
+ "Application Support",
+ "Claude",
+ "claude_desktop_config.json"
+ )
+ console.log("Config path:", configPath)
+ try {
+ const configExists = node_fs.existsSync(configPath)
+ console.log("Config exists:", configExists)
+ if (configExists) {
+ const config = node_fs.readFileSync(configPath, "utf8")
+ console.log("Config content:", config)
+ }
+ } catch (error) {
+ console.error("Error checking config:", error)
+ }
+ if (process.env.VITE_DEV_SERVER_URL) {
+ await mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL)
+ } else {
+ mainWindow.loadFile("dist/index.html")
+ }
+ mainWindow.on("closed", () => {
+ mainWindow = null
+ })
+ mainWindow.on("hide", () => {
+ if (process.platform === "darwin") {
+ electron.app.dock.hide()
+ }
+ })
}
-electron.app.whenReady().then(createWindow);
+electron.app.whenReady().then(() => {
+ electron.protocol.registerFileProtocol("app", (request, callback) => {
+ const url = request.url.slice("app://".length)
+ callback({ path: path__namespace.join(__dirname, url) })
+ })
+ createWindow()
+})
electron.app.on("activate", () => {
- if (!mainWindow) {
- createWindow();
- }
-});
+ if (!mainWindow) {
+ createWindow()
+ }
+})
electron.app.on("window-all-closed", () => {
- if (process.platform !== "darwin") {
- electron.app.quit();
- }
-});
+ if (process.platform !== "darwin") {
+ electron.app.quit()
+ }
+})
electron.ipcMain.handle("read-config", async () => {
- try {
- const configPath = path__namespace.join(os__namespace.homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
- console.log("Reading config from:", configPath);
- const exists = node_fs.existsSync(configPath);
- console.log("Config file exists:", exists);
- const data = await fs__namespace.readFile(configPath, "utf8");
- console.log("Config data:", data);
- const parsedData = JSON.parse(data);
- console.log("Parsed config:", parsedData);
- return parsedData;
- } catch (error) {
- console.error("Error reading config:", error);
- throw error;
- }
-});
+ try {
+ const configPath = path__namespace.join(
+ os__namespace.homedir(),
+ "Library",
+ "Application Support",
+ "Claude",
+ "claude_desktop_config.json"
+ )
+ console.log("Reading config from:", configPath)
+ const exists = node_fs.existsSync(configPath)
+ console.log("Config file exists:", exists)
+ const data = await fs__namespace.readFile(configPath, "utf8")
+ console.log("Config data:", data)
+ const parsedData = JSON.parse(data)
+ console.log("Parsed config:", parsedData)
+ return parsedData
+ } catch (error) {
+ console.error("Error reading config:", error)
+ return { success: false, error }
+ }
+})
electron.ipcMain.handle("execute-command", async (_event, command) => {
- const execAsync = node_util.promisify(node_child_process.exec);
- try {
- const { stdout, stderr } = await execAsync(command);
- console.log("Command output:", stdout);
- if (stderr) console.error("Command stderr:", stderr);
- return { success: true, output: stdout };
- } catch (error) {
- console.error("Command error:", error);
- throw error;
- }
-});
+ const execAsync = node_util.promisify(node_child_process.exec)
+ try {
+ const { stdout, stderr } = await execAsync(command)
+ console.log("Command output:", stdout)
+ if (stderr) {
+ console.error("Command stderr:", stderr)
+ }
+ return { success: true, output: stdout }
+ } catch (error) {
+ console.error("Command error:", error)
+ return { success: false, error }
+ }
+})
diff --git a/dist-electron/main.js.map b/dist-electron/main.js.map
deleted file mode 100644
index d1fd009..0000000
--- a/dist-electron/main.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"main.js","sourceRoot":"","sources":["../electron/main.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist-electron/preload.js b/dist-electron/preload.js
index a2bd35b..e4c4aaa 100644
--- a/dist-electron/preload.js
+++ b/dist-electron/preload.js
@@ -1,9 +1,5 @@
-"use strict";
-const { contextBridge, ipcRenderer } = require("electron");
-contextBridge.exposeInMainWorld(
- "electron",
- {
- readConfig: () => ipcRenderer.invoke("read-config"),
- executeCommand: (command) => ipcRenderer.invoke("execute-command", command)
- }
-);
+const { contextBridge, ipcRenderer } = require("electron")
+contextBridge.exposeInMainWorld("electron", {
+ readConfig: () => ipcRenderer.invoke("read-config"),
+ executeCommand: (command) => ipcRenderer.invoke("execute-command", command)
+})
diff --git a/dist-electron/preload.js.map b/dist-electron/preload.js.map
deleted file mode 100644
index 2a953b1..0000000
--- a/dist-electron/preload.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"preload.js","sourceRoot":"","sources":["../electron/preload.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAE1D,aAAa,CAAC,iBAAiB,CAC3B,UAAU,EACV;IACI,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;IACnD,cAAc,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACtF,CACJ,CAAA"}
\ No newline at end of file
diff --git a/electron/main.ts b/electron/main.ts
index b35f343..c9e17c9 100644
--- a/electron/main.ts
+++ b/electron/main.ts
@@ -1,94 +1,128 @@
-import { app, BrowserWindow, ipcMain, IpcMainInvokeEvent } from 'electron'
-import * as path from 'node:path'
-import * as fs from 'node:fs/promises'
-import { existsSync, readFileSync } from 'node:fs'
-import * as os from 'node:os'
-import { exec } from 'node:child_process'
-import { promisify } from 'node:util'
+import { exec } from "node:child_process"
+import { existsSync, readFileSync } from "node:fs"
+import * as fs from "node:fs/promises"
+import * as os from "node:os"
+import * as path from "node:path"
+import { promisify } from "node:util"
+import { BrowserWindow, type IpcMainInvokeEvent, app, ipcMain } from "electron"
+import { protocol } from "electron"
let mainWindow: BrowserWindow | null = null
async function createWindow() {
- if (mainWindow) return
-
- mainWindow = new BrowserWindow({
- width: 1200,
- height: 800,
- webPreferences: {
- nodeIntegration: false,
- contextIsolation: true,
- preload: path.join(__dirname, 'preload.js')
- }
- })
-
- const configPath = path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json')
- console.log('Config path:', configPath)
- try {
- const configExists = existsSync(configPath)
- console.log('Config exists:', configExists)
- if (configExists) {
- const config = readFileSync(configPath, 'utf8')
- console.log('Config content:', config)
- }
- } catch (error) {
- console.error('Error checking config:', error)
- }
-
- if (process.env.VITE_DEV_SERVER_URL) {
- await mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL)
- } else {
- mainWindow.loadFile('dist/index.html')
- }
-
- mainWindow.on('closed', () => {
- mainWindow = null
- })
+ if (mainWindow) return
+
+ mainWindow = new BrowserWindow({
+ width: 1200,
+ height: 800,
+ webPreferences: {
+ nodeIntegration: false,
+ contextIsolation: true,
+ preload: path.join(__dirname, "preload.js"),
+ webSecurity: false // Allow loading local images
+ }
+ })
+
+ if (process.platform === "darwin") {
+ app.commandLine.appendSwitch("js-flags", "--max-old-space-size=4096")
+ }
+
+ const configPath = path.join(
+ os.homedir(),
+ "Library",
+ "Application Support",
+ "Claude",
+ "claude_desktop_config.json"
+ )
+ console.log("Config path:", configPath)
+ try {
+ const configExists = existsSync(configPath)
+ console.log("Config exists:", configExists)
+ if (configExists) {
+ const config = readFileSync(configPath, "utf8")
+ console.log("Config content:", config)
+ }
+ } catch (error) {
+ console.error("Error checking config:", error)
+ }
+
+ if (process.env.VITE_DEV_SERVER_URL) {
+ await mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL)
+ } else {
+ mainWindow.loadFile("dist/index.html")
+ }
+
+ mainWindow.on("closed", () => {
+ mainWindow = null
+ })
+
+ mainWindow.on("hide", () => {
+ if (process.platform === "darwin") {
+ app.dock.hide()
+ }
+ })
}
-app.whenReady().then(createWindow)
+app.whenReady().then(() => {
+ protocol.registerFileProtocol("app", (request, callback) => {
+ const url = request.url.slice("app://".length)
+ callback({ path: path.join(__dirname, url) })
+ })
+ createWindow()
+})
-app.on('activate', () => {
- if (!mainWindow) {
- createWindow()
- }
+app.on("activate", () => {
+ if (!mainWindow) {
+ createWindow()
+ }
})
-app.on('window-all-closed', () => {
- if (process.platform !== 'darwin') {
- app.quit()
- }
+app.on("window-all-closed", () => {
+ if (process.platform !== "darwin") {
+ app.quit()
+ }
})
-ipcMain.handle('read-config', async () => {
- try {
- const configPath = path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json')
- console.log('Reading config from:', configPath)
-
- const exists = existsSync(configPath)
- console.log('Config file exists:', exists)
-
- const data = await fs.readFile(configPath, 'utf8')
- console.log('Config data:', data)
-
- const parsedData = JSON.parse(data)
- console.log('Parsed config:', parsedData)
-
- return parsedData
- } catch (error) {
- console.error('Error reading config:', error)
- throw error
- }
+ipcMain.handle("read-config", async () => {
+ try {
+ const configPath = path.join(
+ os.homedir(),
+ "Library",
+ "Application Support",
+ "Claude",
+ "claude_desktop_config.json"
+ )
+ console.log("Reading config from:", configPath)
+
+ const exists = existsSync(configPath)
+ console.log("Config file exists:", exists)
+
+ const data = await fs.readFile(configPath, "utf8")
+ console.log("Config data:", data)
+
+ const parsedData = JSON.parse(data)
+ console.log("Parsed config:", parsedData)
+ return parsedData
+ } catch (error) {
+ console.error("Error reading config:", error)
+ return { success: false, error }
+ }
})
-ipcMain.handle('execute-command', async (_event: IpcMainInvokeEvent, command: string) => {
- const execAsync = promisify(exec)
- try {
- const { stdout, stderr } = await execAsync(command)
- console.log('Command output:', stdout)
- if (stderr) console.error('Command stderr:', stderr)
- return { success: true, output: stdout }
- } catch (error) {
- console.error('Command error:', error)
- throw error
- }
-})
\ No newline at end of file
+ipcMain.handle(
+ "execute-command",
+ async (_event: IpcMainInvokeEvent, command: string) => {
+ const execAsync = promisify(exec)
+ try {
+ const { stdout, stderr } = await execAsync(command)
+ console.log("Command output:", stdout)
+ if (stderr) {
+ console.error("Command stderr:", stderr)
+ }
+ return { success: true, output: stdout }
+ } catch (error) {
+ console.error("Command error:", error)
+ return { success: false, error }
+ }
+ }
+)
diff --git a/electron/preload.ts b/electron/preload.ts
index aa1b24c..beae056 100644
--- a/electron/preload.ts
+++ b/electron/preload.ts
@@ -1,12 +1,9 @@
-const { contextBridge, ipcRenderer } = require('electron')
+const { contextBridge, ipcRenderer } = require("electron")
-contextBridge.exposeInMainWorld(
- 'electron',
- {
- readConfig: () => ipcRenderer.invoke('read-config'),
- executeCommand: (command: string) => ipcRenderer.invoke('execute-command', command)
- }
-)
+contextBridge.exposeInMainWorld("electron", {
+ readConfig: () => ipcRenderer.invoke("read-config"),
+ executeCommand: (command: string) =>
+ ipcRenderer.invoke("execute-command", command)
+})
-// This is needed for TypeScript
-export {}
\ No newline at end of file
+export {}
diff --git a/electron/tsconfig.json b/electron/tsconfig.json
index 7408890..9400fb5 100644
--- a/electron/tsconfig.json
+++ b/electron/tsconfig.json
@@ -1,12 +1,10 @@
{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "composite": true,
- "module": "CommonJS",
- "moduleResolution": "node",
- "types": ["electron", "node"]
- },
- "include": [
- "."
- ]
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "composite": true,
+ "module": "CommonJS",
+ "moduleResolution": "node",
+ "types": ["electron", "node"]
+ },
+ "include": ["."]
}
diff --git a/electron/tsconfig.tsbuildinfo b/electron/tsconfig.tsbuildinfo
index a24ea56..a669eb5 100644
--- a/electron/tsconfig.tsbuildinfo
+++ b/electron/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/@types/react/jsx-runtime.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/buffer.buffer.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts5.6/index.d.ts","../node_modules/electron/electron.d.ts","./main.ts","./preload.ts"],"fileIdsList":[[68,74,117,118,130,131,138,139,161,168],[68,74,117],[74,114,117],[74,116,117],[74,117,122,152],[74,117,118,123,129,130,137,149,160],[74,117,118,119,129,137],[74,117],[69,70,71,74,117],[74,117,120,161],[74,117,121,122,130,138],[74,117,122,149,157],[74,117,123,125,129,137],[74,116,117,124],[74,117,125,126],[74,117,129],[74,117,127,129],[74,116,117,129],[74,117,129,130,131,149,160],[74,117,129,130,131,144,149,152],[74,112,117,165],[74,112,117,125,129,132,137,149,160],[74,117,129,130,132,133,137,149,157,160],[74,117,132,134,149,157,160],[74,117,129,135],[74,117,136,160,165],[74,117,125,129,137,149],[74,117,138],[74,117,139],[74,116,117,140],[74,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],[74,117,142],[74,117,143],[74,117,129,144,145],[74,117,144,146,161,163],[74,117,129,149,150,151,152],[74,117,149,151],[74,117,149,150],[74,117,152],[74,117,153],[74,114,117,149],[74,117,129,155,156],[74,117,155,156],[74,117,122,137,149,157],[74,117,158],[117],[72,73,74,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],[74,117,137,159],[74,117,132,143,160],[74,117,122,161],[74,117,149,162],[74,117,136,163],[74,117,164],[74,117,122,129,131,140,149,160,163,165],[74,117,149,166],[64,65,66,74,117],[67,74,117],[74,117,129,130,167],[74,84,88,117,160],[74,84,117,149,160],[74,79,117],[74,81,84,117,157,160],[74,117,137,157],[74,117,167],[74,79,117,167],[74,81,84,117,137,160],[74,76,77,80,83,117,129,149,160],[74,84,91,117],[74,76,82,117],[74,84,105,106,117],[74,80,84,117,152,160,167],[74,105,117,167],[74,78,79,117,167],[74,84,117],[74,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,117],[74,84,99,117],[74,84,91,92,117],[74,82,84,92,93,117],[74,83,117],[74,76,79,84,117],[74,84,88,92,93,117],[74,88,117],[74,82,84,87,117,160],[74,76,81,84,91,117],[74,117,149],[74,79,84,105,117,165,167]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"15c1c3d7b2e46e0025417ed6d5f03f419e57e6751f87925ca19dc88297053fe6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"9d540251809289a05349b70ab5f4b7b99f922af66ab3c39ba56a475dcf95d5ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"65ff5a0aefd7817a03c1ad04fee85c9cdd3ec415cc3c9efec85d8008d4d5e4ee","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1},{"version":"f1b4268529636fec8722efb9ed630629eea91aac4a3b93b527d8227bcc3c7cc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"6489665f50b3e472e7ec6fd51431368abf2624ba85b2f19b0ffcafea541eb8bf","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"6708eacc2aa17c1bcb67fdbe6814d047070c081c244a6303f1c25070ac978a78"],"root":[169,170],"options":{"allowImportingTsExtensions":true,"composite":true,"jsx":4,"module":1,"noFallthroughCasesInSwitch":true,"noUncheckedSideEffectImports":true,"noUnusedLocals":false,"noUnusedParameters":true,"skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[169,1],[170,2],[114,3],[115,3],[116,4],[117,5],[118,6],[119,7],[69,8],[72,9],[70,8],[71,8],[120,10],[121,11],[122,12],[123,13],[124,14],[125,15],[126,15],[128,16],[127,17],[129,18],[130,19],[131,20],[113,21],[132,22],[133,23],[134,24],[135,25],[136,26],[137,27],[138,28],[139,29],[140,30],[141,31],[142,32],[143,33],[144,34],[145,34],[146,35],[147,8],[148,8],[149,36],[151,37],[150,38],[152,39],[153,40],[154,41],[155,42],[156,43],[157,44],[158,45],[74,46],[73,8],[167,47],[159,48],[160,49],[161,50],[162,51],[163,52],[164,53],[165,54],[166,55],[66,8],[64,8],[67,56],[68,57],[75,8],[65,8],[168,58],[62,8],[63,8],[11,8],[12,8],[14,8],[13,8],[2,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[22,8],[3,8],[23,8],[4,8],[24,8],[28,8],[25,8],[26,8],[27,8],[29,8],[30,8],[31,8],[5,8],[32,8],[33,8],[34,8],[35,8],[6,8],[39,8],[36,8],[37,8],[38,8],[40,8],[7,8],[41,8],[46,8],[47,8],[42,8],[43,8],[44,8],[45,8],[8,8],[51,8],[48,8],[49,8],[50,8],[52,8],[9,8],[53,8],[54,8],[55,8],[58,8],[56,8],[57,8],[59,8],[60,8],[10,8],[61,8],[1,8],[91,59],[101,60],[90,59],[111,61],[82,62],[81,63],[110,64],[104,65],[109,66],[84,67],[98,68],[83,69],[107,70],[79,71],[78,64],[108,72],[80,73],[85,74],[86,8],[89,74],[76,8],[112,75],[102,76],[93,77],[94,78],[96,79],[92,80],[95,81],[105,64],[87,82],[88,83],[97,84],[77,85],[100,76],[99,74],[103,8],[106,86]],"affectedFilesPendingEmit":[[169,17],[170,17]],"emitSignatures":[169,170],"version":"5.6.3"}
\ No newline at end of file
+{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/@types/react/jsx-runtime.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/buffer.buffer.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts5.6/index.d.ts","../node_modules/electron/electron.d.ts","./main.ts","./preload.ts"],"fileIdsList":[[68,74,117,118,130,131,138,139,161,168],[68,74,117],[74,114,117],[74,116,117],[74,117,122,152],[74,117,118,123,129,130,137,149,160],[74,117,118,119,129,137],[74,117],[69,70,71,74,117],[74,117,120,161],[74,117,121,122,130,138],[74,117,122,149,157],[74,117,123,125,129,137],[74,116,117,124],[74,117,125,126],[74,117,129],[74,117,127,129],[74,116,117,129],[74,117,129,130,131,149,160],[74,117,129,130,131,144,149,152],[74,112,117,165],[74,112,117,125,129,132,137,149,160],[74,117,129,130,132,133,137,149,157,160],[74,117,132,134,149,157,160],[74,117,129,135],[74,117,136,160,165],[74,117,125,129,137,149],[74,117,138],[74,117,139],[74,116,117,140],[74,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],[74,117,142],[74,117,143],[74,117,129,144,145],[74,117,144,146,161,163],[74,117,129,149,150,151,152],[74,117,149,151],[74,117,149,150],[74,117,152],[74,117,153],[74,114,117,149],[74,117,129,155,156],[74,117,155,156],[74,117,122,137,149,157],[74,117,158],[117],[72,73,74,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],[74,117,137,159],[74,117,132,143,160],[74,117,122,161],[74,117,149,162],[74,117,136,163],[74,117,164],[74,117,122,129,131,140,149,160,163,165],[74,117,149,166],[64,65,66,74,117],[67,74,117],[74,117,129,130,167],[74,84,88,117,160],[74,84,117,149,160],[74,79,117],[74,81,84,117,157,160],[74,117,137,157],[74,117,167],[74,79,117,167],[74,81,84,117,137,160],[74,76,77,80,83,117,129,149,160],[74,84,91,117],[74,76,82,117],[74,84,105,106,117],[74,80,84,117,152,160,167],[74,105,117,167],[74,78,79,117,167],[74,84,117],[74,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,117],[74,84,99,117],[74,84,91,92,117],[74,82,84,92,93,117],[74,83,117],[74,76,79,84,117],[74,84,88,92,93,117],[74,88,117],[74,82,84,87,117,160],[74,76,81,84,91,117],[74,117,149],[74,79,84,105,117,165,167]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"15c1c3d7b2e46e0025417ed6d5f03f419e57e6751f87925ca19dc88297053fe6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"9d540251809289a05349b70ab5f4b7b99f922af66ab3c39ba56a475dcf95d5ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"65ff5a0aefd7817a03c1ad04fee85c9cdd3ec415cc3c9efec85d8008d4d5e4ee","impliedFormat":1},{"version":"aa17748c522bd586f8712b1a308ea23af59c309b2fd278f6d4f406647c72e659","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1},{"version":"f1b4268529636fec8722efb9ed630629eea91aac4a3b93b527d8227bcc3c7cc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"c402a6713796c7aa0435021914b029fb07b167dc98302cf8275bedf091e82135","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"4d386da7869653a876e8b8c8dc1e6f341b920a7462091bccfbc886d93d10f88c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[169,170],"options":{"allowImportingTsExtensions":true,"composite":true,"jsx":4,"module":1,"noFallthroughCasesInSwitch":true,"noUncheckedSideEffectImports":true,"noUnusedLocals":false,"noUnusedParameters":true,"skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[169,1],[170,2],[114,3],[115,3],[116,4],[117,5],[118,6],[119,7],[69,8],[72,9],[70,8],[71,8],[120,10],[121,11],[122,12],[123,13],[124,14],[125,15],[126,15],[128,16],[127,17],[129,18],[130,19],[131,20],[113,21],[132,22],[133,23],[134,24],[135,25],[136,26],[137,27],[138,28],[139,29],[140,30],[141,31],[142,32],[143,33],[144,34],[145,34],[146,35],[147,8],[148,8],[149,36],[151,37],[150,38],[152,39],[153,40],[154,41],[155,42],[156,43],[157,44],[158,45],[74,46],[73,8],[167,47],[159,48],[160,49],[161,50],[162,51],[163,52],[164,53],[165,54],[166,55],[66,8],[64,8],[67,56],[68,57],[75,8],[65,8],[168,58],[62,8],[63,8],[11,8],[12,8],[14,8],[13,8],[2,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[22,8],[3,8],[23,8],[4,8],[24,8],[28,8],[25,8],[26,8],[27,8],[29,8],[30,8],[31,8],[5,8],[32,8],[33,8],[34,8],[35,8],[6,8],[39,8],[36,8],[37,8],[38,8],[40,8],[7,8],[41,8],[46,8],[47,8],[42,8],[43,8],[44,8],[45,8],[8,8],[51,8],[48,8],[49,8],[50,8],[52,8],[9,8],[53,8],[54,8],[55,8],[58,8],[56,8],[57,8],[59,8],[60,8],[10,8],[61,8],[1,8],[91,59],[101,60],[90,59],[111,61],[82,62],[81,63],[110,64],[104,65],[109,66],[84,67],[98,68],[83,69],[107,70],[79,71],[78,64],[108,72],[80,73],[85,74],[86,8],[89,74],[76,8],[112,75],[102,76],[93,77],[94,78],[96,79],[92,80],[95,81],[105,64],[87,82],[88,83],[97,84],[77,85],[100,76],[99,74],[103,8],[106,86]],"affectedFilesPendingEmit":[[169,17],[170,17]],"emitSignatures":[169,170],"version":"5.6.3"}
\ No newline at end of file
diff --git a/eslint.config.js b/eslint.config.js
index 535ca41..2dcf237 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -5,7 +5,9 @@ import globals from "globals"
import tseslint from "typescript-eslint"
export default tseslint.config(
- { ignores: ["dist"] },
+ {
+ ignores: ["dist/**", "electron/**", "dist-electron/**"]
+ },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ["**/*.{ts,tsx}"],
diff --git a/package.json b/package.json
index 40705cd..161133c 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,8 @@
"lint": "eslint .",
"preview": "vite preview",
"check": "tsc --noEmit && biome check --write .",
- "electron:dev": "tsc -p electron/tsconfig.json && vite"
+ "electron:dev": "tsc -p electron/tsconfig.json && vite",
+ "electron:build": "vite build && tsc -p electron/tsconfig.json && electron-builder --mac"
},
"dependencies": {
"lucide-react": "^0.468.0",
@@ -27,7 +28,7 @@
"concurrently": "^8.2.2",
"daisyui": "^4.12.14",
"electron": "^29.1.4",
- "electron-builder": "^24.13.3",
+ "electron-builder": "^25.1.8",
"eslint": "^9.15.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.14",
@@ -40,5 +41,14 @@
"vite-plugin-electron": "^0.28.3",
"vite-plugin-electron-renderer": "^0.14.5",
"wait-on": "^7.2.0"
+ },
+ "build": {
+ "appId": "com.mcp-manager",
+ "productName": "MCP Manager",
+ "files": ["dist/**/*", "dist-electron/**/*", "electron/**/*"],
+ "mac": {
+ "icon": "public/app.png",
+ "target": "dmg"
+ }
}
}
diff --git a/public/app.png b/public/app.png
new file mode 100644
index 0000000000000000000000000000000000000000..b87cc8c779b0cdbf02e4f0a05b02c3eb2eee87b0
GIT binary patch
literal 597750
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