From cada4bfd960f9e60ac2c62638a7a7902f8f16ded Mon Sep 17 00:00:00 2001 From: rtritto Date: Sat, 28 Sep 2024 18:04:37 +0200 Subject: [PATCH] chore: improve build --- .cjs.swcrc | 24 ----------- .es.swcrc | 24 ----------- build.ts | 54 +++++++++++++++++++++++ bun.lockb | Bin 50450 -> 94502 bytes package.json | 17 +++----- tsconfig.cjs.json | 104 --------------------------------------------- tsconfig.dts.json | 106 ++++++++++++++++++++++++++++++++++++++++++++++ tsconfig.esm.json | 104 --------------------------------------------- tsconfig.json | 17 +++++--- 9 files changed, 177 insertions(+), 273 deletions(-) delete mode 100644 .cjs.swcrc delete mode 100644 .es.swcrc create mode 100644 build.ts delete mode 100644 tsconfig.cjs.json create mode 100644 tsconfig.dts.json delete mode 100644 tsconfig.esm.json diff --git a/.cjs.swcrc b/.cjs.swcrc deleted file mode 100644 index 549a7ad..0000000 --- a/.cjs.swcrc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "module": { - "type": "commonjs" - }, - "exclude": ["(.*).(spec|test).(j|t)s$"], - "jsc": { - "target": "es2020", - "parser": { - "syntax": "typescript" - }, - "minify": { - "mangle": true, - "compress": true - } - }, - "minify": false, - "sourceMaps": true, - "inlineSourcesContent": true, - "env": { - "targets": { - "node": 16 - } - } -} diff --git a/.es.swcrc b/.es.swcrc deleted file mode 100644 index 7b88b46..0000000 --- a/.es.swcrc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "module": { - "type": "nodenext" - }, - "exclude": ["(.*).(spec|test).(j|t)s$"], - "jsc": { - "target": "es2020", - "parser": { - "syntax": "typescript" - }, - "minify": { - "mangle": true, - "compress": true - } - }, - "minify": false, - "sourceMaps": true, - "inlineSourcesContent": true, - "env": { - "targets": { - "node": 16 - } - } -} diff --git a/build.ts b/build.ts new file mode 100644 index 0000000..5134d89 --- /dev/null +++ b/build.ts @@ -0,0 +1,54 @@ +import { $ } from 'bun' +import { build, type Options } from 'tsup' + +const tsupConfig: Options = { + entry: ['src/**/*.ts'], + splitting: false, + sourcemap: false, + clean: true, + bundle: true, + // outExtension() { + // return { + // js: '.js' + // } + // } +} satisfies Options + +await Promise.all([ + // ? tsup esm + build({ + outDir: 'dist', + format: 'esm', + target: 'node20', + cjsInterop: false, + ...tsupConfig + }), + // ? tsup cjs + build({ + outDir: 'dist/cjs', + format: 'cjs', + target: 'node20', + // dts: true, + ...tsupConfig + }) +]) + +await $`tsc --project tsconfig.dts.json` + +await Bun.build({ + entrypoints: ['./src/index.ts'], + outdir: './dist/bun', + minify: true, + target: 'bun', + sourcemap: 'external', + external: ['elysia'] +}) + +await Promise.all([ + $`cp dist/*.d.ts dist/cjs`, + $`cp dist/ws/*.d.ts dist/cjs/ws/`, +]) + +await $`cp dist/index*.d.ts dist/bun` + +process.exit() diff --git a/bun.lockb b/bun.lockb index db2cbd5a0800bcca53631541090588e36926a451..7e7f3a7ffd958cf044fb28be6172ba503f4ff157 100755 GIT binary patch literal 94502 zcmeFa2{@Ho`#-+1Nt7u=$V?eBga-2%nUX0}$UM(egp`>ODJ7W-8A1^yN{S3AWT?m( zk|~5l{MTYX=Y78C|Gwww^u2!9?{{7AeVu3Dd#z`EKKH%uH9l)UP8@84-ku(U7WOWJ z)-FD*7Tzu-;No|3wRE(xce3WUarJOE_u}^vBEiRCF#37~?EOFH_RL;eVZ+d!kEymG zvOUJERJmO_mi_&RFTqteJWvXQ`LXed!4UsR2jkL-OSmr^iVTAZjsxGIHU^pkXi7jt z540*sQvxjuGzrjNp5AWYE5-)6vmK;Q0S)ts2sYC;R`wq7zNfdPhq7G_+#^g2f25BG9ni7^pV$1wonyq_uJF zgx$4iS089lB-qPC^bm}%o41RfrK^>-D#(ZadAK?`!It&|L1zMK6QK71EsIO<0~*@d z4m2~+BftnJ&~-qw0-Xyq%nt>c1857N*@0F7ngwW1oF)PqmKy_|1m-sb4egWw4eMj$ zY3*a};^lb@q@iEppdK*3`+x?n273bMV7oEl>gV7Js^NmcfL>r}4(fFYki&8zKtsGQ z&=Bv4(?~xu2Wi+I20%kTR~Kt9duMBmv%RyuCBKb}wWo!*y^|GY08|3Ty9sDe_24p` zPQ&R)oc6$J6QDsAgH?bARR}(a(`-1s6Q`HiHt&z%bQ?}r<8(gIupY@c9g5TLIBf93a9Wsea~y_% zH0;0jp8Oj_5^w)zygaPUt-z3XL&m?kiyxS;EbS~j%q_ui$8hm)mU9Fe_Ty@xVSFvk zEjR3w<8S7B3T(EImnXjq=!URQY}oSyZ3%^2Xfr;{K*M&jvbV8;`4k`xdCfgwtuPoO z+H)z@U+GQ`LKSABAfB}0yHd-jDvi!&A5q)Z^qT$*2UEWOn`%+9E>w;EORGM47uocoddkE z-Zti*UhbfrhqbpST(6EC-Sp=L(9jPGrOkSjfix^{4sf6k2P**$=P{)HRh2jAH%X8W z`^|nF|1O|mzgZC8#92G}dD@#}FcB)7?HdF%thWo$kY68YI1k-X-Mr5Oe1rFkxEx2` zVx;|@n>1-PhJ)8f-tjp0OJ3bYp%7X4>UkD5%T4?NQL3`Bbgtn2d|}oWmz$cR3%Bq6 z&YMzn>9)VqSrM{)E~;u$L)vihCcQC&sM2C5|fJuDQj zEcyLx^kb(P438hp-_ftknyvQC*(=Gfx+pmFbhrw;t)b z&D$5_t-_-!ZZr7q`h!pf9%+lH!(@aeuZ!6wuIt`=cEYLW7kqaAI)|Vi)t=Ee^7qs{BA=Jq(ye@Zm?(48 z7=$)ncZV z_m1Ps?*8%PfOgX%>xOM7l9fI?*Ai1o^F72%dKHN+v@@d=Ka-UgBzZ@a$a%D{@9E6~;cBtC5RB*`LsR|j zvKO5Xy5o=a$^_nA4tsXUwkFzyQAV&bfXL*A)WvKUMe>qduh`aTtBd6)?R(Rv)50Gs z-1$kC;~Q!-Dxm3okmTmzhtO@qBJ3>5^i1s9G06D;?!6qUH<9?DhWZ^*inprF_%ypsYG;4+ZAl@6vr8kp&fTpFiZ6Y|LdL*;bV#bM zDs{M$UWx?&&^A93WZXQ`4L(~;ap$|<`$0Y`7Bzp(yKTNx-Sh`peN;<4s8wsuJX$zR zD6UcP1qHY|0+jFYM(#CU%^0tLs4`tI|t6{1Z-gC5Yg&v!frJ=a@*gxLo z+Mnl_#@GNdI{eNvF3V!yH5{}VPcj^9W0@^&jC&tLzI>|?AD?`>^JHybJ$1~7A-z|1 z*@EQ67Ay&+U;4@m$St+AGmvpmz-Ey3BW#^>Vh1Zd=>;y~FWU8u@2qniUKk23kz6c~ z7kKheKwg-;{TY?Sf|+_^Gt!P^qxNJB541d$19oLvm=5Ni)M`F%PEq!x?9Yy6V`ScA5 z+dqbt6rAB5U<{~v;nF3t@Oft`x3!~GQl$Ia-j_LaM;&OZB8A6_{1Wts+?TE;$-d}# zXt4XnbuNVf9vz$6X-~a7`rOj8 zW#7EVJbP1-ned#FqYqiSn|^3(k{K1k^8 zR`nTDeJgZ4)`Xn%sIJVF{ij-XXml7onBj@o#*?OT>wc~T%P~{`L{+sItE78X9~%3` z52)!fobNA`I_~Dj6jm#Vw7+zuR@SnaQvfZYA=7cDkVfmEabFL^!Q8>f9VrzcG9u?zAr_CBXyU>n>vM`=h7X`=~k+nrIHK@3*MtI`Q)J z-p6x+XD4l2BB>_W@!;mot-G5U53;+U;Ji!pl@mB`_bPut=2RN<;@bETlKkzKSB|-4c z0DlPJk^28?{B8l@et?I3+qPtRvk+o`4&cF~&qn)i)iz{6@RFe8LjPg>;00r_6+!SG z0FT&*_^k?pF9CRYU?0X0+WuAha{vz>RW|AmIgxhwJ3kQn>L6$b03JLuZD0Z2mIT4q z0K6{FJ_P=%|J0z-;rxfhe@n(eA;i81z{B_>@%vSL2@a3+y{)z(VxJC7T;S1iqyIwN zNdDjXfs|AE6aMdT$bAHV7T}do_L2L4rxE;XfR_jOt=1diMer2h;rIv+|4;hwF@To= zc!&k-=r8x5e1Hc>EPwRht=0qae+1`0Y=7tjk`KQAr6A>)z`%j?KcLx=UmZU-0FQ3J zUmZV{0I!IPA9MimYtx(m{E3uX!}$;62FK8^#!nA4nmn)%Ey4ENsv!200SLwqbi)ln z^8bzpDQ650i69;szki2A?j!gNfQRcpn8r5bSK~j5!z1nft9W*>;K~B~F!s==UyXk# zz@G&8t>QK+iL(X2e*kzme?7%4jbAaq!}fzX zc)>VsMG$)v0FU&)t=fkC2%ZZZvO@dF{IM0=XuLTN5BuLgv40cbWr2Oz{~#Xm3w-@c zLCQ@4yduEE!bsj<0&zEyvV!122(~|*|6m@H|92cnIcFRm)*t3=H3kU20N`Q!!FGq( zU&W6Ayeh8#u>T_C7<~OpLF}IazXR$3JhTga0O8z{Aoym0*F@O|XVqI01b+bhI0gNO zzWcBpXJrsm@GxeW8k#Y|J9=N$te^~lg>pueUaQ_4O{>l8u1b$qR$NB#&YZ&6c3&4Y) z#)4t}X~FfY{r4&W8UF@;7T^tk1Fs5xZ22Ag*#NKe8}`2gyvc9i^>%~b;(i1F1mMko z1J42`jNkD;0N`zZ!~QV9TmJ_B7y|}l_8a)z-^3Gv9}#~iewG0LJO0-K{O^n(#y#Ne zrQe932f(A}udU8u$o!KJ@Djj2GH)XLXfPH1r6BkbfR_dMttuJlsDZ>nD=`pKwS%Qm!1}C2{rNs%^-D;O78d6lH&_90-0d^XB;jj331Q zD*hJ0!}uY5(6_A!QhpZT<#G6}+J^iHUIe_HBn$A!`n^>S1n-H%Bk8U9j<#P4@NoZ% z^!u%@!HB(CfQRk>Px~J~>t_E$_bjpZ{i>SCZ1s5@AcfoA?TVhrgd-!2|-=;B9as*@7VJ&p5#E2Y8r<>lftMiXeCz z-hci62lIXvuLkgN{e(E8tr*6YLG0%PJnTPPwTqZQ@Y6UvO#hShTY+zL{{NM_Lmv?P zu>cSEPlP!8NIop{SAvvl26(uCf$a}vt8qZ^q@eNP{tKpI{kIwe1g{M6zteu_03JR+ zKtAaEuiAfvvJbJpTK`#qN1h)5{Fm{9{QvX(?N|Nx19;efVf#b*ReU|b!}x7=+;3X> zSO3EZU@(FJ562$l0LS@T5~TeF0UquDmcXD8f)56Gd0-#nU>*_&nEoq4@E*WASy!heZDr4{^|ktj`qv!R)$|vaI0c z4G|n3_Mxo`g4Y3fIDbRmp&)VGO#SCi1fTFH{IAYmZvb8fWgq+;yd^>GBZU$F;TYPA zAb2vc`OpXUAqKVq!UNNPB?#Uc;E&_*uZ*AdXfQSD7@ZNFKR{}8`bLHy+h zn-^GrXcy-Fs(pKaS4H7}wf?055BE>dZ)kg~bwK>IJ_3r6A>g0K5mze+c+h`~G0@hV2LKZxsve zAofcD9vV1{#N7uXS@KI{L%g+_y0~K_MHG8#{ZxCe;eRo{o&ZzYTt#v zA@)ab{=>X~g6ELhT)&a_+bRcQ-y7h83xCW%TWtpfe-Gf{_(A3lBp=r2uLLPK0`PGE z0G}OU9>ViiSa=V?3xURm`xm6%h~6sx48TMC5VzI3qwU`TcvyeLF5=f#?e_vadi~g{ z4~QLVuz81g#6HpwwrXD;;DHN&;QtPX+(+z313c3IVcu5H5fFS0z$*d!$oToy_9v3v zw2$!pDqa$Yhw=NBIRLR20Pt}9KI&S`K z-vQv^`1uvvkOT2Q3*f;c=CUns!C_-(b`NTm?}s{kH3KimOsZgmVGczWPG96!)LykHErA_!gs;9>uPn16!5 z3Gk-?9`bF~HnfGi8_1_8>mO=0=VDW(K2NFMmEfOGjYXFAvN7BFQ|80QRL&Xn? z9{i^@701u9E{_*+QUa)zS z1$bDWt=fk5{G{={T8;}Ryh!S5ddrB@LTQsX#0#R|2lsof;Vtt?&M}?E^q*| z6sB$IQF_A=$wxF|KMCN$6c`NWKIr?e_TO%R2ak}!kQd^&S_i~FB{=*-#}D#sMG(9p zz-!{-2jdUdk*x@Ve*o}s{|Wsj1K0DdfI%4qKM(N8^Dm4)e2(6#!10EhcR>x~2ipP4 zzthwppB3H&!U`_v13S2&Kn?L6;DRyW1s4>whHVReZrdm)fYV^@+mL^!VST{Z+7PIr zJ#gH$Ay7j;(DoaAAO;%(HS`1QNjC(oAs)nfL(m$Q2Xo*CPIlui1_L!LFON$@4gCRq zWy7u-&=98%E+|k#e?VW@5VVHnz#6+z9?Ufx0yQkJ3odvc%%K|sHOx2IO#Y>Y<&1IV zpoadM;L>Of`AxwE%bVlwLk;sSaA~xr0(oAz{Qny@9A|zw|NfnZ&k`4K_t6^GHw2ge zR~nWJ#g&74H@H%9>Hn8Ctk+FkJ@T?8}~w1(wNHgY#LCHVdfm;OJYp`W$jf_}UJ*FJDffC~y*!*M^mk-Mp3 z`FU_b{5M?wUujrw0bCHbge(8=G%WWWcmLmMi2s4R4>c^mf=mB94ezhw?n4dJKfwig z*1-h@YM2i{pvJ>#{EbXd7MCUf8sZ3XX(FIuTy_8r1#0+pCoYZF5J!&7|0@lPP~gfz z4d<&}xHQ!8D>e9le6+YU9n1s*HT=38r|EI|P{Zqp4fFTn^7rBL|DA^Z!~eetEW(E?ht_bO62;|14S5d%4cAX8T>ih)@Rl_0KB7U^ z##&AazW{+67WsGUIJ^(@slmkxE-0+vg7(?L1qEt|=K$A#*Yp3muEV(ecRdF|0P?@F zKltx@{?GOoupgq=ao8R({onQczw0@iykYEu~8rTCT%51 z@R^JLyW`P0PmyB_W8wSan|br2Q(Ht;UdEw#;a&<6tic@;BQjGR#x^S_+ONj_&Y3HC zUYYM}*ZQQ*gq%8r_MgPw{HX8q*jPsR{ra?ma>cgnoXpmxOo218qEbw{4eTghxCcZ8 zYr?jp>qzrAj)tMDUPo_84t#kM`#koP)=1pgY*E^`yN7nUG%7p_9`4@$oK&diqg%Dc zntXo&k%X4Zl$QP}(Sgl9=w^K3nuZ9rCHulHQNz!|FANC7?w*+M2ny2+=ur7K_epPu z(F-n}`n{hn|2#8&AVHY&$cal&s97dX{g9ZgtlV)}6|?Wj@)NjM#lvj!!aX-4Sj^)+ zl#_{XJ-Dwo$9n0XY6}b3jS^zfE1dRy>qIb}abbqiB=fcv#JLT&7?K`nt3XFU+=uiuU_gK zr#8!we&SWQ%;DQk&E4-RtZGrbBnTqbgjpLQtEf))_AFUNtEpf7Ee-q%;?S31`Q@&=-^GUb#lN$Xo0wpP) z6GchKKD{RAHp|)TF7`nrZb@NGYTse)>K=_9qQNMC(dUTRds&k#57Nv-hR9vi$cEaE z#t*Gzevpd(!Kjmz^zmm_?Y3rhFyWwM`KSEQ$o$jBZnwsN(KOBcM$_-MrI zrR(-D1?G9Ct}gr)0ul5T?Abq$Fz>KtGJc2Rg=cq&U<?Gr=q6z23?$1+wnAKGS{s;JhPg0kSOnR2j z_i!p)nUvsqVorJH0{Oce0n=Y|G}(t<7V~A)r3;!*Dlv+jn`B1u(jcTjV^1g@Q#;qw z9CBf9Zb`;g$AofM_GmMQr3J^0hN43u>sR=Tx1HP4&H40`_z%kS`~FqQ2x@Pd0i#1cg{#YfBPV^-I&)iyE=5j z;Oofntp`rd1Rp*2J)LpB^kcTLpF>M=i1x&%M2o8z0@Xk7YalRbf9MeB*nX!N#S70a z5y3`Lyy46y*HuuMYI`Hm^vP-bO)l%)`I@>1cH@4Q@*#q>G7jCIG|jUToJT)#eg5+7 zoy*#Zln)nL9J&)+ykFN(pm^yKQlPQe`-hL4=oov>Bv*6w^Hx|Eu`d_$Jo7KyO-q}o zda>N6`$8$f3inD8Ohf=!(O$N zlNsG^jA-6V0ggR~>@B)&3O_oKiBFg!F`tvFWS5ZW`tqr%#%z zkKD}>>R!E`nyuye>+d>drJ?R$%fjv{|T_@%a1Uu-#r|nTG1g6_;h2_N@9VGosf`CNyuBSlVIL zn=AYrr3d&k<0Oj}`U;ZWgj9%=IEu!}%!Uok5?|3hEHEhA&3!y^tRZ6C4HxS0!k`iH zoOe;}H4hcXQSoI)^O_Xxd~RB&*2*KR9aw2G#3jI8Xg4~Q`c=D%;rg>n54}ps`OFt8 zNp=>dnz!~^N#vi#c0WH~XG)ZBc$nXKWdXe}VL|h9wu)HSO_1~*(zTejloAQp@jQUE z(a<*ffGb`yoygt9W_>BK-XJ9QA z!|mrshxVz~dzZ_%rV4O&U3vO7VDAn5RzjoQa<@>t$oUzh$C|nkSCcb~jN^}IlfEnz zkl#;pKVUMZ+t+wcXRpyo_0tExnU;5{Gr834q0S!Qk$Z3S>dE!EEJ5RKnlz!*`|qOr z89awW1lt#yc4BJR0n^8!A7!sUnB=>dl6QP6j%~!1TEXgza%*<=_kGEOWwQ2xm~=+3 z3Z{!iN%qEA1{r)VHn#0yVPY~Ue>o9Sps`2n4dqi88y7PPzL|8!;@~?)jrx`7!dwPxQ#A^!V5gFlT4X z@0-=U3C}o@^Iwx zQlPPx=V+wZdh_KRNfK-odZtzU@+&8nGd-hk+g={eEGYIrO#epq%E?Mjx{hN5xvrGq zR%TDzqlqW;-#k(*eW0xS3FR*jnm2#wgsE=(35&)3=d`u_CG|;n4>d8Q?dJYms(s@% zwxi_KuI9rM>O4N2o{cP?Kd-6?>(D+8`f_CSXLh^w0XY&H6fg37Eu_cR6ka+?V!2O^ zIQMSo-MuCZ4X?Ny8FEu74{SxvvK*42IgdXU)=6$v=*x7 zoQU4*37=n)`0}CseZ!M8Hu0o{kII9dTE}xXF}VZ42K?SeHN!QO_oRT?nm<;;C|Oq7kgwUa}D138-)Ye=Ur>b z?#J_MFa|jLN0&~-(U8QqNpGL%o(-?~oZ82((?X7Y?DbK^l*(~?r?z?MXB02|of;8r zOG#iMyR4>BPaKzmtDOV4R?F$C)8(2wwe}eHhP#ow`yc8xHc7%y^UCUYbl`jN=diaU zv^UFp2xa$2np!1MQK5L@@7{=Dk5b}GH>^a@%(|wKm^TwL@!C_rpNwDg5z}qsc_Jc{ zvd@h0X#YW*>*71z#_CB263CL9ejX1PoM-K?SKgk<#e?ESem{rYSg*+^y`)z^-Yq#; zuFO76pM9A1qGOEC%6Y++8}12#Vm{Arz3d;D5k8qFcTPE7tvNI^TCCu_`&5^dIF`s1 zvtJg)D}*=;dG8Cf8pM^JXnHh$kBW9NqulA0m*w4CbZyJ~O1pKqotGraU9Ti4b6)Q1 zdas-wc;Jdw>FrYb#OJb@52TVI)f(GTya&*{(M4%`+TufA6dJU=?+O${Y<(UbZ>BQP z*+;r<@L~hg4Yqm%`jj_c*qZK&4f!)BI!=6#=bllSRED|Zwxco*>x!A^Q5 z4`LYy_;@_n$8}E$AD#Xw5#Ypj>G^&|pDsB{g=#yyA53%&%`+~t!Iuf~!arw3-$_cL z6d0E5n#g1>S6L$J&queUSJ#MVnXf7vO}&0(89Rv(xWWQqM^;7C?+BTMz7 zLwd6FNL6}A_wBE*^V*_EbBX&xzwN%=HGz3d(QxGsidXaxRuEr~H@nQQq%NGf#zcK& z-B+yWNdJXngMwV;R|g}*21AdQp7=Z}(I|Pt!7Fd4kI}q9=ZSTLYln9`j@>VaV3=nA zVu0d3h~^bEBe1(cr=oIbB{uJAV@&C_Mol{hS~kDAJ&dzyw)D4XvwuCZNGb^;N3gHp9{B~*cYAT2<|t~woK|@(I$=e{F1;H zSV}GMEt6NO5*>#l2r1B54&has^8~EaCwGa-yYD`3$Cqcx;dj2BWSK18NnewUEFv%H zR*pP>dPyDom1_PS-HaLii!~D8hjI&4v)|07pywSiH18Rcf)|`FN%F}|q84N&bK_rL znLETjzwpMJoLZKQt#Z;xzRpx}*7`$;WX6GeLIx^YHfG;m@(8pWl?c6e{c7)ziUWL~ z1rco3dvQB;VJAnUXZH73SHGs7etnUL)R1+twqSVoY1Sh<@adfr&3)h9V)SagV5M$W z#sB0iIl+xyqOx19!P#Fd%u&1&2r1B5@4fU9_Xde2&AfkgIlRNFx5J!%xMB$`*bf%NDh)25q; zo1EUPXALF)tSYk&-*v>j>+bCtjV5|4Sq?pusyR9@mv6eshi(%H^|p$0W-W(Px^&g* zw>FNgqIjjyygfV_Uqa=wNBe99bx-uLD!eg{U^=Mr;?uQ``qZ~ob3B)?mt{0Z^;e1y z=*p=YUEW1;`e29br{jI2cShezy~|)l@gnd2Kzgj9+GC}i3Pm9jnWXiG^I4d?57M6y zg?#$%ulGVOiY&Z0#?LN_HYA+ivx#H<^sC6UZ+vdLkE&{W#ZM=zHdEh1w;Oza2obC~ z`S}}+m(TYlnOv#(9vps-H=)71Gf7(M0m<@@J3|LudgzpSiw`cpmFqn9_4pIQo{^~e zo&A|_#qU48t9n9uO%>&@EJ6x2)?3`J=2-6)vZfGbZ7+IW<%8yw)O11un=^?3-hJjUS`|NgTSRYFSs#cEKCef;d$`VGM?kuz zj2?Tim2v1RdIFmyi6WPyf&*We))g)_9Bt(W`h?)49|8H(Yz07%g?%U zM~G^ZrpI`$UGSme(>u7sQleLFe^q5$bZ~Iq zI{xjv?JC$s6z@?q@8M%_q$!8#xle8D?>0%IeRNvYdV6h$$&c+*lVsU>l@df3CD*r; z9v5sMIDS8<@KTjfa#~4U!2xSE?ps=GZ^?*pyupA|3C;V%xOqM5QXN--@Ho$$ zY%DI7#ACEq+-157-41Iq#KlZG28k_+4+{_*2xIz+PPNpO?4iBUv1}bWCXkE!Z3zBT zuJCVQ{}3#B{RF4n=}$73Ug*<)IfOYhlTh4|&D+tJ=14cXEAdqqO<|GUe!LwT$4Cq> zXs&EiZP;h3w*ABH$NRpIXwmHx*qkRZ_%Oc5{$K_D*O}RtByuWecz@~b=Tx@qac;J+ zjikQ>>W1&&)&6F8Htbkd>tkx?W4!87uB5vrFHO?f%_y%s^U|SBDQ(1vGMQk!M}z6L$Fe!yd8y$?~`0B8I~R?Dlcoc{=CcM zN@d5&mY7qjh99hWnRQ8(#X%-f6uAn+Z_G0%~y)2nTo;{iR{qFQ3eBMg)>)on&Q|Byt&JN}ueZtG(7ci#k}YgC z=(u7-R8l@w7|au_`EC37bnkim$Qo0E$7`gb3Tu~Tuju3XR)r8&Ywhk)Q^Gjd7Zoed z-8`RVRGV#v;{^``@Naeg5Uk4aQ`LDHt?EUqX1Do=>D2DsaiCfgk1V~?s7DhxGP2#j z;k`#qqL=uW%Ps0&Pe&s{XJ2ev^WQEdPEXQSXld|#gBQCI2jqQANRG|-yv!OSUUoi= zo9$y*hQFgc!KiOWX zTqgd0e4o*ZNaL|7y@2hZ3E;+Yk9>)vg z3*P1aL$GSm78RE?KOfinBuMq;9re!-GZ!QbjGu%N4OafxTi^FqFiFb%+r3V@_MEFW zNrdENE-{Zo)e~3LrP)|IEB5R>fa8VpgU%nUAPzk@=^4n_vxUE@J2qeWiht>%_R>&H zS@_r_#r3#)%lTLBAr>=_y+1zBHOHsxTQwLywV*-LO_e)xJ=U1uWAXds4c;|!$g7Ly z9b+H}JeMw5@c~cl!v*X3?0e3&ENwFna)g@l_gGba;-9Hv+Rgls@H>;i^_$;^jn(6? z|LD^=)NS38kt%YPu3rKC_=r4j!uMzq!Qw^rba@F|#yg)K(ZVy>+p@$O8(Q6EBPOHR zbV4YG;!VaOH|dYk1qPwrisks(ckJ^x84o98f8dR$t|njfzUPVa7e3FPL`Z?g=0!?z z|9t2r?T}EcGF;(hZz$Z_e`D}l$9#LsBJ0>iW;X{lcG7sqsv0lp2is*Gc3lhdI`utY z{42-K#jJ}?2DT_(eKc>zijGJ$bK%n@Q>UP%fV)$FxKX)6TdHth!D$LKb-5E{uf@C;Np zmh-9GbPVf>@jbm!-eu??>3TEn)k2rwC8h_vJF{q{@;kneA7Ad3(yWIRD))~)x;JwsEVubI4BJ+benz#J* z)tISUeWD!s0^gor;yPSYm!?=kI?Q{6Qp8J^belu6b(pW&;==aB1CsZmL|+CQ(`g23 z5=s~r_I9$^xy4(ccrDPpp+@X`IY%b^#(t>r?>X&!mN1dmi!^ud!dPNN*ucT$b1qNb zR^PPX&NcFV^da6|`CQ#SZ{1R|p`h0s`Dc$l8X!aQTB3OqDveawqBLw}EfeGQhRJxm z3Zy@*lGZ$~jZkrJW*ReSOFO+rf1}FssGUy6=t!ENQ8jVMPYvFY1fI3wk(_Jj=L;(| zuXxVu%PCm70s2|%uEzH+-#jeebYAh27j&@1clRsGQ{p(T@^Y=I(CGV#zVAZZx>_Cn zmQ}5)3PEE|*LJ^h2=_qwYmMgB)A3yINNIa4c1(UM-FGFQN`A-Ju+b1~ax&S{x5Q|F z#YNgTCs&Pq(-!vx$?|fn7|0NdPWv)!drn4ed6`Fa!XVZmy0eyd~Uo%99z8i#N8EE%%grgKBadQ$t0LVw1; zZp^RfC$oQlr9iZ;W%J!??8bY84rty8L-9sIncMv>%sO0S6W>oQ4JA^!Ts=FUh>3Q*WEp zPL@?%WqFX`O?tm1B`t1%Nb2La>W>yy=*&ADsnpvvOC${7lp95Ls1~ zki>02qa$#wFWDDi zg#*`XH`37HE~|Y@Q=-K4-b2d6&5N&zyCk-dA}p@2SSqYJsi;hRl1GxFudo z__#-L>?|4AU)4*Wu5#a@eu}#z`y%%8;qs$(GKG!(Y@S-QR(Ie#`goYl=PWlguh*@B zAVLRUwGMVk7tXl&^^Qc9nbB<@W(fN6j|CR)^)p-@xNb0|uy@sRPNGR;k=o0)x4>4R z{z3|A&dWz)r#JUeoBL{aH1GPyo^ww3{C#(mdGH?yJNMMYzh&u%4(IT#^Zb;=9fX5f zCok^}{Mw?!`t!ucQvDHMej4AksPA=MKA+o5(~FjeHvGj9!*`85(7Z`^O}Qp-cV1c5 zR&k)|Un00m{V4s1mVUja#WX`~S8n|L)F+*z;nHt+6@5^ZPg*ZNaHP8CR=O#Fajfd` zP6mlDI9}L)J<+^rI)U4YwJTcPw1b1<)RW$RWGtE?ZEZc=U|i$-NYbl^hNXUJp?J>; zLMqB<*z@8(Z+wj@4n)z<|IkzUB=4uSd2X~hsUh!ALwf9E>8EAt<*bI)M?>ycJSQK2LOJ$R_@Tj=hcyccEW#s?O)Z>wd7Yi(8y~tq{lKltSDgFOaKqot z=S^?4zl8NMZH7M-FeP`V-p!bf>G~Ms6;Wf4WxO)1)a#+~mU-oTbG1Hl!L02~!ZqXT z8A>OlPR^~$1}^pNoM9x$Ai0Ue0dV@DdF>}&T;gz<%+pl5N*cfYrpK`7cu8I4@%OWC z4~c(-){D**p3R7GrD!?YDR#rcg7{QqHiO%H{sKDtCI{Df8q1IFPc|RwF*yO_nE-#pn!r4bL>&U+!7)X9&7pIQGt`!|%HH>6b>kvAkjV zmh?ht(~}a-$`fP)tZHfzuNlW_hYptDcwv0cBBVfLDNUbbeVe3oi^oq32(eX|sGZGN z|H_x5^<+oczS&vH(_U{s?4@2=GN15b-kbmAK40*+XAcERhy&HsN2NLx9))f2Zk`ha zpn11@e|o)r&D)K<)cbsmX7m&P{y}s68alJsrEAQWne}NxTa}r&6$~0!WtJAQw}xZy zyohXh8`gQIb+vKtNZ)(!4c_35_jCi%yyFH2m-Q`_@&~abd7R3Yc%0{!t+gI}AHP!& z``qM|z}~C3vFqA1xmmJ7C$9HBm3%7G`m{nISZs=^cI;xI-MOd@-p%(lg3!EF)w!Ot zD@vtwR+REoJeBG^7cXmEpPQ?FPdn6+iFbj-uI*c8vf_g@pS)TN_I|FX-z}pYZmJfM z3ALV)Y!A*qkK#Rt=KXBw`KYYf%DM4c1*O_CMuZ!&J@#gHfq#DC!+#U;No{ZRA zJUK?wFtN}rQ{Xwp;*Ob6zRB_Q!P%o9t#p!5yuoN*j+A@3!ZSZ=%{8>R`9n@=xZXHU zQ7heWw|%aKhuiRFeslS?>_gXc{6s$ZXBjUfNO_w)r_a67ob3``b$HgUuMx$29?d(Y zyYO-OR#tl+1FyVsyP_;t^ve%-@b`Qr0k5-EceO^77*LLXuNp-Ju zk>PEI97!ze&aQIwbJhhk@A#8fP9M*t3mNYcl5jN!GAbmK=p+&FfWS4Wf?T0;=I6 z4$JqGNn;EN();MW;zV|Epm@X3yqFhhH?Hl-_Od_c^se%g z;RcVhoxg{6wIn~k^)&HHioC)Qg$emt^V!3n78e;xN~N!R$JtO?oll+(Ez2#&Iu4F& zqn`sJ(7Y=5Z(!clNXpof%3Y``OvQJ%3{&L734^yt-Jq2e2b=H=3uI^)$6 zXMRYRE$sEEBxOMD&QsVsOewP~#7~J5%g)FeBrxlJwClvIwsMItCo7tG#W?c`2;y5_ zVm+BhO|6UKjYjiwzc8gy{kAP8hu3CIS8O0le=4~YE4xV|faz)`?47-5Q=aqZ?<2wT= zQkssbF=f1JIy0B-@o}I^hMWKSC9jM1l_|@#GNC(XSS6O-Jx_QBG`XXHm%fPRwRo0y z);nTFA#-e#AF0aH$Cy%l5b-vnj;oAY{`$AJHhl3{{c||zeMnA6}`VwBD zA~Q6!8sJ~SUM8xv_U`okn*$g3vgH?IYLC5_yochAL-P)w$O<|pe)h%O6<(7E;->sM zyw$9V`l3^1XJ05vfA9WcYg@DPsfOsl3$;}l)mX@?8PYY9f8 zcs*#I^7|N@UG1Hdevf{i;1ZgbVRFdWw_VkN$CH^vndcJ46=Q4VFG;+q1r@HPx8K#= zHjMgAvTidiLcL4+^+g69*D>|IrKZ)3Ib>s@0Vdz{hf)3}pn2ImE06F=HIefR74}Qr zG)SR~a=w&B)%eW2#;ebS%zdsp=YB5NQ~hPEJCI_uI#Ve#{ORHD9w;bG`OYRho z;!Q;J9_sYCr}OD0!&ho+>K8U_L6ZTOpYq5uHRc8DCzTnVZ%fJ(dGt)PqrsnNH0@iY zQhg}%mrr?FHe8~X9@%@#Qa7IqH^=d1G%x4HN&Goef;9`v92p5(yfWX|r=``gPcUS=AD8`0dt;U-M ziRfo1&(;fcM!D>DxDvq-{l2#QAVv(Yrb2G9{?KKKpsC%nPv^Vy^#$DBtz){vKK6&w zO6_=bVI0MK17>FG1v6nUI}^v%^QhPV0- zcb|tw3%seV&0AW>mel>YYVOW;V)?F2)1)TO;%}+F z#5-M@4yQlatNT@q|B%}y7L6;u-%l;(2vRA|F|kHePl)s#c#73|$8{_n#hZ-g9c#3C zaXWZmmxrKC#GX2lq(Pn#&7=Bb#p9Qm`{pddx4FOGCS+S@N1-r^DY?$rKAN{+C;FTu zr{|dYL8UJP?*`FD@AL@FRYP+s{sYB8HhjP`r^^2-cbrRl3 zq|_a`VSh>>aw2|KIl1xn$SL*f!O}q;Rx&?7^PqUIqj|?(RLhEow*~l2T_jiSH`}+n zI5z4`zYYGgudf2rA9qslYL}ayyFbB0QcEJo#lQX_xV2UGXoLm`78y^ zd-?PIJ!Uhr{@eF=3$HYMx+Qoslh<v)GjP;|@Yu!wigv3nN9u@ZN=XYE+pb`1>cr zDl*QpvQqYeqzBgSyJM20@q{GO=bo9X+gf3FXBQ_VJa{Ft%K_zYI-2)l&u+a_x^ru% zhu!&N?=D`+B4F~pb7&SEoh==4ETpIG3w2)b?3Od*6C#=+_6=ySu~-)*cht{&?b^K($V(QljVD{$?NL zo^+DlXF*wYd>|yIHdfno#(XMMs z%V+KImqNxaD0^8f#SV|<~=+^9bH4W!(LKS@6CXlh#rfr^YWE_0q^z`W~oQ>lHOR3ZpaOP zS}-~qH$OemyNl&vyFfq;W{S@KBvC46EvW zC-%EJRu3@sddZ(g{~cfsns*1+^yi4dyvF@ghg2=yXLAE8^RF3dodYfWP6Fnc?<9Ru{^p{2m&+C(24O$l3!P>e`#907 zwnC9~rS^8Tf0HYjL7J(4apj~0Z}Qv+d+9Hn6#O5m`ZJ4{Whu``Pz=4)SFfrHzQ=cZ<#y6C=a6?@3l$&Dr!}G@;#uz* z`C^@@RA8o3{iex&d%>9$oqX-OyoR1@!Bd^eyziLycaNfY^U=JWk(2NFUd^4FbrXGj#^3+e~Z?uv{GI%RNz(Pp?gWV$0h6#qo5j;O-v!$)gQQu8kK zZk|_f?jH)!ycr?$iH(;-;$IbUr<}HYl6CaCX4O>s>S3xIuIrzv*xoYn*4njC;|GQu zYqBJ{4GTDidibmey%wAR(_GWb3!%!oY$4idlO52 z7c_|vJbEZBcb+H2)hnXi%Vjc@_^rxWdcqqw$o{|fz5^_(q-hsWQ89pu5m7`@M29Sb zf?`6&98ghF2N+;<7>1ca1QTY~tYFSLySnDAm@#L?h*?z3BD(5*tIwI41Hz2E-~ZhE zf6rxhUr(r0)z#J2)#3DM271O>1;w{YXrMaLzMVksCZXIqd*km}2Ag;{aCdP&8nAED zh#y65>v@Ij2`X%KZqYTbl#kwb7NpF1+Vg|@nTzj*!aiN28aI^=7XxQYf*y zK<;Lt+{Aj*s=5r=81t?Apkp9?Iv7iu;l(Qi%Dh!^9ttb8tS z^35nbVo=BDeyw*d+u7r$LrnD1uoTN@#B6V$=SXS>{yZ++2Yul%^?>uHxdb*E)?INbtk~6&Bx+tY{9iP|p zbCsB0`?IA$-)%y_w;tfMm;}19uc^C>h0?rZ4;}tJbS0g#bOQ8+E*QxFea$_ zmDw}PckZL`A3yTLjiX&^8ZTLY`|~l=Qb!MFq;l^WxO%Z&D7XAQ8>0$8P9I5_yWa8L zqw3r1t@C%to>g_=$nj%-WT_QC>s6!9T-mmw_{#~dhsvx-SnIN8w7s+XZ{JZ~0V_Hc zaqn({zi|<^2rPSn8Us|kh)2(aaouUrYstV-p6v{pDw9+`!gXZ0h>v_Ey*X&)?$+Q!_ z-*z1)8{%wbve@fY2j}`X*WTJT(_zTX(&cJqCnjvz6ut4tvgVzFg95!OdRn*%aO|j6rQtmr+mI^Ue&FY#a{*b?h(pudN{=7 z_#27SESmO_;N3IT27kT*7927+5@|u9uAu_qREEp?e}KOp4NNs-lFfW zYK@MYT)ew7v)sP=Qi0sPLb=YSS#K+rl?|^}^AlTSZfoRxb?5AWV`WWaTw09Up;*>5u8Q!xj(tM8WiM}8nz{0r?e|`p z(G%xR=rFJA*~M(GBgJFy1s$Rz$8Bf|TdiVJHCjZpFHD^Wi zK5#P7M%eG$FO=K7bmtv`CTFsp?gW&bo#{B^X^ViL{f4%gQ@=>1{y`5St%u5ESCsdD z`LNc3$f=JH*ZI`2aTkxs$gG}^8r9$WpwYgzDZY$g74MhU` z9u&&$U$xlV7Rv&PRamojjMMAemk%`>IU(M7#J08_}L z7;$xX`!<rM#gH4Y2q4(!zV zOmgEX<3IN)TJ6jX>A_MHmlkarn%J(*wwb1(VX1{)Srsqe<8F1yCWp;e+`h^;**O;- zp6p#AZq$P#yG62nKLz?85z0;c?Em6v%_vLxy$3_ShsBmXQp|Zq`?Y5FtAj3mYrOta zn>!{^XB#gcedNIdpAT8_-9PLcJq<7Rx)1BNB&2l_n`_+!a#MtIMJqyflus@)?cmvJ z;pILkqSu#9?LIB(@xf44vuoaWWhw2KI4(+!_pNg8#*bSgn@!x+e!|#{VXarsetvW7 zU-P%_5ythSLb)Br%wKr!tyLkvtx1EUyWjLSd;4gy%c3FK>m}o^ZM8Q(-z2)z^Eq2* zP1tK4|K-KiZmkEW-?_88y`rc5c*mZq4S%!}=zB~kcT-^fgQw3GzdUkznT0PanIEk= zEWYCC6Q?G*o!+{;)9W80v)0bp(&W*O`L-|Gt8M)Xrxx3_)oDyMqk!I{Z#S+M5_n4> z_qb5*tAVobF@Meb>+vm{dfPx##Xl?{68&>UUf zFlSD)S6{Z_*K)>Z9`EjaU{T}t)fR;L2m94dTf%Y@HY zOH4>UQ>#!fafe$?9D5Ys{-W2e+g}HNb2A^{=eM-o*IH(u1p1y9$~Ers_HOgRL$7DN zoOD_0-p@X<&i&QA*fiUkbr&COk?h&O*2_uLt}e-%-Ko2?W&D==WjlF0 zXHOft!=$-DZmLjj^7TIwrtNGotBh~us*2_lIux2FjqQG7aA4W)&5fmauV z^OI+Va+AKDkd9~?++$ZC@5yE#FM18GW-~Oyb3^#rit=+VFU}`dK3k%e{i(p4e~w*P zX{Otq6aJ%%3`y--ufpz_3G-^0Ej}X9_goIScN4!K@ZK=lslv&M#r9>4IFhot(eXF- zbGDX9?D47PtNR{(M$TWqFtf|WJ|oI6Jo7HF^~f)_MW48uOloxILg}reYYF6@7s~Z~ zUAMZ_|HY;nVG8SknQeBtT&TIe`|S6PCm#<#-m=WD()Ndgwj`bI*mm{nO3q15M=jl4 zYO+jvz45ib>-8Cu{cbY1PJwIZF9_v6jUUsl^037tnzgy3Y#sNd=9)3{_S)54m6UBZ z{-x70|HZR`kLCF`X?xvVzcQ7jwdV0g~Y2U9` z3v}O7Z%U8T-o2CW_VXLy6@Ja~?;YRGxAyRt3~yuVk|B_LStwU*a--`!-@|iFPG4>O zc1-azrp==>9Flq$z0z%LtE&li7ru2H;5w&RdK=rLWz)8dIT!QC<+49-oa#1Xh1G#m zqg^NW5XikElD|91kRC~{l*3X-td0SW@_o`6t)h<769WsNKc_7=k_J% zh@U^LJFtg!`2$7XX75k9@T08pslTf3=|A^ikKheX<|FM>!@D20s(*2x|9g3T;rBz= zgmPESdpdW2rE@=52Cit@-0aP&7unY{d}m&tpE#w#;*=KOCuSudUF4CrT~)c>=2G!T zH<#a8uT;h#R@=6F8^2pWZGz7*fxg#;ayS1e`;sIc+1zA&;}-oZOX}?QygokkN!^}1 z7nP`9GU3U|6)7X$I0UbInDlbe>cT_5efH_NXG@7{qjtQut^2fO=NqF0a&HLbmP*Wy zNncg9;@MsO+Gg&GJhfur-)XB3&0NwgaqZyk?l-O-^FJ1TB>KC(vHO`==N-+Ct{7B);yB8X@UlGuIY0%|v!*>;HQZY4ofrebJ3V-mz8w ztRGnQw6wIa`&GPe_N{rt*0nxv^Uii#kqp~+*DH59KWgMYt8XdpH~UQ}*?)#W z?j51rEmHH7PeNR8B|Ja=IWxi2vP{eRo#%y*-Q91^crV4DFVA%Q>XCJ@)1}kPXE$we zrJmiUx!WgSIy66~<*@_%8hHCn5bAqZD0k_)+hhCAs1e_N&#S)^%hf*Rw|mj`zP=zC8ncm4E) z1C@vWb$e>Htcib(IJqdL%fTP&>&vSsHeO7A^TVlR->laTw@uz3O1OXUzWd*9&(h{k zHBAXB?O@Y4boiH-Z-st#UnsX+-Qt}-HgIsiu1u3AB-jkExqbU8xui{cLh7eX|D?Sk zcF&8xxzoJttS61v&2n3&INsj)N=e63jYb^`FW<0ic6;GC;DJ!?wAgEoC9bSkv~S?B zxu=rGcNpEr>gBUVrcUMB?wK#Gdd>CV5{tU4eJ44O{wQ5+Ee~k!F>2=c$_JBNJSFW{ znvSs%jtkR;ax?!*J|oI%(RX21YUiuYwH@zNywR!EYuD<%19phhyn6=)PwKw7TAjrc znw=b$HR;xeiuE>r+;(!I!-f7E>rJYieOK5&dnlB9d}m7aInBi#yS?32c)ZoJSIS{; zV>0{1Z>%}k{p{0Lbw9VXPVJEx)3i?2$1kIrZ9cK!M~JO;iQue4=HJeHwanTjjK7bB za%Wc@dAR?ir29p~#-{8H7!)zI|AbjLC%V=g7;q3|X4Dh~)eWihj){oC-uRz+7YbBVmuwe+Xe zX|l@mt%{slT6W%-(D#>22Q+wZHsib;oD#rtF_8vl!!Bdd1HPM?F3@ zyJGE^eebyA1xxi_J7q&oK`D6(;_OUThZVm zeTNNt{o&q?(a%43et2}q)Mi%FeLr5gM(pVJ;`8egh2LKg==)44_u!`8rkma`m~pIm z

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 delta 13415 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 diff --git a/package.json b/package.json index 8e976be..dc4c045 100644 --- a/package.json +++ b/package.json @@ -10,24 +10,23 @@ "type": "git", "url": "https://github.com/elysiajs/node-adapter" }, - "main": "./dist/index.js", + "main": "./dist/cjs/index.js", "devDependencies": { "@types/node": "^20.4.1", "bun-types": "^0.6.13", "elysia": "^0.6.0-alpha.1", "eslint": "^8.44.0", - "rimraf": "4.4.1", "ts-node": "^10.9.1", + "tsup": "^8.3.0", "typescript": "^5.1.6" }, "peerDependencies": { "elysia": ">= 0.6.0-alpha.1" }, "exports": { - "require": "./dist/cjs/index.js", - "import": "./dist/index.js", - "node": "./dist/index.js", - "default": "./dist/index.js" + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/cjs/index.js" }, "bugs": "https://github.com/elysiajs/node-adapter/issues", "description": "Node adapter plugin for Elysia", @@ -42,12 +41,10 @@ "scripts": { "dev": "ts-node example/index.ts", "test": "bun wiptest", - "build": "rimraf dist && npm run build:cjs && npm run build:esm", - "build:cjs": "tsc --project tsconfig.cjs.json", - "build:esm": "tsc --project tsconfig.esm.json", + "build": "rm -rf dist && bun build.ts", "release": "npm run build && npm run test && npm publish --access public" }, - "types": "./src/index.ts", + "types": "./dist/index.d.ts", "dependencies": { "@sinclair/typebox": "^0.29.4", "fast-querystring": "^1.1.2", diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json deleted file mode 100644 index 361240e..0000000 --- a/tsconfig.cjs.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["ESNext", "DOM", "ScriptHost"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "CommonJS", /* Specify what module code is generated. */ - // "rootDir": "./src", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist/cjs", /* Specify an output folder for all emitted files. */ - "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - }, - "include": ["src/**/*"] -} diff --git a/tsconfig.dts.json b/tsconfig.dts.json new file mode 100644 index 0000000..8a5dc52 --- /dev/null +++ b/tsconfig.dts.json @@ -0,0 +1,106 @@ +{ + "compilerOptions": { + "preserveSymlinks": true, + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["ESNext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "ES2022", /* Specify what module code is generated. */ + "rootDir": "./src", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + }, + "exclude": ["node_modules", "test", "example", "dist", "build.ts"] + // "include": ["src/**/*"] + } \ No newline at end of file diff --git a/tsconfig.esm.json b/tsconfig.esm.json deleted file mode 100644 index 887c6e7..0000000 --- a/tsconfig.esm.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["ESNext", "DOM", "ScriptHost"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "ES2022", /* Specify what module code is generated. */ - // "rootDir": "./src", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - }, - "include": ["src/**/*"] -} diff --git a/tsconfig.json b/tsconfig.json index 8cc3a24..99745d9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "resolveJsonModule": true, + "preserveSymlinks": true, /* Visit https://aka.ms/tsconfig to read more about this file */ /* Projects */ @@ -11,8 +13,8 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["ESNext", "DOM", "ScriptHost"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["ESNext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ @@ -25,14 +27,14 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "CommonJS", /* Specify what module code is generated. */ + "module": "ESNext", /* Specify what module code is generated. */ // "rootDir": "./src", /* Specify the root folder within your source files. */ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./src", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": ["bun-types", "@types/node"], /* Specify type package names to be included without being referenced in a source file. */ + // "types": ["bun-types"], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ // "resolveJsonModule": true, /* Enable importing .json files. */ @@ -44,7 +46,7 @@ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ /* Emit */ - // "declaration": false, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ @@ -55,7 +57,7 @@ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // r"sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ @@ -70,7 +72,7 @@ /* Interop Constraints */ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ @@ -100,5 +102,6 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true, /* Skip type checking all .d.ts files. */ }, + "exclude": ["node_modules"] // "include": ["src/**/*"] }