From 2976236c007b1f5d324b111ff4fce932c0b3b212 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Fri, 25 Sep 2026 17:49:18 -0700 Subject: [PATCH] Feat: Add logo, favicon and bad.webp; move images to /assets - New logo (svg + jpg) and multi-size favicon.ico - /favicon.ico still served at root so direct image views get the icon - Generated missing bad.webp placeholder - Moved limit.webp into /assets and routed error images via helper Co-Authored-By: Claude Opus 5.5 --- assets/bad.webp | Bin 0 -> 9606 bytes assets/favicon.ico | Bin 0 -> 5357 bytes limit.webp => assets/limit.webp | Bin assets/logo.jpg | Bin 0 -> 23810 bytes assets/logo.svg | 12 ++++++++++++ functions/[[path]].js | 14 +++++++------- index.html | 1 + 7 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 assets/bad.webp create mode 100644 assets/favicon.ico rename limit.webp => assets/limit.webp (100%) create mode 100644 assets/logo.jpg create mode 100644 assets/logo.svg diff --git a/assets/bad.webp b/assets/bad.webp new file mode 100644 index 0000000000000000000000000000000000000000..b7de317fb77a605aa1ddfcd84409d1adfe980f39 GIT binary patch literal 9606 zcma)h^HU{`_kQNhwr$sD+tzm5Y;LyOTsPacv30A>wry>8ZQs{>=KBYH&diy4emQe6 z&zU*Uke87Opn-tUm6lM`QR7!~`46*&N}536ARq81W2fGuy=UyW*l&P-_7l=@Tpj{b~RbI^{5)_6JJppz6l%$NGGT^ULEp_b#z3UbaJw-~ik zA0E6_IFpuyg~G4DF;G{NmW8mVYC3{)L2K$%ve*z%THEao8*L6;|LMlhv@(@lgYFPR zH^Pm!YUW2t=rOu)o6@k3oC~|j3d(tDr4j7q)X%gzwl_g|77W%5v82xOg|^PP+r&!(eQwjOc3@O4 zuFyzZY|HieT$0ep|K)G%J}`NsnX#w4#1c*rk;&0RbWET>(^l(nk83ox^DPofb&8Lk z|9n6#DsTpWI^%yPXqo-6csVu{imkex#<>jNT^Rh9X|I;rS{?p|l&)1>GQ_8OX4Njk zTBULwIh;rg|F6DEN4@V33>~|2Om4Yob${?1xE{$uHe}+dA4}J)pOwnb*L}gq{IG*Z zqUm2o|J+_@{?9;kJxE(G#QVRv66xpLfA!IfMgL%tDYP>d-X68eMQ!5ZXOlc*|4Wn%JdudT zD{?1f`{9)X-{wQ7Fmmg7JRks6UY9--`UYglftb%vnD+w;0PKCGCVx5&|GEqQeHH3STx8|SWtm_k# zV|=sulkU&{;mP&Fj&q8&x+UjW;HB=~F-J;l1vlpKJjP!9sgP>#u1eN_1VFzK1E1=5 zVn0A^dJ`{g7n2&6(z4m(yDUW!fzqdhDuqV=BUwIO@$O5FjU&Zff8I!N*A?>}F;JCi zyW*aCBw(oOHC1DKW&T@A6Nii*=Dyk?nS6UAf7D#{wu%a%QyD*DrBLtI#a#r#K?8B< zSEAU&D7{+vyBuEH81H&ZU4r#<(ebtIVJ9?d@mzV%)TE_)UNn>$J@LbNwa?N;>Rmuk zBcjJ_H=HJjb5$i8^0hql0hr|xsb9li1Ibiq6Z9LdJ=W2*4N)N)LKfZoTPz5(y~)I^ z+;O(-J1~H_@ywfb+?fa$wo39FdtfH&Oj7|r4`|6(KiH+^QtQ=dbYyU|Q^%ZvxV}?P zGs5t=8ln~T41Bo7tW?6@WQ#Q`n3xwRaoEg$Sz7KUg!-I=bS+8XR9r|-Hc$>tHPz_M zamUO;_A%s{RI`KB{if>_t30>D#1H^#(qkkL|n>fql33o z!(QmFI4v&OFHRvTzGxMD3n}6J$Ie7POagoAgd9_vkn3U4GApy!wt6O}LwS{7K2@hm zu79WLT}<;X^;3_LC82nU7l~&EP$#Vxbka*l zU7pm1<6goouLCYQ#N>quxC$NjKODuOG_$uRN2E^O!_$v4yzbTm>;NtK@0e@zp5`o@ zvY{xY;1@GS!%x$$Od>)Z^HbhzRu!|vmnmnDR~cLhd|(xc4r1p|9r$8Q??}adZIKiy z%XVMTx6&6VK9JV}RDgb+&@_M!?$cF>F^gVTT(9hwgduiqI;fhYg33s4OWUHULrsY7 zU!?S&aD5H$$y-?>fZ7I=qp61GsBe3nc4}SPj1e5me&JgBSgszgDC?VrEdW|Yg}E={}tEoR@nTr#vdS4QC2#~*bi)E}i3@?4u8 zf$sY9zDLVYKg3~uD5UzDTBIHV$wlmk?rIJ3rvu`m*&`PN2!S}ILYx9xsf;B&*M;m9a( zEbJkgTH=p1kv^{7Gjj-}ez}pO)xaf8U#MN)kajb#nl-vqC>#9QgwHA&v1k;{g48j2 zl8HwB0EKC#*BMYT1GgliUBen%NGbJ{<9gf79!kS<>X84Tv+5h~%2L1C4^vEjXKaSo zNT^ITJSuh;EYmr`L&Ev%eEh?;8qfMF65AsR?|Y8bFzLWw)>?FoEDKdlaDdPoeNATO zI>BYu(4<_!38!_O1odrgs9RLUf+n}6qZC4Q$?WL|j0`Ovq>l`qR%x}sW+cgb5A5=Q z$g!1fN0+W{$Oa?1CEA@@I32-eMqNVk9A?ExCrpBKrFNtIRNNqu z9scSootW&XUZXF5`=zPtvzGlG22t};KMlS`^`jmB-*8m@)6lB@&_*8&(*r!+jloMT zsFWG9J)Oi1>D^+|$@t+YdVY4!&5n`}6e;8{`qOo9sw<0n%GErd-n%Gof>i+|c7VpR zeMKs_!SCQG>r7?`V@rKm*0cn*1H3V7cEVC& zT&grLVCpNV7ko^`Sm@q(7tRnIRnT)Z<+pePB3}22xl5r6{##Z>G`N@+0zT)Z`uQbF zmm%Hs{<1~|rGkla2w!=FPDFUvj3(s37@fG_6|+%zFJ#W@k?&2Klxj!}ynn3WU43wo z!Mk77?=13|>Kca^YP*0;!XacwPQy!>8IrGw98)Nlnf7bn!-6tOz8P)C*;Z2Lb_98| zSAb+4=Vmg_!p-xA^#Nntm`~%|js%_^Wg}fu+`bKXg+t=uLfucDPf$aHf{=kC_R*KW znQtKg@^>#Xk_)6;x)mITw&UpKBD0ERzz|(+6gARXOB0&kki^60SnJ7e=D1cfjvS=g zBlCY(=&GFT3}K%^uoRqvpj)gbJeRkfKTP<_7_+X&eH5uG^l)ql*oHT#Pj{UpE$%FX zx@%ch3__KX2jN?fl4)1=$=9&UZdu)bT2VR@w(M8Gp7rjuKTLqtYa%{WgZHvPos&pk zV_$gkCCyG?K{;pG!v*=(@8*=K{^B5hSxeBLZMGy&OtDOskh619y36|g=J4u$N%y(m z6hMrGsfjHm!7joZ_;NGeNTL_I zA67GySFnoEgOH|%p%T0Ky2r)vu19gHc1)%+0BBC$}nGP_3mPeHO}w z6?9_v_J7Q=xo_c5Y~~Nbqbl!TX<)7{HN>T-xeVar*n(Wuw!HCC6mL_|%Fxz9V3&&k zE)_X&jkqVWg<L^%i~0UEfhVl=<;TbZ{$!9?ZaYrThWaIyKH6|iHV49wOF+ekCK*tu4BY@X$&c=o24~3m(Ji}k+WdpK zmG|v!D2JNS_fQfg@x)K|m0Tq$-+Sn+f zEmXSK*6RYM|3DpaAHrNk?IHAaQhW=n1DxzQRQD8_)nSe~$EKp5fMlyT>|hX4(%-qI z)CSh^P=ohNc)%_T9r@ZvKd&1y`UZNdVL7@X7>W_rdggkq;t5K+nIg_7$}$AU_0#iLlA?=T8k@OwV#2hoqW7x)#6bx}>7_x{L7w(-Fe`M(^cQM?;hN^839wNM2x4VG%)|3i{vce8&NPm#W**| z8#1erE)ER-nEtk&5(2Mkmjt$@NQn6zk*V=#aJJn-v6PnL!0R};d`BW$4Oq@j6mKj< z(m@k;9*&5eO!y<-5`_{+vttU5;ziuWZ5S6s%ihfn!uLfG!5S6W!qYkSrysN|c4pb^ zC*)Q5ljyWVBO9Dngb)%X0t3tSQ|$9P#4Ci#Q`>%2g`B)$F4HzFQIju}{;bEu_*~az zKkAe~<0@?Pzk;8}n!=C%wHcnO;KF~lS-++2Fe-CIi?MxAHc2i9TQkv>>`>k;Y8VvW z@X5j;)iFWQ6f|STe3>5q*XYHu#JIFm{04L~pyfr9Kh)Q9<{nVfm3_N+Y?*iK2}Dm~?qoJfbhJ@3VdIMXY_BEj#p1E;Isk&PW>nX7`-3&4C-cTa%5Xo18w;-v z#oUsu@lzLhczoX3nLrXxjd*knV`cV_{AfTE~$-ln(?&-)Dyjng=q^&ls7@J2A|16ze3+lu$9f7u5UZVOdtt2QN2N9eUA z{OX16cdNrAJWV&wR$I21mJ9Y9`ySiZFhWR%BWk#`$p2ojn+=grD~@Pp8Be(0zm|y0 zJa=oeyrp>5K(HXF;D&*O3TJGLxPc@jGL1%`JIT)%D)OcjUWN&$?neayy)8@GP2(uh zi|uvb@@{<_)s(CV{o!)EOOu8J{H%_Z#9xCv=Ej4)^G*h25w+4~^mp=+7mKna(Y3Sb zWxb$@6N|stKK8>m2)Lg4(@Zs)SfHIzY9L$Ls6vG&oF1q?G9FD;VL-;qs}rq`;oQCV z%nVuv*QVk4{2lkY^nSGOUiVw4)bF?#ew8?f({fzlVvI;Krn(fHI?F?qDsjqD+E6i@ zM5JFkUv(^Q`>8*TKFJmT-=Ks(2m#A4v2@>=02R(I;RS#3k5$*{vr-U(q%6Y393Ka6 z*brsi@LTq9G{S;=L(92My|(y09w4hkVlL>H4fu62^vN~6ft$k#Ha=;irjtor`K+c1 zP8snlp_m{f<+s?u9J$C_*KpF>AO!72_-U=^6Mh6$TviaR?brz{77dHi=lm|vLEIk; zMXW99{nrrb3S4h3&PYYS?6?8UYb_DWFPH9^+dp1WOUw}>o~zX8R71Cs*4+0H1WGnT z3>69f9S6ZUnrjBE(Dw!w?^~3fPW~?*#r+TNy|T1HkHy@d5O(sSO_9(M#vTRl3h#V3t!u`6DvsU6}?}+WlzZeU$aQjP!*!waY*sc9yP&7JIJTlsO~ht%06EDQ{R z=A6o)4g%lLW);>wq*zDi;WH9gSz)>yN(2*QqVjAe99r9NTYj>I`+juU&f(2gJ#NZQ z^vd8A*RnNGJ)`~Rq0)Um64_&pb?+d>F@1R^j+&7Ag3U4K5Y7pFe9;(WtmhTR;cUfV zsYF>$DnihpLQXak1sOruUrck76w>Z-#^A<>JUS%jh72;mVU5_h(Wc4Ke_o)mPJGo2 z-`=|>$d?v_JL1Da52TM1#S0a8)%Js>7y{vogDFzn`eRD%(z5&Gb0cn3kc5tA!Rpi0 zV`b6Q1ZQGaO)UZ}7#J=Y?o`$M%3Tpy=&iT{E$Ab46V^t5Tp9e}?<8NANrZH)0xqAC z3Gk5L7gF)_!3-t%@=f+R-e9qrXejs=Qa&zteEf;h1|g&d?O`Ge-pa*%cp;^pOjbRR zScrUh*(4^sQ1E{@mlu;4@lhS z1hf799-sVgToRLWSmkHHJ{ohKW#M&LZ>}P*6q2ZRltjpUOcXh8hizChRbpN<<>DyR zy(dI=^Kk-oZ9lT`kscy-#~S*g1X5-~LQbzmQ%ybn=dA*!Il^FnY@OvTIx)CHW%4oB zrI<+$h&CY*eI)J3z7DW9)*{0wavB@EoCi90gk}bhyaTqU$V#nF-1mpZI=vZrx0E%< znoOlq0js%^{c`P0sFTJEa^HR1=wipuI{1$76g^?A7<1V2MBRW(0TdZcrn5E#n+*Pa zYOQ3lqbT~bYa1(a)=ix%3o%!Sz#J6}6|p7m><$Q?7eP50A3d79)Z~^e>qv$HDtykt z&K8JMiclB7qH63goAN!Zj-7!f#t3l2uVn`BH00{mE>_a~pRxS>G+o4^@R2|FQt-7W z7ozS!>3WYRsU2oGLQ!oGv$r%STb5il?!168QQ|7N7kAz)bO(HT@G zz?BJ6)nv_c4BwWk8Tfy8LB55Ca_M+M+WpL0;V1VXnTm!~Kkg4f)az&q;eTij) zk?6s04gSH5VW~Jl$Jw{0K=y8NjN^bwQsY%%1DWJSWuma}NsJ)G zDr4*S^dgd0_;YRDY2!3;G>wAdv7DKy#(BUhlW4z~9|6{?lZXl@FFeHLLlsH|c)Rm$ zx4zqXL~DCq!epQ6@v^KB7xw(~KW!9#2==th(2^a&eEvIHS?sru^u(1Zs)X+bEZ$HC z#Z&KuuH@007C4DVwA}-QuxC}0iJR~vcSugrEO>#uKPtq)j-Ga5ww>~33XriSbXY({ zE42Fo_;VPTp165|+}bGff*L3-QM+343Lw303(@C2DC zvnM8@hlx}Cqqj%d{VHq=$-~8zwv_v{`Ew9iYi~n^C_JUbSb)7M`&RnBENJ8q*U?)) zLRNAE(Jvd zi^yVpet1z)2uv0Y)~AV@SaSmLox7EWpr+OK7P#vYR_%~|7QnE<=@MTkE3~f)m+`t_ z50;YP)b6k}IETNWs7<5Q`)x??4#Xt0?wK9u#|1$_DC!qxM-N4k3k!^rc|9lYBe?YN z%oLj`FmWN7mPZN3#5>b28!8qhAMY2_KN5@p9`rKCk zwQ$vG8i8KsI6R5s?0?O*REBwKgQRJpEu!my{mxN=&-!1qAsD*h%{-3?jPGJxRg-qA zc36TkN03CJtjc~V>lDU_aR>k2_}!y=BSK*h_N_iQAV5j|xc6c+03_naE z!N3y|T6btGadtF(`fB`HDPS-Li*u9jPi}!|I8@(qer8ZL8}2-IT#$0AL*^8;n%nh| z^>z=@e!1IZ8682S)0F`&J4MDk_`B|5$#w`Psl~)Oz`9o0d{lA6c^3!Jp!iQd%5wE5 ztzxrxW<^%Tl_~eNSQUF+{B7~6QgVwDKcxD9E3qBN9_EAnt4D{oiT@)?@hAH+RIDP8 zLDQvqPK7`yRU(9Q+uA4}G@M`41bGrYIw!`d+FPZ8aUkj>%1wAzKB0DzcPN#QctY5L zQpg;H(R2?O(sjy4$|eU$`i~MkH3=PC$zAUjvO>2SoM~^yIfIJbq$ofg`nvTwPPoMtY^YHu2YK6-r*5HTSpy+xW&(;(uLs8 zXkHip$%$YgC7a}y{%}taJH|7215sD3TUW1b5fTRgIaNIF;XK_?D)^*{L*~KnpOfQ3 z+(X5yK<~Tbzvc%w^wrTl*etT{16|t?BECuG$m^(JbwWmPcLbko?W&G>C1Gka3Z=CXt3j^i)RxyJAWmG<%h6lBi|?&@)a3_W#< zzK}XS91N9J-I=lUh+CY9AAVem_WCbhI8h@}v94Ih=bKChi`hK#shY~m@#|tG@z-U` zM$JRfORS^J53DJ!3RK+;)>bp)@pEa$S(})Tk)H}*#LvH!g4LgCfI4HkALqpg%)Lx! z)NqjpFEBXvenlUmy#EnQM7f7rI%M82Wx(Sv+bmPP*sPO+N*@?|1E&-rB4>4)GZ;}U z{Wu$2mdN$lwDv{|X7k}-fwH-aTijQOoTQjDSSBbIm9vvU4GP{@(8_u{E-0II6b&&N zW-&R!c3@@U-(n6usB5*+0hKdg#)=wD?RlDv|0yVXcmSpgQzYo6O8!}|)JmX5t44N* z0>$Cuh(P)wh<6fj679ToEDO)SO3{~qiUD8Fqas!caFg1H3?1NOt*O%TX`&9AZvqWJ zY@&On{k{3;1x;KQu5_UX4I5U$Bp{>Dah4X{WOwCAGsQ+NZY0hoq^g7`U~Zd3`M8C z2Sc%AJqKzTO@Z9*!{s7!7iwtmS47TP#7``c13oR&S8vD2S8FeWewJ8gQx%-Zh+~!} zDm$S}887iP8^c>eQ*0)h+@9#eJ=iYG-b{$3ze8sil}_6KhP+x?0|=(!@-cknB+{D> z6|Pt;Px9g*MXg~Jz;`I#KX0BAVOp|Pge;g^8lv3<6+&<%N~3GE-{5;SFOhcpf4(PY zk~qPB`!VVy1YU75Qrq$XZvNH72;N5B%}uPVmBdE>nz+&gJGj9NN!Jgc?mUl=(~Fg7 zY{k#XiXAms#q<40bUJZN10I=gmCHpKZevHwI_MWukZB6~){Dj|f2K-Vl3A<>`2OVU#+ z8dNhgjHcEAgY_v(m0ODLa*Y#&>9Z>9BfUXBBE~aA^-Y6(&)G3n0-Q^Mu!&zUY&B# z7yK8ML85v5`W>oyDH|Hs*6XZpLgGJlR<9QjeYE1qZq0V*W=!oZ#)ZV)K_V(z;|=1| z?A6YzDthE53=f}!`2t;@q#ZE(`XFZF3@WlF_e$;275dBM79np!C#C7(9F!gH7HN9z z@O)Tt$+r^nAR#ityM@-8X4|b}*U8PI_A=#_0Ied4ck7`O`fw1%V8^!FReSx5E1t9w z*vi@eQoC*9r_gxUFxB2_l!a$avW@oUv*gZTV=|xcqZ(A2MhiDS9U6b|=~*<|BKwz% zIDDsL?2jzyCNZcR_0n4;=_89-V{6y$*;Vlc#x0>m$@7SxOdguwoNU~$aSto-RT2Eu zUf>q_{3-halMS3RrbPWZ$<)M@|BaS!^`!qfEsCGV0A|} zS^(&JFCCipWaw7od+Cz4KHQBgYa@5LA*?dvVIvIN_9L_M7#^PX*jja-{j!Q_$%00S zJE?lX<~HJF@GRXL3A`>S|DOE?gxehdjr!Rah;<|fZ&{5JdCkS7*!TE6pl@09?`-YH zjdp_@~n5$Y1^1d(R`s?Rl#cSLdj*= zY}m@Id?%2%Qn~#o3~JWk37E30ne%D>z~X;RKObCr>DQ4SuF7s0`1EmO@^Let_O@pA z-AQ@1*D&w+9SJCz1AN}Pb{U;AV+zPzbeH!Zw6U{8t&CIwWjF?ae1rsx@%{jh4+o1U^QTaj2i`(RFgvXZ6`*2oi}GKaKqmEWTGbb#JqHy z0L@7>eTT_UWx2*Pw{cl`eppmukAo*Ty;X1X)YzU7WDx65{?-+kQA#l%`nGFhhqdvH zjv+j*8t2s==z=KK!kqi;x8eD?(1)QeNp5*ngr{&i?M#GqHP;gVC(*S;LeTm^pWd^J zhc2i&LKr@ni`4}l%fF!gF|)Nk^rJ(@L63DWdz1@lMz;QkOt>6g6~^0d{D+U$VUr}_ zUtncx+=vpUP#Gww?p^5@W+`C6gv;dJ^y|Vq7J3j`=&1@ChQ^?+oRDaQZdoJyv zZaZEwFtDFW`u!F1KVm#B*I97_-nT^ALZn4YO(r2OtE;yfM2fi@co?NoOS<*D)0_(Y zv~d;>G1^-{(}Wkl9WX&v2_Q7~&R+@Zow$T>0Z;F%Rjk(Y1JOpd5~Xaban6KF*3FUJihMQjy50;5 z<&S?wQ)_IIzWs{2=5{5|3=Xpo^?I~3fA+%Xl zZ7v`PCO7c=o`cGCsT%1WqQQ1OcLX5Gx#5Eph{L3@o7Q)bpY#t6#p(IC#}rSW*1`tx z>TjSSX@VpRbCNPyy7Fzy2g%Y|Rf3er@4zaA0~wWojH~;)PaE(4rlzlskCVIni9pt` N&i@0bjY5Hf_Ag!pkgC!Vq)0E)TPPnOpdbW{ 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 literal 0 HcmV?d00001 diff --git a/limit.webp b/assets/limit.webp similarity index 100% rename from limit.webp rename to assets/limit.webp diff --git a/assets/logo.jpg b/assets/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44124abd4b235366297a7025b19ec99f43be5f2e GIT binary patch literal 23810 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 PR{fKK|A!t$zl{GAcPYqy literal 0 HcmV?d00001 diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..ac33802 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/functions/[[path]].js b/functions/[[path]].js index 31afc9e..a3432bb 100644 --- a/functions/[[path]].js +++ b/functions/[[path]].js @@ -7,17 +7,17 @@ export async function onRequest(context) { const { request, env, params } = context; const url = new URL(request.url); const path = params.path?.join("/") || ""; + const asset = f => env.ASSETS.fetch(new Request(new URL(`/assets/${f}`, url.origin))); - if (!path || path === "index.html" || path === "favicon.ico" || path === "robots.txt" || path === "limit.webp" || path === "bad.webp") { + if (!path || path === "index.html" || path === "robots.txt" || path.startsWith("assets/")) { return env.ASSETS.fetch(request); } + if (path === "favicon.ico") return asset("favicon.ico"); if (path === "_setup") return setupSurreal(env); const rawQueryPart = url.pathname.slice(1).replace(/\/+$/, ""); - if (rawQueryPart.includes(".") || rawQueryPart.includes("/")) { - return env.ASSETS.fetch(new Request(new URL("/bad.webp", url.origin))); - } + if (rawQueryPart.includes(".") || rawQueryPart.includes("/")) return asset("bad.webp"); const query = normalizeQuery(path); if (!query) return jsonResponse(400, { error: "Empty query" }); @@ -28,7 +28,7 @@ export async function onRequest(context) { const cached = await env.DIRECT_IMG_CACHE.get(cacheKey, "json"); if (cached) { - if (cached.err) return env.ASSETS.fetch(new Request(new URL("/bad.webp", url.origin))); + if (cached.err) return asset("bad.webp"); const obj = await env.R2_IMAGES.get(r2Key); if (obj) { const nowSec = Math.floor(Date.now() / 1000); @@ -120,7 +120,7 @@ export async function onRequest(context) { if (count > 20) { context.waitUntil(notify(env, { title: "Rate Limit Hit", message: `IP ${ip} hit limit for: ${query}`, tags: "warning,no_entry", priority: 2 })); - return env.ASSETS.fetch(new Request(new URL("/limit.webp", url.origin))); + return asset("limit.webp"); } context.waitUntil(notify(env, { title: "New Search", message: `Query: ${query} (Search #${count} for ${ip})\n${url.origin}/${path}`, tags: "mag", priority: 2 })); @@ -128,7 +128,7 @@ export async function onRequest(context) { const fail = async (t, m, tag, p) => { context.waitUntil(notify(env, { title: t, message: m, tags: tag, priority: p })); await env.DIRECT_IMG_CACHE.put(cacheKey, JSON.stringify({ t: Math.floor(Date.now() / 1000), err: true }), { expirationTtl: 86400 }); - return env.ASSETS.fetch(new Request(new URL("/bad.webp", url.origin))); + return asset("bad.webp"); }; let imageUrls = await braveImageSearch(query, env.BRAVE_API_KEY); diff --git a/index.html b/index.html index f931b38..5b3b568 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ direct-img.link | Live images in markdown +