From 33f9525a7a7eb4837ebf71d424f757f69ce00122 Mon Sep 17 00:00:00 2001 From: Alex Varchuk Date: Tue, 16 Dec 2025 16:07:03 +0200 Subject: [PATCH] chore: add permissions and improve code --- .github/workflows/docker.yml | 2 ++ .github/workflows/e2e.yml | 3 +++ .github/workflows/release.yml | 1 + .github/workflows/unit-tests.yml | 3 +++ config/docker/static/favicon.png | Bin 8215 -> 4261 bytes package.json | 2 +- src/utils/helpers.ts | 4 ++-- src/utils/string.ts | 2 +- src/utils/url.ts | 2 +- 9 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c621f301..e6d61ed4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -10,6 +10,8 @@ on: required: true permissions: contents: read + packages: write + jobs: docker: runs-on: ubuntu-latest diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 49272674..c4b377b1 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -5,6 +5,9 @@ on: branches: - main +permissions: + contents: read + jobs: build-and-e2e: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ad390a5..19a34957 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,6 +46,7 @@ jobs: permissions: contents: read packages: write + actions: write uses: ./.github/workflows/docker.yml secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 3524b9d9..cabb543c 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -5,6 +5,9 @@ on: branches: - main +permissions: + contents: read + jobs: build-and-unit: runs-on: ubuntu-latest diff --git a/config/docker/static/favicon.png b/config/docker/static/favicon.png index 6f4c7acfcfc0d7bea95003f196e08a23b782b632..612723fadc7835ea2c19f15b0e77a50bcf2c50c1 100644 GIT binary patch literal 4261 zcmb_fi#rou_-8g|D))v6ql`q;#VrhTt!!qZLXo2NmF8~lmCQ)F<&w)}E<=Rm8X+`7 zB1*O*%v{q9x#YKg&-42ae&>1K=REIwKIikEbKY~F_dW3#JFEQ=IS3yg-+miw6qb*V zAO26kf;`KD(0{VLPWZ0%C4W9X5y^kT&zGGe!!z>xW39~iDhK4*JO$`wdcl;Bulljb zjys5tPt3puWr_>oUt(NHOdkttyVzZn*N{L_$2Vzc-ZJhM@c8M@8o3d z-%w`42l|}A(iIVH=IOT8OO}cPE7NG5w7(w`EBXg)qh9_P1=3*{QDOT}O1n-WLyAx{ z&sf0<#SZSeWy98(c0-Jk@K>R-`X8)2-=C&Vsu65SSgoxEMK?D!XU0<>3RtqcoYe!t4>;Qrx^yn~_3 z?4kVRVnV54`6TCfa(VeD8Ak4MPR_Mcj!AEj>6zo=N4G1PQhykV7R)_!86U>ers^|} zDKw-}V0Zo+EcW53LEv_;d+}ZUA$!NY4Q`J{3tfxRFlQ(7JWCjtRURZ1l&~|{ri1Uz zN~&NgBpTy&z#?;2nZLUblBEoZK1SYlGsY3Fn$>^Iv;ay`NPS2JR7FkufjnXvCtS;%;O2a>)5Dl~RROQOfYK zV5IDph+Wm+i)#tXn+{$(8^FglCKzKajGWqN9tISl!1mrT(Fn0Dhw66)tPtoz8sP$i z@50|OH$`wZzK=fD(OeCSS`$bif;ItThn8Ee1W9#2nm+8uo99`vS&|WO`RFo{<0Y@QxMy5N%tr?=~@t z<~h)745v7p!XAMRjy<*+u9ZJ>9SA9n*UD?#e2neh$u&&jJ`W9wxm>=deB-S^+<~-& zk?!^Tg(o$fMLSR*nLc%af!B%sO3V={aI8Zw#%`U;xg6$N_7 zYUM1PTuA^syy-;0nLd|~OUqsa6rs=k$JT=(-7>W!wM&EjwCZVYPn}jH11+LQ=WY(% ztMBsE{oJR6S#fcfid~8qh18d3)Z)Sm@((9xd#tQf4y-hT*`uSxWH+nbuVG)4A2tiox&9CgwGGBm_U68 zWmk$Uo6g+5HaN#w^s;JWLtF#-iz&}Y-xtqSwD%`0N6Vln2Ket2bGjNriLrcVAO-o8avZgCT zwGGa86bU5t_j7`VpT*#mhklGLFuC_!@-gB-AID=~j4e31H?Eug_5Fh1p~oKVcx9jl z0;QpN75iB9o5^ay_n&x z$do=Q6d_UiPF(%lTGG9_TX|oyX2szGq%ry65NNmRj}kqRAI+YMu*IbfV1DQ$mqUgGvvn0Z#lJMq%J$&U3s;!RwHF$`; zLAEYpRT&@R&Jd*>(Gpe^9ZTw`-;Mjwua07}RIu#KNAjj1moD=y5>D>sPb&-%az;!& zKs=^H00nV1r~Fdqb!L=bGO*Z6CCnG8@rtMp0D)5Moclg?U8H=BXd{ zLs7>G$9}VRWz`~VsK`=yC1=~NAPgu0<|9Z(1^Ikp~-(9!4K)8J$ z)B}bnVY!DU61V&af}{CTF=j_dxHpvy@|NE!%r}7_2uWAQavPiExHCs9f6xZOuZvj8 zMjOE}p^cvW3!^~Svv1^z`TAD6uCi(4df2P_6aD#)WRH?y4VU(l;&8S2Z~on3w4r~A zLb*V4`8&~9s_gZx91`v{a~~~~)w_08kvXz^2+B}KM5{A_LMHhab4D`S^vL*cnahr> zU6X%NR?{X z2+WYfeL->BQrEJ)llv~aM#h|S^dr;;dd8^xW82CV;ho(05zoH1blAmrGC?V5)2cZ( z^LgbRqmNfyE5FOd(%$8)l}%QZ)56$X;fc{0b{{nnGxoa zJmiqcbd|WDIaLsNe#5w+u;dH3^8``uLD#A@f`lxPB#n5Nx!qk0a7%bp$H@kFl^yu*j&-ZaAcO1B)hshYT?XrvB^9jN7{61yt?V}IhJTL z@0zIR{ol}3K-F|@(^J2MR2W8*$|H7d@?$ccZId-5OSnd8JG*lac|pV)L#wppO4`0_ z=cbrZ1CE(ymE_FUux_0M;zi!w@(*KC{hQ=zFm%sOntjf}BMv~w(EtRN$gQ1Db>7z1 zZUE6`V#WdJ;0YJ#;I~5ySZY8&`;mmu6Wol=zCMQdTXP?I;mK5ENTAJ3%bV(A zmB6K^??ofs+LN|l!dtUfpKlg^u`!NaZ4A+8&Zo?WhF!m~s5jR2OSepB<$>NzEBr4U z0OHJ(M>bpD*-l-^InyO2I{O*H7`7kYh%(KYx1>CYErXqo#F6dT0T35CLN-bLa1Az~ zsRZ%K-k}HzAq~FLW3&(tub^A1H0SL+WNclYZ;9#Q8X+@|9;6 zW!)!Ud~bbj`0ncieIr0@#Uqu|#>AG&UAFM`>0q87+j}>*hi3PU8#>S{W4GwVLzP zY;(%%w~Zl7b6bsJW>h%~%F!P#EjNq&mh;4DJg~4Hv`U|r+pLBv6JJ!#H>+e#eeUmQ z3~RsEO&8DO;6wqSG%G5;LrN6>nC*4}EQQ$*a})r8aBFsw8TgXEHM7Q7)* zm?J*`G!kc>j-o^p#c2{en+eQOEC!HmN`)w4kp3i`DgbmU!PV5dO< z(5pCWpZiGuB^Xvx3{Hta;YEOuxrbb9?!ld$AN(RQQ((OFP_w_4oA_BICHlZB%qpKq z&zGpE6)SD!dl;g|%A9|ss#yB#5NiYQMJIT>@&s8zL

