From 73bee895b1f3125b0e0d28fe9325fd0cd2756b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 6 Jul 2024 21:33:31 +0200 Subject: [PATCH] WebUI setup --- bun.lockb | Bin 173830 -> 243111 bytes packages/server/src/index.ts | 4 ++-- packages/webui/.eslintrc.cjs | 18 ++++++++++++++++++ packages/webui/README.md | 30 ++++++++++++++++++++++++++++++ packages/webui/index.html | 13 +++++++++++++ packages/webui/package.json | 24 +++++++++++++++++++++++- packages/webui/public/vite.svg | 1 + packages/webui/src/App.tsx | 23 +++++++++++++++++++++++ packages/webui/src/main.tsx | 10 ++++++++++ packages/webui/src/vite-env.d.ts | 1 + packages/webui/tsconfig.app.json | 27 +++++++++++++++++++++++++++ packages/webui/tsconfig.json | 11 +++++++++++ packages/webui/tsconfig.node.json | 13 +++++++++++++ packages/webui/vite.config.ts | 7 +++++++ 14 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 packages/webui/.eslintrc.cjs create mode 100644 packages/webui/README.md create mode 100644 packages/webui/index.html create mode 100644 packages/webui/public/vite.svg create mode 100644 packages/webui/src/App.tsx create mode 100644 packages/webui/src/main.tsx create mode 100644 packages/webui/src/vite-env.d.ts create mode 100644 packages/webui/tsconfig.app.json create mode 100644 packages/webui/tsconfig.json create mode 100644 packages/webui/tsconfig.node.json create mode 100644 packages/webui/vite.config.ts diff --git a/bun.lockb b/bun.lockb index bcebcce39da882d8a6673c80e3a7f2ff56fba8a6..949e9472db2470e9b656819bcf7caa5b1cc977be 100755 GIT binary patch delta 55477 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 delta 12363 zcmeHNd0bRSy1lm$!$r|xj1nb^Mh%0C2uLGnE8vO?;s&U=uqm>LEDDHpi%S$l!K;@0 zzM@!ce{JVVAqCi8!kx-I3qnhg)(9@Q&MBo(xgWb zlJo}jYhXw48Sv}iqu@H=-GVoO9bhj3Q+>U_wZLv*)azwV8Izh8n~|EB7MrZKJXbi5 z6ppd6ZR6ro)6xeC`&guU;Pw8^&B84sIVCpO~hNQo0;v?N&gvwcFlc>h29N`CSIn@LLORF8Ch$O2dyt(@x|Eo5DDD zLW(wu-q7pA#q5RtPzSEZSu45}r`|%pen5B|Ku#WKZSPCiZ^F(*Xz6JiZ*}Lgl_$lg zqee-JON*Tpo1C7OG9fKJ8oraqTgxYbshQ+4$rIwygV?mFjQGSD$u&um8bYrJruJSY zYHTv!wIxJGq-LZ#t;#a-uZVV_M<#J=; zv`gZ}#A<>+lt+(uOP$km|4!1C4d&Zirc6|maF zlGM-)gK`E|S1m8p)1Wv+T5DlysFy+M1It=2)XiW!o$}Pe{+;ZQuofvsHylPLqAXuA+wYoL0jjlc2$DQj0~f?Q+t2_h@1(xPft zR9QX-Bwqm8$=WvX1Hb*yBh4y!0HQ28@<}~h+>Bg*&06@Z*N!wG-pRl#!^_F zU@`T)kAZy~rv~pa+BO@DeyD|h{>pHqtaF9Y+ZL0h7Pj`c{Rk;<^-ODj^YDJb&nK52p@w9+W!J-jhb@=Z{6>YqG9oRHlw2)kpJlm>@~Lwbanc)auIAy~%Hu5?n&qfXPHz=Z7Dxn(BGXLUe|jzt(8G3Zl2# zuZ=&ukfGYIGcx;0YVbOvl7`O=>lUZISzuAH(FoSvGg#d;i{8*TN_{vtjv23iw6A~MNjE( zs`dtEb4{v!xsjbSsllKIW;GuaW>zc8jkX15>@#ZNIDh6eO$|O~WJ{*0`Jfxq)QV$9 zrFott8Bi^jaSsEF$Ww!l8(CqVnt$A=e2cv9S_km9QQAz`XC(BPftjc84L-3)QGfdM zb<=B-Bz-I6|A}efZ5XD4o;IRDb*>HF7dlng5lkcLEc}Qm*#$3@-&N?mix$F zJbp2Raf2b8A)y0*i_2lM51&Y6;2#tD@@7jw9eEa!A3smz&;PO%)QL|c>de0&GV=Dz zL^MnLj1&Df8f!@=)Gu zIQmt(Qtrcg%lv0jUXT*G3Q8ZDZ(Rjt%LphAtD*Fh`LNX}-CyQ=h(ly+eA159n^G55yLuH;y947M$;&7QaUk{Fuc{cGdnO`6tE_1gH z;1M#3Q-^)jVKV0K@>KDqYwq+XheZH22t1yjztu}d`T=u^vh<9 zXe{Eeh2juLao7SS9&sS$1u2mwP!bS_5{koEio;eYNr=N%DB94q@DB5`>i`aDKmtqCi5wVhBt5(qf9j zWC*{Iu$=c^KvBqqP`UuZO8z$zu8GPRN!$<+6{HWxz?tM@hQ+ zq0If`S!dI$e^?(9*C3CwoyowX+tl_`YdLAH@S*R?7lgJ>X!Pc~2+*@$X!J$=b4`(? z4ML;eTVGi?59Gr2+axh zk3uUG8V>cPpM+-GFT_R=9trV)&>F-30ibC(C^T9d4*{BnLqdBS>DvH>{IJlPAnk-S zh5U%nnj$>|X?kcK;=f69f#D*=axg8TX24m1o)4i>c5`4M33yIIpuoKY;Ao8gS|EKS z{8}K5<1OtuEwq-fGKKcB&|1MBi}tmrLWnd+qpgzkiO^hO-v=l{p9<|SNYmn@=Zw(Y zkZy&v3-~jkwMN=iXlKDRxHiC2fS!vc;n)_28KB;OE;M(fvjOV;C84!LIvJqnvd}z` zrWH<|`Y)liN7@T%>eLmXc_JN(GCX?0(?G`ku4~N83sL;Lc_DV>$!zvK^0 z6xuzZp`esbnRw{zjFO#!o=DJu9th2d^bCMH|DDjfAiW--jy{ypJ{9f?1OfEWAslG| zKsOTbJQ7+U(vy*<4*VcAD%TEa%6lv{Do5d`yeC4lqg9LN94#U|_MI}kJo){JtX)ew z`Irk70`mY`0W{+@!!)BbgI9TcDx2Sr4nydGqzF&}Itn-roB%!q=!oG6K!+eJfRzB9 zYtX1@6x3_#CH3kle=>;$b+AEp4Zs$t3A_f_0SaIb)BFUKvQ^^7pAkOvW1tV z;{$pY56xf(6CKc;1wIAN0H*=^d9VhcGnK9Y9Zl8;8Um3(XMoPuMgZ=B2jB&G11`Wj z0G(Dw0nxxHAP>=-4$wP_f=T-o_9rGC;=L#1OY1VeaWd;-`yO0o^RFkfcBU~%(uC8B zr9%=r0ix5Loxm<&H?RlT3%n2P13myOKpC(fH~<_34gmo`AP@v}1G)fogh_{ZV}Wr% zJP-?h$a z(1&IV6q_OON7<}Z69@P>1EtUx0CND^#U}wVjHgavM%kU0PGJq{Z`Kn2gd{~t+%Jc@ z^UNI9246DQ=CC(-c@A@FNN+rPqxk^ZP7LaHMdmjqvX-`sAbMC@PGx;w3#BzeAC#+r zjlc$A39uL-KdNLQKozwIQh^kp2G9ZU2FS+~z<s)CABu@FFSx*yVd zv%Qhlo2g!XAat4@DpP@`{DfZ*a9@DRhXU2RiSj0`Z~8dHsyR|aG_Ik*5I`RX^?xlI zAYalbk18GxL;%BpNFW-B0!9HNMfy3)jX`=e@C@lV+M&sbGRQFo7zb3>#=?#T;sEj? zP?~%wF98@2P~#=2XCj#9lD_#)0;d5PKsulTIY1^b8Tbc(R)9&M^_>l50Ska)pa_@` z%mWI6xj+Gs56l5(1MdN|fSJGyU^;`rL zJAoZQDX<;b25bdNfGxm&zyg#BJ_=VQec*(qi7d(5K zanC~5$_7bGSRtF!j@1d{=IhMKN57de<>A;fv+I4=+*Kag-W~r8l78!EYfMtX=7sMx zX)cfSaPQ#j-rl!E82^mQ>ep;y7tb*jG&3F2JUlzXL%-pZ@MSIa@y-Q7qLO|$SvR&f++x1TzLc3;1ke2jRp^(tl0ICY+vWO|P$uVkq7HnJb&lXgw@|cK z1YdCnJSc)+y$2o{!Oy|w&u_6t&iWm+pa=I!^20vFSk6WjqRNifBl*~+IJuq{YKr45WD0~)0Ym@a@?u*-4T2T zmDTUyO*Z}zTb@|tURAq(OKQLaHkLFYZ3e<%CbihyumjtP7j4XP`>LM zcJ9~WuSd^B=Q+E}`m>`EeBfQ?$&N+xS$Em8-xStEmi#Sy@SBo$t$J4|gvuaNm#N-R?6_AN@w3LxUH?9?!iwmC;(%=3l?N z*Jb3>Nk0dz-Y#-5tF5E?_WKyTcQo(&9XKGG-y~b;+~Yf}v&+%k{Q<-q(Y)6KjO%g? z&msGtoJ0-I`u)Jimf1y1?e3tT=!GZEQtw#)>JN%}vdCC&rVi+J>m34rR$bTIZ1fPz z?NXfe{@0YBE_XC-O9`i#SQpdvI6mMZszYqXKSY<4$MIEUW8s%QWM0_T zo*N%ArvXpntyju&%QDhV`(E;_uXP*olk{VeQ6WuRG(Ud100Z(uS5ZPUa#KY z*dj-S6+@joo?ktN)vjOdi{IaAi+9bWyEV|k_P*|(9@5eTJ{Rpe>z4tK-6`JkM#G+e zt@1dWz{}y`qu(F&2wXPGQnN0r^3ZP>t}DqM|H!W8g{quq3B1k^D68K|v~x7JE|V92 zTIHeNT0H&Q0N&$X(($UCc8Poh$~x=!9FI$ndbYaHx>k9FCGsMwUB4OWR?pQ-F1Wq6 z%0s_98P(vWQnzXS=T$jsBEL>$_1l)GpPQTJY#5?edFb~sS2gxHaPfZhu&SJMiM-8Y z^i03O>Cmv-{Z%_AeN^S~GLera5B<_-;^=k%xLmwHpvuEFi7$MNH;aBbvh&H@V8_^2 z$<1kd_QFo{FE`&f77@lzUBzztMLMs44U5YqgZCnC8OC$2VUZ#KCAFd7uRPwkUdIh3 z!@{sWF#WV4>o+ic+oV4}w6T7mmgDJ;AE7am_^WDlu#S^?U;41n?`FOpG<*A}C)U-k zT5G=^iB^|3l3(?Q6=iadC+MHhdBqdFxoxv}E=1=)?ou`P{yzGd-?+c!m}_*|*HiQZ zKY{g2n@;y$x%Zi$aSAyGY(Lny6S8>!rx=5N&9imC`?qp;eg1I`+0)%y+rRaTpm}wE z+;Z*Kg#%SNWm$X$$~x2CQ5+7L7w=efX3}@(XHL?Vx#cPJY&JQI&^& zAN6#L>s!h;RpeIXbkF8ZeneUQ2I~#K{yu}B1Wl;&(C@fL?0GO}RNaF!t8&(7^F)+& z)-R#1|71zl>hTxi@sa84-od@ShlIUl4SCp`t$T|yq0^}cq00`!ql3Gr4;BJEQhvgW zRG9fA>c>TR*25@6)_1CZ)%gNunNCyaxns88SS@Rvo>zOP%c!cH7iQk6S{<~bX?12# z}>P6s*=LfITgQ& z>!80S!$Rjc-q|+sHy-v + + + + + + Vite + React + TS + + +
+ + + diff --git a/packages/webui/package.json b/packages/webui/package.json index d83a81b..5838bed 100644 --- a/packages/webui/package.json +++ b/packages/webui/package.json @@ -1,5 +1,27 @@ { "name": "@todo-tests/webui", "type": "module", - "private": true + "private": true, + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@todo-tests/common": "workspace:*", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "vite": "^5.3.1" + } } diff --git a/packages/webui/public/vite.svg b/packages/webui/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/packages/webui/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/webui/src/App.tsx b/packages/webui/src/App.tsx new file mode 100644 index 0000000..f8540ab --- /dev/null +++ b/packages/webui/src/App.tsx @@ -0,0 +1,23 @@ +import { useState } from "react" + + +export function App() { + const [count, setCount] = useState(0) + + return ( + <> +

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} diff --git a/packages/webui/src/main.tsx b/packages/webui/src/main.tsx new file mode 100644 index 0000000..58d7399 --- /dev/null +++ b/packages/webui/src/main.tsx @@ -0,0 +1,10 @@ +import React from "react" +import ReactDOM from "react-dom/client" +import { App } from "./App" + + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + , +) diff --git a/packages/webui/src/vite-env.d.ts b/packages/webui/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/packages/webui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/webui/tsconfig.app.json b/packages/webui/tsconfig.app.json new file mode 100644 index 0000000..d739292 --- /dev/null +++ b/packages/webui/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/packages/webui/tsconfig.json b/packages/webui/tsconfig.json new file mode 100644 index 0000000..ea9d0cd --- /dev/null +++ b/packages/webui/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/packages/webui/tsconfig.node.json b/packages/webui/tsconfig.node.json new file mode 100644 index 0000000..3afdd6e --- /dev/null +++ b/packages/webui/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true, + "noEmit": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/webui/vite.config.ts b/packages/webui/vite.config.ts new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/packages/webui/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +})