diff --git a/backend/.golangci.yml b/backend/.golangci.yml
index 024c0e92..ca9e2440 100644
--- a/backend/.golangci.yml
+++ b/backend/.golangci.yml
@@ -48,6 +48,9 @@ linters:
- linters:
- revive
text: 'package-comments: should have a package comment'
+ - linters:
+ - revive
+ text: 'var-naming: avoid meaningless package names'
- linters:
- dupl
- gosec
diff --git a/backend/_example/memory_store/go.mod b/backend/_example/memory_store/go.mod
index a5d0c717..169f40da 100644
--- a/backend/_example/memory_store/go.mod
+++ b/backend/_example/memory_store/go.mod
@@ -13,12 +13,12 @@ require (
require (
github.com/Depado/bfchroma/v2 v2.0.0 // indirect
github.com/PuerkitoBio/goquery v1.11.0 // indirect
- github.com/alecthomas/chroma/v2 v2.20.0 // indirect
+ github.com/alecthomas/chroma/v2 v2.21.1 // indirect
github.com/andybalholm/cascadia v1.3.3 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dlclark/regexp2 v1.11.5 // indirect
- github.com/go-pkgz/rest v1.20.4 // indirect
+ github.com/go-pkgz/rest v1.20.6 // indirect
github.com/go-pkgz/routegroup v1.6.0 // indirect
github.com/gorilla/css v1.0.1 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -30,10 +30,10 @@ require (
github.com/rs/xid v1.6.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
go.etcd.io/bbolt v1.4.3 // indirect
- golang.org/x/crypto v0.45.0 // indirect
- golang.org/x/image v0.33.0 // indirect
- golang.org/x/net v0.47.0 // indirect
- golang.org/x/sys v0.38.0 // indirect
+ golang.org/x/crypto v0.46.0 // indirect
+ golang.org/x/image v0.34.0 // indirect
+ golang.org/x/net v0.48.0 // indirect
+ golang.org/x/sys v0.39.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/backend/_example/memory_store/go.sum b/backend/_example/memory_store/go.sum
index 3963d35a..eeb73cc8 100644
--- a/backend/_example/memory_store/go.sum
+++ b/backend/_example/memory_store/go.sum
@@ -4,10 +4,10 @@ github.com/PuerkitoBio/goquery v1.11.0 h1:jZ7pwMQXIITcUXNH83LLk+txlaEy6NVOfTuP43
github.com/PuerkitoBio/goquery v1.11.0/go.mod h1:wQHgxUOU3JGuj3oD/QFfxUdlzW6xPHfqyHre6VMY4DQ=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
-github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw=
-github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA=
-github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg=
-github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
+github.com/alecthomas/chroma/v2 v2.21.1 h1:FaSDrp6N+3pphkNKU6HPCiYLgm8dbe5UXIXcoBhZSWA=
+github.com/alecthomas/chroma/v2 v2.21.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
+github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
+github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
@@ -21,8 +21,8 @@ github.com/go-pkgz/jrpc v0.4.0 h1:oD7xiGrzDkndkuCjeHGugQXxbggLSV7O1QmHhoc5pYY=
github.com/go-pkgz/jrpc v0.4.0/go.mod h1:JFoY3bRjRyx4M3CbEVDFQStMB1m2gmQ7OjqFK7q3kOo=
github.com/go-pkgz/lgr v0.12.1 h1:8GVfG2rSARq3Eaj5PP158rtBR2LHVGkwioIkQBGbvKg=
github.com/go-pkgz/lgr v0.12.1/go.mod h1:A4AxjOthFVFK6jRnVYMeusno5SeDAxcLVHd0kI/lN/Y=
-github.com/go-pkgz/rest v1.20.4 h1:8ufcP1IqoDhCvIFdXPtvyX4HSS16SM6THBe2a6L0/kg=
-github.com/go-pkgz/rest v1.20.4/go.mod h1:2/LEZGndSxpVvExsMn48AjUgiTn6kILqjpoaRnl62JU=
+github.com/go-pkgz/rest v1.20.6 h1:O/IhQ3I2cS4bJYvL1TLcy63w2OcXZTTBG3R+wTIqPS4=
+github.com/go-pkgz/rest v1.20.6/go.mod h1:NY+MX1is2kJckJt+nHDNovS/5j9jmF4yQuSno4qg7XU=
github.com/go-pkgz/routegroup v1.6.0 h1:44XHZgF6JIIldRlv+zjg6SygULASmjifnfIQjwCT0e4=
github.com/go-pkgz/routegroup v1.6.0/go.mod h1:Pmu04fhgWhRtBMIJ8HXppnnzOPjnL/IEPBIdO2zmeqg=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
@@ -62,10 +62,10 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
-golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
-golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
-golang.org/x/image v0.33.0 h1:LXRZRnv1+zGd5XBUVRFmYEphyyKJjQjCRiOuAP3sZfQ=
-golang.org/x/image v0.33.0/go.mod h1:DD3OsTYT9chzuzTQt+zMcOlBHgfoKQb1gry8p76Y1sc=
+golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
+golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
+golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8=
+golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
@@ -80,8 +80,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
-golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
-golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
+golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
+golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -89,8 +89,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
-golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
+golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
+golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -102,8 +102,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
-golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
+golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
diff --git a/backend/go.mod b/backend/go.mod
index 87cb1f80..6e4f6425 100644
--- a/backend/go.mod
+++ b/backend/go.mod
@@ -5,17 +5,17 @@ go 1.25
require (
github.com/Depado/bfchroma/v2 v2.0.0
github.com/PuerkitoBio/goquery v1.11.0
- github.com/alecthomas/chroma/v2 v2.20.0
+ github.com/alecthomas/chroma/v2 v2.21.1
github.com/didip/tollbooth/v8 v8.0.1
github.com/go-chi/chi/v5 v5.2.3
github.com/go-chi/cors v1.2.2
- github.com/go-pkgz/auth/v2 v2.1.0
+ github.com/go-pkgz/auth/v2 v2.1.1
github.com/go-pkgz/jrpc v0.4.0
github.com/go-pkgz/lcw/v2 v2.0.0
github.com/go-pkgz/lgr v0.12.1
github.com/go-pkgz/notify v1.3.0
github.com/go-pkgz/repeater/v2 v2.2.0
- github.com/go-pkgz/rest v1.20.4
+ github.com/go-pkgz/rest v1.20.6
github.com/go-pkgz/syncs v1.3.2
github.com/golang-jwt/jwt/v5 v5.3.0
github.com/google/uuid v1.6.0
@@ -30,9 +30,9 @@ require (
github.com/stretchr/testify v1.11.1
go.etcd.io/bbolt v1.4.3
go.uber.org/goleak v1.3.0
- golang.org/x/crypto v0.45.0
- golang.org/x/image v0.33.0
- golang.org/x/net v0.47.0
+ golang.org/x/crypto v0.46.0
+ golang.org/x/image v0.34.0
+ golang.org/x/net v0.48.0
)
require (
@@ -65,9 +65,9 @@ require (
github.com/xdg-go/stringprep v1.0.4 // indirect
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
go.mongodb.org/mongo-driver v1.17.6 // indirect
- golang.org/x/oauth2 v0.33.0 // indirect
- golang.org/x/sync v0.18.0 // indirect
- golang.org/x/sys v0.38.0 // indirect
- golang.org/x/text v0.31.0 // indirect
+ golang.org/x/oauth2 v0.34.0 // indirect
+ golang.org/x/sync v0.19.0 // indirect
+ golang.org/x/sys v0.39.0 // indirect
+ golang.org/x/text v0.32.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/backend/go.sum b/backend/go.sum
index 7cb27b45..2d66a32e 100644
--- a/backend/go.sum
+++ b/backend/go.sum
@@ -8,10 +8,10 @@ github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
-github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw=
-github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA=
-github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg=
-github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
+github.com/alecthomas/chroma/v2 v2.21.1 h1:FaSDrp6N+3pphkNKU6HPCiYLgm8dbe5UXIXcoBhZSWA=
+github.com/alecthomas/chroma/v2 v2.21.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
+github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
+github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE=
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
github.com/alicebob/miniredis/v2 v2.31.1 h1:7XAt0uUg3DtwEKW5ZAGa+K7FZV2DdKQo5K/6TTnfX8Y=
@@ -48,8 +48,8 @@ github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE=
github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
github.com/go-oauth2/oauth2/v4 v4.5.4 h1:YjI0tmGW8oxVhn9QSBIxlr641QugWrJY5UWa6XmLcW0=
github.com/go-oauth2/oauth2/v4 v4.5.4/go.mod h1:BXiOY+QZtZy2ewbsGk2B5P8TWmtz/Rf7ES5ZttQFxfQ=
-github.com/go-pkgz/auth/v2 v2.1.0 h1:ECUVtCWzJG9yDNMVWh1tX/qoDXaUpwSROyZ4VzmoAhI=
-github.com/go-pkgz/auth/v2 v2.1.0/go.mod h1:adiVuMWvZ07wgLLWg1xjG+GQIn8wLty8UEXkjEOsZmw=
+github.com/go-pkgz/auth/v2 v2.1.1 h1:CBH3Z6ovLT51Nx9TkBcu2L8Dd/xwL6CgJcgqUnC2isQ=
+github.com/go-pkgz/auth/v2 v2.1.1/go.mod h1:9LwzESczjMavmXNZo1XhYpfYdKWtoCbXt/ZIi0GTvF0=
github.com/go-pkgz/email v0.6.0 h1:snZnXldjeF4PgKSjnx9Fa25mtOgFpAOEeWvnQvrxjLE=
github.com/go-pkgz/email v0.6.0/go.mod h1:+wgi4x7S33IuCzfcCM5euN0GwQG6XvO/PBLxrNffYLI=
github.com/go-pkgz/expirable-cache/v3 v3.1.0 h1:s05P851/O6QJ6Mc+7o2bh9aGtD3romB1SxDTXifdoqc=
@@ -66,8 +66,8 @@ github.com/go-pkgz/repeater v1.2.0 h1:oJFvjyKdTDd5RCzpzxlzYIZFFj6Zfl17rE1aUfu6Uj
github.com/go-pkgz/repeater v1.2.0/go.mod h1:vypP6xamA53MFmafnGUucqOmALKk36xgKu2hSG73LHM=
github.com/go-pkgz/repeater/v2 v2.2.0 h1:8nZR/NaknmLfx2YMHbr78u9OL4Xj+8+romm9dz4FpMg=
github.com/go-pkgz/repeater/v2 v2.2.0/go.mod h1:RgX5vUbLKq7PV82QUDP5pFbQS1os4Z+U9XzKymK23A8=
-github.com/go-pkgz/rest v1.20.4 h1:8ufcP1IqoDhCvIFdXPtvyX4HSS16SM6THBe2a6L0/kg=
-github.com/go-pkgz/rest v1.20.4/go.mod h1:2/LEZGndSxpVvExsMn48AjUgiTn6kILqjpoaRnl62JU=
+github.com/go-pkgz/rest v1.20.6 h1:O/IhQ3I2cS4bJYvL1TLcy63w2OcXZTTBG3R+wTIqPS4=
+github.com/go-pkgz/rest v1.20.6/go.mod h1:NY+MX1is2kJckJt+nHDNovS/5j9jmF4yQuSno4qg7XU=
github.com/go-pkgz/routegroup v1.6.0 h1:44XHZgF6JIIldRlv+zjg6SygULASmjifnfIQjwCT0e4=
github.com/go-pkgz/routegroup v1.6.0/go.mod h1:Pmu04fhgWhRtBMIJ8HXppnnzOPjnL/IEPBIdO2zmeqg=
github.com/go-pkgz/syncs v1.3.2 h1:gmioASlJNy3gNosPlgvWOM2QP0Hdjzn2u+/sUShgd8E=
@@ -201,10 +201,10 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
-golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
-golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
-golang.org/x/image v0.33.0 h1:LXRZRnv1+zGd5XBUVRFmYEphyyKJjQjCRiOuAP3sZfQ=
-golang.org/x/image v0.33.0/go.mod h1:DD3OsTYT9chzuzTQt+zMcOlBHgfoKQb1gry8p76Y1sc=
+golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
+golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
+golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8=
+golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
@@ -219,10 +219,10 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
-golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
-golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
-golang.org/x/oauth2 v0.33.0 h1:4Q+qn+E5z8gPRJfmRy7C2gGG3T4jIprK6aSYgTXGRpo=
-golang.org/x/oauth2 v0.33.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
+golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
+golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
+golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
+golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -230,8 +230,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
-golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
+golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
+golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -243,8 +243,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
-golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
+golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -264,8 +264,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
-golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
+golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
+golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/Dockerfile b/backend/vendor/github.com/alecthomas/chroma/v2/Dockerfile
index e2a15313..bd55da06 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/Dockerfile
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/Dockerfile
@@ -29,7 +29,7 @@ ENV GOARCH=amd64
RUN make build/chromad
# Runtime stage
-FROM alpine:3.22 AS runtime
+FROM alpine:3.23 AS runtime
# Install ca-certificates for HTTPS requests
RUN apk --no-cache add ca-certificates curl
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/README.md b/backend/vendor/github.com/alecthomas/chroma/v2/README.md
index b65c3252..0cfa07f4 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/README.md
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/README.md
@@ -35,10 +35,10 @@ translators for Pygments lexers and styles.
## Supported languages
| Prefix | Language
-| :----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+| :----: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| A | ABAP, ABNF, ActionScript, ActionScript 3, Ada, Agda, AL, Alloy, Angular2, ANTLR, ApacheConf, APL, AppleScript, ArangoDB AQL, Arduino, ArmAsm, ATL, AutoHotkey, AutoIt, Awk
| B | Ballerina, Bash, Bash Session, Batchfile, Beef, BibTeX, Bicep, BlitzBasic, BNF, BQN, Brainfuck
-| C | C, C#, C++, Caddyfile, Caddyfile Directives, Cap'n Proto, Cassandra CQL, Ceylon, CFEngine3, cfstatement, ChaiScript, Chapel, Cheetah, Clojure, CMake, COBOL, CoffeeScript, Common Lisp, Coq, Core, Crystal, CSS, CSV, CUE, Cython
+| C | C, C#, C++, C3, Caddyfile, Caddyfile Directives, Cap'n Proto, Cassandra CQL, Ceylon, CFEngine3, cfstatement, ChaiScript, Chapel, Cheetah, Clojure, CMake, COBOL, CoffeeScript, Common Lisp, Coq, Core, Crystal, CSS, CSV, CUE, Cython
| D | D, Dart, Dax, Desktop file, Diff, Django/Jinja, dns, Docker, DTD, Dylan
| E | EBNF, Elixir, Elm, EmacsLisp, Erlang
| F | Factor, Fennel, Fish, Forth, Fortran, FortranFixed, FSharp
@@ -46,19 +46,19 @@ translators for Pygments lexers and styles.
| H | Handlebars, Hare, Haskell, Haxe, HCL, Hexdump, HLB, HLSL, HolyC, HTML, HTTP, Hy
| I | Idris, Igor, INI, Io, ISCdhcpd
| J | J, Janet, Java, JavaScript, JSON, JSONata, Jsonnet, Julia, Jungle
-| K | Kotlin
+| K | Kakoune, Kotlin
| L | Lean4, Lighttpd configuration file, LLVM, lox, Lua
-| M | Makefile, Mako, markdown, Mason, Materialize SQL dialect, Mathematica, Matlab, MCFunction, Meson, Metal, MiniZinc, MLIR, Modula-2, Mojo, MonkeyC, MoonScript, MorrowindScript, Myghty, MySQL
+| M | Makefile, Mako, markdown, Mason, Materialize SQL dialect, Mathematica, Matlab, MCFunction, Meson, Metal, MiniZinc, MLIR, Modelica, Modula-2, Mojo, MonkeyC, MoonScript, MorrowindScript, Myghty, MySQL
| N | NASM, Natural, NDISASM, Newspeak, Nginx configuration file, Nim, Nix, NSIS, Nu
| O | Objective-C, ObjectPascal, OCaml, Octave, Odin, OnesEnterprise, OpenEdge ABL, OpenSCAD, Org Mode
-| P | PacmanConf, Perl, PHP, PHTML, Pig, PkgConfig, PL/pgSQL, plaintext, Plutus Core, Pony, PostgreSQL SQL dialect, PostScript, POVRay, PowerQuery, PowerShell, Prolog, Promela, PromQL, properties, Protocol Buffer, PRQL, PSL, Puppet, Python, Python 2
+| P | PacmanConf, Perl, PHP, PHTML, Pig, PkgConfig, PL/pgSQL, plaintext, Plutus Core, Pony, PostgreSQL SQL dialect, PostScript, POVRay, PowerQuery, PowerShell, Prolog, Promela, PromQL, properties, Protocol Buffer, Protocol Buffer Text Format, PRQL, PSL, Puppet, Python, Python 2
| Q | QBasic, QML
-| R | R, Racket, Ragel, Raku, react, ReasonML, reg, Rego, reStructuredText, Rexx, RPGLE, RPMSpec, Ruby, Rust
+| R | R, Racket, Ragel, Raku, react, ReasonML, reg, Rego, reStructuredText, Rexx, RGBDS Assembly, Ring, RPGLE, RPMSpec, Ruby, Rust
| S | SAS, Sass, Scala, Scheme, Scilab, SCSS, Sed, Sieve, Smali, Smalltalk, Smarty, SNBT, Snobol, Solidity, SourcePawn, SPARQL, SQL, SquidConf, Standard ML, stas, Stylus, Svelte, Swift, SYSTEMD, systemverilog
| T | TableGen, Tal, TASM, Tcl, Tcsh, Termcap, Terminfo, Terraform, TeX, Thrift, TOML, TradingView, Transact-SQL, Turing, Turtle, Twig, TypeScript, TypoScript, TypoScriptCssData, TypoScriptHtmlData, Typst
| U | ucode
| V | V, V shell, Vala, VB.net, verilog, VHDL, VHS, VimL, vue
-| W | WDTE, WebGPU Shading Language, WebVTT, Whiley
+| W | WDTE, WebAssembly Text Format, WebGPU Shading Language, WebVTT, Whiley
| X | XML, Xorg
| Y | YAML, YANG
| Z | Z80 Assembly, Zed, Zig
@@ -209,7 +209,7 @@ using the included Python 3 script `pygments2chroma_xml.py`. I use something lik
the following:
```sh
-python3 _tools/pygments2chroma_xml.py \
+uv run --script _tools/pygments2chroma_xml.py \
pygments.lexers.jvm.KotlinLexer \
> lexers/embedded/kotlin.xml
```
@@ -272,7 +272,7 @@ for that setup the `chroma` executable can be just symlinked to `~/.lessfilter`.
## Projects using Chroma
-* [`moar`](https://github.com/walles/moar) is a full-blown pager that colorizes
+* [`moor`](https://github.com/walles/moor) is a full-blown pager that colorizes
its input using Chroma
* [Hugo](https://gohugo.io/) is a static site generator that [uses Chroma for syntax
highlighting code examples](https://gohugo.io/content-management/syntax-highlighting/)
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/iterator.go b/backend/vendor/github.com/alecthomas/chroma/v2/iterator.go
index b1e0b57b..cf39bb57 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/iterator.go
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/iterator.go
@@ -58,6 +58,7 @@ func Literator(tokens ...Token) Iterator {
// SplitTokensIntoLines splits tokens containing newlines in two.
func SplitTokensIntoLines(tokens []Token) (out [][]Token) {
var line []Token // nolint: prealloc
+tokenLoop:
for _, token := range tokens {
for strings.Contains(token.Value, "\n") {
parts := strings.SplitAfterN(token.Value, "\n", 2)
@@ -70,6 +71,11 @@ func SplitTokensIntoLines(tokens []Token) (out [][]Token) {
line = append(line, clone)
out = append(out, line)
line = nil
+
+ // If the tail token is empty, don't emit it.
+ if len(token.Value) == 0 {
+ continue tokenLoop
+ }
}
line = append(line, token)
}
@@ -83,5 +89,5 @@ func SplitTokensIntoLines(tokens []Token) (out [][]Token) {
out = out[:len(out)-1]
}
}
- return
+ return out
}
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml
new file mode 100644
index 00000000..8094ce4b
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml
@@ -0,0 +1,374 @@
+
+
+ C3
+ c3
+ *.c3
+ *.c3i
+ *.c3t
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml
index c5aa432c..f0a9d290 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml
@@ -13,13 +13,13 @@
-
+
-
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml
index 5491fe46..adc13c75 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml
@@ -191,7 +191,7 @@
-
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml
index 3c030e22..19c85e2c 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml
@@ -15,10 +15,10 @@
-
+
-
+
@@ -130,4 +130,4 @@
-
\ No newline at end of file
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml
new file mode 100644
index 00000000..2db54ddc
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml
@@ -0,0 +1,251 @@
+
+
+ Devicetree
+ devicetree
+ dts
+ *.dts
+ *.dtsi
+ text/x-devicetree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml
index 08f3870b..3f1de09c 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml
@@ -9,6 +9,13 @@
*.inf
*.service
*.socket
+ *.container
+ *.network
+ *.build
+ *.pod
+ *.kube
+ *.volume
+ *.image
.gitconfig
.editorconfig
pylintrc
@@ -42,4 +49,4 @@
-
\ No newline at end of file
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml
new file mode 100644
index 00000000..afc04896
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml
@@ -0,0 +1,96 @@
+
+
+
+ Kakoune
+ kak
+ kakoune
+ kakrc
+ kakscript
+ *.kak
+ kakrc
+ application/x-sh
+ application/x-shellscript
+ text/x-shellscript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml
index ec02c4ef..28bf2d8b 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml
@@ -113,9 +113,7 @@
-
-
-
+
@@ -137,8 +135,20 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml
index 602885a2..8dec0a85 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml
@@ -6,24 +6,6 @@
true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -39,23 +21,39 @@
-
+
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -69,10 +67,7 @@
-
-
-
-
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml
new file mode 100644
index 00000000..5b1dc838
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml
@@ -0,0 +1,106 @@
+
+
+ Modelica
+ modelica
+ *.mo
+ text/x-modelica
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml
index a58686ff..eaa9c307 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml
@@ -6,6 +6,7 @@
sage
python3
py3
+ starlark
*.py
*.pyi
*.pyw
@@ -23,6 +24,7 @@
WORKSPACE.bazel
MODULE.bazel
REPO.bazel
+ *.star
*.tac
text/x-python
application/x-python
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml
new file mode 100644
index 00000000..6814ca1c
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml
@@ -0,0 +1,239 @@
+
+
+ RGBDS Assembly
+ rgbasm
+ *.asm
+ 0.5
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml
new file mode 100644
index 00000000..44454ea8
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml
@@ -0,0 +1,74 @@
+
+
+ Ring
+ ring
+ *.ring
+ *.rh
+ *.rform
+ text/x-ring
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml
index a74f3c66..c74cd2c3 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml
@@ -11,7 +11,7 @@
text/x-sqlrpgle
true
-
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml
new file mode 100644
index 00000000..9cb48c03
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml
@@ -0,0 +1,162 @@
+
+
+ Protocol Buffer Text Format
+ txtpb
+ *.txtpb
+ *.textproto
+ *.textpb
+ *.pbtxt
+ application/x-protobuf-text
+ false
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml
new file mode 100644
index 00000000..4a7f7e46
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml
@@ -0,0 +1,149 @@
+
+
+ WebAssembly Text Format
+ wast
+ wat
+ *.wat
+ *.wast
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/serialise.go b/backend/vendor/github.com/alecthomas/chroma/v2/serialise.go
index 645a5faa..3d7f6c5d 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/serialise.go
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/serialise.go
@@ -150,8 +150,12 @@ func NewXMLLexer(from fs.FS, path string) (*RegexLexer, error) {
regexAnalysers := make([]regexAnalyse, 0, len(config.Analyse.Regexes))
+ regexFlags := regexp2.None
+ if config.CaseInsensitive {
+ regexFlags = regexp2.IgnoreCase
+ }
for _, ra := range config.Analyse.Regexes {
- re, err := regexp2.Compile(ra.Pattern, regexp2.None)
+ re, err := regexp2.Compile(ra.Pattern, regexFlags)
if err != nil {
return nil, fmt.Errorf("%s: %q is not a valid analyser regex: %w", config.Name, ra.Pattern, err)
}
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml b/backend/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml
new file mode 100644
index 00000000..c22b3fa5
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml
@@ -0,0 +1,69 @@
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml b/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml
new file mode 100644
index 00000000..37f589f9
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml
@@ -0,0 +1,107 @@
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml b/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml
new file mode 100644
index 00000000..fd1cd880
--- /dev/null
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml
@@ -0,0 +1,107 @@
+
+
+
diff --git a/backend/vendor/github.com/alecthomas/chroma/v2/styles/github.xml b/backend/vendor/github.com/alecthomas/chroma/v2/styles/github.xml
index d747f653..dd6a56db 100644
--- a/backend/vendor/github.com/alecthomas/chroma/v2/styles/github.xml
+++ b/backend/vendor/github.com/alecthomas/chroma/v2/styles/github.xml
@@ -1,6 +1,6 @@
\ No newline at end of file
+
+
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/auth.go b/backend/vendor/github.com/go-pkgz/auth/v2/auth.go
index c3c61f75..efb4ddb6 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/auth.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/auth.go
@@ -172,8 +172,7 @@ func (s *Service) Handlers() (authHandler, avatarHandler http.Handler) {
// allow logout without specifying provider
if elems[len(elems)-1] == "logout" {
if len(s.providers) == 0 {
- w.WriteHeader(http.StatusBadRequest)
- rest.RenderJSON(w, rest.JSON{"error": "providers not defined"})
+ _ = rest.EncodeJSON(w, http.StatusBadRequest, rest.JSON{"error": "providers not defined"})
return
}
s.providers[0].Handler(w, r)
@@ -184,12 +183,11 @@ func (s *Service) Handlers() (authHandler, avatarHandler http.Handler) {
if elems[len(elems)-1] == "user" {
claims, _, err := s.jwtService.Get(r)
if err != nil || claims.User == nil {
- w.WriteHeader(http.StatusUnauthorized)
msg := "user is nil"
if err != nil {
msg = err.Error()
}
- rest.RenderJSON(w, rest.JSON{"error": msg})
+ _ = rest.EncodeJSON(w, http.StatusUnauthorized, rest.JSON{"error": msg})
return
}
rest.RenderJSON(w, claims.User)
@@ -211,8 +209,7 @@ func (s *Service) Handlers() (authHandler, avatarHandler http.Handler) {
provName := elems[len(elems)-2]
p, err := s.Provider(provName)
if err != nil {
- w.WriteHeader(http.StatusBadRequest)
- rest.RenderJSON(w, rest.JSON{"error": fmt.Sprintf("provider %s not supported", provName)})
+ _ = rest.EncodeJSON(w, http.StatusBadRequest, rest.JSON{"error": fmt.Sprintf("provider %s not supported", provName)})
return
}
p.Handler(w, r)
@@ -347,7 +344,7 @@ func (s *Service) AddAppleProvider(appleConfig provider.AppleConfig, privKeyLoad
L: s.logger,
}
- // Error checking at create need for catch one when apple private key init
+ // error checking at create need for catch one when apple private key init
appleProvider, err := provider.NewApple(p, appleConfig, privKeyLoader)
if err != nil {
return fmt.Errorf("an AppleProvider creating failed: %w", err)
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/avatar/avatar.go b/backend/vendor/github.com/go-pkgz/auth/v2/avatar/avatar.go
index a1d749a6..72810543 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/avatar/avatar.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/avatar/avatar.go
@@ -194,7 +194,7 @@ func (p *Proxy) resize(reader io.Reader, limit int) io.Reader {
newW, newH = limit, h*limit/w
}
m := image.NewRGBA(image.Rect(0, 0, newW, newH))
- // Slower than `draw.ApproxBiLinear.Scale()` but better quality.
+ // slower than `draw.ApproxBiLinear.Scale()` but better quality.
draw.BiLinear.Scale(m, m.Bounds(), src, src.Bounds(), draw.Src, nil)
var out bytes.Buffer
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/middleware/auth.go b/backend/vendor/github.com/go-pkgz/auth/v2/middleware/auth.go
index 6aafa033..e25968f8 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/middleware/auth.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/middleware/auth.go
@@ -189,7 +189,7 @@ func (a *Authenticator) refreshExpiredToken(w http.ResponseWriter, claims token.
}
claims.ExpiresAt = nil // this will cause now+duration for refreshed token
- c, err := a.JWTService.Set(w, claims) // Set changes token
+ c, err := a.JWTService.Set(w, claims) // set changes token
if err != nil {
return token.Claims{}, err
}
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/provider/apple.go b/backend/vendor/github.com/go-pkgz/auth/v2/provider/apple.go
index 3781ab62..90ee3498 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/provider/apple.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/provider/apple.go
@@ -49,22 +49,22 @@ const (
// appleVerificationResponse is based on https://developer.apple.com/documentation/signinwithapplerestapi/tokenresponse
type appleVerificationResponse struct {
- // A token used to access allowed user data, but now not implemented public interface for it.
+ // a token used to access allowed user data, but now not implemented public interface for it.
AccessToken string `json:"access_token"`
- // Access token type, always equal the "bearer".
+ // access token type, always equal the "bearer".
TokenType string `json:"token_type"`
- // Access token expires time in seconds. Always equal 3600 seconds (1 hour)
+ // access token expires time in seconds. Always equal 3600 seconds (1 hour)
ExpiresIn int `json:"expires_in"`
- // The refresh token used to regenerate new access tokens.
+ // the refresh token used to regenerate new access tokens.
RefreshToken string `json:"refresh_token"`
- // Main JSON Web Token that contains the user’s identity information.
+ // main JSON Web Token that contains the user’s identity information.
IDToken string `json:"id_token"`
- // Used to capture any error returned in response. Always check error for empty
+ // used to capture any error returned in response. Always check error for empty
Error string `json:"error"`
}
@@ -443,7 +443,7 @@ func (ah *AppleHandler) exchange(ctx context.Context, code, redirectURI string,
return err
}
- // Trying to decode (unmarshal json) data of response
+ // trying to decode (unmarshal json) data of response
err = json.NewDecoder(res.Body).Decode(result)
if err != nil {
return fmt.Errorf("unmarshalling data from apple service response failed: %w", err)
@@ -455,8 +455,8 @@ func (ah *AppleHandler) exchange(ctx context.Context, code, redirectURI string,
}
}()
- // If above operation done successfully checking a response code and error descriptions, if one exist.
- // Apple service will response either 200 (OK) or 400 (any error).
+ // if above operation done successfully checking a response code and error descriptions, if one exist.
+ // apple service will response either 200 (OK) or 400 (any error).
if res.StatusCode != http.StatusOK || result.Error != "" {
return fmt.Errorf("apple token service error: %s", result.Error)
}
@@ -471,7 +471,7 @@ func (ah *AppleHandler) createClientSecret() (string, error) {
if ah.conf.privateKey == nil {
return "", fmt.Errorf("private key can't be empty")
}
- // Create a claims
+ // create a claims
now := time.Now()
exp := now.Add(time.Minute * 30) // default value
@@ -502,7 +502,7 @@ func (ah *AppleHandler) parseUserData(user *token.User, jUser string) {
var userData UserData
- // Catch error for log only. No need break flow if user name doesn't exist
+ // catch error for log only. No need break flow if user name doesn't exist
if err := json.Unmarshal([]byte(jUser), &userData); err != nil {
ah.Logf("[DEBUG] failed to parse user data %s: %v", user, err)
user.Name = "noname_" + user.ID[6:12] // paste noname if user name failed to parse
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/provider/sender/email.go b/backend/vendor/github.com/go-pkgz/auth/v2/provider/sender/email.go
index b70a71d4..f1f34844 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/provider/sender/email.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/provider/sender/email.go
@@ -20,14 +20,14 @@ type Email struct {
type EmailParams struct {
Host string // SMTP host
Port int // SMTP port
- From string // From email field
- Subject string // Email subject
- ContentType string // Content type
+ From string // from email field
+ Subject string // email subject
+ ContentType string // content type
TLS bool // TLS auth
- StartTLS bool // StartTLS auth
- InsecureSkipVerify bool // Skip certificate verification
- Charset string // Character set
+ StartTLS bool // startTLS auth
+ InsecureSkipVerify bool // skip certificate verification
+ Charset string // character set
LoginAuth bool // LOGIN auth method instead of default PLAIN, needed for Office 365 and outlook.com
SMTPUserName string // username
SMTPPassword string // password
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/provider/telegram.go b/backend/vendor/github.com/go-pkgz/auth/v2/provider/telegram.go
index 5b884eb9..8e950204 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/provider/telegram.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/provider/telegram.go
@@ -15,7 +15,7 @@ import (
"sync/atomic"
"time"
- "github.com/go-pkgz/repeater"
+ "github.com/go-pkgz/repeater/v2"
"github.com/go-pkgz/rest"
"github.com/golang-jwt/jwt/v5"
@@ -63,7 +63,7 @@ var expiredCleanupInterval = time.Minute * 5 // interval to check and clean up e
// Run starts processing login requests sent in Telegram
// Blocks caller
func (th *TelegramHandler) Run(ctx context.Context) error {
- // Initialization
+ // initialization
atomic.AddInt32(&th.run, 1)
info, err := th.Telegram.BotInfo(ctx)
if err != nil {
@@ -168,7 +168,7 @@ func (th *TelegramHandler) processUpdates(ctx context.Context, updates *telegram
th.requests.RLock()
authRequest, ok := th.requests.data[token]
- if !ok { // No such token
+ if !ok { // no such token
th.requests.RUnlock()
err := th.Telegram.Send(ctx, update.Message.Chat.ID, th.ErrorMsg)
if err != nil {
@@ -256,7 +256,7 @@ func (th *TelegramHandler) LoginHandler(w http.ResponseWriter, r *http.Request)
queryToken := r.URL.Query().Get("token")
if queryToken == "" {
// GET /login (No token supplied)
- // Generate and send token
+ // generate and send token
token, err := randToken()
if err != nil {
rest.SendErrorJSON(w, r, th.L, http.StatusInternalServerError, err, "failed to generate code")
@@ -322,7 +322,7 @@ func (th *TelegramHandler) LoginHandler(w http.ResponseWriter, r *http.Request)
rest.RenderJSON(w, claims.User)
- // Delete request
+ // delete request
th.requests.Lock()
defer th.requests.Unlock()
delete(th.requests.data, queryToken)
@@ -342,8 +342,8 @@ type tgAPI struct {
token string
client *http.Client
- // Identifier of the first update to be requested.
- // Should be equal to LastSeenUpdateID + 1
+ // identifier of the first update to be requested.
+ // should be equal to LastSeenUpdateID + 1
// See https://core.telegram.org/bots/api#getupdates
updateOffset int
}
@@ -387,7 +387,7 @@ func (tg *tgAPI) Send(ctx context.Context, id int, msg string) error {
// Avatar returns URL to user avatar
func (tg *tgAPI) Avatar(ctx context.Context, id int) (string, error) {
- // Get profile pictures
+ // get profile pictures
url := fmt.Sprintf(`getUserProfilePhotos?user_id=%d`, id)
var profilePhotos = struct {
@@ -402,12 +402,12 @@ func (tg *tgAPI) Avatar(ctx context.Context, id int) (string, error) {
return "", err
}
- // User does not have profile picture set or it is hidden in privacy settings
+ // user does not have profile picture set or it is hidden in privacy settings
if len(profilePhotos.Result.Photos) == 0 || len(profilePhotos.Result.Photos[0]) == 0 {
return "", nil
}
- // Get max possible picture size
+ // get max possible picture size
last := len(profilePhotos.Result.Photos[0]) - 1
fileID := profilePhotos.Result.Photos[0][last].ID
url = fmt.Sprintf(`getFile?file_id=%s`, fileID)
@@ -450,7 +450,7 @@ func (tg *tgAPI) BotInfo(ctx context.Context) (*botInfo, error) {
}
func (tg *tgAPI) request(ctx context.Context, method string, data interface{}) error {
- return repeater.NewDefault(3, time.Millisecond*50).Do(ctx, func() error {
+ return repeater.NewFixed(3, time.Millisecond*50).Do(ctx, func() error {
url := fmt.Sprintf("https://api.telegram.org/bot%s/%s", tg.token, method)
req, err := http.NewRequestWithContext(ctx, "GET", url, http.NoBody)
diff --git a/backend/vendor/github.com/go-pkgz/auth/v2/token/jwt.go b/backend/vendor/github.com/go-pkgz/auth/v2/token/jwt.go
index 22954ef2..0d18653c 100644
--- a/backend/vendor/github.com/go-pkgz/auth/v2/token/jwt.go
+++ b/backend/vendor/github.com/go-pkgz/auth/v2/token/jwt.go
@@ -231,7 +231,7 @@ func (j *Service) validate(claims *Claims) error {
return nil
}
- // Ignore "ErrTokenExpired" if it is the only error.
+ // ignore "ErrTokenExpired" if it is the only error.
if errors.Is(err, jwt.ErrTokenExpired) {
if uw, ok := err.(interface{ Unwrap() []error }); ok && len(uw.Unwrap()) == 1 {
return nil
@@ -266,7 +266,8 @@ func (j *Service) Set(w http.ResponseWriter, claims Claims) (Claims, error) {
if j.SendJWTHeader {
w.Header().Set(j.JWTHeaderKey, tokenString)
- return claims, nil
+ // don't return here - fall through to also set cookies
+ // cookies are needed for OAuth redirect flows where headers don't survive redirects
}
cookieExpiration := 0 // session cookie
diff --git a/backend/vendor/github.com/go-pkgz/rest/.golangci.yml b/backend/vendor/github.com/go-pkgz/rest/.golangci.yml
index ec36f9d3..bd6fb4ac 100644
--- a/backend/vendor/github.com/go-pkgz/rest/.golangci.yml
+++ b/backend/vendor/github.com/go-pkgz/rest/.golangci.yml
@@ -1,66 +1,63 @@
+version: "2"
run:
timeout: 5m
tests: false
-
-linters-settings:
- govet:
- enable:
- - shadow
- goconst:
- min-len: 2
- min-occurrences: 2
- misspell:
- locale: US
- lll:
- line-length: 140
- gocritic:
- enabled-tags:
- - performance
- - style
- - experimental
- disabled-checks:
- - wrapperFunc
- - hugeParam
- - rangeValCopy
- - singleCaseSwitch
- - ifElseChain
-
+ concurrency: 4
linters:
+ default: none
enable:
- - revive
- - govet
- - unconvert
- - staticcheck
- - unused
- - gosec
- dupl
- - misspell
- - unparam
- - typecheck
- - ineffassign
- - stylecheck
- gochecknoinits
- - copyloopvar
- gocritic
+ - govet
+ - ineffassign
+ - misspell
- nakedret
- - gosimple
- prealloc
- fast: false
- disable-all: true
-
-issues:
- exclude-dirs:
- - vendor
- exclude-rules:
- - text: "at least one file in a package should have a package comment"
- linters:
- - stylecheck
- - text: "should have a package comment"
- linters:
- - revive
- - path: _test\.go
- linters:
- - gosec
- - dupl
- exclude-use-default: false
+ - revive
+ - staticcheck
+ - unconvert
+ - unparam
+ - unused
+ settings:
+ goconst:
+ min-len: 2
+ min-occurrences: 2
+ gocritic:
+ disabled-checks:
+ - wrapperFunc
+ - hugeParam
+ - rangeValCopy
+ - singleCaseSwitch
+ - ifElseChain
+ enabled-tags:
+ - performance
+ - style
+ - experimental
+ govet:
+ enable-all: true
+ disable:
+ - fieldalignment
+ lll:
+ line-length: 140
+ misspell:
+ locale: US
+ exclusions:
+ generated: lax
+ rules:
+ - linters:
+ - staticcheck
+ text: "at least one file in a package should have a package comment"
+ - linters:
+ - revive
+ text: "should have a package comment"
+ - linters:
+ - gosec
+ - dupl
+ path: _test\.go
+ paths:
+ - vendor
+ - third_party$
+ - builtin$
+ - examples$
diff --git a/backend/vendor/github.com/go-pkgz/rest/README.md b/backend/vendor/github.com/go-pkgz/rest/README.md
index d72d4781..1260cf80 100644
--- a/backend/vendor/github.com/go-pkgz/rest/README.md
+++ b/backend/vendor/github.com/go-pkgz/rest/README.md
@@ -157,7 +157,14 @@ Compresses response with gzip.
### RealIP middleware
-RealIP is a middleware that sets a http.Request's RemoteAddr to the results of parsing either the X-Forwarded-For or X-Real-IP headers.
+RealIP is a middleware that sets a http.Request's RemoteAddr to the results of parsing various headers that contain the client's real IP address. It checks headers in the following priority order:
+
+1. `X-Real-IP` - trusted proxy (nginx/reproxy) sets this to actual client
+2. `CF-Connecting-IP` - Cloudflare's header for original client
+3. `X-Forwarded-For` - leftmost public IP (original client in CDN/proxy chain)
+4. `RemoteAddr` - fallback for direct connections
+
+Only public IPs are accepted from headers; private/loopback/link-local IPs are skipped. This makes the middleware compatible with CDN setups like Cloudflare where the leftmost IP in `X-Forwarded-For` is the actual client.
### Maybe middleware
diff --git a/backend/vendor/github.com/go-pkgz/rest/blackwords.go b/backend/vendor/github.com/go-pkgz/rest/blackwords.go
index 01c85022..8954db3d 100644
--- a/backend/vendor/github.com/go-pkgz/rest/blackwords.go
+++ b/backend/vendor/github.com/go-pkgz/rest/blackwords.go
@@ -20,8 +20,7 @@ func BlackWords(words ...string) func(http.Handler) http.Handler {
if body != "" {
for _, word := range words {
if strings.Contains(body, strings.ToLower(word)) {
- w.WriteHeader(http.StatusForbidden)
- RenderJSON(w, JSON{"error": "one of blacklisted words detected"})
+ _ = EncodeJSON(w, http.StatusForbidden, JSON{"error": "one of blacklisted words detected"})
return
}
}
diff --git a/backend/vendor/github.com/go-pkgz/rest/file_server.go b/backend/vendor/github.com/go-pkgz/rest/file_server.go
index ccf47df5..088ac9db 100644
--- a/backend/vendor/github.com/go-pkgz/rest/file_server.go
+++ b/backend/vendor/github.com/go-pkgz/rest/file_server.go
@@ -68,12 +68,14 @@ func NewFileServer(public, local string, options ...FsOpt) (*FS, error) {
}
// FileServer is a shortcut for making FS with listing disabled and the custom noFound reader (can be nil).
+//
// Deprecated: the method is for back-compatibility only and user should use the universal NewFileServer instead
func FileServer(public, local string, notFound io.Reader) (http.Handler, error) {
return NewFileServer(public, local, FsOptCustom404(notFound))
}
// FileServerSPA is a shortcut for making FS with SPA-friendly handling of 404, listing disabled and the custom noFound reader (can be nil).
+//
// Deprecated: the method is for back-compatibility only and user should use the universal NewFileServer instead
func FileServerSPA(public, local string, notFound io.Reader) (http.Handler, error) {
return NewFileServer(public, local, FsOptCustom404(notFound), FsOptSPA)
diff --git a/backend/vendor/github.com/go-pkgz/rest/logger/logger.go b/backend/vendor/github.com/go-pkgz/rest/logger/logger.go
index e814663d..d93342c5 100644
--- a/backend/vendor/github.com/go-pkgz/rest/logger/logger.go
+++ b/backend/vendor/github.com/go-pkgz/rest/logger/logger.go
@@ -220,8 +220,8 @@ func (l *Middleware) getBody(r *http.Request) string {
// "The Server will close the request body. The ServeHTTP Handler does not need to."
// https://golang.org/pkg/net/http/#Request
- // So we can use ioutil.NopCloser() to make io.ReadCloser.
- // Note that below assignment is not approved by the docs:
+ // so we can use ioutil.NopCloser() to make io.ReadCloser.
+ // note that below assignment is not approved by the docs:
// "Except for reading the body, handlers should not modify the provided Request."
// https://golang.org/pkg/net/http/#Handler
r.Body = io.NopCloser(reader)
@@ -355,5 +355,5 @@ func (c *customResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
if hj, ok := c.ResponseWriter.(http.Hijacker); ok {
return hj.Hijack()
}
- return nil, nil, fmt.Errorf("ResponseWriter does not implement the Hijacker interface") //nolint:golint //capital letter is OK here
+ return nil, nil, fmt.Errorf("ResponseWriter does not implement the Hijacker interface")
}
diff --git a/backend/vendor/github.com/go-pkgz/rest/metrics.go b/backend/vendor/github.com/go-pkgz/rest/metrics.go
index 1cf0a419..6edc2dae 100644
--- a/backend/vendor/github.com/go-pkgz/rest/metrics.go
+++ b/backend/vendor/github.com/go-pkgz/rest/metrics.go
@@ -13,8 +13,7 @@ func Metrics(onlyIps ...string) func(http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" && strings.HasSuffix(strings.ToLower(r.URL.Path), "/metrics") {
if matched, ip, err := matchSourceIP(r, onlyIps); !matched || err != nil {
- w.WriteHeader(http.StatusForbidden)
- RenderJSON(w, JSON{"error": fmt.Sprintf("ip %s rejected", ip)})
+ _ = EncodeJSON(w, http.StatusForbidden, JSON{"error": fmt.Sprintf("ip %s rejected", ip)})
return
}
expvar.Handler().ServeHTTP(w, r)
diff --git a/backend/vendor/github.com/go-pkgz/rest/middleware.go b/backend/vendor/github.com/go-pkgz/rest/middleware.go
index 86b3cc13..c130a462 100644
--- a/backend/vendor/github.com/go-pkgz/rest/middleware.go
+++ b/backend/vendor/github.com/go-pkgz/rest/middleware.go
@@ -19,7 +19,6 @@ func Wrap(handler http.Handler, mws ...func(http.Handler) http.Handler) http.Han
return handler
}
-
// AppInfo adds custom app-info to the response header
func AppInfo(app, author, version string) func(http.Handler) http.Handler {
f := func(h http.Handler) http.Handler {
@@ -82,12 +81,11 @@ func Health(path string, checkers ...func(ctx context.Context) (name string, err
}
resp = append(resp, hh)
}
+ status := http.StatusOK
if anyError {
- w.WriteHeader(http.StatusServiceUnavailable)
- } else {
- w.WriteHeader(http.StatusOK)
+ status = http.StatusServiceUnavailable
}
- RenderJSON(w, resp)
+ _ = EncodeJSON(w, status, resp)
}
return http.HandlerFunc(fn)
}
@@ -147,13 +145,19 @@ func Maybe(mw func(http.Handler) http.Handler, maybeFn func(r *http.Request) boo
}
}
-// RealIP is a middleware that sets a http.Request's RemoteAddr to the results
-// of parsing either the X-Forwarded-For or X-Real-IP headers.
+// RealIP is a middleware that sets a http.Request's RemoteAddr to the client's real IP.
+// It checks headers in the following priority order:
+// 1. X-Real-IP - trusted proxy (nginx/reproxy) sets this to actual client
+// 2. CF-Connecting-IP - Cloudflare's header for original client
+// 3. X-Forwarded-For - leftmost public IP (original client in CDN/proxy chain)
+// 4. RemoteAddr - fallback for direct connections
+//
+// Only public IPs are accepted from headers; private/loopback/link-local IPs are skipped.
//
// This middleware should only be used if user can trust the headers sent with request.
// If reverse proxies are configured to pass along arbitrary header values from the client,
// or if this middleware used without a reverse proxy, malicious clients could set anything
-// as X-Forwarded-For header and attack the server in various ways.
+// as these headers and spoof their IP address.
func RealIP(h http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
if rip, err := realip.Get(r); err == nil {
diff --git a/backend/vendor/github.com/go-pkgz/rest/nocache.go b/backend/vendor/github.com/go-pkgz/rest/nocache.go
index aa0fa946..9808a0e5 100644
--- a/backend/vendor/github.com/go-pkgz/rest/nocache.go
+++ b/backend/vendor/github.com/go-pkgz/rest/nocache.go
@@ -29,21 +29,22 @@ var etagHeaders = []string{
// a router (or subrouter) from being cached by an upstream proxy and/or client.
//
// As per http://wiki.nginx.org/HttpProxyModule - NoCache sets:
-// Expires: Thu, 01 Jan 1970 00:00:00 UTC
-// Cache-Control: no-cache, private, max-age=0
-// X-Accel-Expires: 0
-// Pragma: no-cache (for HTTP/1.0 proxies/clients)
+//
+// Expires: Thu, 01 Jan 1970 00:00:00 UTC
+// Cache-Control: no-cache, private, max-age=0
+// X-Accel-Expires: 0
+// Pragma: no-cache (for HTTP/1.0 proxies/clients)
func NoCache(h http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
- // Delete any ETag headers that may have been set
+ // delete any ETag headers that may have been set
for _, v := range etagHeaders {
if r.Header.Get(v) != "" {
r.Header.Del(v)
}
}
- // Set our NoCache headers
+ // set our NoCache headers
for k, v := range noCacheHeaders {
w.Header().Set(k, v)
}
diff --git a/backend/vendor/github.com/go-pkgz/rest/onlyfrom.go b/backend/vendor/github.com/go-pkgz/rest/onlyfrom.go
index cccd77ed..acc8ff20 100644
--- a/backend/vendor/github.com/go-pkgz/rest/onlyfrom.go
+++ b/backend/vendor/github.com/go-pkgz/rest/onlyfrom.go
@@ -21,8 +21,7 @@ func OnlyFrom(onlyIps ...string) func(http.Handler) http.Handler {
}
matched, ip, err := matchSourceIP(r, onlyIps)
if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- RenderJSON(w, JSON{"error": fmt.Sprintf("can't get realip: %s", err)})
+ _ = EncodeJSON(w, http.StatusInternalServerError, JSON{"error": fmt.Sprintf("can't get realip: %s", err)})
return
}
if matched {
@@ -31,8 +30,7 @@ func OnlyFrom(onlyIps ...string) func(http.Handler) http.Handler {
return
}
- w.WriteHeader(http.StatusForbidden)
- RenderJSON(w, JSON{"error": fmt.Sprintf("ip %q rejected", ip)})
+ _ = EncodeJSON(w, http.StatusForbidden, JSON{"error": fmt.Sprintf("ip %q rejected", ip)})
}
return http.HandlerFunc(fn)
}
diff --git a/backend/vendor/github.com/go-pkgz/rest/realip/real.go b/backend/vendor/github.com/go-pkgz/rest/realip/real.go
index eb7a9525..ad10149f 100644
--- a/backend/vendor/github.com/go-pkgz/rest/realip/real.go
+++ b/backend/vendor/github.com/go-pkgz/rest/realip/real.go
@@ -33,49 +33,73 @@ var privateRanges = []ipRange{
{start: net.ParseIP("fe80::"), end: net.ParseIP("febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff")},
}
-// Get returns real ip from the given request
-// Prioritize public IPs over private IPs
+// Get returns real IP from the given request.
+// It checks headers in the following priority order:
+// 1. X-Real-IP - trusted proxy (nginx/reproxy) sets this to actual client
+// 2. CF-Connecting-IP - Cloudflare's header for original client
+// 3. X-Forwarded-For - leftmost public IP (original client in CDN chain)
+// 4. RemoteAddr - fallback for direct connections
+//
+// Only public IPs are accepted from headers; private/loopback/link-local IPs are skipped.
func Get(r *http.Request) (string, error) {
- var firstIP string
- for _, h := range []string{"X-Forwarded-For", "X-Real-Ip"} {
- addresses := strings.Split(r.Header.Get(h), ",")
- for i := len(addresses) - 1; i >= 0; i-- {
- ip := strings.TrimSpace(addresses[i])
- realIP := net.ParseIP(ip)
- if firstIP == "" && realIP != nil {
- firstIP = ip
- }
- // Guard against nil realIP
- if realIP == nil || !realIP.IsGlobalUnicast() || isPrivateSubnet(realIP) {
- continue
- }
- return ip, nil
+ // check X-Real-IP first (single value, set by trusted proxy)
+ if xRealIP := strings.TrimSpace(r.Header.Get("X-Real-IP")); xRealIP != "" {
+ if ip := net.ParseIP(xRealIP); isPublicIP(ip) {
+ return xRealIP, nil
}
}
- if firstIP != "" {
- return firstIP, nil
+ // check CF-Connecting-IP (Cloudflare's header)
+ if cfIP := strings.TrimSpace(r.Header.Get("CF-Connecting-IP")); cfIP != "" {
+ if ip := net.ParseIP(cfIP); isPublicIP(ip) {
+ return cfIP, nil
+ }
}
- // handle RemoteAddr which may be just an IP or IP:port
- remoteIP := r.RemoteAddr
+ // check X-Forwarded-For, find leftmost public IP
+ if xff := r.Header.Get("X-Forwarded-For"); xff != "" {
+ addresses := strings.Split(xff, ",")
+ for _, addr := range addresses {
+ ip := strings.TrimSpace(addr)
+ if parsedIP := net.ParseIP(ip); isPublicIP(parsedIP) {
+ return ip, nil
+ }
+ }
+ }
+
+ // fall back to RemoteAddr
+ return parseRemoteAddr(r.RemoteAddr)
+}
+
+// isPublicIP checks if the IP is a valid public (globally routable) IP address.
+func isPublicIP(ip net.IP) bool {
+ if ip == nil {
+ return false
+ }
+ if !ip.IsGlobalUnicast() {
+ return false
+ }
+ return !isPrivateSubnet(ip)
+}
+
+// parseRemoteAddr extracts and validates IP from RemoteAddr (handles both "ip" and "ip:port" formats).
+func parseRemoteAddr(remoteAddr string) (string, error) {
+ if remoteAddr == "" {
+ return "", fmt.Errorf("empty remote address")
+ }
// try to extract host from host:port format
- host, _, err := net.SplitHostPort(remoteIP)
+ host, _, err := net.SplitHostPort(remoteAddr)
if err == nil {
- remoteIP = host
+ remoteAddr = host
}
- // at this point remoteIP could be either:
- // 1. the host part extracted from host:port
- // 2. yhe original RemoteAddr if it doesn't contain a port
-
- // try to parse it as a valid IP address
- if netIP := net.ParseIP(remoteIP); netIP == nil {
- return "", fmt.Errorf("no valid ip found in %q", r.RemoteAddr)
+ // validate it's a proper IP address
+ if netIP := net.ParseIP(remoteAddr); netIP == nil {
+ return "", fmt.Errorf("no valid ip found in %q", remoteAddr)
}
- return remoteIP, nil
+ return remoteAddr, nil
}
// isPrivateSubnet - check to see if this ip is in a private subnet
diff --git a/backend/vendor/golang.org/x/sync/errgroup/errgroup.go b/backend/vendor/golang.org/x/sync/errgroup/errgroup.go
index 2f45dbc8..f69fd754 100644
--- a/backend/vendor/golang.org/x/sync/errgroup/errgroup.go
+++ b/backend/vendor/golang.org/x/sync/errgroup/errgroup.go
@@ -144,8 +144,8 @@ func (g *Group) SetLimit(n int) {
g.sem = nil
return
}
- if len(g.sem) != 0 {
- panic(fmt.Errorf("errgroup: modify limit while %v goroutines in the group are still active", len(g.sem)))
+ if active := len(g.sem); active != 0 {
+ panic(fmt.Errorf("errgroup: modify limit while %v goroutines in the group are still active", active))
}
g.sem = make(chan token, n)
}
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu.go b/backend/vendor/golang.org/x/sys/cpu/cpu.go
index 34c9ae76..63541994 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu.go
@@ -92,9 +92,6 @@ var ARM64 struct {
HasSHA2 bool // SHA2 hardware implementation
HasCRC32 bool // CRC32 hardware implementation
HasATOMICS bool // Atomic memory operation instruction set
- HasHPDS bool // Hierarchical permission disables in translations tables
- HasLOR bool // Limited ordering regions
- HasPAN bool // Privileged access never
HasFPHP bool // Half precision floating-point instruction set
HasASIMDHP bool // Advanced SIMD half precision instruction set
HasCPUID bool // CPUID identification scheme registers
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.go
index f449c679..af2aa99f 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.go
@@ -65,10 +65,10 @@ func setMinimalFeatures() {
func readARM64Registers() {
Initialized = true
- parseARM64SystemRegisters(getisar0(), getisar1(), getmmfr1(), getpfr0())
+ parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())
}
-func parseARM64SystemRegisters(isar0, isar1, mmfr1, pfr0 uint64) {
+func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {
// ID_AA64ISAR0_EL1
switch extractBits(isar0, 4, 7) {
case 1:
@@ -152,22 +152,6 @@ func parseARM64SystemRegisters(isar0, isar1, mmfr1, pfr0 uint64) {
ARM64.HasI8MM = true
}
- // ID_AA64MMFR1_EL1
- switch extractBits(mmfr1, 12, 15) {
- case 1, 2:
- ARM64.HasHPDS = true
- }
-
- switch extractBits(mmfr1, 16, 19) {
- case 1:
- ARM64.HasLOR = true
- }
-
- switch extractBits(mmfr1, 20, 23) {
- case 1, 2, 3:
- ARM64.HasPAN = true
- }
-
// ID_AA64PFR0_EL1
switch extractBits(pfr0, 16, 19) {
case 0:
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.s b/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.s
index a4f24b3b..3b0450a0 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.s
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_arm64.s
@@ -20,13 +20,6 @@ TEXT ·getisar1(SB),NOSPLIT,$0-8
MOVD R0, ret+0(FP)
RET
-// func getmmfr1() uint64
-TEXT ·getmmfr1(SB),NOSPLIT,$0-8
- // get Memory Model Feature Register 1 into x0
- MRS ID_AA64MMFR1_EL1, R0
- MOVD R0, ret+0(FP)
- RET
-
// func getpfr0() uint64
TEXT ·getpfr0(SB),NOSPLIT,$0-8
// get Processor Feature Register 0 into x0
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/backend/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
index e3fc5a8d..6ac6e1ef 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
@@ -8,6 +8,5 @@ package cpu
func getisar0() uint64
func getisar1() uint64
-func getmmfr1() uint64
func getpfr0() uint64
func getzfr0() uint64
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go b/backend/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
index 8df2079e..7f194678 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
@@ -8,5 +8,4 @@ package cpu
func getisar0() uint64 { return 0 }
func getisar1() uint64 { return 0 }
-func getmmfr1() uint64 { return 0 }
func getpfr0() uint64 { return 0 }
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/backend/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
index 19aea063..ebfb3fc8 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
@@ -167,7 +167,7 @@ func doinit() {
setMinimalFeatures()
return
}
- parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64mmfr1, cpuid.aa64pfr0)
+ parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)
Initialized = true
}
diff --git a/backend/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go b/backend/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go
index 87fd3a77..85b64d5c 100644
--- a/backend/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go
+++ b/backend/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go
@@ -59,7 +59,7 @@ func doinit() {
if !ok {
return
}
- parseARM64SystemRegisters(isar0, isar1, 0, 0)
+ parseARM64SystemRegisters(isar0, isar1, 0)
Initialized = true
}
diff --git a/backend/vendor/golang.org/x/sys/unix/mkerrors.sh b/backend/vendor/golang.org/x/sys/unix/mkerrors.sh
index 42517077..fd39be4e 100644
--- a/backend/vendor/golang.org/x/sys/unix/mkerrors.sh
+++ b/backend/vendor/golang.org/x/sys/unix/mkerrors.sh
@@ -256,6 +256,7 @@ struct ltchars {
#include
#include
#include
+#include
#include
#include
#include
@@ -613,7 +614,7 @@ ccflags="$@"
$2 !~ /IOC_MAGIC/ &&
$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||
$2 ~ /^(VM|VMADDR)_/ ||
- $2 ~ /^IOCTL_VM_SOCKETS_/ ||
+ $2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ ||
$2 ~ /^(TASKSTATS|TS)_/ ||
$2 ~ /^CGROUPSTATS_/ ||
$2 ~ /^GENL_/ ||
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux.go
index d0a75da5..120a7b35 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux.go
@@ -1615,6 +1615,8 @@ const (
IN_OPEN = 0x20
IN_Q_OVERFLOW = 0x4000
IN_UNMOUNT = 0x2000
+ IOCTL_MEI_CONNECT_CLIENT = 0xc0104801
+ IOCTL_MEI_CONNECT_CLIENT_VTAG = 0xc0144804
IPPROTO_AH = 0x33
IPPROTO_BEETPH = 0x5e
IPPROTO_COMP = 0x6c
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
index 1c37f9fb..97a61fc5 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
@@ -116,6 +116,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
index 6f54d34a..a0d6d498 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
@@ -116,6 +116,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
index 783ec5c1..dd9c903f 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
index ca83d3ba..384c61ca 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
@@ -120,6 +120,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
index 607e611c..6384c983 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
@@ -116,6 +116,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
index b9cb5bd3..553c1c6f 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x100
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
index 65b078a6..b3339f20 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x100
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
index 5298a303..177091d2 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x100
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
index 7bc557c8..c5abf156 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x100
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x80
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
index 152399bb..f1f3fadf 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x400
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
index 1a1ce240..203ad9c5 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x400
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
index 4231a1fb..4b9abcb2 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x400
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
index 21c0e952..f8798303 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xffffff0f
IPV6_FLOWLABEL_MASK = 0xffff0f00
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
index f00d1cd7..64347eb3 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
@@ -115,6 +115,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x80000
IN_NONBLOCK = 0x800
+ IOCTL_MEI_NOTIFY_GET = 0x80044803
+ IOCTL_MEI_NOTIFY_SET = 0x40044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
index bc8d539e..7d719117 100644
--- a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
+++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
@@ -119,6 +119,8 @@ const (
IEXTEN = 0x8000
IN_CLOEXEC = 0x400000
IN_NONBLOCK = 0x4000
+ IOCTL_MEI_NOTIFY_GET = 0x40044803
+ IOCTL_MEI_NOTIFY_SET = 0x80044802
IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
IPV6_FLOWINFO_MASK = 0xfffffff
IPV6_FLOWLABEL_MASK = 0xfffff
diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/backend/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
index 439548ec..50e8e644 100644
--- a/backend/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
+++ b/backend/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
@@ -104,7 +104,7 @@ type Statvfs_t struct {
Fsid uint32
Namemax uint32
Owner uint32
- Spare [4]uint32
+ Spare [4]uint64
Fstypename [32]byte
Mntonname [1024]byte
Mntfromname [1024]byte
diff --git a/backend/vendor/modules.txt b/backend/vendor/modules.txt
index 36c5ac3f..db103b77 100644
--- a/backend/vendor/modules.txt
+++ b/backend/vendor/modules.txt
@@ -7,7 +7,7 @@ github.com/Depado/bfchroma/v2
# github.com/PuerkitoBio/goquery v1.11.0
## explicit; go 1.24.0
github.com/PuerkitoBio/goquery
-# github.com/alecthomas/chroma/v2 v2.20.0
+# github.com/alecthomas/chroma/v2 v2.21.1
## explicit; go 1.22
github.com/alecthomas/chroma/v2
github.com/alecthomas/chroma/v2/formatters/html
@@ -56,7 +56,7 @@ github.com/go-chi/cors
github.com/go-oauth2/oauth2/v4
github.com/go-oauth2/oauth2/v4/errors
github.com/go-oauth2/oauth2/v4/server
-# github.com/go-pkgz/auth/v2 v2.1.0
+# github.com/go-pkgz/auth/v2 v2.1.1
## explicit; go 1.24.0
github.com/go-pkgz/auth/v2
github.com/go-pkgz/auth/v2/avatar
@@ -91,8 +91,8 @@ github.com/go-pkgz/repeater/strategy
# github.com/go-pkgz/repeater/v2 v2.2.0
## explicit; go 1.23
github.com/go-pkgz/repeater/v2
-# github.com/go-pkgz/rest v1.20.4
-## explicit; go 1.23.0
+# github.com/go-pkgz/rest v1.20.6
+## explicit; go 1.24.0
github.com/go-pkgz/rest
github.com/go-pkgz/rest/logger
github.com/go-pkgz/rest/realip
@@ -272,7 +272,7 @@ go.mongodb.org/mongo-driver/x/mongo/driver/wiremessage
## explicit; go 1.20
go.uber.org/goleak
go.uber.org/goleak/internal/stack
-# golang.org/x/crypto v0.45.0
+# golang.org/x/crypto v0.46.0
## explicit; go 1.24.0
golang.org/x/crypto/acme
golang.org/x/crypto/acme/autocert
@@ -283,16 +283,16 @@ golang.org/x/crypto/blowfish
golang.org/x/crypto/ocsp
golang.org/x/crypto/pbkdf2
golang.org/x/crypto/scrypt
-# golang.org/x/image v0.33.0
+# golang.org/x/image v0.34.0
## explicit; go 1.24.0
golang.org/x/image/draw
golang.org/x/image/math/f64
-# golang.org/x/net v0.47.0
+# golang.org/x/net v0.48.0
## explicit; go 1.24.0
golang.org/x/net/html
golang.org/x/net/html/atom
golang.org/x/net/idna
-# golang.org/x/oauth2 v0.33.0
+# golang.org/x/oauth2 v0.34.0
## explicit; go 1.24.0
golang.org/x/oauth2
golang.org/x/oauth2/authhandler
@@ -309,17 +309,17 @@ golang.org/x/oauth2/jws
golang.org/x/oauth2/jwt
golang.org/x/oauth2/microsoft
golang.org/x/oauth2/yandex
-# golang.org/x/sync v0.18.0
+# golang.org/x/sync v0.19.0
## explicit; go 1.24.0
golang.org/x/sync/errgroup
golang.org/x/sync/singleflight
-# golang.org/x/sys v0.38.0
+# golang.org/x/sys v0.39.0
## explicit; go 1.24.0
golang.org/x/sys/cpu
golang.org/x/sys/unix
golang.org/x/sys/windows
golang.org/x/sys/windows/registry
-# golang.org/x/text v0.31.0
+# golang.org/x/text v0.32.0
## explicit; go 1.24.0
golang.org/x/text/secure/bidirule
golang.org/x/text/transform