v7=oet>eeP0L)1m!ORqaC zm!h0?GQufm4xIBWke?0FwmRZ}blo&Iu+$0kk`+qNiAOHotx=6eOhSFpI$ki0dv-nS zJm(sE{mTBuiTSDN8ouu7$f&$5B%}FQ#shn)#H`%@?bAL-F}E`&axD2=%)r{e97e#hWLKq0KN^XUfq4Yuw5W8 z4vS4YK_tH2DG>f?jbNBV)&hIy*pioW=AS3~C0Q42w`2?_<{3|_o@^crVSJzuLxzm( z2EMoaI0zK=4Ax@KTLjylb=v%hcz4U;>m$nH*O4ucQ&Z0d3mw1Av9qgkyPI&Y$5R1b zx2l)W>AoD5gekCbcMUkw!jFDA`>JkHfO{gsdKWX@!1;Z)+RXJ#M?mCH(}c`uq>uZ? z*zQh}f{vo)Mb2c&+WE~2wCpg^y8SBO Xywa1N{Okvj|JZFT>`;|v*Y5of7KO-Y literal 8215 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 R`}-3 String.fromCharCode(parseInt(code, 10))) - .replace(/&/g, '&') - .replace(/"/g, '"'); + .replace(/"/g, '"') + .replace(/&/g, '&'); } export function sanitizeItemId(id: string): string { diff --git a/src/utils/string.ts b/src/utils/string.ts index 1eff944a..1de19fff 100644 --- a/src/utils/string.ts +++ b/src/utils/string.ts @@ -43,7 +43,7 @@ export function tryDecodeURIComponent(str: string): string { try { return decodeURIComponent(str); } catch (e) { - console.error(`Decoding failed: ${str}`, e); + console.error('Decoding failed: %s', str, e); return str; } } diff --git a/src/utils/url.ts b/src/utils/url.ts index 3721cde5..37f85023 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -9,7 +9,7 @@ export function urlParse(url: string, slashesDenoteHost = false): URL | null { try { return URL?.parse ? URL?.parse(processedUrl) : new URL(processedUrl); } catch (error) { - console.error(`Invalid URL: ${processedUrl}`, error); + console.error('Invalid URL: %s', processedUrl, error); return null; } }