From d335929b071a4da9242a04d30e0996fb774c9ff8 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Mon, 15 Sep 2025 13:47:26 +0200 Subject: [PATCH 01/13] Update dependencies --- go.mod | 281 ++++---- go.sum | 801 ++++++++++----------- server/builtin/app.go | 2 +- server/config/mattermost_config_service.go | 31 - server/config/service.go | 20 +- server/config/test_service.go | 31 +- server/httpin/call.go | 6 - server/httpout/service.go | 15 +- server/plugin.go | 41 +- server/proxy/bindings_test.go | 2 +- server/proxy/expand.go | 4 +- server/proxy/expand_test.go | 4 +- server/proxy/install.go | 2 - server/proxy/invoke_oauth2.go | 2 - server/proxy/uninstall.go | 2 - server/telemetry/telemetry.go | 63 -- 16 files changed, 539 insertions(+), 768 deletions(-) delete mode 100644 server/config/mattermost_config_service.go delete mode 100644 server/telemetry/telemetry.go diff --git a/go.mod b/go.mod index 378308395..f7511691d 100644 --- a/go.mod +++ b/go.mod @@ -1,223 +1,204 @@ module github.com/mattermost/mattermost-plugin-apps -go 1.19 +go 1.24.5 require ( github.com/aws/aws-lambda-go v1.37.0 - github.com/aws/aws-sdk-go v1.44.293 + github.com/aws/aws-sdk-go v1.55.7 github.com/awslabs/aws-lambda-go-api-proxy v0.13.3 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/golang/mock v1.6.0 - github.com/google/go-cmp v0.5.9 - github.com/gorilla/mux v1.8.0 + github.com/google/go-cmp v0.7.0 + github.com/gorilla/mux v1.8.1 github.com/hashicorp/go-getter v1.6.2 github.com/hashicorp/go-multierror v1.1.1 - github.com/mattermost/mattermost/server/public v0.0.8 - github.com/mattermost/mattermost/server/v8 v8.0.0-20230821092930-95b76e42ad62 - github.com/nicksnyder/go-i18n/v2 v2.2.1 + github.com/mattermost/mattermost/server/public v0.1.19 + github.com/mattermost/mattermost/server/v8 v8.0.0-20250911225601-78050bb0d35d + github.com/nicksnyder/go-i18n/v2 v2.6.0 github.com/openfaas/faas-cli v0.0.0-20230119133646-fea2bf5a6d0c github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.7.0 - github.com/stretchr/testify v1.8.4 + github.com/spf13/cobra v1.9.1 + github.com/stretchr/testify v1.10.0 go.uber.org/zap v1.24.0 - golang.org/x/crypto v0.10.0 - golang.org/x/net v0.11.0 - golang.org/x/oauth2 v0.7.0 + golang.org/x/crypto v0.38.0 + golang.org/x/net v0.40.0 + golang.org/x/oauth2 v0.30.0 gopkg.in/yaml.v3 v3.0.1 ) require ( - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.1 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.13.0 // indirect - cloud.google.com/go/storage v1.28.1 // indirect - code.sajari.com/docconv v1.3.5 // indirect + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + code.sajari.com/docconv/v2 v2.0.0-pre.4 // indirect + filippo.io/edwards25519 v1.1.0 // indirect github.com/JalfResi/justext v0.0.0-20221106200834-be571e3e3052 // indirect - github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/PuerkitoBio/goquery v1.8.1 // indirect - github.com/RoaringBitmap/roaring v1.3.0 // indirect - github.com/advancedlogic/GoOse v0.0.0-20210820140952-9d5822d4a625 // indirect - github.com/andybalholm/brotli v1.0.5 // indirect - github.com/andybalholm/cascadia v1.3.2 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/PuerkitoBio/goquery v1.10.3 // indirect + github.com/STARRY-S/zip v0.2.1 // indirect + github.com/advancedlogic/GoOse v0.0.0-20231203033844-ae6b36caf275 // indirect + github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3 // indirect + github.com/andybalholm/cascadia v1.3.3 // indirect + github.com/anthonynsimon/bild v0.14.0 // indirect github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de // indirect - github.com/avct/uasurfer v0.0.0-20191028135549-26b5daa857f1 // indirect + github.com/avct/uasurfer v0.0.0-20250506104815-f2613aa2d406 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/beevik/etree v1.5.1 // indirect + github.com/bep/imagemeta v0.12.0 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/bits-and-blooms/bloom/v3 v3.5.0 // indirect + github.com/bits-and-blooms/bitset v1.22.0 // indirect + github.com/bits-and-blooms/bloom/v3 v3.7.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/blevesearch/bleve/v2 v2.3.8 // indirect - github.com/blevesearch/bleve_index_api v1.0.5 // indirect - github.com/blevesearch/geo v0.1.17 // indirect - github.com/blevesearch/go-porterstemmer v1.0.3 // indirect - github.com/blevesearch/gtreap v0.1.1 // indirect - github.com/blevesearch/mmap-go v1.0.4 // indirect - github.com/blevesearch/scorch_segment_api/v2 v2.1.5 // indirect - github.com/blevesearch/segment v0.9.1 // indirect - github.com/blevesearch/snowballstem v0.9.0 // indirect - github.com/blevesearch/upsidedown_store_api v1.0.2 // indirect - github.com/blevesearch/vellum v1.0.9 // indirect - github.com/blevesearch/zapx/v11 v11.3.8 // indirect - github.com/blevesearch/zapx/v12 v12.3.8 // indirect - github.com/blevesearch/zapx/v13 v13.3.8 // indirect - github.com/blevesearch/zapx/v14 v14.3.8 // indirect - github.com/blevesearch/zapx/v15 v15.3.11 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/bodgit/plumbing v1.3.0 // indirect + github.com/bodgit/sevenzip v1.6.0 // indirect + github.com/bodgit/windows v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/disintegration/imaging v1.6.2 // indirect github.com/drone/envsubst v1.0.3 // indirect - github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect + github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dyatlov/go-opengraph/opengraph v0.0.0-20220524092352-606d7b1e5f8a // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/fatih/set v0.2.1 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/francoispqt/gojay v1.2.13 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.22.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/getsentry/sentry-go v0.32.0 // indirect github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573 // indirect - github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect - github.com/go-resty/resty/v2 v2.7.0 // indirect - github.com/go-sql-driver/mysql v1.7.1 // indirect - github.com/golang-jwt/jwt/v5 v5.0.0 // indirect - github.com/golang-migrate/migrate/v4 v4.16.2 // indirect + github.com/go-asn1-ber/asn1-ber v1.5.7 // indirect + github.com/go-ini/ini v1.67.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-resty/resty/v2 v2.16.5 // indirect + github.com/go-sql-driver/mysql v1.9.2 // indirect + github.com/goccy/go-json v0.10.5 // indirect + github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-migrate/migrate/v4 v4.18.3 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect - github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.7.1 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect - github.com/gorilla/css v1.0.0 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/schema v1.2.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/graph-gophers/dataloader/v6 v6.0.0 // indirect - github.com/graph-gophers/graphql-go v1.5.1-0.20230110080634-edea822f558a // indirect + github.com/gorilla/css v1.0.1 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/schema v1.4.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/h2non/go-is-svg v0.0.0-20160927212452-35e8c4b0612c // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-plugin v1.4.10 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.2.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jmoiron/sqlx v1.3.5 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.16.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/jmoiron/sqlx v1.4.0 // indirect + github.com/jonboulle/clockwork v0.5.0 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/klauspost/pgzip v1.2.6 // indirect - github.com/kr/pretty v0.3.1 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 // indirect + github.com/ledongthuc/pdf v0.0.0-20250511090121-5959a4027728 // indirect github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5 // indirect github.com/lib/pq v1.10.9 // indirect github.com/mattermost/go-i18n v1.11.1-0.20211013152124-5c415071e404 // indirect - github.com/mattermost/gziphandler v0.0.1 // indirect - github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d // indirect - github.com/mattermost/logr/v2 v2.0.16 // indirect - github.com/mattermost/morph v1.0.5-0.20230511171014-e76e25978d56 // indirect + github.com/mattermost/gosaml2 v0.10.0 // indirect + github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956 // indirect + github.com/mattermost/logr/v2 v2.0.22 // indirect + github.com/mattermost/morph v1.1.0 // indirect github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0 // indirect - github.com/mattermost/squirrel v0.2.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect - github.com/mholt/archiver/v3 v3.5.1 // indirect - github.com/microcosm-cc/bluemonday v1.0.24 // indirect + github.com/mattermost/squirrel v0.5.0 // indirect + github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mholt/archives v0.1.2 // indirect + github.com/microcosm-cc/bluemonday v1.0.27 // indirect + github.com/minio/crc64nvme v1.0.2 // indirect github.com/minio/md5-simd v1.1.2 // indirect - github.com/minio/minio-go/v7 v7.0.59 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect + github.com/minio/minio-go/v7 v7.0.91 // indirect + github.com/minio/minlz v1.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mschoch/smat v0.2.0 // indirect - github.com/nwaples/rardecode v1.1.3 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/nwaples/rardecode/v2 v2.1.0 // indirect github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/otiai10/gosseract/v2 v2.4.0 // indirect + github.com/otiai10/gosseract/v2 v2.4.1 // indirect github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/philhofer/fwd v1.1.2 // indirect - github.com/pierrec/lz4/v4 v4.1.18 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/redis/go-redis/v9 v9.0.5 // indirect + github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect + github.com/pierrec/lz4/v4 v4.1.22 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/redis/go-redis/v9 v9.8.0 // indirect + github.com/redis/rueidis v1.0.59 // indirect github.com/reflog/dateconstraints v0.2.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/richardlehane/mscfb v1.0.4 // indirect - github.com/richardlehane/msoleps v1.0.3 // indirect - github.com/rivo/uniseg v0.4.4 // indirect - github.com/rs/cors v1.9.0 // indirect - github.com/rs/xid v1.5.0 // indirect - github.com/rudderlabs/analytics-go v3.3.3+incompatible // indirect - github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd // indirect + github.com/richardlehane/msoleps v1.0.4 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/rs/xid v1.6.0 // indirect + github.com/russellhaering/goxmldsig v1.5.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/segmentio/backo-go v1.0.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/splitio/go-client/v6 v6.3.3 // indirect - github.com/splitio/go-split-commons/v4 v4.3.5 // indirect - github.com/splitio/go-toolkit/v5 v5.3.1 // indirect + github.com/sorairolake/lzip-go v0.3.5 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/splitio/go-client/v6 v6.7.0 // indirect + github.com/splitio/go-split-commons/v6 v6.1.0 // indirect + github.com/splitio/go-toolkit/v5 v5.4.0 // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/therootcompany/xz v1.0.1 // indirect github.com/throttled/throttled v2.2.5+incompatible // indirect - github.com/tidwall/gjson v1.14.4 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.1 // indirect - github.com/tinylib/msgp v1.1.8 // indirect - github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect - github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - github.com/ulikunitz/xz v0.5.11 // indirect - github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/tinylib/msgp v1.2.5 // indirect + github.com/ulikunitz/xz v0.5.12 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/wiggin77/merror v1.0.5 // indirect github.com/wiggin77/srslog v1.0.1 // indirect - github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect - github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect - github.com/yuin/goldmark v1.5.4 // indirect - go.etcd.io/bbolt v1.3.7 // indirect + github.com/yuin/goldmark v1.7.11 // indirect go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/atomic v1.11.0 // indirect - go.uber.org/goleak v1.1.12 // indirect - go.uber.org/multierr v1.7.0 // indirect - golang.org/x/image v0.8.0 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect - golang.org/x/tools v0.10.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.114.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.56.1 // indirect - google.golang.org/protobuf v1.31.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go4.org v0.0.0-20230225012048-214862532bf5 // indirect + golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect + golang.org/x/image v0.27.0 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/sync v0.14.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + golang.org/x/time v0.6.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9 // indirect + google.golang.org/grpc v1.72.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/mail.v2 v2.3.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - lukechampine.com/uint128 v1.3.0 // indirect - modernc.org/cc/v3 v3.41.0 // indirect - modernc.org/ccgo/v3 v3.16.14 // indirect - modernc.org/libc v1.24.1 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.6.0 // indirect - modernc.org/opt v0.1.3 // indirect - modernc.org/sqlite v1.23.1 // indirect - modernc.org/strutil v1.1.3 // indirect - modernc.org/token v1.1.0 // indirect + modernc.org/libc v1.65.6 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.10.0 // indirect + modernc.org/sqlite v1.37.0 // indirect ) diff --git a/go.sum b/go.sum index bdcad3cab..d361dbc30 100644 --- a/go.sum +++ b/go.sum @@ -20,35 +20,21 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/errorreporting v0.2.0/go.mod h1:QkYzg92wgpJ0ChLdcO5LhtCEyYwq0tIa+jLrj6Nh5ME= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -58,133 +44,113 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcbgI= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -code.sajari.com/docconv v1.3.5 h1:RBBs6aT3/5gHHWzAaxBj85e3ozsu05s2kAslhW7i+Ag= -code.sajari.com/docconv v1.3.5/go.mod h1:EDkTrwa2yO2O9EbVpD3dlHXDVcxbfKDWnDNE/8vbbP8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +code.sajari.com/docconv/v2 v2.0.0-pre.4 h1:1yQrSTah9rMSC/s1T9bq2H2j1NuRTppeApqZf2A8Zbc= +code.sajari.com/docconv/v2 v2.0.0-pre.4/go.mod h1:+pfeEYCOA46E5fq44sh1OKEkO9hsptg8XRioeP1vvPg= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v6 v6.1.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= -github.com/HdrHistogram/hdrhistogram-go v0.9.0 h1:dpujRju0R4M/QZzcnR1LH1qm+TVG3UzkWdp5tH1WMcg= -github.com/JalfResi/justext v0.0.0-20170829062021-c0282dea7198/go.mod h1:0SURuH1rsE8aVWvutuMZghRNrNrYEUzibzJfhEYR8L0= github.com/JalfResi/justext v0.0.0-20221106200834-be571e3e3052 h1:8T2zMbhLBbH9514PIQVHdsGhypMrsB4CxwbldKA9sBA= github.com/JalfResi/justext v0.0.0-20221106200834-be571e3e3052/go.mod h1:0SURuH1rsE8aVWvutuMZghRNrNrYEUzibzJfhEYR8L0= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.4.1/go.mod h1:T9ezsOHcCrDCgA8aF1Cqr3sSYbO/xgdy8/R/XiIMAhA= -github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= -github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= -github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= -github.com/RoaringBitmap/roaring v1.3.0 h1:aQmu9zQxDU0uhwR8SXOH/OrqEf+X8A0LQmwW3JX8Lcg= -github.com/RoaringBitmap/roaring v1.3.0/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE= +github.com/PuerkitoBio/goquery v1.10.3 h1:pFYcNSqHxBD06Fpj/KsbStFRsgRATgnf3LeXiUkhzPo= +github.com/PuerkitoBio/goquery v1.10.3/go.mod h1:tMUX0zDMHXYlAQk6p35XxQMqMweEKB7iK7iLNd4RH4Y= +github.com/STARRY-S/zip v0.2.1 h1:pWBd4tuSGm3wtpoqRZZ2EAwOmcHK6XFf7bU9qcJXyFg= +github.com/STARRY-S/zip v0.2.1/go.mod h1:xNvshLODWtC4EJ702g7cTYn13G53o1+X9BWnPFpcWV4= github.com/Shopify/goreferrer v0.0.0-20210630161223-536fa16abd6f/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/advancedlogic/GoOse v0.0.0-20191112112754-e742535969c1/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w= -github.com/advancedlogic/GoOse v0.0.0-20210820140952-9d5822d4a625 h1:LZIP5Bj5poWWRZ8fcL4ZwCupb4FwcTFK2RCTxkGnCX8= -github.com/advancedlogic/GoOse v0.0.0-20210820140952-9d5822d4a625/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w= +github.com/advancedlogic/GoOse v0.0.0-20231203033844-ae6b36caf275 h1:Kuhf+w+ilOGoXaR4O4nZ6Dp+ZS83LdANUjwyMXsPGX4= +github.com/advancedlogic/GoOse v0.0.0-20231203033844-ae6b36caf275/go.mod h1:98NztIIMIntZGtQVIs8H85Q5b88fTbwWFbLz/lM9/xU= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= -github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= -github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3 h1:8PmGpDEZl9yDpcdEr6Odf23feCxK3LNUNMxjXg41pZQ= +github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= -github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= -github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY= -github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= -github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= -github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= +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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anthonynsimon/bild v0.14.0 h1:IFRkmKdNdqmexXHfEU7rPlAmdUZ8BDZEGtGHDnGWync= +github.com/anthonynsimon/bild v0.14.0/go.mod h1:hcvEAyBjTW69qkKJTfpcDQ83sSZHxwOunsseDfeQhUs= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/araddon/dateparse v0.0.0-20180729174819-cfd92a431d0e/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= -github.com/araddon/dateparse v0.0.0-20200409225146-d820a6159ab1/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/avct/uasurfer v0.0.0-20191028135549-26b5daa857f1 h1:9h8f71kuF1pqovnn9h7LTHLEjxzyQaj0j1rQq5nsMM4= -github.com/avct/uasurfer v0.0.0-20191028135549-26b5daa857f1/go.mod h1:noBAuukeYOXa0aXGqxr24tADqkwDO2KRD15FsuaZ5a8= +github.com/avct/uasurfer v0.0.0-20250506104815-f2613aa2d406 h1:5/KfwL9TS8yNtUSunutqifcSC8rdX9PNdvbSsw/X/lQ= +github.com/avct/uasurfer v0.0.0-20250506104815-f2613aa2d406/go.mod h1:s+GCtuP4kZNxh1WGoqdWI1+PbluBcycrMMWuKQ9e5Nk= github.com/aws/aws-lambda-go v1.19.1/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= github.com/aws/aws-lambda-go v1.37.0 h1:WXkQ/xhIcXZZ2P5ZBEw+bbAKeCEcb5NtiYpSwVVzIXg= github.com/aws/aws-lambda-go v1.37.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= -github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= -github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/awslabs/aws-lambda-go-api-proxy v0.13.3 h1:kGtltTONdJa0Bmot9phYw3ucCg2SExj6mH00I1aga8Y= github.com/awslabs/aws-lambda-go-api-proxy v0.13.3/go.mod h1:S5mIpII0ID7L9o6bN8VNwO69UpWMg/j4IympsjtKghE= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/aymerick/raymond v2.0.2+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= +github.com/beevik/etree v1.5.1 h1:TC3zyxYp+81wAmbsi8SWUpZCurbxa6S8RITYRSkNRwo= +github.com/beevik/etree v1.5.1/go.mod h1:gPNJNaBGVZ9AwsidazFZyygnd+0pAU38N4D+WemwKNs= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bep/imagemeta v0.12.0 h1:ARf+igs5B7pf079LrqRnwzQ/wEB8Q9v4NSDRZO1/F5k= +github.com/bep/imagemeta v0.12.0/go.mod h1:23AF6O+4fUi9avjiydpKLStUNtJr5hJB4rarG18JpN8= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= -github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bits-and-blooms/bloom/v3 v3.5.0 h1:AKDvi1V3xJCmSR6QhcBfHbCN4Vf8FfxeWkMNQfmAGhY= -github.com/bits-and-blooms/bloom/v3 v3.5.0/go.mod h1:Y8vrn7nk1tPIlmLtW2ZPV+W7StdVMor6bC1xgpjMZFs= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= +github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bloom/v3 v3.7.0 h1:VfknkqV4xI+PsaDIsoHueyxVDZrfvMn56jeWUzvzdls= +github.com/bits-and-blooms/bloom/v3 v3.7.0/go.mod h1:VKlUSvp0lFIYqxJjzdnSsZEw4iHb1kOL2tfHTgyJBHg= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/blevesearch/bleve/v2 v2.3.8 h1:IqFyMJ73n4gY8AmVqM8Sa6EtAZ5beE8yramVqCvs2kQ= -github.com/blevesearch/bleve/v2 v2.3.8/go.mod h1:Lh9aZEHrLKxwPnW4z4lsBEGnflZQ1V/aWP/t+htsiDw= -github.com/blevesearch/bleve_index_api v1.0.5 h1:Lc986kpC4Z0/n1g3gg8ul7H+lxgOQPcXb9SxvQGu+tw= -github.com/blevesearch/bleve_index_api v1.0.5/go.mod h1:YXMDwaXFFXwncRS8UobWs7nvo0DmusriM1nztTlj1ms= -github.com/blevesearch/geo v0.1.17 h1:AguzI6/5mHXapzB0gE9IKWo+wWPHZmXZoscHcjFgAFA= -github.com/blevesearch/geo v0.1.17/go.mod h1:uRMGWG0HJYfWfFJpK3zTdnnr1K+ksZTuWKhXeSokfnM= -github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= -github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= -github.com/blevesearch/gtreap v0.1.1 h1:2JWigFrzDMR+42WGIN/V2p0cUvn4UP3C4Q5nmaZGW8Y= -github.com/blevesearch/gtreap v0.1.1/go.mod h1:QaQyDRAT51sotthUWAH4Sj08awFSSWzgYICSZ3w0tYk= -github.com/blevesearch/mmap-go v1.0.4 h1:OVhDhT5B/M1HNPpYPBKIEJaD0F3Si+CrEKULGCDPWmc= -github.com/blevesearch/mmap-go v1.0.4/go.mod h1:EWmEAOmdAS9z/pi/+Toxu99DnsbhG1TIxUoRmJw/pSs= -github.com/blevesearch/scorch_segment_api/v2 v2.1.5 h1:1g713kpCQZ8u4a3stRGBfrwVOuGRnmxOVU5MQkUPrHU= -github.com/blevesearch/scorch_segment_api/v2 v2.1.5/go.mod h1:f2nOkKS1HcjgIWZgDAErgBdxmr2eyt0Kn7IY+FU1Xe4= -github.com/blevesearch/segment v0.9.1 h1:+dThDy+Lvgj5JMxhmOVlgFfkUtZV2kw49xax4+jTfSU= -github.com/blevesearch/segment v0.9.1/go.mod h1:zN21iLm7+GnBHWTao9I+Au/7MBiL8pPFtJBJTsk6kQw= -github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= -github.com/blevesearch/snowballstem v0.9.0/go.mod h1:PivSj3JMc8WuaFkTSRDW2SlrulNWPl4ABg1tC/hlgLs= -github.com/blevesearch/upsidedown_store_api v1.0.2 h1:U53Q6YoWEARVLd1OYNc9kvhBMGZzVrdmaozG2MfoB+A= -github.com/blevesearch/upsidedown_store_api v1.0.2/go.mod h1:M01mh3Gpfy56Ps/UXHjEO/knbqyQ1Oamg8If49gRwrQ= -github.com/blevesearch/vellum v1.0.9 h1:PL+NWVk3dDGPCV0hoDu9XLLJgqU4E5s/dOeEJByQ2uQ= -github.com/blevesearch/vellum v1.0.9/go.mod h1:ul1oT0FhSMDIExNjIxHqJoGpVrBpKCdgDQNxfqgJt7k= -github.com/blevesearch/zapx/v11 v11.3.8 h1:bhJyuzkHjVCXegv9/nwXEWJf/NGvApL/N2aBM7jlZrQ= -github.com/blevesearch/zapx/v11 v11.3.8/go.mod h1:W/dwGRt6/Fik7aEdSymBHknA+CLhj/VFHDfOnbfT0xE= -github.com/blevesearch/zapx/v12 v12.3.8 h1:2iOBdzwlrvYx2CHh0hRtYni/uyBjwRj+5rgUQ0vHXho= -github.com/blevesearch/zapx/v12 v12.3.8/go.mod h1:04059x924iuaWsuLFNvKx/JV76aRAgTqDuygzKKRBfU= -github.com/blevesearch/zapx/v13 v13.3.8 h1:xqsFb+EZajPRMiuk4vItuSaIOtux0p7MWTtxvsG0EUo= -github.com/blevesearch/zapx/v13 v13.3.8/go.mod h1:t4lMpGlRiUmC5pLKKgICF7sJcVtD7fF7zhXeBVNFFBs= -github.com/blevesearch/zapx/v14 v14.3.8 h1:HXGGdVZQGG9qOfvj5Ihcm0JJIvUdkI3it2OT46Lx8qo= -github.com/blevesearch/zapx/v14 v14.3.8/go.mod h1:vS6exLagv0vXmgpUbNRZC6UuEV0xwTfCmgaWgjLmf/U= -github.com/blevesearch/zapx/v15 v15.3.11 h1:dstyZki9s10FNLsW4LpEvPQ+fmM3nX15h4wKfcBwnEg= -github.com/blevesearch/zapx/v15 v15.3.11/go.mod h1:hiYbBDf5/Ud/Eji0faUmMTOyeOjcl8q1vWGgRe7+bIQ= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= +github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU= +github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs= +github.com/bodgit/sevenzip v1.6.0 h1:a4R0Wu6/P1o1pP/3VV++aEOcyeBxeO/xE2Y9NSTrr6A= +github.com/bodgit/sevenzip v1.6.0/go.mod h1:zOBh9nJUof7tcrlqJFv1koWRrhz3LbDbUNngkuZxLMc= +github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4= +github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao= -github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -194,11 +160,6 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -208,11 +169,12 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= @@ -222,13 +184,11 @@ github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3/go.mod h1:hEfFau github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= -github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE= github.com/drone/envsubst v1.0.3 h1:PCIBwNDYjs50AsLZPYdfhSATKaRg/FJmDc2D6+C2x8g= github.com/drone/envsubst v1.0.3/go.mod h1:N2jZmlMufstn1KEqvbHjw40h1KyTmnVzHcSc9bFiJ2g= -github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY= -github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= +github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4= +github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -242,48 +202,51 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= +github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/getsentry/sentry-go v0.22.0 h1:XNX9zKbv7baSEI65l+H1GEJgSeIC1c7EN5kluWaP6dM= -github.com/getsentry/sentry-go v0.22.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/getsentry/sentry-go v0.32.0 h1:YKs+//QmwE3DcYtfKRH8/KyOOF/I6Qnx7qYGNHCGmCY= +github.com/getsentry/sentry-go v0.32.0/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573 h1:u8AQ9bPa9oC+8/A/jlWouakhIvkFfuxgIIRjiy8av7I= github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573/go.mod h1:eBvb3i++NHDH4Ugo9qCvMw8t0mTSctaEa5blJbWcNxs= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-asn1-ber/asn1-ber v1.3.2-0.20191121212151-29be175fc3a3/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A= -github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-asn1-ber/asn1-ber v1.5.7 h1:DTX+lbVTWaTw1hQ+PbZPlnDZPEIs0SS/GCZAl535dDk= +github.com/go-asn1-ber/asn1-ber v1.5.7/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-chi/chi/v5 v5.0.2/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -292,30 +255,29 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-resty/resty/v2 v2.0.0/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= -github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU= -github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= -github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= -github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/goccy/go-json v0.9.4/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofiber/fiber/v2 v2.1.0/go.mod h1:aG+lMkwy3LyVit4CnmYUbUdgjpc3UYOltvlJZ78rgQ0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= -github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang-migrate/migrate/v4 v4.16.2 h1:8coYbMKUyInrFk1lfGfRovTLAW7PhWp8qQDT2iKfuoA= -github.com/golang-migrate/migrate/v4 v4.16.2/go.mod h1:pfcJX4nPHaVdc5nmdCikFBWtm+UBpiZjRNNsyBbp0/o= +github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-migrate/migrate/v4 v4.18.3 h1:EYGkoOsvgHHfm5U/naS1RP/6PL/Xv3S4B/swMiAmDLs= +github.com/golang-migrate/migrate/v4 v4.18.3/go.mod h1:99BKpIi6ruaaXRM1A77eqZ+FWPQ3cfRa+ZVy5bmWMaY= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20230421003525-6adc56603217 h1:HKlyj6in2JV6wVkmQ4XmG/EIm+SCYlPZ+V4GWit7Z+I= -github.com/golang/geo v0.0.0-20230421003525-6adc56603217/go.mod h1:8wI0hitZ3a1IxZfeH3/5I97CI8i5cLGsYe7xNhQGs9U= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -350,13 +312,12 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -372,8 +333,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= @@ -382,8 +344,8 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -396,44 +358,41 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.7.1 h1:gF4c0zjUP2H/s/hEGyLA3I0fA2ZWjzYiONAD6cvPr8A= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20220221023154-0b2280d3ff96/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= -github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= +github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= -github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/schema v1.4.1 h1:jUg5hUjCSDZpNGLuXQOgIWGdlgrIdYvgQ0wZtdK1M3E= +github.com/gorilla/schema v1.4.1/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/dataloader/v6 v6.0.0 h1:qBpmq3B8PIQesoh0EJXKGfw+ulMUb+KFl4IZOe9ScWg= -github.com/graph-gophers/dataloader/v6 v6.0.0/go.mod h1:J15OZSnOoZgMkijpbZcwCmglIDYqlUiTEE1xLPbyqZM= -github.com/graph-gophers/graphql-go v1.5.1-0.20230110080634-edea822f558a h1:i0+Se9S+2zL5CBxJouqn2Ej6UQMwH1c57ZB6DVnqck4= -github.com/graph-gophers/graphql-go v1.5.1-0.20230110080634-edea822f558a/go.mod h1:YtmJZDLbF1YYNrlNAuiO5zAStUWc3XZT07iGsVqe1Os= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -449,15 +408,15 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.4.10 h1:xUbmA4jC6Dq163/fWcp8P3JuHilrHHMLNRxzGQJ9hNk= -github.com/hashicorp/go-plugin v1.4.10/go.mod h1:6/1TEzT0eQznvI/gV2CM29DLSkAK/e58mUWKVsPaph0= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= @@ -471,15 +430,17 @@ github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -492,23 +453,25 @@ github.com/iris-contrib/httpexpect/v2 v2.3.1/go.mod h1:ICTf89VBKSD3KB0fsyyHviKF8 github.com/iris-contrib/jade v1.1.4/go.mod h1:EDqR+ur9piDl6DUgs6qRrlfzmlx/D5UybogqrXvJTBE= github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= github.com/jaytaylor/html2text v0.0.0-20180606194806-57d518f124b0/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= -github.com/jaytaylor/html2text v0.0.0-20200412013138-3577fbdbcff7/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056 h1:iCHtR9CQyktQ5+f3dMVZfwD2KWJUgm7M0gdL9NGr8KA= github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= -github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= +github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= +github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= +github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -523,31 +486,27 @@ github.com/kataras/pio v0.0.10/go.mod h1:gS3ui9xSD+lAUpbYnjOGiQyY7sUMJO+EHpiRzht github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kataras/tunnel v0.0.3/go.mod h1:VOlCoaUE5zN1buE+yAjWCkjfQ9hxGuhomKLsjei/5Zs= github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= -github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -561,12 +520,11 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo= -github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/ledongthuc/pdf v0.0.0-20250511090121-5959a4027728 h1:QwWKgMY28TAXaDl+ExRDqGQltzXqN/xypdKP86niVn8= +github.com/ledongthuc/pdf v0.0.0-20250511090121-5959a4027728/go.mod h1:1fEHWurg7pvf5SG6XNE5Q8UZmOwex51Mkx3SLhrW5B4= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5 h1:W7p+m/AECTL3s/YR5RpQ4hz5SjNeKzZBl1q36ws12s0= github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5/go.mod h1:QMe2wuKJ0o7zIVE8AqiT8rd8epmm6WDIZ2wyuBqYPzM= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= @@ -578,63 +536,66 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= github.com/mattermost/go-i18n v1.11.1-0.20211013152124-5c415071e404 h1:Khvh6waxG1cHc4Cz5ef9n3XVCxRWpAKUtqg9PJl5+y8= github.com/mattermost/go-i18n v1.11.1-0.20211013152124-5c415071e404/go.mod h1:RyS7FDNQlzF1PsjbJWHRI35exqaKGSO9qD4iv8QjE34= -github.com/mattermost/gziphandler v0.0.1 h1:uXHcXF5agnQ6bXabvpiwwwZOlCYoa7mKHH0lxns/o8w= -github.com/mattermost/gziphandler v0.0.1/go.mod h1:CvvZR7sXqhj81V2swXuQY7T04Ccc89u7W7pHNPKev8g= -github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d h1:/RJ/UV7M5c7L2TQ0KNm4yZxxFvC1nvRz/gY/Daa35aI= -github.com/mattermost/ldap v0.0.0-20201202150706-ee0e6284187d/go.mod h1:HLbgMEI5K131jpxGazJ97AxfPDt31osq36YS1oxFQPQ= -github.com/mattermost/logr/v2 v2.0.16 h1:jnePX4cPskC3WDFvUardh/xZfxNdsFXbEERJQ1kUEDE= -github.com/mattermost/logr/v2 v2.0.16/go.mod h1:1dm/YhTpozsqANXxo5Pi5zYLBsal2xY0pX+JZNbzYJY= -github.com/mattermost/mattermost/server/public v0.0.8 h1:YFgI5zT2U5xOvrYMb7s1YtwuLGNFModi8XJMS1zZHWE= -github.com/mattermost/mattermost/server/public v0.0.8/go.mod h1:sgXQrYzs+IJy51mB8E8OBljagk2u3YwQRoYlBH5goiw= -github.com/mattermost/mattermost/server/v8 v8.0.0-20230821092930-95b76e42ad62 h1:ngZcLEmP6O8ywG3hcwTTzpDN0z9gnyCaV+tKJmdNFQc= -github.com/mattermost/mattermost/server/v8 v8.0.0-20230821092930-95b76e42ad62/go.mod h1:XCndd3uBMn2ItpA9QPAIeuWXkzIKPNgib24Z+I66BI0= -github.com/mattermost/morph v1.0.5-0.20230511171014-e76e25978d56 h1:SjFYbWvmuf73d/KaYlnHosPpB3/k38ebr1WWw9X5XKc= -github.com/mattermost/morph v1.0.5-0.20230511171014-e76e25978d56/go.mod h1:gD+EaqX2UMyyuzmF4PFh4r33XneQ8Nzi+0E8nXjMa3A= +github.com/mattermost/gosaml2 v0.10.0 h1:yG7K6rHF0c46IoeA6LmKvVACte3bwoM0BcclCGU4jnU= +github.com/mattermost/gosaml2 v0.10.0/go.mod h1:1nMAdE2Psxaz+pj79Oytayi+hC3aZUi3SmJQlIe+sLM= +github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956 h1:Y1Tu/swM31pVwwb2BTCsOdamENjjWCI6qmfHLbk6OZI= +github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956/go.mod h1:SRl30Lb7/QoYyohYeVBuqYvvmXSZJxZgiV3Zf6VbxjI= +github.com/mattermost/logr/v2 v2.0.22 h1:npFkXlkAWR9J8payh8ftPcCZvLbHSI125mAM5/r/lP4= +github.com/mattermost/logr/v2 v2.0.22/go.mod h1:0sUKpO+XNMZApeumaid7PYaUZPBIydfuWZ0dqixXo+s= +github.com/mattermost/mattermost/server/public v0.1.19 h1:0ArULo/mjz2q/XpC4Lks4mKPF3E9LktMfw+U6g2m7q0= +github.com/mattermost/mattermost/server/public v0.1.19/go.mod h1:QgyRblfwvhZuO99tn/Hzokv6H+/ZEglfqUywLDd7kIM= +github.com/mattermost/mattermost/server/v8 v8.0.0-20250911225601-78050bb0d35d h1:EI2N450mr/Z6Wu0bx01qVZfGJ5hreewiE1dbb7Y09X0= +github.com/mattermost/mattermost/server/v8 v8.0.0-20250911225601-78050bb0d35d/go.mod h1:tyiGtCuQ8zXXEVd6gxxtFmFG/NAR8iHqmfRL3vxdasw= +github.com/mattermost/morph v1.1.0 h1:Q9vrJbeM3s2jfweGheq12EFIzdNp9a/6IovcbvOQ6Cw= +github.com/mattermost/morph v1.1.0/go.mod h1:gD+EaqX2UMyyuzmF4PFh4r33XneQ8Nzi+0E8nXjMa3A= github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0 h1:G9tL6JXRBMzjuD1kkBtcnd42kUiT6QDwxfFYu7adM6o= github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs= -github.com/mattermost/squirrel v0.2.0 h1:8ZWeyf+MWQ2cL7hu9REZgLtz2IJi51qqZEovI3T3TT8= -github.com/mattermost/squirrel v0.2.0/go.mod h1:NPPtk+CdpWre4GxMGoOpzEVFVc0ZoEFyJBZGCtn9nSU= +github.com/mattermost/squirrel v0.5.0 h1:81QPS0aA+inQbpA7Pzmv6O9sWwB6VaBh/VYw3oJf8ZY= +github.com/mattermost/squirrel v0.5.0/go.mod h1:NPPtk+CdpWre4GxMGoOpzEVFVc0ZoEFyJBZGCtn9nSU= +github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU= +github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mediocregopher/radix/v3 v3.8.0/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= -github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= +github.com/mholt/archives v0.1.2 h1:UBSe5NfYKHI1sy+S5dJsEsG9jsKKk8NJA4HCC+xTI4A= +github.com/mholt/archives v0.1.2/go.mod h1:D7QzTHgw3ctfS6wgOO9dN+MFgdZpbksGCxprUOwZWDs= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.18/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= -github.com/microcosm-cc/bluemonday v1.0.24 h1:NGQoPtwGVcbGkKfvyYk1yRqknzBuoMiUrO6R7uFTPlw= -github.com/microcosm-cc/bluemonday v1.0.24/go.mod h1:ArQySAMps0790cHSkdPEJ7bGkF2VePWH773hsJNSHf8= +github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= +github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/crc64nvme v1.0.2 h1:6uO1UxGAD+kwqWWp7mBFsi5gAse66C4NXO8cmcVculg= +github.com/minio/crc64nvme v1.0.2/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.59 h1:lxIXwsTIcQkYoEG25rUJbzpmSB/oWeVDmxFo/uWUUsw= -github.com/minio/minio-go/v7 v7.0.59/go.mod h1:NUDy4A4oXPq1l2yK6LTSvCEzAMeIcoz9lcj5dbzSrRE= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/minio/minio-go/v7 v7.0.91 h1:tWLZnEfo3OZl5PoXQwcwTAPNNrjyWwOh6cbZitW5JQc= +github.com/minio/minio-go/v7 v7.0.91/go.mod h1:uvMUcGrpgeSAAI6+sD3818508nUyMULw94j2Nxku/Go= +github.com/minio/minlz v1.0.0 h1:Kj7aJZ1//LlTP1DM8Jm7lNKvvJS2m74gyyXXn3+uJWQ= +github.com/minio/minlz v1.0.0/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -648,36 +609,34 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= -github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nats-io/jwt/v2 v2.2.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= github.com/nats-io/nats-server/v2 v2.7.3/go.mod h1:eJUrA5gm0ch6sJTEv85xmXIgQWsB0OyjkTsKXvlHbYc= github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= -github.com/nicksnyder/go-i18n/v2 v2.2.1 h1:aOzRCdwsJuoExfZhoiXHy4bjruwCMdt5otbYojM/PaA= -github.com/nicksnyder/go-i18n/v2 v2.2.1/go.mod h1:fF2++lPHlo+/kPaj3nB0uxtPwzlPm+BlgwGX7MkeGj0= +github.com/nicksnyder/go-i18n/v2 v2.6.0 h1:C/m2NNWNiTB6SK4Ao8df5EWm3JETSTIGNXBpMJTxzxQ= +github.com/nicksnyder/go-i18n/v2 v2.6.0/go.mod h1:88sRqr0C6OPyJn0/KRNaEz1uWorjxIKP7rUUcvycecE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= -github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc= -github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= +github.com/nwaples/rardecode/v2 v2.1.0 h1:JQl9ZoBPDy+nIZGb1mx8+anfHp/LV3NE2MjMiv0ct/U= +github.com/nwaples/rardecode/v2 v2.1.0/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/olekukonko/tablewriter v0.0.0-20180506121414-d4647c9c7a84/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -690,77 +649,84 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb h1:JF9kOhBBk4WPF7luXFu5yR+WgaFm9L/KiHJHhU9vDwA= github.com/oov/psd v0.0.0-20220121172623-5db5eafcecbb/go.mod h1:GHI1bnmAcbp96z6LNfBJvtrjxhaXGkbsk967utPlvL8= github.com/openfaas/faas-cli v0.0.0-20230119133646-fea2bf5a6d0c h1:bKdpxt1nwx1gORMakzuqQ5M6iDeowMxBAXQGGmBMZks= github.com/openfaas/faas-cli v0.0.0-20230119133646-fea2bf5a6d0c/go.mod h1:4Q1Cp5H5OhMPFkXz+rLn9+FNPlh0zWSixaWEEjkAwY4= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/gosseract/v2 v2.2.4/go.mod h1:ahOp/kHojnOMGv1RaUnR0jwY5JVa6BYKhYAS8nbMLSo= -github.com/otiai10/gosseract/v2 v2.4.0 h1:gYd3mx6FuMtIlxL4sYb9JLCFEDzg09VgNSZRNbqpiGM= -github.com/otiai10/gosseract/v2 v2.4.0/go.mod h1:fhbIDRh29bj13vni6RT3gtWKjKCAeqDYI4C1dxeJuek= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.3 h1:7JgpsBaN0uMkyju4tbYHu0mnM55hNKVYLsXmwr15NQI= -github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/otiai10/gosseract/v2 v2.4.1 h1:G8AyBpXEeSlcq8TI85LH/pM5SXk8Djy2GEXisgyblRw= +github.com/otiai10/gosseract/v2 v2.4.1/go.mod h1:1gNWP4Hgr2o7yqWfs6r5bZxAatjOIdqWxJLWsTsembk= +github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs= +github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= -github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= +github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/redis/go-redis/v9 v9.0.5 h1:CuQcn5HIEeK7BgElubPP8CGtE0KakrnbBSTLjathl5o= -github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= +github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/redis/rueidis v1.0.59 h1:r4SpgqrKnKwO2omN+BB5+24OCu+K15zmf/2b/zP7NKw= +github.com/redis/rueidis v1.0.59/go.mod h1:Lkhr2QTgcoYBhxARU7kJRO8SyVlgUuEkcJO1Y8MCluA= github.com/reflog/dateconstraints v0.2.1 h1:Hz1n2Q1vEm0Rj5gciDQcCN1iPBwfFjxUJy32NknGP/s= github.com/reflog/dateconstraints v0.2.1/go.mod h1:Ax8AxTBcJc3E/oVS2hd2j7RDM/5MDtuPwuR7lIHtPLo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= -github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= -github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00= +github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= -github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rudderlabs/analytics-go v3.3.3+incompatible h1:OG0XlKoXfr539e2t1dXtTB+Gr89uFW+OUNQBVhHIIBY= -github.com/rudderlabs/analytics-go v3.3.3+incompatible/go.mod h1:LF8/ty9kUX4PTY3l5c97K3nZZaX5Hwsvt+NBaRL/f30= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/russellhaering/goxmldsig v1.2.0/go.mod h1:gM4MDENBQf7M+V824SGfyIUVFWydB7n0KkEubVJl+Tw= +github.com/russellhaering/goxmldsig v1.5.0 h1:AU2UkkYIUOTyZRbe08XMThaOCelArgvNfYapcmSjBNw= +github.com/russellhaering/goxmldsig v1.5.0/go.mod h1:x98CjQNFJcWfMxeOrMnMKg70lvDP6tE0nTaeUnjXDmk= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -772,8 +738,6 @@ github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIH github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/backo-go v1.0.1 h1:68RQccglxZeyURy93ASB/2kc9QudzgIDexJ927N++y4= -github.com/segmentio/backo-go v1.0.1/go.mod h1:9/Rh6yILuLysoQnZ2oNooD2g7aBnvM7r/fNVxRNWfBc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= @@ -812,6 +776,8 @@ github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl github.com/smartystreets/assertions v1.2.1/go.mod h1:wDmR7qL282YbGsPy6H/yAsesrxfxaaSlJazyFLYVFx8= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= +github.com/sorairolake/lzip-go v0.3.5 h1:ms5Xri9o1JBIWvOFAorYtUNik6HI3HgBTkISiqu0Cwg= +github.com/sorairolake/lzip-go v0.3.5/go.mod h1:N0KYq5iWrMXI0ZEXKXaS9hCyOjZUQdBDEIbXfoUwbdk= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -822,27 +788,29 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/splitio/go-client/v6 v6.3.3 h1:L6QYecokxF+kgnT4XGiuMzIV+q86YsNqrj6YRW3bgIc= -github.com/splitio/go-client/v6 v6.3.3/go.mod h1:pq/fc9rChXH3McxWd/GsT3vZ2sdZabq6KXALA82QY2Y= -github.com/splitio/go-split-commons/v4 v4.3.5 h1:APl589+rtk2Y864C0CkutJWtQkRciLFL+/hVTN86Ss0= -github.com/splitio/go-split-commons/v4 v4.3.5/go.mod h1:hj+ota77quCRuyK1cK8EOZANGDIlwCMBosF27I158S8= -github.com/splitio/go-toolkit/v5 v5.3.1 h1:9J/byd0fRxWj5/Zg0QZOnUxKBDIAMCGr7rySYzJKdJg= -github.com/splitio/go-toolkit/v5 v5.3.1/go.mod h1:xYhUvV1gga9/1029Wbp5pjnR6Cy8nvBpjw99wAbsMko= +github.com/splitio/go-client/v6 v6.7.0 h1:1r+rYRTXvIo8xCwwiqbcVkw9ZSGXD02aFT+1P02teiQ= +github.com/splitio/go-client/v6 v6.7.0/go.mod h1:vXT4V2MystDJd6fEmqO64t07Ws2oLmdRg0gu2eOuyIo= +github.com/splitio/go-split-commons/v6 v6.1.0 h1:k3mwr12DF6gbEaV8XXU/tSAQlPkIEuzIgTEneYhGg2I= +github.com/splitio/go-split-commons/v6 v6.1.0/go.mod h1:D/XIY/9Hmfk9ivWsRsJVp439kEdmHbzUi3PKzQQDOXY= +github.com/splitio/go-toolkit/v5 v5.4.0 h1:g5WFpRhQomnXCmvfsNOWV4s5AuUrWIZ+amM68G8NBKM= +github.com/splitio/go-toolkit/v5 v5.4.0/go.mod h1:xYhUvV1gga9/1029Wbp5pjnR6Cy8nvBpjw99wAbsMko= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -853,8 +821,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tdewolff/minify/v2 v2.10.0/go.mod h1:6XAjcHM46pFcRE0eztigFPm0Q+Cxsw8YhEWT+rDkcZM= @@ -862,32 +830,22 @@ github.com/tdewolff/minify/v2 v2.11.10/go.mod h1:dHOS3dk+nJ0M3q3uM3VlNzTb70cou+o github.com/tdewolff/parse/v2 v2.5.27/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho= github.com/tdewolff/parse/v2 v2.6.0/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho= github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= +github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= github.com/throttled/throttled v2.2.5+incompatible h1:65UB52X0qNTYiT0Sohp8qLYVFwZQPDw85uSa65OljjQ= github.com/throttled/throttled v2.2.5+incompatible/go.mod h1:0BjlrEGQmvxps+HuXLsyRdqpSRvJpq0PNIsOtqP9Nos= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= -github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= +github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po= +github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= github.com/twmb/murmur3 v1.1.6 h1:mqrRot1BRxm+Yct+vavLMou2/iJt0tNVTTC0QoIjaZg= github.com/twmb/murmur3 v1.1.6/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= -github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= -github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= -github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= +github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= @@ -899,8 +857,9 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= -github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/wiggin77/merror v1.0.5 h1:P+lzicsn4vPMycAf2mFf7Zk6G9eco5N+jB1qJ2XW3ME= @@ -910,11 +869,11 @@ github.com/wiggin77/srslog v1.0.1/go.mod h1:fehkyYDq1QfuYn60TDPu9YdY2bB85VUW2mvN github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= -github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c h1:3lbZUMbMiGUW/LMkfsEABsc5zNT9+b1CvsJx47JzJ8g= github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c/go.mod h1:UrdRz5enIKZ63MEE3IF9l2/ebyx59GyGgPi+tICQdmM= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= @@ -926,12 +885,10 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.5.4 h1:2uY/xC0roWy8IBEGLgB1ywIoEJFGmRrX21YQcvGZzjU= -github.com/yuin/goldmark v1.5.4/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.7.11 h1:ZCxLyDMtz0nT2HFfsYG8WZ47Trip2+JyLysKcMYE5bo= +github.com/yuin/goldmark v1.7.11/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= @@ -945,21 +902,36 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= -go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +go4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc= +go4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -978,8 +950,13 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +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.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -990,11 +967,12 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.8.0 h1:agUcRXV/+w6L9ryntYYsF2x9fQTMd4T8fiiYXAVW6Jg= -golang.org/x/image v0.8.0/go.mod h1:PwLxp3opCYg4WR2WO9P0L6ESnsD6bLTWcw8zanLMVFM= +golang.org/x/image v0.27.0 h1:C8gA4oWU/tKkdCfYT6T2u4faJu3MeNS5O8UPWlPF61w= +golang.org/x/image v0.27.0/go.mod h1:xbdrClrAUway1MUTEZDq9mz/UpRwYAkFFNUslZtcB+g= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -1020,10 +998,12 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1069,22 +1049,22 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +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.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1099,13 +1079,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1120,8 +1095,12 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= 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.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1184,21 +1163,12 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1207,21 +1177,26 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.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.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +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= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1231,12 +1206,14 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +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.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1244,6 +1221,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1299,20 +1278,19 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= @@ -1338,19 +1316,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.114.0 h1:1xQPji6cO2E2vLiI+C/XiFAnsn1WV3mjaEwGLhi3grE= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1359,7 +1326,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -1405,30 +1371,13 @@ google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9 h1:IkAfh6J/yllPtpYFU0zZN1hUPYdT0ogkBT/9hMxHjvg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -1451,17 +1400,9 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1476,8 +1417,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1493,8 +1434,6 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= @@ -1524,30 +1463,30 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -lukechampine.com/uint128 v1.3.0 h1:cDdUVfRwDUDovz610ABgFD17nXD4/uDgVHl2sC3+sbo= -lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.41.0 h1:QoR1Sn3YWlmA1T4vLaKZfawdVtSiGx8H+cEojbC7v1Q= -modernc.org/cc/v3 v3.41.0/go.mod h1:Ni4zjJYJ04CDOhG7dn640WGfwBzfE0ecX8TyMB0Fv0Y= -modernc.org/ccgo/v3 v3.16.14 h1:af6KNtFgsVmnDYrWk3PQCS9XT6BXe7o3ZFJKkIKvXNQ= -modernc.org/ccgo/v3 v3.16.14/go.mod h1:mPDSujUIaTNWQSG4eqKw+atqLOEbma6Ncsa94WbC9zo= -modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= -modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/libc v1.24.1 h1:uvJSeCKL/AgzBo2yYIPPTy82v21KgGnizcGYfBHaNuM= -modernc.org/libc v1.24.1/go.mod h1:FmfO1RLrU3MHJfyi9eYYmZBfi/R+tqZ6+hQ3yQQUkak= -modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= -modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.6.0 h1:i6mzavxrE9a30whzMfwf7XWVODx2r5OYXvU46cirX7o= -modernc.org/memory v1.6.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= -modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= -modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= +modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= +modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= +modernc.org/fileutil v1.3.1 h1:8vq5fe7jdtEvoCf3Zf9Nm0Q05sH6kGx0Op2CPx1wTC8= +modernc.org/fileutil v1.3.1/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= +modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= +modernc.org/libc v1.65.6 h1:OhJUhmuJ6MVZdqL5qmnd0/my46DKGFhSX4WOR7ijfyE= +modernc.org/libc v1.65.6/go.mod h1:MOiGAM9lrMBT9L8xT1nO41qYl5eg9gCp9/kWhz5L7WA= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.10.0 h1:fzumd51yQ1DxcOxSO+S6X7+QTuVU+n8/Aj7swYjFfC4= +modernc.org/memory v1.10.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= +modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= +modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= +modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= +modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= +modernc.org/sqlite v1.37.0 h1:s1TMe7T3Q3ovQiK2Ouz4Jwh7dw4ZDqbebSDTlSJdfjI= +modernc.org/sqlite v1.37.0/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM= +modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= +modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= moul.io/http2curl v1.0.0/go.mod h1:f6cULg+e4Md/oW1cYmwW4IWQOVl2lGbmCNGOHvzX2kE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/server/builtin/app.go b/server/builtin/app.go index a1095afd8..6b69443db 100644 --- a/server/builtin/app.go +++ b/server/builtin/app.go @@ -295,7 +295,7 @@ func (a *builtinApp) checkConfigValid(call *apps.Call, loc *i18n.Localizer) erro return nil } - oauthEnabled := a.conf.MattermostConfig().Config().ServiceSettings.EnableOAuthServiceProvider + oauthEnabled := a.conf.MattermostConfig().ServiceSettings.EnableOAuthServiceProvider if oauthEnabled == nil || !*oauthEnabled { integrationManagementPage := fmt.Sprintf("%s/admin_console/integrations/integration_management", a.conf.Get().MattermostSiteURL) diff --git a/server/config/mattermost_config_service.go b/server/config/mattermost_config_service.go deleted file mode 100644 index 9fee1a34a..000000000 --- a/server/config/mattermost_config_service.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2019-present Mattermost, Inc. All Rights Reserved. -// See License for license information. - -package config - -import ( - "crypto/ecdsa" - - "github.com/mattermost/mattermost/server/public/model" - - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" -) - -type mattermostConfigService struct { - mmconf *model.Config -} - -var _ configservice.ConfigService = (*mattermostConfigService)(nil) - -func (c *mattermostConfigService) Config() *model.Config { - return c.mmconf -} - -func (c *mattermostConfigService) AddConfigListener(func(old, current *model.Config)) string { - return "" -} - -func (c *mattermostConfigService) RemoveConfigListener(string) {} -func (c *mattermostConfigService) AsymmetricSigningKey() *ecdsa.PrivateKey { - return nil -} diff --git a/server/config/service.go b/server/config/service.go index 43997d3e8..a0b67be89 100644 --- a/server/config/service.go +++ b/server/config/service.go @@ -14,9 +14,6 @@ import ( "github.com/mattermost/mattermost/server/public/pluginapi" "github.com/mattermost/mattermost/server/public/pluginapi/i18n" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" - - "github.com/mattermost/mattermost-plugin-apps/server/telemetry" "github.com/mattermost/mattermost-plugin-apps/upstream/upaws" "github.com/mattermost/mattermost-plugin-apps/utils" ) @@ -28,9 +25,8 @@ type Configurable interface { type Service interface { Get() Config MattermostAPI() *pluginapi.Client - MattermostConfig() configservice.ConfigService + MattermostConfig() *model.Config I18N() *i18n.Bundle - Telemetry() *telemetry.Telemetry NewBaseLogger() utils.Logger SystemDefaultFlags() (devMode, allowHTTPApps bool) @@ -45,21 +41,19 @@ type service struct { botUserID string mm *pluginapi.Client i18n *i18n.Bundle - telemetry *telemetry.Telemetry lock *sync.RWMutex conf *Config mattermostConfig *model.Config } -func MakeService(mm *pluginapi.Client, pliginManifest model.Manifest, botUserID string, telemetry *telemetry.Telemetry, i18nBundle *i18n.Bundle, log utils.Logger) (Service, error) { +func MakeService(mm *pluginapi.Client, pliginManifest model.Manifest, botUserID string, i18nBundle *i18n.Bundle, log utils.Logger) (Service, error) { s := &service{ pluginManifest: pliginManifest, botUserID: botUserID, mm: mm, lock: &sync.RWMutex{}, i18n: i18nBundle, - telemetry: telemetry, } sc := StoredConfig{} @@ -203,11 +197,7 @@ func (s *service) I18N() *i18n.Bundle { return s.i18n } -func (s *service) Telemetry() *telemetry.Telemetry { - return s.telemetry -} - -func (s *service) MattermostConfig() configservice.ConfigService { +func (s *service) MattermostConfig() *model.Config { s.lock.RLock() mmconf := s.mattermostConfig s.lock.RUnlock() @@ -215,9 +205,7 @@ func (s *service) MattermostConfig() configservice.ConfigService { if mmconf == nil { mmconf = s.reloadMattermostConfig() } - return &mattermostConfigService{ - mmconf: mmconf, - } + return mmconf } func (s *service) reloadMattermostConfig() *model.Config { diff --git a/server/config/test_service.go b/server/config/test_service.go index b942f3dbb..d5413d26b 100644 --- a/server/config/test_service.go +++ b/server/config/test_service.go @@ -8,19 +8,15 @@ import ( "github.com/mattermost/mattermost/server/public/pluginapi" "github.com/mattermost/mattermost/server/public/pluginapi/i18n" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" - - "github.com/mattermost/mattermost-plugin-apps/server/telemetry" "github.com/mattermost/mattermost-plugin-apps/utils" ) type TestService struct { - config Config - i18n *i18n.Bundle - log utils.Logger - mm *pluginapi.Client - mmconfig model.Config - telemetry *telemetry.Telemetry + config Config + i18n *i18n.Bundle + log utils.Logger + mm *pluginapi.Client + mmconfig model.Config } var _ Service = (*TestService)(nil) @@ -41,11 +37,10 @@ func NewTestService(testConfig *Config) (*TestService, *plugintest.API) { i18nBundle, _ := i18n.InitBundle(testAPI, filepath.Join("assets", "i18n")) return &TestService{ - config: *testConfig, - i18n: i18nBundle, - log: utils.NewTestLogger(), - mm: pluginapi.NewClient(testAPI, testDriver), - telemetry: telemetry.NewTelemetry(nil), + config: *testConfig, + i18n: i18nBundle, + log: utils.NewTestLogger(), + mm: pluginapi.NewClient(testAPI, testDriver), }, testAPI } @@ -75,12 +70,8 @@ func (s *TestService) I18N() *i18n.Bundle { return s.i18n } -func (s *TestService) Telemetry() *telemetry.Telemetry { - return s.telemetry -} - -func (s *TestService) MattermostConfig() configservice.ConfigService { - return &mattermostConfigService{&s.mmconfig} +func (s *TestService) MattermostConfig() *model.Config { + return &s.mmconfig } func (s *TestService) Reconfigure(StoredConfig, bool, ...Configurable) error { diff --git a/server/httpin/call.go b/server/httpin/call.go index fe687d221..734edc20e 100644 --- a/server/httpin/call.go +++ b/server/httpin/call.go @@ -62,11 +62,5 @@ func (s *Service) Call(r *incoming.Request, w http.ResponseWriter, req *http.Req } } - // <>/<> TODO move to proxy. - // Only track submit calls. - if creq.Context.UserAgentContext.TrackAsSubmit { - s.Config.Telemetry().TrackCall(string(creq.Context.AppID), string(creq.Context.Location), r.ActingUserID(), "submit") - } - _ = httputils.WriteJSON(w, ccresp) } diff --git a/server/httpout/service.go b/server/httpout/service.go index 6b75c27f1..b32744618 100644 --- a/server/httpout/service.go +++ b/server/httpout/service.go @@ -6,7 +6,8 @@ package httpout import ( "github.com/pkg/errors" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" + "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost-plugin-apps/server/config" "github.com/mattermost/mattermost-plugin-apps/utils" @@ -31,13 +32,21 @@ var _ httpservice.HTTPService = (*service)(nil) func NewService(conf config.Service) Service { return &service{ - HTTPService: httpservice.MakeHTTPService(conf.MattermostConfig()), + HTTPService: httpservice.MakeHTTPService(&configGetter{conf.MattermostConfig}), conf: conf, } } +type configGetter struct { + getConfig func() *model.Config +} + +func (cg *configGetter) Config() *model.Config { + return cg.getConfig() +} + func (s *service) Configure(_ config.Config, _ utils.Logger) error { - s.HTTPService = httpservice.MakeHTTPService(s.conf.MattermostConfig()) + s.HTTPService = httpservice.MakeHTTPService(&configGetter{s.conf.MattermostConfig}) return nil } diff --git a/server/plugin.go b/server/plugin.go index 28a40772f..a495e2425 100644 --- a/server/plugin.go +++ b/server/plugin.go @@ -13,8 +13,6 @@ import ( "github.com/mattermost/mattermost/server/public/plugin" "github.com/mattermost/mattermost/server/public/pluginapi" "github.com/mattermost/mattermost/server/public/pluginapi/cluster" - "github.com/mattermost/mattermost/server/public/pluginapi/experimental/bot/logger" - mmtelemetry "github.com/mattermost/mattermost/server/public/pluginapi/experimental/telemetry" "github.com/mattermost/mattermost/server/public/pluginapi/i18n" "github.com/mattermost/mattermost-plugin-apps/server/appservices" @@ -25,7 +23,6 @@ import ( "github.com/mattermost/mattermost-plugin-apps/server/proxy" "github.com/mattermost/mattermost-plugin-apps/server/session" "github.com/mattermost/mattermost-plugin-apps/server/store" - "github.com/mattermost/mattermost-plugin-apps/server/telemetry" "github.com/mattermost/mattermost-plugin-apps/utils" ) @@ -42,9 +39,6 @@ type Plugin struct { httpIn *httpin.Service httpOut httpout.Service - - telemetryClient mmtelemetry.Client - tracker *telemetry.Telemetry } func NewPlugin(pluginManifest model.Manifest) *Plugin { @@ -74,26 +68,8 @@ func (p *Plugin) OnActivate() (err error) { return errors.Wrap(err, "failed to load localization files") } - p.telemetryClient, err = mmtelemetry.NewRudderClient() - if err != nil { - log.WithError(err).Warnw("failed to start telemetry client.") - } - - p.tracker = telemetry.NewTelemetry( - mmtelemetry.NewTracker( - p.telemetryClient, - p.API.GetDiagnosticId(), - p.API.GetServerVersion(), - manifest.Id, - manifest.Version, - "appsFramework", - mmtelemetry.NewTrackerConfig(p.API.GetConfig()), - logger.New(p.API), - ), - ) - // Configure the plugin. - confService, err := config.MakeService(mm, p.manifest, botUserID, p.tracker, i18nBundle, log) + confService, err := config.MakeService(mm, p.manifest, botUserID, i18nBundle, log) if err != nil { log.WithError(err).Infow("failed to load initial configuration") return errors.Wrap(err, "failed to load initial configuration") @@ -101,6 +77,10 @@ func (p *Plugin) OnActivate() (err error) { p.conf = confService log = p.conf.NewBaseLogger() + if !p.conf.MattermostConfig().FeatureFlags.AppsEnabled { + return errors.New("AppsEnabled feature flag is set to fals. Please enable it using MM_FEATUREFLAGS_AppsEnabled=true") + } + conf := p.conf.Get() log.With(conf).Debugw("configured the plugin.") @@ -164,13 +144,6 @@ func (p *Plugin) OnDeactivate() error { //nolint:golint,unparam conf := p.conf.Get() p.conf.MattermostAPI().Frontend.PublishWebSocketEvent(config.WebSocketEventPluginDisabled, conf.GetPluginVersionInfo(), &model.WebsocketBroadcast{}) - if p.telemetryClient != nil { - err := p.telemetryClient.Close() - if err != nil { - p.API.LogWarn("OnDeactivate: failed to close telemetryClient", "error", err.Error()) - } - } - return nil } @@ -180,10 +153,6 @@ func (p *Plugin) OnConfigurationChange() error { return nil } - if p.tracker != nil { - p.tracker.ReloadConfig(mmtelemetry.NewTrackerConfig(p.API.GetConfig())) - } - mm := pluginapi.NewClient(p.API, p.Driver) var sc config.StoredConfig err := mm.Configuration.LoadPluginConfiguration(&sc) diff --git a/server/proxy/bindings_test.go b/server/proxy/bindings_test.go index c642083a7..61b9311b4 100644 --- a/server/proxy/bindings_test.go +++ b/server/proxy/bindings_test.go @@ -579,7 +579,7 @@ func TestRefreshBindingsEventAfterCall(t *testing.T) { conf := config.NewTestConfigService(nil).WithMattermostConfig(model.Config{ ServiceSettings: model.ServiceSettings{ - SiteURL: model.NewString("test.mattermost.com"), + SiteURL: model.NewPointer("test.mattermost.com"), }, }).WithMattermostAPI(pluginapi.NewClient(testAPI, testDriver)) diff --git a/server/proxy/expand.go b/server/proxy/expand.go index ffde8465b..02e79f7e6 100644 --- a/server/proxy/expand.go +++ b/server/proxy/expand.go @@ -367,9 +367,9 @@ func (e *expander) expandPost(postPtr **model.Post, postID string) expandFunc { func (e *expander) expandLocale(level apps.ExpandLevel) error { confService := e.r.Config() if e.ExpandedContext.ActingUser != nil { - e.ExpandedContext.Locale = utils.GetLocaleWithUser(confService.MattermostConfig().Config(), e.ExpandedContext.ActingUser) + e.ExpandedContext.Locale = utils.GetLocaleWithUser(confService.MattermostConfig(), e.ExpandedContext.ActingUser) } else { - e.ExpandedContext.Locale = utils.GetLocale(confService.MattermostAPI(), confService.MattermostConfig().Config(), e.r.ActingUserID()) + e.ExpandedContext.Locale = utils.GetLocale(confService.MattermostAPI(), confService.MattermostConfig(), e.r.ActingUserID()) } return nil } diff --git a/server/proxy/expand_test.go b/server/proxy/expand_test.go index 9d23d4862..444d15a8d 100644 --- a/server/proxy/expand_test.go +++ b/server/proxy/expand_test.go @@ -261,7 +261,7 @@ func TestExpand(t *testing.T) { MattermostSiteURL: "https://test.mattermost.test", }).WithMattermostConfig(model.Config{ ServiceSettings: model.ServiceSettings{ - SiteURL: model.NewString("https://test.mattermost.test"), + SiteURL: model.NewPointer("https://test.mattermost.test"), }, }) for level, expected := range tc.expect { @@ -308,7 +308,7 @@ func TestExpand(t *testing.T) { MattermostSiteURL: "https://test.mattermost.test", }).WithMattermostConfig(model.Config{ ServiceSettings: model.ServiceSettings{ - SiteURL: model.NewString("https://test.mattermost.test"), + SiteURL: model.NewPointer("https://test.mattermost.test"), }, }) diff --git a/server/proxy/install.go b/server/proxy/install.go index 2c228948a..6ee9a7911 100644 --- a/server/proxy/install.go +++ b/server/proxy/install.go @@ -140,8 +140,6 @@ func (p *Proxy) InstallApp(r *incoming.Request, cc apps.Context, appID apps.AppI } } - p.conf.Telemetry().TrackInstall(string(app.AppID), string(app.DeployType)) - p.dispatchRefreshBindingsEvent(r.ActingUserID()) return app, message, nil diff --git a/server/proxy/invoke_oauth2.go b/server/proxy/invoke_oauth2.go index 798b2ef37..0252485bb 100644 --- a/server/proxy/invoke_oauth2.go +++ b/server/proxy/invoke_oauth2.go @@ -70,7 +70,5 @@ func (p *Proxy) InvokeCompleteRemoteOAuth2(r *incoming.Request, urlValues map[st return errors.Errorf("oauth2: unexpected response type from the app: %q", cresp.Type) } - p.conf.Telemetry().TrackOAuthComplete(string(app.AppID), r.ActingUserID()) - return nil } diff --git a/server/proxy/uninstall.go b/server/proxy/uninstall.go index 1ab550897..5e2760124 100644 --- a/server/proxy/uninstall.go +++ b/server/proxy/uninstall.go @@ -86,8 +86,6 @@ func (p *Proxy) UninstallApp(r *incoming.Request, cc apps.Context, appID apps.Ap r.Log.Infof("Uninstalled app %s.", appID) - p.conf.Telemetry().TrackUninstall(string(app.AppID), string(app.DeployType)) - p.dispatchRefreshBindingsEvent(r.ActingUserID()) return message, nil diff --git a/server/telemetry/telemetry.go b/server/telemetry/telemetry.go deleted file mode 100644 index bcdf5f9e0..000000000 --- a/server/telemetry/telemetry.go +++ /dev/null @@ -1,63 +0,0 @@ -package telemetry - -import ( - mmtelemetry "github.com/mattermost/mattermost/server/public/pluginapi/experimental/telemetry" -) - -type Telemetry struct { - tracker mmtelemetry.Tracker -} - -func NewTelemetry(tracker mmtelemetry.Tracker) *Telemetry { - return &Telemetry{ - tracker: tracker, - } -} - -func (t *Telemetry) ReloadConfig(config mmtelemetry.TrackerConfig) { - t.tracker.ReloadConfig(config) -} - -func (t *Telemetry) TrackInstall(appID, appType string) { - if t == nil || t.tracker == nil { - return - } - - _ = t.tracker.TrackEvent("install", map[string]interface{}{ - "appID": appID, - "appType": appType, - }) -} - -func (t *Telemetry) TrackUninstall(appID, appType string) { - if t == nil || t.tracker == nil { - return - } - - _ = t.tracker.TrackEvent("uninstall", map[string]interface{}{ - "appID": appID, - "appType": appType, - }) -} - -func (t *Telemetry) TrackCall(appID, location, actingUserID, callType string) { - if t == nil || t.tracker == nil { - return - } - - _ = t.tracker.TrackUserEvent("call", actingUserID, map[string]interface{}{ - "appID": appID, - "location": location, - "type": callType, - }) -} - -func (t *Telemetry) TrackOAuthComplete(appID, actingUserID string) { - if t == nil || t.tracker == nil { - return - } - - _ = t.tracker.TrackUserEvent("oauthComplete", actingUserID, map[string]interface{}{ - "appID": appID, - }) -} From 8ef2ca2de685bba482bacf2293576e4cee362d91 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Mon, 15 Sep 2025 13:52:07 +0200 Subject: [PATCH 02/13] Modernize golangci config --- .golangci.yml | 103 ++++++++++++++++++++++----------------- cmd/appsctl/openfaas.go | 2 +- examples/goapp/kv/app.go | 5 +- 3 files changed, 61 insertions(+), 49 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 2af211e1d..a5a45ddf6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,62 +1,73 @@ +version: "2" run: - timeout: 5m modules-download-mode: readonly - -linters-settings: - gofmt: - simplify: true - goimports: - local-prefixes: github.com/mattermost/mattermost-plugin-apps - govet: - check-shadowing: true - enable-all: true - disable: - - fieldalignment - misspell: - locale: US - linters: - disable-all: true + default: none enable: - bodyclose - errcheck - gocritic - - gofmt - - goimports - gosec - - gosimple - govet - ineffassign - misspell - nakedret - - staticcheck - - stylecheck - revive - - typecheck + - staticcheck - unconvert - - unused - unparam + - unused - whitespace - -issues: - exclude-rules: - - path: _test\.go - linters: - - bodyclose - - scopelint # https://github.com/kyoh86/scopelint/issues/4 - - path: test/restapitest - linters: - - bodyclose - - unused - - unparam - - staticcheck - - path: / - linters: - - staticcheck - text: "BotJoined" - - path: / - linters: - - staticcheck - text: "BotLeft" - - + settings: + govet: + disable: + - fieldalignment + enable-all: true + misspell: + locale: US + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - bodyclose + - scopelint + path: _test\.go + - linters: + - bodyclose + - staticcheck + - unparam + - unused + path: test/restapitest + - linters: + - staticcheck + path: / + text: BotJoined + - linters: + - staticcheck + path: / + text: BotLeft + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + settings: + gofmt: + simplify: true + goimports: + local-prefixes: + - github.com/mattermost/mattermost-plugin-apps + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/cmd/appsctl/openfaas.go b/cmd/appsctl/openfaas.go index cd47b392c..4b43f20a3 100644 --- a/cmd/appsctl/openfaas.go +++ b/cmd/appsctl/openfaas.go @@ -33,7 +33,7 @@ var openfaasDeployCmd = &cobra.Command{ Use: "deploy", Short: "Deploy a Mattermost app to OpenFaaS or faasd", Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { bundlePath := args[0] gateway := os.Getenv(upopenfaas.EnvGatewayURL) diff --git a/examples/goapp/kv/app.go b/examples/goapp/kv/app.go index ddfae5c6c..9f78e6bee 100644 --- a/examples/goapp/kv/app.go +++ b/examples/goapp/kv/app.go @@ -8,6 +8,7 @@ import ( ) // static is preloaded with the contents of the ./static directory. +// //go:embed static var static embed.FS @@ -39,7 +40,7 @@ var set = goapp.MakeBindableFormOrPanic("set", Fields: []apps.Field{ { Name: "prefix", - Description: "The namespace prefix to use, just 2 charachters, don't even ask why...", + Description: "The namespace prefix to use, just 2 characters, don't even ask why...", TextMaxLength: 2, }, { @@ -89,7 +90,7 @@ var get = goapp.MakeBindableFormOrPanic("get", Fields: []apps.Field{ { Name: "prefix", - Description: "The namespace prefix to use, just 2 charachters, don't even ask why...", + Description: "The namespace prefix to use, just 2 characters, don't even ask why...", TextMaxLength: 2, }, { From 09e15139163b416091218d2100d7f56ddee65da0 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 12:47:07 +0100 Subject: [PATCH 03/13] typo --- server/plugin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/plugin.go b/server/plugin.go index a495e2425..006eed529 100644 --- a/server/plugin.go +++ b/server/plugin.go @@ -78,7 +78,7 @@ func (p *Plugin) OnActivate() (err error) { log = p.conf.NewBaseLogger() if !p.conf.MattermostConfig().FeatureFlags.AppsEnabled { - return errors.New("AppsEnabled feature flag is set to fals. Please enable it using MM_FEATUREFLAGS_AppsEnabled=true") + return errors.New("AppsEnabled feature flag is set to false. Please enable it using MM_FEATUREFLAGS_AppsEnabled=true") } conf := p.conf.Get() From e68d13e9b55bfc632db6119cf56bda3f298ce9e9 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 12:50:41 +0100 Subject: [PATCH 04/13] Trigger CI From 907c094ff81afb2e586d4c9e73b6ce2c949e8591 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 12:53:35 +0100 Subject: [PATCH 05/13] Update go version in CI --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3cad457ef..15179e410 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -9,7 +9,7 @@ on: env: TERM: xterm - GO_VERSION: 1.19.6 + GO_VERSION: 1.24.5 NODE_VERSION: 16.15.0 jobs: From 70a802540f5b7b7007eb3b102856da9c91ae8d8a Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 13:23:03 +0100 Subject: [PATCH 06/13] Revert golangci changes --- .golangci.yml | 103 ++++++++++++++++++++++---------------------------- 1 file changed, 46 insertions(+), 57 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a5a45ddf6..2af211e1d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,73 +1,62 @@ -version: "2" run: + timeout: 5m modules-download-mode: readonly + +linters-settings: + gofmt: + simplify: true + goimports: + local-prefixes: github.com/mattermost/mattermost-plugin-apps + govet: + check-shadowing: true + enable-all: true + disable: + - fieldalignment + misspell: + locale: US + linters: - default: none + disable-all: true enable: - bodyclose - errcheck - gocritic + - gofmt + - goimports - gosec + - gosimple - govet - ineffassign - misspell - nakedret - - revive - staticcheck + - stylecheck + - revive + - typecheck - unconvert - - unparam - unused + - unparam - whitespace - settings: - govet: - disable: - - fieldalignment - enable-all: true - misspell: - locale: US - exclusions: - generated: lax - presets: - - comments - - common-false-positives - - legacy - - std-error-handling - rules: - - linters: - - bodyclose - - scopelint - path: _test\.go - - linters: - - bodyclose - - staticcheck - - unparam - - unused - path: test/restapitest - - linters: - - staticcheck - path: / - text: BotJoined - - linters: - - staticcheck - path: / - text: BotLeft - paths: - - third_party$ - - builtin$ - - examples$ -formatters: - enable: - - gofmt - - goimports - settings: - gofmt: - simplify: true - goimports: - local-prefixes: - - github.com/mattermost/mattermost-plugin-apps - exclusions: - generated: lax - paths: - - third_party$ - - builtin$ - - examples$ + +issues: + exclude-rules: + - path: _test\.go + linters: + - bodyclose + - scopelint # https://github.com/kyoh86/scopelint/issues/4 + - path: test/restapitest + linters: + - bodyclose + - unused + - unparam + - staticcheck + - path: / + linters: + - staticcheck + text: "BotJoined" + - path: / + linters: + - staticcheck + text: "BotLeft" + + From d0826592e8d64aaf54c43b272e5747e4317fff4a Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 13:29:22 +0100 Subject: [PATCH 07/13] Revert "Revert golangci changes" This reverts commit 70a802540f5b7b7007eb3b102856da9c91ae8d8a. --- .golangci.yml | 103 ++++++++++++++++++++++++++++---------------------- Makefile | 2 +- 2 files changed, 58 insertions(+), 47 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 2af211e1d..a5a45ddf6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,62 +1,73 @@ +version: "2" run: - timeout: 5m modules-download-mode: readonly - -linters-settings: - gofmt: - simplify: true - goimports: - local-prefixes: github.com/mattermost/mattermost-plugin-apps - govet: - check-shadowing: true - enable-all: true - disable: - - fieldalignment - misspell: - locale: US - linters: - disable-all: true + default: none enable: - bodyclose - errcheck - gocritic - - gofmt - - goimports - gosec - - gosimple - govet - ineffassign - misspell - nakedret - - staticcheck - - stylecheck - revive - - typecheck + - staticcheck - unconvert - - unused - unparam + - unused - whitespace - -issues: - exclude-rules: - - path: _test\.go - linters: - - bodyclose - - scopelint # https://github.com/kyoh86/scopelint/issues/4 - - path: test/restapitest - linters: - - bodyclose - - unused - - unparam - - staticcheck - - path: / - linters: - - staticcheck - text: "BotJoined" - - path: / - linters: - - staticcheck - text: "BotLeft" - - + settings: + govet: + disable: + - fieldalignment + enable-all: true + misspell: + locale: US + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - bodyclose + - scopelint + path: _test\.go + - linters: + - bodyclose + - staticcheck + - unparam + - unused + path: test/restapitest + - linters: + - staticcheck + path: / + text: BotJoined + - linters: + - staticcheck + path: / + text: BotLeft + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + settings: + gofmt: + simplify: true + goimports: + local-prefixes: + - github.com/mattermost/mattermost-plugin-apps + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/Makefile b/Makefile index 77ee9cde4..400bc873b 100644 --- a/Makefile +++ b/Makefile @@ -144,7 +144,7 @@ all: check-style test dist .PHONY: deps deps: - @$(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.2 + @$(GO) install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.6.1 @$(GO) install github.com/nicksnyder/go-i18n/v2/goi18n@v2.2.0 ## Runs eslint and golangci-lint From a0d268ae0627a661a5165950daa40bf4be28bd9e Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 13:48:34 +0100 Subject: [PATCH 08/13] Replace interface{} with any --- apps/app.go | 2 +- apps/appclient/mattermost_client.go | 10 ++-- apps/appclient/mattermost_client_pp.go | 10 ++-- apps/call.go | 18 +++--- apps/call_request.go | 22 +++---- apps/call_response.go | 10 ++-- apps/call_test.go | 4 +- apps/context.go | 8 +-- apps/field.go | 2 +- apps/goapp/bindable_action.go | 2 +- apps/goapp/call_request.go | 12 ++-- apps/goapp/call_request_test.go | 2 +- apps/log_string_test.go | 34 +++++------ apps/subscription.go | 8 +-- examples/goapp/kv/app.go | 2 +- server/appservices/oauth2.go | 4 +- server/appservices/timer.go | 6 +- server/builtin/settings.go | 2 +- server/config/config.go | 8 +-- server/config/log_string_test.go | 6 +- server/config/service.go | 2 +- server/httpin/bindings.go | 2 +- server/httpin/kv.go | 2 +- server/httpin/oauth2.go | 2 +- server/mocks/mock_proxy/mock_expand_getter.go | 12 ++-- server/mocks/mock_store/mock_appstore.go | 16 ++--- server/mocks/mock_store/mock_session.go | 14 ++--- server/mocks/mock_upstream/mock_upstream.go | 4 +- server/proxy/bindings.go | 2 +- server/proxy/bindings_test.go | 2 +- server/proxy/expand.go | 2 +- server/proxy/expand_test.go | 32 +++++----- server/proxy/invoke_call.go | 4 +- server/proxy/invoke_oauth2.go | 2 +- server/proxy/invoke_webhook.go | 4 +- server/proxy/service.go | 2 +- test/app/main.go | 2 +- test/restapitest/call.go | 2 +- test/restapitest/echo.go | 2 +- test/restapitest/helper.go | 2 +- test/restapitest/kv.go | 8 +-- test/restapitest/notify.go | 4 +- test/restapitest/oauth2.go | 28 ++++----- test/restapitest/uninstall.go | 4 +- upstream/upplugin/upstream.go | 2 +- utils/errors.go | 16 ++--- utils/httputils/utils.go | 6 +- utils/json.go | 6 +- utils/json_test.go | 8 +-- utils/logger.go | 58 +++++++++---------- utils/mattermost.go | 2 +- utils/plugin_logger.go | 2 +- 52 files changed, 214 insertions(+), 214 deletions(-) diff --git a/apps/app.go b/apps/app.go index d578331ab..9dc90e3eb 100644 --- a/apps/app.go +++ b/apps/app.go @@ -109,7 +109,7 @@ type OAuth2App struct { // Data allows apps to store custom data in their OAuth configuration. A // frequent use case is storing app-level service account credentials. - Data interface{} `json:"data,omitempty"` + Data any `json:"data,omitempty"` } // ListedApp is a Mattermost App listed in the Marketplace containing metadata. diff --git a/apps/appclient/mattermost_client.go b/apps/appclient/mattermost_client.go index 724abc38e..fb051be55 100644 --- a/apps/appclient/mattermost_client.go +++ b/apps/appclient/mattermost_client.go @@ -45,7 +45,7 @@ func NewClient(token, mattermostSiteURL string) *Client { return &c } -func (c *Client) KVSet(prefix, id string, in interface{}) (bool, error) { +func (c *Client) KVSet(prefix, id string, in any) (bool, error) { changed, res, err := c.ClientPP.KVSet(prefix, id, in) if err != nil { return false, err @@ -58,7 +58,7 @@ func (c *Client) KVSet(prefix, id string, in interface{}) (bool, error) { return changed, nil } -func (c *Client) KVGet(prefix, id string, ref interface{}) error { +func (c *Client) KVGet(prefix, id string, ref any) error { res, err := c.ClientPP.KVGet(prefix, id, ref) if err != nil { return err @@ -149,7 +149,7 @@ func (c *Client) StoreOAuth2App(oauth2App apps.OAuth2App) error { return nil } -func (c *Client) StoreOAuth2User(ref interface{}) error { +func (c *Client) StoreOAuth2User(ref any) error { res, err := c.ClientPP.StoreOAuth2User(ref) if err != nil { return err @@ -162,7 +162,7 @@ func (c *Client) StoreOAuth2User(ref interface{}) error { return nil } -func (c *Client) GetOAuth2User(ref interface{}) error { +func (c *Client) GetOAuth2User(ref any) error { res, err := c.ClientPP.GetOAuth2User(ref) if err != nil { return err @@ -201,7 +201,7 @@ func (c *Client) CreatePost(ctx context.Context, post *model.Post) (*model.Post, return createdPost, nil } -func (c *Client) DM(ctx context.Context, userID string, format string, args ...interface{}) (*model.Post, error) { +func (c *Client) DM(ctx context.Context, userID string, format string, args ...any) (*model.Post, error) { return c.DMPost(ctx, userID, &model.Post{ Message: fmt.Sprintf(format, args...), }) diff --git a/apps/appclient/mattermost_client_pp.go b/apps/appclient/mattermost_client_pp.go index 9f42418df..bc803b205 100644 --- a/apps/appclient/mattermost_client_pp.go +++ b/apps/appclient/mattermost_client_pp.go @@ -57,14 +57,14 @@ func (c *ClientPP) SetOAuthToken(token string) { c.AuthType = model.HeaderBearer } -func (c *ClientPP) KVSet(prefix, id string, in interface{}) (bool, *model.Response, error) { +func (c *ClientPP) KVSet(prefix, id string, in any) (bool, *model.Response, error) { r, err := c.DoAPIPOST(c.kvpath(prefix, id), utils.ToJSON(in)) // nolint:bodyclose if err != nil { return false, model.BuildResponse(r), err } defer c.closeBody(r) - var out map[string]interface{} + var out map[string]any if err := json.NewDecoder(r.Body).Decode(&out); err != nil { return false, model.BuildResponse(r), errors.Wrap(err, "failed to decode response") } @@ -74,7 +74,7 @@ func (c *ClientPP) KVSet(prefix, id string, in interface{}) (bool, *model.Respon return changed, model.BuildResponse(r), nil } -func (c *ClientPP) KVGet(prefix, id string, ref interface{}) (*model.Response, error) { +func (c *ClientPP) KVGet(prefix, id string, ref any) (*model.Response, error) { r, err := c.DoAPIGET(c.kvpath(prefix, id), "") // nolint:bodyclose if err != nil { return model.BuildResponse(r), err @@ -172,7 +172,7 @@ func (c *ClientPP) StoreOAuth2App(oauth2App apps.OAuth2App) (*model.Response, er return model.BuildResponse(r), nil } -func (c *ClientPP) StoreOAuth2User(ref interface{}) (*model.Response, error) { +func (c *ClientPP) StoreOAuth2User(ref any) (*model.Response, error) { r, err := c.DoAPIPOST(c.apipath(appspath.OAuth2User), utils.ToJSON(ref)) // nolint:bodyclose if err != nil { return model.BuildResponse(r), err @@ -182,7 +182,7 @@ func (c *ClientPP) StoreOAuth2User(ref interface{}) (*model.Response, error) { return model.BuildResponse(r), nil } -func (c *ClientPP) GetOAuth2User(ref interface{}) (*model.Response, error) { +func (c *ClientPP) GetOAuth2User(ref any) (*model.Response, error) { r, err := c.DoAPIGET(c.apipath(appspath.OAuth2User), "") // nolint:bodyclose if err != nil { return model.BuildResponse(r), err diff --git a/apps/call.go b/apps/call.go index e6997d8f3..3e6049ee2 100644 --- a/apps/call.go +++ b/apps/call.go @@ -28,7 +28,7 @@ type Call struct { Expand *Expand `json:"expand,omitempty"` // Custom data that will be passed to the function in JSON, "as is". - State interface{} `json:"state,omitempty"` + State any `json:"state,omitempty"` } func (c *Call) UnmarshalJSON(data []byte) error { @@ -43,9 +43,9 @@ func (c *Call) UnmarshalJSON(data []byte) error { // Need a type that is just like Call, but without UnmarshalJSON structValue := struct { - Path string `json:"path,omitempty"` - Expand *Expand `json:"expand,omitempty"` - State interface{} `json:"state,omitempty"` + Path string `json:"path,omitempty"` + Expand *Expand `json:"expand,omitempty"` + State any `json:"state,omitempty"` }{} err = json.Unmarshal(data, &structValue) if err != nil { @@ -83,7 +83,7 @@ func (c Call) ExpandActingUserClient() *Call { return &c } -func (c Call) WithState(state interface{}) *Call { +func (c Call) WithState(state any) *Call { c.State = state return &c } @@ -126,8 +126,8 @@ func (c *Call) PartialCopy() *Call { } // Only know how to clone map values for State. - if state, ok := clone.State.(map[string]interface{}); ok { - cloneState := map[string]interface{}{} + if state, ok := clone.State.(map[string]any); ok { + cloneState := map[string]any{} for k, v := range state { cloneState[k] = v } @@ -154,8 +154,8 @@ func (c Call) String() string { return s } -func (c Call) Loggable() []interface{} { - props := []interface{}{"call_path", c.Path} +func (c Call) Loggable() []any { + props := []any{"call_path", c.Path} if c.Expand != nil { props = append(props, "call_expand", c.Expand.String()) } diff --git a/apps/call_request.go b/apps/call_request.go index fe228b466..777adc69d 100644 --- a/apps/call_request.go +++ b/apps/call_request.go @@ -18,7 +18,7 @@ type CallRequest struct { Call // Values are all values entered by the user. - Values map[string]interface{} `json:"values,omitempty"` + Values map[string]any `json:"values,omitempty"` // Context of execution, see the Context type for more information. Context Context `json:"context,omitempty"` @@ -48,11 +48,11 @@ func (creq *CallRequest) UnmarshalJSON(data []byte) error { // Need a type that is just like CallRequest, but without Call to avoid // recursion. structValue := struct { - Values map[string]interface{} `json:"values,omitempty"` - Context Context `json:"context,omitempty"` - RawCommand string `json:"raw_command,omitempty"` - SelectedField string `json:"selected_field,omitempty"` - Query string `json:"query,omitempty"` + Values map[string]any `json:"values,omitempty"` + Context Context `json:"context,omitempty"` + RawCommand string `json:"raw_command,omitempty"` + SelectedField string `json:"selected_field,omitempty"` + Query string `json:"query,omitempty"` }{} err = json.Unmarshal(data, &structValue) if err != nil { @@ -98,7 +98,7 @@ func (creq *CallRequest) GetValue(name, defaultValue string) string { return s } - opt, ok := creq.Values[name].(map[string]interface{}) + opt, ok := creq.Values[name].(map[string]any) if ok { if v, ok2 := opt["value"].(string); ok2 { return v @@ -113,7 +113,7 @@ func (creq *CallRequest) BoolValue(name string) bool { return false } - isBool := func(v interface{}) (bool, bool) { + isBool := func(v any) (bool, bool) { if b, ok := v.(bool); ok { return b, true } @@ -132,7 +132,7 @@ func (creq *CallRequest) BoolValue(name string) bool { return b } - opt, ok := creq.Values[name].(map[string]interface{}) + opt, ok := creq.Values[name].(map[string]any) if ok { if v, ok2 := isBool(opt["value"]); ok2 { return v @@ -153,8 +153,8 @@ func (creq CallRequest) String() string { return s } -func (creq CallRequest) Loggable() []interface{} { - props := append([]interface{}{}, creq.Call, creq.Context) +func (creq CallRequest) Loggable() []any { + props := append([]any{}, creq.Call, creq.Context) if len(creq.Values) > 0 { props = append(props, "values", utils.LogDigest(creq.Values)) } diff --git a/apps/call_response.go b/apps/call_response.go index d44329349..b5eb72b94 100644 --- a/apps/call_response.go +++ b/apps/call_response.go @@ -58,7 +58,7 @@ type CallResponse struct { RefreshBindings bool `json:"refresh_bindings,omitempty"` // Used in CallResponseTypeOK to return the displayble, and JSON results - Data interface{} `json:"data,omitempty"` + Data any `json:"data,omitempty"` // Used in CallResponseTypeNavigate NavigateToURL string `json:"navigate_to_url,omitempty"` @@ -78,14 +78,14 @@ func NewErrorResponse(err error) CallResponse { } } -func NewDataResponse(data interface{}) CallResponse { +func NewDataResponse(data any) CallResponse { return CallResponse{ Type: CallResponseTypeOK, Data: data, } } -func NewTextResponse(format string, args ...interface{}) CallResponse { +func NewTextResponse(format string, args ...any) CallResponse { return CallResponse{ Type: CallResponseTypeOK, Text: fmt.Sprintf(format, args...), @@ -148,8 +148,8 @@ func (cresp CallResponse) String() string { } } -func (cresp CallResponse) Loggable() []interface{} { - props := []interface{}{"response_type", string(cresp.Type)} +func (cresp CallResponse) Loggable() []any { + props := []any{"response_type", string(cresp.Type)} switch cresp.Type { case CallResponseTypeError: diff --git a/apps/call_test.go b/apps/call_test.go index bed58b4f3..3549891f0 100644 --- a/apps/call_test.go +++ b/apps/call_test.go @@ -30,7 +30,7 @@ func TestUnmarshalCall(t *testing.T) { require.NoError(t, err) require.Equal(t, &apps.Call{ Path: "/test", - State: map[string]interface{}{ + State: map[string]any{ "key": "value", }, Expand: &apps.Expand{ @@ -92,7 +92,7 @@ func TestMarshalCallResponse(t *testing.T) { data, err := json.Marshal(res.Form.Fields[0]) require.NoError(t, err) - m := map[string]interface{}{} + m := map[string]any{} err = json.Unmarshal(data, &m) require.NoError(t, err) diff --git a/apps/context.go b/apps/context.go index 4e72d22a4..e52879e6a 100644 --- a/apps/context.go +++ b/apps/context.go @@ -112,7 +112,7 @@ type OAuth2Context struct { ConnectURL string `json:"connect_url,omitempty"` CompleteURL string `json:"complete_url,omitempty"` - User interface{} `json:"user,omitempty"` + User any `json:"user,omitempty"` } func (c Context) String() string { @@ -135,14 +135,14 @@ func (c Context) String() string { return out } -func (c Context) Loggable() []interface{} { +func (c Context) Loggable() []any { _, props := c.loggable() return props } -func (c Context) loggable() (map[string]string, []interface{}) { +func (c Context) loggable() (map[string]string, []any) { display := map[string]string{} - props := []interface{}{} + props := []any{} add := func(f, v string) { if v != "" { display[f] = v diff --git a/apps/field.go b/apps/field.go index b0087196f..2cbe66e0c 100644 --- a/apps/field.go +++ b/apps/field.go @@ -56,7 +56,7 @@ type Field struct { ReadOnly bool `json:"readonly,omitempty"` // Present (default) value of the field - Value interface{} `json:"value,omitempty"` + Value any `json:"value,omitempty"` // Field description. Used in modal and autocomplete. Description string `json:"description,omitempty"` diff --git a/apps/goapp/bindable_action.go b/apps/goapp/bindable_action.go index 30dd93f42..51b7ae810 100644 --- a/apps/goapp/bindable_action.go +++ b/apps/goapp/bindable_action.go @@ -94,7 +94,7 @@ func WithExpand(expand apps.Expand) BindableOption { }) } -func WithState(state interface{}) BindableOption { +func WithState(state any) BindableOption { return optionWithActionPtr(func(b *BindableAction) { b.submit.State = state }) diff --git a/apps/goapp/call_request.go b/apps/goapp/call_request.go index 103f23f84..e47037d4c 100644 --- a/apps/goapp/call_request.go +++ b/apps/goapp/call_request.go @@ -53,12 +53,12 @@ func (creq CallRequest) GetValue(name, defaultValue string) string { } func (creq CallRequest) StringValue(name string) (string, bool) { - value := func(m map[string]interface{}, n string) (string, bool) { + value := func(m map[string]any, n string) (string, bool) { s, ok := m[n].(string) if ok { return s, true } - opt, ok := creq.Values[n].(map[string]interface{}) + opt, ok := creq.Values[n].(map[string]any) if ok { if v, ok2 := opt["value"].(string); ok2 { return v, true @@ -71,7 +71,7 @@ func (creq CallRequest) StringValue(name string) (string, bool) { return s, true } - if stateInterfaces, ok := creq.CallRequest.State.(map[string]interface{}); ok { + if stateInterfaces, ok := creq.CallRequest.State.(map[string]any); ok { if s, found := value(stateInterfaces, name); found { return s, true } @@ -91,7 +91,7 @@ func (creq CallRequest) BoolValue(name string) (value, found bool) { return false, false } - isBool := func(v interface{}) (bool, bool) { + isBool := func(v any) (bool, bool) { if b, ok := v.(bool); ok { return b, true } @@ -110,13 +110,13 @@ func (creq CallRequest) BoolValue(name string) (value, found bool) { return b, true } - if opt, ok := creq.Values[name].(map[string]interface{}); ok { + if opt, ok := creq.Values[name].(map[string]any); ok { if v, ok2 := isBool(opt["value"]); ok2 { return v, true } } - if state, ok := creq.CallRequest.State.(map[string]interface{}); ok && len(state) > 0 { + if state, ok := creq.CallRequest.State.(map[string]any); ok && len(state) > 0 { if b, ok2 := isBool(state[name]); ok2 { return b, true } diff --git a/apps/goapp/call_request_test.go b/apps/goapp/call_request_test.go index a7cd8def1..0a38e97d8 100644 --- a/apps/goapp/call_request_test.go +++ b/apps/goapp/call_request_test.go @@ -25,7 +25,7 @@ func TestCallRequestJSON(t *testing.T) { }, }, }, - Values: map[string]interface{}{ + Values: map[string]any{ "testkey": "testvalue", }, } diff --git a/apps/log_string_test.go b/apps/log_string_test.go index 243ffdb6d..eb5e34653 100644 --- a/apps/log_string_test.go +++ b/apps/log_string_test.go @@ -29,7 +29,7 @@ func TestLoggable(t *testing.T) { } var fullCall = Call{ Path: "/some-path", - State: map[string]interface{}{ + State: map[string]any{ "key1": "confidential1", "key2": "confidential2", }, @@ -47,12 +47,12 @@ func TestLoggable(t *testing.T) { var fullCallRequest = CallRequest{ Call: fullCall, Context: simpleContext, - Values: map[string]interface{}{ + Values: map[string]any{ "vkey1": "confidential1", "vkey2": "confidential2", }, } - var testData = map[string]interface{}{ + var testData = map[string]any{ "A": "test", "B": 99, } @@ -70,13 +70,13 @@ func TestLoggable(t *testing.T) { } for name, test := range map[string]struct { - In interface{} - ExpectedProps []interface{} + In any + ExpectedProps []any ExpectedString string }{ "Context": { In: simpleContext, - ExpectedProps: []interface{}{ + ExpectedProps: []any{ "bot_user_id", "id_of_bot_user", "bot_access_token", "***nXYZ", }, @@ -84,14 +84,14 @@ func TestLoggable(t *testing.T) { }, "Call simple": { In: simpleCall, - ExpectedProps: []interface{}{ + ExpectedProps: []any{ "call_path", "/some-path", }, ExpectedString: "/some-path", }, "Call full": { In: fullCall, - ExpectedProps: []interface{}{ + ExpectedProps: []any{ "call_path", "/some-path", "call_expand", "acting_user_access_token:all,channel:summary,oauth2_app:all,user:all", "call_state", "key1,key2", @@ -100,37 +100,37 @@ func TestLoggable(t *testing.T) { }, "CallRequest simple": { In: simpleCallRequest, - ExpectedProps: []interface{}{simpleCall, simpleContext}, + ExpectedProps: []any{simpleCall, simpleContext}, ExpectedString: "call: /some-path, context: bot_access_token: ***nXYZ, bot_user_id: id_of_bot_user", }, "CallRequest full": { In: fullCallRequest, - ExpectedProps: []interface{}{fullCall, simpleContext, "values", "vkey1,vkey2"}, + ExpectedProps: []any{fullCall, simpleContext, "values", "vkey1,vkey2"}, ExpectedString: "call: /some-path, expand: acting_user_access_token:all,channel:summary,oauth2_app:all,user:all, state: key1,key2, context: bot_access_token: ***nXYZ, bot_user_id: id_of_bot_user, values: vkey1,vkey2", }, "CallResponse text": { In: NewTextResponse("test"), - ExpectedProps: []interface{}{"response_type", "ok", "response_text", "test"}, + ExpectedProps: []any{"response_type", "ok", "response_text", "test"}, ExpectedString: "OK: test", }, "CallResponse JSON data": { In: NewDataResponse(testData), - ExpectedProps: []interface{}{"response_type", "ok", "response_data", "omitted for logging"}, + ExpectedProps: []any{"response_type", "ok", "response_data", "omitted for logging"}, ExpectedString: "OK: data type map[string]interface {}, value: map[A:test B:99]", }, "CallResponse byte data": { In: NewDataResponse([]byte("12345")), - ExpectedProps: []interface{}{"response_type", "ok", "response_data", "omitted for logging"}, + ExpectedProps: []any{"response_type", "ok", "response_data", "omitted for logging"}, ExpectedString: "OK: data type []uint8, value: [49 50 51 52 53]", }, "CallResponse text data": { In: NewDataResponse("12345"), - ExpectedProps: []interface{}{"response_type", "ok", "response_data", "omitted for logging"}, + ExpectedProps: []any{"response_type", "ok", "response_data", "omitted for logging"}, ExpectedString: "OK: data type string, value: 12345", }, "CallResponse form": { In: NewFormResponse(testForm), - ExpectedProps: []interface{}{"response_type", "form", "response_form", "omitted for logging"}, + ExpectedProps: []any{"response_type", "form", "response_form", "omitted for logging"}, ExpectedString: `Form: omitted for logging`, }, "CallResponse navigate": { @@ -139,7 +139,7 @@ func TestLoggable(t *testing.T) { NavigateToURL: "http://x.y.z", UseExternalBrowser: true, }, - ExpectedProps: []interface{}{"response_type", "navigate", "response_url", "http://x.y.z", "use_external_browser", true}, + ExpectedProps: []any{"response_type", "navigate", "response_url", "http://x.y.z", "use_external_browser", true}, ExpectedString: `Navigate to: "http://x.y.z", using external browser`, }, "CallResponse call": { @@ -147,7 +147,7 @@ func TestLoggable(t *testing.T) { Type: CallResponseTypeCall, Call: &fullCall, }, - ExpectedProps: []interface{}{"response_type", "call", "response_call", "/some-path, expand: acting_user_access_token:all,channel:summary,oauth2_app:all,user:all, state: key1,key2"}, + ExpectedProps: []any{"response_type", "call", "response_call", "/some-path, expand: acting_user_access_token:all,channel:summary,oauth2_app:all,user:all, state: key1,key2"}, ExpectedString: `Call: /some-path, expand: acting_user_access_token:all,channel:summary,oauth2_app:all,user:all, state: key1,key2`, }, } { diff --git a/apps/subscription.go b/apps/subscription.go index f48eae2f6..aea66e2e8 100644 --- a/apps/subscription.go +++ b/apps/subscription.go @@ -168,8 +168,8 @@ func (e Event) validate(appendTo error) error { return appendTo } -func (sub Subscription) Loggable() []interface{} { - props := []interface{}{"subject", sub.Subject} +func (sub Subscription) Loggable() []any { + props := []any{"subject", sub.Subject} if len(sub.ChannelID) > 0 { props = append(props, "channel_id", sub.ChannelID) } @@ -179,8 +179,8 @@ func (sub Subscription) Loggable() []interface{} { return props } -func (e Event) Loggable() []interface{} { - props := []interface{}{"subject", string(e.Subject)} +func (e Event) Loggable() []any { + props := []any{"subject", string(e.Subject)} if e.ChannelID != "" { props = append(props, "channel_id", e.ChannelID) } diff --git a/examples/goapp/kv/app.go b/examples/goapp/kv/app.go index 9f78e6bee..9134e13d7 100644 --- a/examples/goapp/kv/app.go +++ b/examples/goapp/kv/app.go @@ -121,7 +121,7 @@ var get = goapp.MakeBindableFormOrPanic("get", client = creq.AsActingUser() } - var value interface{} + var value any err := client.KVGet(prefix, key, &value) if err != nil { return apps.NewTextResponse("Error: %v", err) diff --git a/server/appservices/oauth2.go b/server/appservices/oauth2.go index 87b4269ef..714d3d987 100644 --- a/server/appservices/oauth2.go +++ b/server/appservices/oauth2.go @@ -49,7 +49,7 @@ func (a *AppServices) StoreOAuth2App(r *incoming.Request, data []byte) error { return err } - r.Config().MattermostAPI().Frontend.PublishWebSocketEvent(config.WebSocketEventRefreshBindings, map[string]interface{}{}, &model.WebsocketBroadcast{}) + r.Config().MattermostAPI().Frontend.PublishWebSocketEvent(config.WebSocketEventRefreshBindings, map[string]any{}, &model.WebsocketBroadcast{}) return nil } @@ -89,7 +89,7 @@ func (a *AppServices) StoreOAuth2User(r *incoming.Request, data []byte) error { return err } - r.Config().MattermostAPI().Frontend.PublishWebSocketEvent(config.WebSocketEventRefreshBindings, map[string]interface{}{}, &model.WebsocketBroadcast{UserId: actingUserID}) + r.Config().MattermostAPI().Frontend.PublishWebSocketEvent(config.WebSocketEventRefreshBindings, map[string]any{}, &model.WebsocketBroadcast{UserId: actingUserID}) return nil } diff --git a/server/appservices/timer.go b/server/appservices/timer.go index 5d156b10b..7c2d37f7a 100644 --- a/server/appservices/timer.go +++ b/server/appservices/timer.go @@ -27,8 +27,8 @@ func (t storedTimer) Key(appID apps.AppID, at int64) string { return string(appID) + t.UserID + strconv.FormatInt(at, 10) } -func (t storedTimer) Loggable() []interface{} { - props := []interface{}{"user_id", t.UserID} +func (t storedTimer) Loggable() []any { + props := []any{"user_id", t.UserID} props = append(props, "app_id", t.AppID) if t.ChannelID != "" { props = append(props, "call_team_id", t.TeamID) @@ -65,7 +65,7 @@ func (a *AppServices) CreateTimer(r *incoming.Request, t apps.Timer) error { return nil } -func (a *AppServices) ExecuteTimer(key string, props interface{}) { +func (a *AppServices) ExecuteTimer(key string, props any) { t, ok := props.(storedTimer) if !ok { a.log.Debugw("Timer contained unknown props. Inoring the timer.", "key", key, "props", props) diff --git a/server/builtin/settings.go b/server/builtin/settings.go index 3a30db038..672581766 100644 --- a/server/builtin/settings.go +++ b/server/builtin/settings.go @@ -84,7 +84,7 @@ func (a *builtinApp) settingsForm(r *incoming.Request, creq apps.CallRequest) ap ID: "modal.overrides.description", Other: "Current system settings: developer mode: **{{.DeveloperMode}}**, allow HTTP apps: **{{.AllowHTTPApps}}**", }, - TemplateData: map[string]interface{}{ + TemplateData: map[string]any{ "DeveloperMode": defaultDevMode, "AllowHTTPApps": defaultAllowHTTP, }, diff --git a/server/config/config.go b/server/config/config.go index 4772e1f84..9c526cb34 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -83,8 +83,8 @@ func (conf Config) StaticURL(appID apps.AppID, name string) string { return conf.AppURL(appID) + "/" + path.Join(appspath.StaticFolder, name) } -func (conf Config) GetPluginVersionInfo() map[string]interface{} { - return map[string]interface{}{ +func (conf Config) GetPluginVersionInfo() map[string]any { + return map[string]any{ "version": conf.PluginManifest.Version, } } @@ -100,8 +100,8 @@ func (conf *Config) InfoTemplateData() map[string]string { } } -func (conf Config) Loggable() []interface{} { - return append([]interface{}{}, +func (conf Config) Loggable() []any { + return append([]any{}, "version", conf.PluginManifest.Version, "commit", conf.BuildHashShort, "build_date", conf.BuildDate, diff --git a/server/config/log_string_test.go b/server/config/log_string_test.go index d9a9183d6..65f598812 100644 --- a/server/config/log_string_test.go +++ b/server/config/log_string_test.go @@ -28,12 +28,12 @@ func TestLoggable(t *testing.T) { } for name, test := range map[string]struct { - In interface{} - ExpectedProps []interface{} + In any + ExpectedProps []any }{ "simple Config": { In: simpleConfig, - ExpectedProps: []interface{}{ + ExpectedProps: []any{ "version", "v1.2.3", "commit", "1234567", "build_date", "date-is-just-a-string", diff --git a/server/config/service.go b/server/config/service.go index a0b67be89..3e7d33316 100644 --- a/server/config/service.go +++ b/server/config/service.go @@ -273,7 +273,7 @@ func (s *service) StoreConfig(sc StoredConfig, log utils.Logger) error { return err } - out := map[string]interface{}{} + out := map[string]any{} utils.Remarshal(&out, sc) // TODO test that SaveConfig will always cause OnConfigurationChange->c.Refresh diff --git a/server/httpin/bindings.go b/server/httpin/bindings.go index 89de54c48..db42a6fc3 100644 --- a/server/httpin/bindings.go +++ b/server/httpin/bindings.go @@ -27,7 +27,7 @@ func (s *Service) GetBindings(r *incoming.Request, w http.ResponseWriter, req *h apiTestFlag := q.Get("test") != "" if apiTestFlag { - testOut := map[string]interface{}{ + testOut := map[string]any{ "bindings": bindings, } if err != nil { diff --git a/server/httpin/kv.go b/server/httpin/kv.go index a4e47166c..41f1ee513 100644 --- a/server/httpin/kv.go +++ b/server/httpin/kv.go @@ -54,7 +54,7 @@ func (s *Service) KVPut(r *incoming.Request, w http.ResponseWriter, req *http.Re httputils.WriteErrorIfNeeded(w, err) return } - _ = httputils.WriteJSON(w, map[string]interface{}{ + _ = httputils.WriteJSON(w, map[string]any{ "changed": changed, }) } diff --git a/server/httpin/oauth2.go b/server/httpin/oauth2.go index 03cf3d05c..d0fef12e8 100644 --- a/server/httpin/oauth2.go +++ b/server/httpin/oauth2.go @@ -19,7 +19,7 @@ func (s *Service) RemoteOAuth2Connect(r *incoming.Request, w http.ResponseWriter func (s *Service) RemoteOAuth2Complete(r *incoming.Request, w http.ResponseWriter, req *http.Request) { q := req.URL.Query() - urlValues := map[string]interface{}{} + urlValues := map[string]any{} for key := range q { urlValues[key] = q.Get(key) } diff --git a/server/mocks/mock_proxy/mock_expand_getter.go b/server/mocks/mock_proxy/mock_expand_getter.go index f28ad44e7..0bc151128 100644 --- a/server/mocks/mock_proxy/mock_expand_getter.go +++ b/server/mocks/mock_proxy/mock_expand_getter.go @@ -45,7 +45,7 @@ func (m *MockExpandGetter) GetChannel(arg0 context.Context, arg1 string) (*model } // GetChannel indicates an expected call of GetChannel. -func (mr *MockExpandGetterMockRecorder) GetChannel(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetChannel(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannel", reflect.TypeOf((*MockExpandGetter)(nil).GetChannel), arg0, arg1) } @@ -60,7 +60,7 @@ func (m *MockExpandGetter) GetChannelMember(arg0 context.Context, arg1, arg2 str } // GetChannelMember indicates an expected call of GetChannelMember. -func (mr *MockExpandGetterMockRecorder) GetChannelMember(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetChannelMember(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelMember", reflect.TypeOf((*MockExpandGetter)(nil).GetChannelMember), arg0, arg1, arg2) } @@ -75,7 +75,7 @@ func (m *MockExpandGetter) GetPost(arg0 context.Context, arg1 string) (*model.Po } // GetPost indicates an expected call of GetPost. -func (mr *MockExpandGetterMockRecorder) GetPost(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetPost(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPost", reflect.TypeOf((*MockExpandGetter)(nil).GetPost), arg0, arg1) } @@ -90,7 +90,7 @@ func (m *MockExpandGetter) GetTeam(arg0 context.Context, arg1 string) (*model.Te } // GetTeam indicates an expected call of GetTeam. -func (mr *MockExpandGetterMockRecorder) GetTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetTeam(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeam", reflect.TypeOf((*MockExpandGetter)(nil).GetTeam), arg0, arg1) } @@ -105,7 +105,7 @@ func (m *MockExpandGetter) GetTeamMember(arg0 context.Context, arg1, arg2 string } // GetTeamMember indicates an expected call of GetTeamMember. -func (mr *MockExpandGetterMockRecorder) GetTeamMember(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetTeamMember(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamMember", reflect.TypeOf((*MockExpandGetter)(nil).GetTeamMember), arg0, arg1, arg2) } @@ -120,7 +120,7 @@ func (m *MockExpandGetter) GetUser(arg0 context.Context, arg1 string) (*model.Us } // GetUser indicates an expected call of GetUser. -func (mr *MockExpandGetterMockRecorder) GetUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetUser(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUser", reflect.TypeOf((*MockExpandGetter)(nil).GetUser), arg0, arg1) } diff --git a/server/mocks/mock_store/mock_appstore.go b/server/mocks/mock_store/mock_appstore.go index 743e56c78..f581b2c7e 100644 --- a/server/mocks/mock_store/mock_appstore.go +++ b/server/mocks/mock_store/mock_appstore.go @@ -47,7 +47,7 @@ func (m *MockAppStore) AsList(arg0 store.FilterOpt) []apps.App { } // AsList indicates an expected call of AsList. -func (mr *MockAppStoreMockRecorder) AsList(arg0 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) AsList(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsList", reflect.TypeOf((*MockAppStore)(nil).AsList), arg0) } @@ -61,7 +61,7 @@ func (m *MockAppStore) AsMap(arg0 store.FilterOpt) map[apps.AppID]apps.App { } // AsMap indicates an expected call of AsMap. -func (mr *MockAppStoreMockRecorder) AsMap(arg0 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) AsMap(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsMap", reflect.TypeOf((*MockAppStore)(nil).AsMap), arg0) } @@ -75,7 +75,7 @@ func (m *MockAppStore) Configure(arg0 config.Config, arg1 utils.Logger) error { } // Configure indicates an expected call of Configure. -func (mr *MockAppStoreMockRecorder) Configure(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Configure(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Configure", reflect.TypeOf((*MockAppStore)(nil).Configure), arg0, arg1) } @@ -89,7 +89,7 @@ func (m *MockAppStore) Delete(arg0 *incoming.Request, arg1 apps.AppID) error { } // Delete indicates an expected call of Delete. -func (mr *MockAppStoreMockRecorder) Delete(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Delete(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockAppStore)(nil).Delete), arg0, arg1) } @@ -104,7 +104,7 @@ func (m *MockAppStore) Get(arg0 apps.AppID) (*apps.App, error) { } // Get indicates an expected call of Get. -func (mr *MockAppStoreMockRecorder) Get(arg0 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Get(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockAppStore)(nil).Get), arg0) } @@ -112,7 +112,7 @@ func (mr *MockAppStoreMockRecorder) Get(arg0 interface{}) *gomock.Call { // InitBuiltin mocks base method. func (m *MockAppStore) InitBuiltin(arg0 ...apps.App) { m.ctrl.T.Helper() - varargs := []interface{}{} + varargs := []any{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -120,7 +120,7 @@ func (m *MockAppStore) InitBuiltin(arg0 ...apps.App) { } // InitBuiltin indicates an expected call of InitBuiltin. -func (mr *MockAppStoreMockRecorder) InitBuiltin(arg0 ...interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) InitBuiltin(arg0 ...any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitBuiltin", reflect.TypeOf((*MockAppStore)(nil).InitBuiltin), arg0...) } @@ -134,7 +134,7 @@ func (m *MockAppStore) Save(arg0 *incoming.Request, arg1 apps.App) error { } // Save indicates an expected call of Save. -func (mr *MockAppStoreMockRecorder) Save(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Save(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Save", reflect.TypeOf((*MockAppStore)(nil).Save), arg0, arg1) } diff --git a/server/mocks/mock_store/mock_session.go b/server/mocks/mock_store/mock_session.go index 47ee23b21..4f2636b6b 100644 --- a/server/mocks/mock_store/mock_session.go +++ b/server/mocks/mock_store/mock_session.go @@ -45,7 +45,7 @@ func (m *MockSessionStore) Delete(arg0 apps.AppID, arg1 string) error { } // Delete indicates an expected call of Delete. -func (mr *MockSessionStoreMockRecorder) Delete(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Delete(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSessionStore)(nil).Delete), arg0, arg1) } @@ -59,7 +59,7 @@ func (m *MockSessionStore) DeleteAllForApp(arg0 *incoming.Request, arg1 apps.App } // DeleteAllForApp indicates an expected call of DeleteAllForApp. -func (mr *MockSessionStoreMockRecorder) DeleteAllForApp(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) DeleteAllForApp(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllForApp", reflect.TypeOf((*MockSessionStore)(nil).DeleteAllForApp), arg0, arg1) } @@ -73,7 +73,7 @@ func (m *MockSessionStore) DeleteAllForUser(arg0 *incoming.Request, arg1 string) } // DeleteAllForUser indicates an expected call of DeleteAllForUser. -func (mr *MockSessionStoreMockRecorder) DeleteAllForUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) DeleteAllForUser(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllForUser", reflect.TypeOf((*MockSessionStore)(nil).DeleteAllForUser), arg0, arg1) } @@ -88,7 +88,7 @@ func (m *MockSessionStore) Get(arg0 apps.AppID, arg1 string) (*model.Session, er } // Get indicates an expected call of Get. -func (mr *MockSessionStoreMockRecorder) Get(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Get(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockSessionStore)(nil).Get), arg0, arg1) } @@ -103,7 +103,7 @@ func (m *MockSessionStore) ListForApp(arg0 apps.AppID) ([]*model.Session, error) } // ListForApp indicates an expected call of ListForApp. -func (mr *MockSessionStoreMockRecorder) ListForApp(arg0 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) ListForApp(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListForApp", reflect.TypeOf((*MockSessionStore)(nil).ListForApp), arg0) } @@ -118,7 +118,7 @@ func (m *MockSessionStore) ListForUser(arg0 *incoming.Request, arg1 string) ([]* } // ListForUser indicates an expected call of ListForUser. -func (mr *MockSessionStoreMockRecorder) ListForUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) ListForUser(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListForUser", reflect.TypeOf((*MockSessionStore)(nil).ListForUser), arg0, arg1) } @@ -132,7 +132,7 @@ func (m *MockSessionStore) Save(arg0 apps.AppID, arg1 string, arg2 *model.Sessio } // Save indicates an expected call of Save. -func (mr *MockSessionStoreMockRecorder) Save(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Save(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Save", reflect.TypeOf((*MockSessionStore)(nil).Save), arg0, arg1, arg2) } diff --git a/server/mocks/mock_upstream/mock_upstream.go b/server/mocks/mock_upstream/mock_upstream.go index 43fe33f92..d5e78dc9b 100644 --- a/server/mocks/mock_upstream/mock_upstream.go +++ b/server/mocks/mock_upstream/mock_upstream.go @@ -47,7 +47,7 @@ func (m *MockUpstream) GetStatic(arg0 context.Context, arg1 apps.App, arg2 strin } // GetStatic indicates an expected call of GetStatic. -func (mr *MockUpstreamMockRecorder) GetStatic(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockUpstreamMockRecorder) GetStatic(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStatic", reflect.TypeOf((*MockUpstream)(nil).GetStatic), arg0, arg1, arg2) } @@ -62,7 +62,7 @@ func (m *MockUpstream) Roundtrip(arg0 context.Context, arg1 apps.App, arg2 apps. } // Roundtrip indicates an expected call of Roundtrip. -func (mr *MockUpstreamMockRecorder) Roundtrip(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockUpstreamMockRecorder) Roundtrip(arg0, arg1, arg2, arg3 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Roundtrip", reflect.TypeOf((*MockUpstream)(nil).Roundtrip), arg0, arg1, arg2, arg3) } diff --git a/server/proxy/bindings.go b/server/proxy/bindings.go index 9ebc4fb1a..f413ffeb7 100644 --- a/server/proxy/bindings.go +++ b/server/proxy/bindings.go @@ -97,7 +97,7 @@ func (p *Proxy) GetBindings(r *incoming.Request, cc apps.Context) (ret []apps.Bi func (p *Proxy) dispatchRefreshBindingsEvent(userID string) { if userID != "" { p.conf.MattermostAPI().Frontend.PublishWebSocketEvent( - config.WebSocketEventRefreshBindings, map[string]interface{}{}, &model.WebsocketBroadcast{UserId: userID}) + config.WebSocketEventRefreshBindings, map[string]any{}, &model.WebsocketBroadcast{UserId: userID}) } } diff --git a/server/proxy/bindings_test.go b/server/proxy/bindings_test.go index 61b9311b4..f657c9b2f 100644 --- a/server/proxy/bindings_test.go +++ b/server/proxy/bindings_test.go @@ -535,7 +535,7 @@ func TestRefreshBindingsEventAfterCall(t *testing.T) { RefreshBindings: true, }, checkExpectation: func(testApi *plugintest.API) { - testApi.On("PublishWebSocketEvent", config.WebSocketEventRefreshBindings, map[string]interface{}{}, &model.WebsocketBroadcast{UserId: "userid"}).Once() + testApi.On("PublishWebSocketEvent", config.WebSocketEventRefreshBindings, map[string]any{}, &model.WebsocketBroadcast{UserId: "userid"}).Once() }, }, { diff --git a/server/proxy/expand.go b/server/proxy/expand.go index 02e79f7e6..d5746aab3 100644 --- a/server/proxy/expand.go +++ b/server/proxy/expand.go @@ -411,7 +411,7 @@ func (e *expander) expandOAuth2User(level apps.ExpandLevel) error { return errors.Wrap(err, "no data for user_id: "+userID) } - var v interface{} + var v any if err = json.Unmarshal(data, &v); err != nil { return errors.Wrapf(err, "user_id: "+userID) } diff --git a/server/proxy/expand_test.go b/server/proxy/expand_test.go index 444d15a8d..80b8f4f57 100644 --- a/server/proxy/expand_test.go +++ b/server/proxy/expand_test.go @@ -84,7 +84,7 @@ func TestExpand(t *testing.T) { base apps.Context noActingUser bool expectClientCalls func(*mock_proxy.MockExpandGetter) - expect map[string]interface{} // string for err.Error, or apps.ExpandedContext for success + expect map[string]any // string for err.Error, or apps.ExpandedContext for success } expected := func(ec apps.ExpandedContext) apps.ExpandedContext { @@ -106,7 +106,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetUser(gomock.Any(), userID).Times(1).Return(actingUser(), nil) }, - expect: map[string]interface{}{ + expect: map[string]any{ "all": expected(apps.ExpandedContext{ActingUser: actingUser()}), "summary": expected(apps.ExpandedContext{ActingUser: actingUserSummary}), "+all": expected(apps.ExpandedContext{ActingUser: actingUser()}), @@ -116,7 +116,7 @@ func TestExpand(t *testing.T) { }, }, "happy no API": { - expect: map[string]interface{}{ + expect: map[string]any{ "": expected(apps.ExpandedContext{}), }, }, @@ -124,7 +124,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetUser(gomock.Any(), userID).Times(1).Return(nil, utils.ErrForbidden) }, - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required acting_user: id: user4567890123456789012345: forbidden", "+summary": "failed to expand required acting_user: id: user4567890123456789012345: forbidden", "all": expected(apps.ExpandedContext{}), @@ -132,14 +132,14 @@ func TestExpand(t *testing.T) { }, }, "error invalid": { - expect: map[string]interface{}{ + expect: map[string]any{ "garbage": `"garbage" is not a known expand level`, "+garbage": `"garbage" is not a known expand level`, }, }, "error no ID": { noActingUser: true, - expect: map[string]interface{}{ + expect: map[string]any{ "+id": `failed to expand required acting_user: no user ID to expand`, "+all": `failed to expand required acting_user: no user ID to expand`, }, @@ -157,7 +157,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetChannelMember(gomock.Any(), channelID, userID).Times(1).Return(&channelMember, nil) }, - expect: map[string]interface{}{ + expect: map[string]any{ "+id": expected(apps.ExpandedContext{ChannelMember: &channelMemberIDOnly}), "id": expected(apps.ExpandedContext{ChannelMember: &channelMemberIDOnly}), "summary": expected(apps.ExpandedContext{ChannelMember: &channelMember}), @@ -168,7 +168,7 @@ func TestExpand(t *testing.T) { base: apps.Context{ UserAgentContext: apps.UserAgentContext{ChannelID: channelID}, }, - expect: map[string]interface{}{ + expect: map[string]any{ "": expected(apps.ExpandedContext{}), }, }, @@ -177,12 +177,12 @@ func TestExpand(t *testing.T) { UserAgentContext: apps.UserAgentContext{ChannelID: channelID}, }, noActingUser: true, - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required channel_member: no user ID or channel ID to expand", }, }, "error no channel ID": { - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required channel_member: no user ID or channel ID to expand", }, }, @@ -193,7 +193,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetChannelMember(gomock.Any(), channelID, userID).Times(1).Return(nil, errors.New("ERROR")) }, - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required channel_member: failed to get channel membership: ERROR", }, }, @@ -210,7 +210,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetTeamMember(gomock.Any(), teamID, userID).Times(1).Return(&teamMember, nil) }, - expect: map[string]interface{}{ + expect: map[string]any{ "+id": expected(apps.ExpandedContext{TeamMember: &teamMemberIDOnly}), "id": expected(apps.ExpandedContext{TeamMember: &teamMemberIDOnly}), "+all": expected(apps.ExpandedContext{TeamMember: &teamMember}), @@ -221,7 +221,7 @@ func TestExpand(t *testing.T) { base: apps.Context{ UserAgentContext: apps.UserAgentContext{TeamID: teamID}, }, - expect: map[string]interface{}{ + expect: map[string]any{ "": expected(apps.ExpandedContext{}), }, }, @@ -230,12 +230,12 @@ func TestExpand(t *testing.T) { UserAgentContext: apps.UserAgentContext{TeamID: teamID}, }, noActingUser: true, - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required team_member: no user ID or channel ID to expand", }, }, "no team ID": { - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required team_member: no user ID or channel ID to expand", }, }, @@ -246,7 +246,7 @@ func TestExpand(t *testing.T) { expectClientCalls: func(client *mock_proxy.MockExpandGetter) { client.EXPECT().GetTeamMember(gomock.Any(), teamID, userID).Times(1).Return(nil, errors.New("ERROR")) }, - expect: map[string]interface{}{ + expect: map[string]any{ "+all": "failed to expand required team_member: failed to get team membership: ERROR", }, }, diff --git a/server/proxy/invoke_call.go b/server/proxy/invoke_call.go index c47b14933..d3debe8e7 100644 --- a/server/proxy/invoke_call.go +++ b/server/proxy/invoke_call.go @@ -106,8 +106,8 @@ func checkForForbiddenPath(app *apps.App, path string) error { } // <>/<> TODO: need to cleanup creq (Context) here? or assume it's good as is? -func (p *Proxy) call(r *incoming.Request, app *apps.App, call apps.Call, cc *apps.Context, valuePairs ...interface{}) apps.CallResponse { - values := map[string]interface{}{} +func (p *Proxy) call(r *incoming.Request, app *apps.App, call apps.Call, cc *apps.Context, valuePairs ...any) apps.CallResponse { + values := map[string]any{} for len(valuePairs) > 0 { if len(valuePairs) == 1 { return apps.NewErrorResponse( diff --git a/server/proxy/invoke_oauth2.go b/server/proxy/invoke_oauth2.go index 0252485bb..4be454c18 100644 --- a/server/proxy/invoke_oauth2.go +++ b/server/proxy/invoke_oauth2.go @@ -40,7 +40,7 @@ func (p *Proxy) InvokeGetRemoteOAuth2ConnectURL(r *incoming.Request) (string, er return connectURL, nil } -func (p *Proxy) InvokeCompleteRemoteOAuth2(r *incoming.Request, urlValues map[string]interface{}) error { +func (p *Proxy) InvokeCompleteRemoteOAuth2(r *incoming.Request, urlValues map[string]any) error { app, err := p.getEnabledDestination(r) if err != nil { return err diff --git a/server/proxy/invoke_webhook.go b/server/proxy/invoke_webhook.go index 15379401a..1ac641c0f 100644 --- a/server/proxy/invoke_webhook.go +++ b/server/proxy/invoke_webhook.go @@ -33,7 +33,7 @@ func (p *Proxy) InvokeRemoteWebhook(r *incoming.Request, httpCallRequest apps.HT return err } - var datav interface{} + var datav any err = json.Unmarshal([]byte(httpCallRequest.Body), &datav) if err != nil { // if the data can not be decoded as JSON, send it "as is", as a string. @@ -52,7 +52,7 @@ func (p *Proxy) InvokeRemoteWebhook(r *incoming.Request, httpCallRequest apps.HT return upstream.Notify(r.Ctx(), up, *app, apps.CallRequest{ Call: call, Context: *cc, - Values: map[string]interface{}{ + Values: map[string]any{ "headers": httpCallRequest.Headers, "data": datav, "httpMethod": httpCallRequest.HTTPMethod, diff --git a/server/proxy/service.go b/server/proxy/service.go index 98fa3f23a..a5a6e536b 100644 --- a/server/proxy/service.go +++ b/server/proxy/service.go @@ -62,7 +62,7 @@ type API interface { GetApp(*incoming.Request) (*apps.App, error) GetBindings(*incoming.Request, apps.Context) ([]apps.Binding, error) InvokeCall(*incoming.Request, apps.CallRequest) (*apps.App, apps.CallResponse) - InvokeCompleteRemoteOAuth2(_ *incoming.Request, urlValues map[string]interface{}) error + InvokeCompleteRemoteOAuth2(_ *incoming.Request, urlValues map[string]any) error InvokeGetBindings(*incoming.Request, apps.Context) ([]apps.Binding, error) InvokeGetRemoteOAuth2ConnectURL(*incoming.Request) (string, error) InvokeGetStatic(_ *incoming.Request, path string) (io.ReadCloser, int, error) diff --git a/test/app/main.go b/test/app/main.go index a9b92b75b..8aab7fbb2 100644 --- a/test/app/main.go +++ b/test/app/main.go @@ -179,7 +179,7 @@ func checkJWT(req *http.Request, creq *apps.CallRequest) error { jwtoken := strings.TrimPrefix(authValue, "Bearer ") claims := apps.JWTClaims{} - _, err := jwt.ParseWithClaims(jwtoken, &claims, func(token *jwt.Token) (interface{}, error) { + _, err := jwt.ParseWithClaims(jwtoken, &claims, func(token *jwt.Token) (any, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("%w: %v", ErrUnexpectedSignMethod, token.Header["alg"]) } diff --git a/test/restapitest/call.go b/test/restapitest/call.go index 8c19d91e7..f96ded5a2 100644 --- a/test/restapitest/call.go +++ b/test/restapitest/call.go @@ -122,7 +122,7 @@ func testCalls(th *Helper) { Call: *apps.NewCall(builtin.PathDebugKVInfo).WithExpand(apps.Expand{ ActingUser: apps.ExpandSummary, }), - Values: map[string]interface{}{ + Values: map[string]any{ builtin.FieldAppID: uninstallID, }, } diff --git a/test/restapitest/echo.go b/test/restapitest/echo.go index 368c3b8cf..a13fe2a6d 100644 --- a/test/restapitest/echo.go +++ b/test/restapitest/echo.go @@ -72,7 +72,7 @@ func testEcho(th *Helper) { Call: apps.Call{ Path: "/echo", }, - Values: map[string]interface{}{ + Values: map[string]any{ "name": "value", }, Context: apps.Context{ diff --git a/test/restapitest/helper.go b/test/restapitest/helper.go index 176623500..fe59f7b40 100644 --- a/test/restapitest/helper.go +++ b/test/restapitest/helper.go @@ -267,7 +267,7 @@ func (th *Helper) requireEqualChannel(level apps.ExpandLevel, expected, got *mod clone := *channel clone.UpdateAt = 0 if clone.Props == nil { - clone.Props = map[string]interface{}{} + clone.Props = map[string]any{} } clone.LastPostAt = 0 clone.LastRootPostAt = 0 diff --git a/test/restapitest/kv.go b/test/restapitest/kv.go index 545f5d04c..ecc83aaf6 100644 --- a/test/restapitest/kv.go +++ b/test/restapitest/kv.go @@ -34,7 +34,7 @@ func newKVApp(t testing.TB) *goapp.App { }, ) - params := func(creq goapp.CallRequest) (client *appclient.Client, prefix, key string, value interface{}) { + params := func(creq goapp.CallRequest) (client *appclient.Client, prefix, key string, value any) { prefix, _ = creq.StringValue("prefix") key, ok := creq.StringValue("key") if !ok { @@ -58,7 +58,7 @@ func newKVApp(t testing.TB) *goapp.App { app.HandleCall("/get", func(creq goapp.CallRequest) apps.CallResponse { client, prefix, key, _ := params(creq) - v := map[string]interface{}{} + v := map[string]any{} err := client.KVGet(prefix, key, &v) require.NoError(t, err) return apps.NewTextResponse(utils.ToJSON(v)) @@ -83,7 +83,7 @@ func newKVApp(t testing.TB) *goapp.App { return app } -func kvCall(th *Helper, path string, asBot bool, prefix, key string, value interface{}) apps.CallResponse { +func kvCall(th *Helper, path string, asBot bool, prefix, key string, value any) apps.CallResponse { creq := apps.CallRequest{ Call: *apps.NewCall(path), Values: model.StringInterface{ @@ -120,7 +120,7 @@ func testKV(th *Helper) { api4.CheckUnauthorizedStatus(th, resp) assert.False(changed) - var out map[string]interface{} + var out map[string]any resp, err = client.KVGet("p", "id", &out) assert.Error(err) api4.CheckUnauthorizedStatus(th, resp) diff --git a/test/restapitest/notify.go b/test/restapitest/notify.go index 7573745c2..c99b99ffe 100644 --- a/test/restapitest/notify.go +++ b/test/restapitest/notify.go @@ -164,7 +164,7 @@ func testNotify(th *Helper) { func (th *Helper) subscribeAs(appclient appClient, appID apps.AppID, event apps.Event, expand apps.Expand) { cresp := appclient.happyCall(appID, apps.CallRequest{ Call: *apps.NewCall("/subscribe").ExpandActingUserClient(), - Values: map[string]interface{}{ + Values: map[string]any{ "sub": apps.Subscription{ Event: event, Call: *apps.NewCall("/notify").WithExpand(expand), @@ -176,7 +176,7 @@ func (th *Helper) subscribeAs(appclient appClient, appID apps.AppID, event apps. th.Cleanup(func() { cresp := appclient.happyCall(appID, apps.CallRequest{ Call: *apps.NewCall("/unsubscribe").ExpandActingUserClient(), - Values: map[string]interface{}{ + Values: map[string]any{ "sub": apps.Subscription{ Event: event, }, diff --git a/test/restapitest/oauth2.go b/test/restapitest/oauth2.go index 3e35e7242..e3950f18b 100644 --- a/test/restapitest/oauth2.go +++ b/test/restapitest/oauth2.go @@ -27,13 +27,13 @@ var testOAuth2App = apps.OAuth2App{ ClientID: "client-id", ClientSecret: "client-secret", RemoteRootURL: "http://test.test/test", - Data: map[string]interface{}{ + Data: map[string]any{ "test_bool": true, "test_string": "test", }, } -var testOAuth2User = map[string]interface{}{ +var testOAuth2User = map[string]any{ "test_bool": true, "test_string": "test", } @@ -53,7 +53,7 @@ func newOAuth2App(t *testing.T) *goapp.App { }, ) - params := func(creq goapp.CallRequest) (client *appclient.Client, value interface{}) { + params := func(creq goapp.CallRequest) (client *appclient.Client, value any) { asBot, _ := creq.BoolValue("as_bot") value = model.StringInterface{ "test-name": "test-data", @@ -70,7 +70,7 @@ func newOAuth2App(t *testing.T) *goapp.App { } largeJSON := struct { - Fields []interface{} + Fields []any }{} for { data, err := json.Marshal(largeJSON) @@ -84,7 +84,7 @@ func newOAuth2App(t *testing.T) *goapp.App { app.HandleCall("/get-user", func(creq goapp.CallRequest) apps.CallResponse { client, _ := params(creq) - v := map[string]interface{}{} + v := map[string]any{} err := client.GetOAuth2User(&v) return respond(utils.ToJSON(v), err) }) @@ -100,7 +100,7 @@ func newOAuth2App(t *testing.T) *goapp.App { func(creq goapp.CallRequest) apps.CallResponse { client, value := params(creq) if value == nil { - value = map[string]interface{}{} + value = map[string]any{} } oapp := apps.OAuth2App{} utils.Remarshal(&oapp, value) @@ -153,7 +153,7 @@ func newOAuth2App(t *testing.T) *goapp.App { return app } -func oauth2Call(th *Helper, path string, value interface{}) *apps.CallResponse { +func oauth2Call(th *Helper, path string, value any) *apps.CallResponse { creq := apps.CallRequest{ Call: *apps.NewCall(path). WithExpand(apps.Expand{ @@ -164,7 +164,7 @@ func oauth2Call(th *Helper, path string, value interface{}) *apps.CallResponse { creq.Call.Expand.ActingUser = apps.ExpandSummary creq.Call.Expand.ActingUserAccessToken = apps.ExpandAll if value != nil { - creq.Values = map[string]interface{}{ + creq.Values = map[string]any{ "value": value, } } @@ -240,13 +240,13 @@ func testOAuth2(th *Helper) { err := json.Unmarshal([]byte(cresp.Text), &creq) require.NoError(th, err) require.EqualValues(th, &testOAuth2App, &creq.Context.ExpandedContext.OAuth2.OAuth2App) - require.EqualValues(th, map[string]interface{}{"test_bool": true, "test_string": "test"}, creq.Context.ExpandedContext.OAuth2.User) + require.EqualValues(th, map[string]any{"test_bool": true, "test_string": "test"}, creq.Context.ExpandedContext.OAuth2.User) }) th.Run("Error unauthenticated requests are rejected", func(th *Helper) { client := th.CreateUnauthenticatedClientPP() - in := map[string]interface{}{ + in := map[string]any{ "test_bool": true, "test_string": "test", } @@ -254,7 +254,7 @@ func testOAuth2(th *Helper) { require.Error(th, err) api4.CheckUnauthorizedStatus(th, resp) - var out map[string]interface{} + var out map[string]any resp, err = client.GetOAuth2User(&out) require.Error(th, err) api4.CheckUnauthorizedStatus(th, resp) @@ -268,7 +268,7 @@ func testOAuth2(th *Helper) { th.Cleanup(cleanupOAuth2User(th)) // set a "previous" value. - cresp := oauth2Call(th, "/store-user", map[string]interface{}{ + cresp := oauth2Call(th, "/store-user", map[string]any{ "test_bool": true, "test_string": "test", }) @@ -296,7 +296,7 @@ func testOAuth2(th *Helper) { th.Cleanup(cleanupOAuth2User(th)) // set a "previous" value. - cresp := oauth2Call(th, "/store-user", map[string]interface{}{ + cresp := oauth2Call(th, "/store-user", map[string]any{ "test_bool": true, "test_string": "test", }) @@ -371,7 +371,7 @@ func testOAuth2(th *Helper) { // try to store. creq.Call = *apps.NewCall("/store-user") - creq.Values["value"] = map[string]interface{}{ + creq.Values["value"] = map[string]any{ "test_bool": true, "test_string": "test", } diff --git a/test/restapitest/uninstall.go b/test/restapitest/uninstall.go index 1773084b1..5b76e8b65 100644 --- a/test/restapitest/uninstall.go +++ b/test/restapitest/uninstall.go @@ -43,7 +43,7 @@ func newUninstallApp(th *Helper) *goapp.App { require.NotEqual(th, creq.Context.BotUserID, creq.Context.ActingUser.Id, "must be called as the user running the InstallApp API, not as the bot") // Create KV data - testv := map[string]interface{}{"field": "test-value"} + testv := map[string]any{"field": "test-value"} setKV := func(client *appclient.Client, prefix, key string) { changed, err := client.KVSet(prefix, key, testv) require.True(th, changed) @@ -94,7 +94,7 @@ func testUninstall(th *Helper) { th.Run(fmt.Sprintf("add %v garbage KV entries", n), func(th *Helper) { cresp := th.HappyAdminCall(builtin.AppID, apps.CallRequest{ Call: *apps.NewCall(builtin.PathDebugStorePollute).WithExpand(apps.Expand{ActingUser: apps.ExpandSummary}), - Values: map[string]interface{}{"count": fmt.Sprintf("%v", n)}, + Values: map[string]any{"count": fmt.Sprintf("%v", n)}, }) require.Equal(th, apps.CallResponseTypeOK, cresp.Type) }) diff --git a/upstream/upplugin/upstream.go b/upstream/upplugin/upstream.go index f663f07f2..adcea753a 100644 --- a/upstream/upplugin/upstream.go +++ b/upstream/upplugin/upstream.go @@ -58,7 +58,7 @@ func (u *Upstream) invoke(ctx context.Context, app apps.App, creq apps.CallReque } // post does not close resp.Body, it's the caller's responsibility -func (u *Upstream) post(ctx context.Context, url string, msg interface{}) (*http.Response, error) { +func (u *Upstream) post(ctx context.Context, url string, msg any) (*http.Response, error) { piper, pipew := io.Pipe() go func() { encodeErr := json.NewEncoder(pipew).Encode(msg) diff --git a/utils/errors.go b/utils/errors.go index 5a00fcd46..b80bf19bd 100644 --- a/utils/errors.go +++ b/utils/errors.go @@ -11,7 +11,7 @@ var ErrInvalid = errors.New("invalid input") var ErrNotFound = errors.New("not found") var ErrUnauthorized = errors.New("unauthorized") -func NewError(source error, args ...interface{}) error { +func NewError(source error, args ...any) error { s, _ := args[0].(string) err, _ := args[0].(error) @@ -30,11 +30,11 @@ func NewError(source error, args ...interface{}) error { } } -func NewAlreadyExistsError(args ...interface{}) error { return NewError(ErrAlreadyExists, args...) } -func NewForbiddenError(args ...interface{}) error { return NewError(ErrForbidden, args...) } -func NewInvalidError(args ...interface{}) error { return NewError(ErrInvalid, args...) } -func NewNotFoundError(args ...interface{}) error { return NewError(ErrNotFound, args...) } -func NewUnauthorizedError(args ...interface{}) error { return NewError(ErrUnauthorized, args...) } +func NewAlreadyExistsError(args ...any) error { return NewError(ErrAlreadyExists, args...) } +func NewForbiddenError(args ...any) error { return NewError(ErrForbidden, args...) } +func NewInvalidError(args ...any) error { return NewError(ErrInvalid, args...) } +func NewNotFoundError(args ...any) error { return NewError(ErrNotFound, args...) } +func NewUnauthorizedError(args ...any) error { return NewError(ErrUnauthorized, args...) } type LocError []*i18n.LocalizeConfig @@ -45,9 +45,9 @@ func (err LocError) Error(bundle *i18n.Bundle, loc *i18n.Localizer) string { errStr := "" for _, e := range err { if e.TemplateData == nil { - e.TemplateData = map[string]interface{}{} + e.TemplateData = map[string]any{} } - e.TemplateData.(map[string]interface{})["Error"] = errStr + e.TemplateData.(map[string]any)["Error"] = errStr errStr = bundle.LocalizeWithConfig(loc, e) } diff --git a/utils/httputils/utils.go b/utils/httputils/utils.go index 316a1765b..49ada26bd 100644 --- a/utils/httputils/utils.go +++ b/utils/httputils/utils.go @@ -74,14 +74,14 @@ func ErrorToStatus(err error) int { // WriteJSONStatus encodes and writes out an object, with a custom response // status code. -func WriteJSONStatus(w http.ResponseWriter, statusCode int, v interface{}) error { +func WriteJSONStatus(w http.ResponseWriter, statusCode int, v any) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(statusCode) return json.NewEncoder(w).Encode(v) } // WriteJSON encodes and writes out an object, with a 200 response status code. -func WriteJSON(w http.ResponseWriter, v interface{}) error { +func WriteJSON(w http.ResponseWriter, v any) error { return WriteJSONStatus(w, http.StatusOK, v) } @@ -102,7 +102,7 @@ func DoHandleData(ct string, data []byte) http.HandlerFunc { // DoHandleJSON returns an http.HandleFunc that serves a data chunk with a // specified content-type. -func DoHandleJSON(v interface{}) http.HandlerFunc { +func DoHandleJSON(v any) http.HandlerFunc { return func(w http.ResponseWriter, req *http.Request) { _ = WriteJSON(w, v) } diff --git a/utils/json.go b/utils/json.go index c02ab4666..8c5780fbe 100644 --- a/utils/json.go +++ b/utils/json.go @@ -4,7 +4,7 @@ import ( "encoding/json" ) -func ToJSON(in interface{}) string { +func ToJSON(in any) string { bb, err := json.Marshal(in) if err != nil { return "" @@ -12,7 +12,7 @@ func ToJSON(in interface{}) string { return string(bb) } -func Pretty(in interface{}) string { +func Pretty(in any) string { bb, err := json.MarshalIndent(in, "", " ") if err != nil { return "" @@ -20,7 +20,7 @@ func Pretty(in interface{}) string { return string(bb) } -func Remarshal(dst, src interface{}) { +func Remarshal(dst, src any) { data, _ := json.Marshal(src) _ = json.Unmarshal(data, dst) } diff --git a/utils/json_test.go b/utils/json_test.go index c974b866a..451e5e920 100644 --- a/utils/json_test.go +++ b/utils/json_test.go @@ -18,7 +18,7 @@ func TestRemarshal(t *testing.T) { TestArray []int } - var tMap = map[string]interface{}{} + var tMap = map[string]any{} tStruct := testT{ TestStr: "test-str", TestInt: 10, @@ -29,13 +29,13 @@ func TestRemarshal(t *testing.T) { } Remarshal(&tMap, tStruct) - require.EqualValues(t, map[string]interface{}{ + require.EqualValues(t, map[string]any{ "TestStr": "test-str", "TestInt": float64(10), "testJsonCamel": "test-json-camel", "test_json_snake": "test-json-snake", - "TestStruct": map[string]interface{}{"A": "a", "B": "b"}, - "TestArray": []interface{}{float64(0), float64(1), float64(2)}, + "TestStruct": map[string]any{"A": "a", "B": "b"}, + "TestArray": []any{float64(0), float64(1), float64(2)}, }, tMap) ts := testT{} diff --git a/utils/logger.go b/utils/logger.go index 75930e53b..b3749c4cb 100644 --- a/utils/logger.go +++ b/utils/logger.go @@ -16,40 +16,40 @@ const ErrorKey = "error" type Logger interface { // from zap.SugaredLogger - Debugf(template string, args ...interface{}) - Debugw(msg string, keysAndValues ...interface{}) - Warnf(template string, args ...interface{}) - Warnw(msg string, keysAndValues ...interface{}) - Infof(template string, args ...interface{}) - Infow(msg string, keysAndValues ...interface{}) - Errorf(template string, args ...interface{}) - Errorw(msg string, keysAndValues ...interface{}) - Fatalf(template string, args ...interface{}) - Fatalw(msg string, keysAndValues ...interface{}) + Debugf(template string, args ...any) + Debugw(msg string, keysAndValues ...any) + Warnf(template string, args ...any) + Warnw(msg string, keysAndValues ...any) + Infof(template string, args ...any) + Infow(msg string, keysAndValues ...any) + Errorf(template string, args ...any) + Errorw(msg string, keysAndValues ...any) + Fatalf(template string, args ...any) + Fatalw(msg string, keysAndValues ...any) // implemented here to provide a consistent interface, without using // *zap.SugaredLogger WithError(error) Logger - With(args ...interface{}) Logger + With(args ...any) Logger } type NilLogger struct{} var _ Logger = NilLogger{} -func (NilLogger) Debugf(string, ...interface{}) {} -func (NilLogger) Debugw(string, ...interface{}) {} -func (NilLogger) Warnf(string, ...interface{}) {} -func (NilLogger) Warnw(string, ...interface{}) {} -func (NilLogger) Infof(string, ...interface{}) {} -func (NilLogger) Infow(string, ...interface{}) {} -func (NilLogger) Errorf(string, ...interface{}) {} -func (NilLogger) Errorw(string, ...interface{}) {} -func (NilLogger) Fatalf(string, ...interface{}) {} -func (NilLogger) Fatalw(string, ...interface{}) {} +func (NilLogger) Debugf(string, ...any) {} +func (NilLogger) Debugw(string, ...any) {} +func (NilLogger) Warnf(string, ...any) {} +func (NilLogger) Warnw(string, ...any) {} +func (NilLogger) Infof(string, ...any) {} +func (NilLogger) Infow(string, ...any) {} +func (NilLogger) Errorf(string, ...any) {} +func (NilLogger) Errorw(string, ...any) {} +func (NilLogger) Fatalf(string, ...any) {} +func (NilLogger) Fatalw(string, ...any) {} -func (l NilLogger) WithError(error) Logger { return l } -func (l NilLogger) With(args ...interface{}) Logger { return l } +func (l NilLogger) WithError(error) Logger { return l } +func (l NilLogger) With(args ...any) Logger { return l } type logger struct { *zap.SugaredLogger @@ -65,12 +65,12 @@ func (l *logger) WithError(err error) Logger { } type HasLoggable interface { - Loggable() []interface{} + Loggable() []any } // expandWith expands anything that implements LogProps into name, value pairs. -func expandWith(args []interface{}) []interface{} { - var with []interface{} +func expandWith(args []any) []any { + var with []any expectKeyOrProps := true for _, v := range args { @@ -94,7 +94,7 @@ func expandWith(args []interface{}) []interface{} { return with } -func (l *logger) With(args ...interface{}) Logger { +func (l *logger) With(args ...any) Logger { return &logger{ SugaredLogger: l.SugaredLogger.With(expandWith(args)...), } @@ -136,13 +136,13 @@ func MustMakeCommandLogger(level zapcore.Level) Logger { } } -func LogDigest(i interface{}) string { +func LogDigest(i any) string { if s, ok := i.(string); ok { return s } var keys []string - if m, ok := i.(map[string]interface{}); ok { + if m, ok := i.(map[string]any); ok { for key := range m { keys = append(keys, key) } diff --git a/utils/mattermost.go b/utils/mattermost.go index 951a19182..38146099f 100644 --- a/utils/mattermost.go +++ b/utils/mattermost.go @@ -12,7 +12,7 @@ func CodeBlock(in string) string { return fmt.Sprintf("\n```\n%s\n```\n", in) } -func JSONBlock(in interface{}) string { +func JSONBlock(in any) string { return "\n```json\n" + Pretty(in) + "\n```\n" } diff --git a/utils/plugin_logger.go b/utils/plugin_logger.go index c2b276e60..12e896b24 100644 --- a/utils/plugin_logger.go +++ b/utils/plugin_logger.go @@ -96,7 +96,7 @@ func (p *plugin) Write(e zapcore.Entry, fields []zapcore.Field) error { w = p.logger.Warn } - pairs := []interface{}{} + pairs := []any{} for k, f := range p.fields { switch { case f.Integer != 0: From 770ab042d5c94ba5aa162ffe4aad60a47476e3b7 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 13:57:44 +0100 Subject: [PATCH 09/13] Ignore linter issues for now --- .golangci.yml | 34 +++++++++++++++++++ server/builtin/app.go | 2 +- server/builtin/debug_kv_edit_modal.go | 47 --------------------------- server/builtin/settings.go | 14 ++------ upstream/upaws/clean.go | 8 ++--- 5 files changed, 42 insertions(+), 63 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a5a45ddf6..760339eb7 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -47,10 +47,44 @@ linters: - staticcheck path: / text: BotJoined + # The follow execptions got added as part of the migration to go1.24. + # We should revisit them in the future. - linters: - staticcheck path: / text: BotLeft + # Ignore QF1008: embedded field selector suggestions + - linters: + - staticcheck + text: "QF1008: could remove embedded field" + # Ignore unused parameter suggestions + - linters: + - revive + text: "unused-parameter:" + # Ignore receiver naming suggestions + - linters: + - revive + text: "receiver-naming:" + # Ignore non-constant format string warnings + - linters: + - govet + text: "printf: non-constant format string" + # Ignore unparam warnings about always receiving same value + - linters: + - unparam + text: "always receives" + # Ignore G115 integer overflow conversion warnings + - linters: + - gosec + text: "G115: integer overflow conversion" + # Ignore QF1008 selector simplification suggestions + - linters: + - staticcheck + text: "QF1008: could simplify selectors" + # Ignore var-naming warnings + - linters: + - revive + text: "var-naming: avoid meaningless package names" paths: - third_party$ - builtin$ diff --git a/server/builtin/app.go b/server/builtin/app.go index 6b69443db..8ff233f5c 100644 --- a/server/builtin/app.go +++ b/server/builtin/app.go @@ -111,7 +111,7 @@ type builtinApp struct { var _ upstream.Upstream = (*builtinApp)(nil) -func NewBuiltinApp(conf config.Service, proxy proxy.Service, appservices appservices.Service, httpOut httpout.Service, sessionService session.Service) *builtinApp { +func NewBuiltinApp(conf config.Service, proxy proxy.Service, appservices appservices.Service, httpOut httpout.Service, sessionService session.Service) upstream.Upstream { a := &builtinApp{ conf: conf, proxy: proxy, diff --git a/server/builtin/debug_kv_edit_modal.go b/server/builtin/debug_kv_edit_modal.go index ccfe2f381..bfdde007c 100644 --- a/server/builtin/debug_kv_edit_modal.go +++ b/server/builtin/debug_kv_edit_modal.go @@ -7,59 +7,12 @@ import ( "fmt" "github.com/nicksnyder/go-i18n/v2/i18n" - "github.com/pkg/errors" "github.com/mattermost/mattermost-plugin-apps/apps" "github.com/mattermost/mattermost-plugin-apps/server/incoming" "github.com/mattermost/mattermost-plugin-apps/utils" ) -func (a *builtinApp) debugKVEditModal(_ *incoming.Request, creq apps.CallRequest) apps.CallResponse { - action := creq.GetValue(fAction, "") - newValue := creq.GetValue(fNewValue, "") - key, _ := creq.State.(string) - loc := a.newLocalizer(creq) - - mm := a.conf.MattermostAPI() - switch action { - case "store": - _, err := mm.KV.Set(key, []byte(newValue)) - if err != nil { - return apps.NewErrorResponse(err) - } - return apps.NewTextResponse( - a.conf.I18N().LocalizeWithConfig(loc, &i18n.LocalizeConfig{ - DefaultMessage: &i18n.Message{ - ID: "modal.kv.edit.submit.stored", - Other: "Stored:\n```\nKey: {{.Key}}\n\n{{.Value}}\n```\n", - }, - TemplateData: map[string]string{ - "Key": key, - "Value": newValue, - }, - })) - - case "delete": - err := mm.KV.Delete(key) - if err != nil { - return apps.NewErrorResponse(err) - } - return apps.NewTextResponse( - a.conf.I18N().LocalizeWithConfig(loc, &i18n.LocalizeConfig{ - DefaultMessage: &i18n.Message{ - ID: "modal.kv.edit.submit.deleted", - Other: "Deleted:\n```\nKey: {{.Key}}\n```\n", - }, - TemplateData: map[string]string{ - "Key": key, - }, - })) - - default: - return apps.NewErrorResponse(errors.Errorf("don't know what to do: %q", action)) - } -} - func (a *builtinApp) debugKVEditModalForm(_ *incoming.Request, creq apps.CallRequest) apps.CallResponse { key, _ := creq.State.(string) if key == "" { diff --git a/server/builtin/settings.go b/server/builtin/settings.go index 672581766..f2aff7a78 100644 --- a/server/builtin/settings.go +++ b/server/builtin/settings.go @@ -418,12 +418,12 @@ func (a *builtinApp) settingsSave(r *incoming.Request, creq apps.CallRequest) ap } } - switch { - case wantOverrides == "use": + switch wantOverrides { + case "use": sc.DeveloperModeOverride = &developerModeOverride sc.AllowHTTPAppsOverride = &allowHTTPAppsOverride - case wantOverrides == "none": + case "none": sc.DeveloperModeOverride = nil sc.AllowHTTPAppsOverride = nil @@ -486,11 +486,3 @@ func (a *builtinApp) settingsSave(r *incoming.Request, creq apps.CallRequest) ap creq.Values[fLog] = "use" return a.settingsForm(r, creq) } - -func getSelectedValue(trueOtion, falseOption apps.SelectOption, value bool) apps.SelectOption { - if value { - return trueOtion - } - - return falseOption -} diff --git a/upstream/upaws/clean.go b/upstream/upaws/clean.go index b5308d69d..0f2bd8cce 100644 --- a/upstream/upaws/clean.go +++ b/upstream/upaws/clean.go @@ -10,7 +10,7 @@ import ( ) func CleanAWS(asAdmin Client, accessKeyID string, log utils.Logger) error { - delete := func(typ string, name Name, del func(Name) error) error { + cleanup := func(typ string, name Name, del func(Name) error) error { err := del(name) if err != nil { if !errors.Is(err, utils.ErrNotFound) { @@ -46,18 +46,18 @@ func CleanAWS(asAdmin Client, accessKeyID string, log utils.Logger) error { } } - err = delete("access keys", DefaultUserName, func(name Name) error { + err = cleanup("access keys", DefaultUserName, func(name Name) error { return asAdmin.DeleteAccessKeys(name, accessKeyID) }) if err != nil { return err } - err = delete("group", DefaultGroupName, asAdmin.DeleteGroup) + err = cleanup("group", DefaultGroupName, asAdmin.DeleteGroup) if err != nil { return err } - err = delete("user", DefaultUserName, asAdmin.DeleteUser) + err = cleanup("user", DefaultUserName, asAdmin.DeleteUser) if err != nil { return err } From 3737acd655b7c11032c8266910a57372ab95a442 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 14:02:54 +0100 Subject: [PATCH 10/13] make mock --- server/mocks/mock_proxy/mock_expand_getter.go | 12 ++++++------ server/mocks/mock_store/mock_appstore.go | 16 ++++++++-------- server/mocks/mock_store/mock_session.go | 14 +++++++------- server/mocks/mock_upstream/mock_upstream.go | 4 ++-- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/server/mocks/mock_proxy/mock_expand_getter.go b/server/mocks/mock_proxy/mock_expand_getter.go index 0bc151128..f28ad44e7 100644 --- a/server/mocks/mock_proxy/mock_expand_getter.go +++ b/server/mocks/mock_proxy/mock_expand_getter.go @@ -45,7 +45,7 @@ func (m *MockExpandGetter) GetChannel(arg0 context.Context, arg1 string) (*model } // GetChannel indicates an expected call of GetChannel. -func (mr *MockExpandGetterMockRecorder) GetChannel(arg0, arg1 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetChannel(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannel", reflect.TypeOf((*MockExpandGetter)(nil).GetChannel), arg0, arg1) } @@ -60,7 +60,7 @@ func (m *MockExpandGetter) GetChannelMember(arg0 context.Context, arg1, arg2 str } // GetChannelMember indicates an expected call of GetChannelMember. -func (mr *MockExpandGetterMockRecorder) GetChannelMember(arg0, arg1, arg2 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetChannelMember(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelMember", reflect.TypeOf((*MockExpandGetter)(nil).GetChannelMember), arg0, arg1, arg2) } @@ -75,7 +75,7 @@ func (m *MockExpandGetter) GetPost(arg0 context.Context, arg1 string) (*model.Po } // GetPost indicates an expected call of GetPost. -func (mr *MockExpandGetterMockRecorder) GetPost(arg0, arg1 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetPost(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPost", reflect.TypeOf((*MockExpandGetter)(nil).GetPost), arg0, arg1) } @@ -90,7 +90,7 @@ func (m *MockExpandGetter) GetTeam(arg0 context.Context, arg1 string) (*model.Te } // GetTeam indicates an expected call of GetTeam. -func (mr *MockExpandGetterMockRecorder) GetTeam(arg0, arg1 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeam", reflect.TypeOf((*MockExpandGetter)(nil).GetTeam), arg0, arg1) } @@ -105,7 +105,7 @@ func (m *MockExpandGetter) GetTeamMember(arg0 context.Context, arg1, arg2 string } // GetTeamMember indicates an expected call of GetTeamMember. -func (mr *MockExpandGetterMockRecorder) GetTeamMember(arg0, arg1, arg2 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetTeamMember(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamMember", reflect.TypeOf((*MockExpandGetter)(nil).GetTeamMember), arg0, arg1, arg2) } @@ -120,7 +120,7 @@ func (m *MockExpandGetter) GetUser(arg0 context.Context, arg1 string) (*model.Us } // GetUser indicates an expected call of GetUser. -func (mr *MockExpandGetterMockRecorder) GetUser(arg0, arg1 any) *gomock.Call { +func (mr *MockExpandGetterMockRecorder) GetUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUser", reflect.TypeOf((*MockExpandGetter)(nil).GetUser), arg0, arg1) } diff --git a/server/mocks/mock_store/mock_appstore.go b/server/mocks/mock_store/mock_appstore.go index f581b2c7e..743e56c78 100644 --- a/server/mocks/mock_store/mock_appstore.go +++ b/server/mocks/mock_store/mock_appstore.go @@ -47,7 +47,7 @@ func (m *MockAppStore) AsList(arg0 store.FilterOpt) []apps.App { } // AsList indicates an expected call of AsList. -func (mr *MockAppStoreMockRecorder) AsList(arg0 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) AsList(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsList", reflect.TypeOf((*MockAppStore)(nil).AsList), arg0) } @@ -61,7 +61,7 @@ func (m *MockAppStore) AsMap(arg0 store.FilterOpt) map[apps.AppID]apps.App { } // AsMap indicates an expected call of AsMap. -func (mr *MockAppStoreMockRecorder) AsMap(arg0 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) AsMap(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsMap", reflect.TypeOf((*MockAppStore)(nil).AsMap), arg0) } @@ -75,7 +75,7 @@ func (m *MockAppStore) Configure(arg0 config.Config, arg1 utils.Logger) error { } // Configure indicates an expected call of Configure. -func (mr *MockAppStoreMockRecorder) Configure(arg0, arg1 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Configure(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Configure", reflect.TypeOf((*MockAppStore)(nil).Configure), arg0, arg1) } @@ -89,7 +89,7 @@ func (m *MockAppStore) Delete(arg0 *incoming.Request, arg1 apps.AppID) error { } // Delete indicates an expected call of Delete. -func (mr *MockAppStoreMockRecorder) Delete(arg0, arg1 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Delete(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockAppStore)(nil).Delete), arg0, arg1) } @@ -104,7 +104,7 @@ func (m *MockAppStore) Get(arg0 apps.AppID) (*apps.App, error) { } // Get indicates an expected call of Get. -func (mr *MockAppStoreMockRecorder) Get(arg0 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Get(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockAppStore)(nil).Get), arg0) } @@ -112,7 +112,7 @@ func (mr *MockAppStoreMockRecorder) Get(arg0 any) *gomock.Call { // InitBuiltin mocks base method. func (m *MockAppStore) InitBuiltin(arg0 ...apps.App) { m.ctrl.T.Helper() - varargs := []any{} + varargs := []interface{}{} for _, a := range arg0 { varargs = append(varargs, a) } @@ -120,7 +120,7 @@ func (m *MockAppStore) InitBuiltin(arg0 ...apps.App) { } // InitBuiltin indicates an expected call of InitBuiltin. -func (mr *MockAppStoreMockRecorder) InitBuiltin(arg0 ...any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) InitBuiltin(arg0 ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitBuiltin", reflect.TypeOf((*MockAppStore)(nil).InitBuiltin), arg0...) } @@ -134,7 +134,7 @@ func (m *MockAppStore) Save(arg0 *incoming.Request, arg1 apps.App) error { } // Save indicates an expected call of Save. -func (mr *MockAppStoreMockRecorder) Save(arg0, arg1 any) *gomock.Call { +func (mr *MockAppStoreMockRecorder) Save(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Save", reflect.TypeOf((*MockAppStore)(nil).Save), arg0, arg1) } diff --git a/server/mocks/mock_store/mock_session.go b/server/mocks/mock_store/mock_session.go index 4f2636b6b..47ee23b21 100644 --- a/server/mocks/mock_store/mock_session.go +++ b/server/mocks/mock_store/mock_session.go @@ -45,7 +45,7 @@ func (m *MockSessionStore) Delete(arg0 apps.AppID, arg1 string) error { } // Delete indicates an expected call of Delete. -func (mr *MockSessionStoreMockRecorder) Delete(arg0, arg1 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Delete(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSessionStore)(nil).Delete), arg0, arg1) } @@ -59,7 +59,7 @@ func (m *MockSessionStore) DeleteAllForApp(arg0 *incoming.Request, arg1 apps.App } // DeleteAllForApp indicates an expected call of DeleteAllForApp. -func (mr *MockSessionStoreMockRecorder) DeleteAllForApp(arg0, arg1 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) DeleteAllForApp(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllForApp", reflect.TypeOf((*MockSessionStore)(nil).DeleteAllForApp), arg0, arg1) } @@ -73,7 +73,7 @@ func (m *MockSessionStore) DeleteAllForUser(arg0 *incoming.Request, arg1 string) } // DeleteAllForUser indicates an expected call of DeleteAllForUser. -func (mr *MockSessionStoreMockRecorder) DeleteAllForUser(arg0, arg1 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) DeleteAllForUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllForUser", reflect.TypeOf((*MockSessionStore)(nil).DeleteAllForUser), arg0, arg1) } @@ -88,7 +88,7 @@ func (m *MockSessionStore) Get(arg0 apps.AppID, arg1 string) (*model.Session, er } // Get indicates an expected call of Get. -func (mr *MockSessionStoreMockRecorder) Get(arg0, arg1 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Get(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockSessionStore)(nil).Get), arg0, arg1) } @@ -103,7 +103,7 @@ func (m *MockSessionStore) ListForApp(arg0 apps.AppID) ([]*model.Session, error) } // ListForApp indicates an expected call of ListForApp. -func (mr *MockSessionStoreMockRecorder) ListForApp(arg0 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) ListForApp(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListForApp", reflect.TypeOf((*MockSessionStore)(nil).ListForApp), arg0) } @@ -118,7 +118,7 @@ func (m *MockSessionStore) ListForUser(arg0 *incoming.Request, arg1 string) ([]* } // ListForUser indicates an expected call of ListForUser. -func (mr *MockSessionStoreMockRecorder) ListForUser(arg0, arg1 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) ListForUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListForUser", reflect.TypeOf((*MockSessionStore)(nil).ListForUser), arg0, arg1) } @@ -132,7 +132,7 @@ func (m *MockSessionStore) Save(arg0 apps.AppID, arg1 string, arg2 *model.Sessio } // Save indicates an expected call of Save. -func (mr *MockSessionStoreMockRecorder) Save(arg0, arg1, arg2 any) *gomock.Call { +func (mr *MockSessionStoreMockRecorder) Save(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Save", reflect.TypeOf((*MockSessionStore)(nil).Save), arg0, arg1, arg2) } diff --git a/server/mocks/mock_upstream/mock_upstream.go b/server/mocks/mock_upstream/mock_upstream.go index d5e78dc9b..43fe33f92 100644 --- a/server/mocks/mock_upstream/mock_upstream.go +++ b/server/mocks/mock_upstream/mock_upstream.go @@ -47,7 +47,7 @@ func (m *MockUpstream) GetStatic(arg0 context.Context, arg1 apps.App, arg2 strin } // GetStatic indicates an expected call of GetStatic. -func (mr *MockUpstreamMockRecorder) GetStatic(arg0, arg1, arg2 any) *gomock.Call { +func (mr *MockUpstreamMockRecorder) GetStatic(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStatic", reflect.TypeOf((*MockUpstream)(nil).GetStatic), arg0, arg1, arg2) } @@ -62,7 +62,7 @@ func (m *MockUpstream) Roundtrip(arg0 context.Context, arg1 apps.App, arg2 apps. } // Roundtrip indicates an expected call of Roundtrip. -func (mr *MockUpstreamMockRecorder) Roundtrip(arg0, arg1, arg2, arg3 any) *gomock.Call { +func (mr *MockUpstreamMockRecorder) Roundtrip(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Roundtrip", reflect.TypeOf((*MockUpstream)(nil).Roundtrip), arg0, arg1, arg2, arg3) } From b58f4cadf73edf4d7967a34552ecb57f67bfc738 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 14:10:38 +0100 Subject: [PATCH 11/13] make i18n-extract-server --- assets/i18n/active.en.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/assets/i18n/active.en.json b/assets/i18n/active.en.json index 43cdfe09a..408205b20 100644 --- a/assets/i18n/active.en.json +++ b/assets/i18n/active.en.json @@ -132,8 +132,6 @@ "modal.install_consent.header.locations": "- Add the following elements to the **Mattermost User Interface**:", "modal.install_consent.header.permissions": "- Access **Mattermost API** with the following permissions:", "modal.install_consent.title": "Install App {{.DisplayName}}", - "modal.kv.edit.submit.deleted": "Deleted:\n```\nKey: {{.Key}}\n```\n", - "modal.kv.edit.submit.stored": "Stored:\n```\nKey: {{.Key}}\n\n{{.Value}}\n```\n", "modal.kv.edit.title": "Edit app's KV record", "modal.overrides.description": "Current system settings: developer mode: **{{.DeveloperMode}}**, allow HTTP apps: **{{.AllowHTTPApps}}**", "modal.overrides.modal_label": "Overrides for developer mode and HTTP apps", From 6b6cedbf33deda48c3fc75b4ed6b87b935e381b0 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 14:21:17 +0100 Subject: [PATCH 12/13] Update actions/upload-artifact --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 15179e410..aeec47892 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -81,7 +81,7 @@ jobs: fi - name: ci/upload-artifacts - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: dist path: | From a78c9ddeb9b780a82012e50c9b1718f4432d4eac Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 6 Nov 2025 14:28:43 +0100 Subject: [PATCH 13/13] Fix non-constant format string --- .golangci.yml | 4 ---- apps/appclient/mattermost_client.go | 5 ++--- apps/call_response.go | 9 ++++++++- examples/goapp/kv/app.go | 8 ++++---- goapp/expand/echo.go | 6 ++++-- goapp/hello-world/app.go | 2 +- server/proxy/expand.go | 2 +- test/app/ok.go | 2 +- test/app/subscriptions.go | 4 ++-- test/app/timer.go | 2 +- test/restapitest/kv.go | 2 +- 11 files changed, 25 insertions(+), 21 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 760339eb7..3a06849e5 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -65,10 +65,6 @@ linters: - linters: - revive text: "receiver-naming:" - # Ignore non-constant format string warnings - - linters: - - govet - text: "printf: non-constant format string" # Ignore unparam warnings about always receiving same value - linters: - unparam diff --git a/apps/appclient/mattermost_client.go b/apps/appclient/mattermost_client.go index fb051be55..a5a7d594c 100644 --- a/apps/appclient/mattermost_client.go +++ b/apps/appclient/mattermost_client.go @@ -2,7 +2,6 @@ package appclient import ( "context" - "fmt" "net/http" "github.com/mattermost/mattermost/server/public/model" @@ -201,9 +200,9 @@ func (c *Client) CreatePost(ctx context.Context, post *model.Post) (*model.Post, return createdPost, nil } -func (c *Client) DM(ctx context.Context, userID string, format string, args ...any) (*model.Post, error) { +func (c *Client) DM(ctx context.Context, userID string, msg string) (*model.Post, error) { return c.DMPost(ctx, userID, &model.Post{ - Message: fmt.Sprintf(format, args...), + Message: msg, }) } diff --git a/apps/call_response.go b/apps/call_response.go index b5eb72b94..ed606fca4 100644 --- a/apps/call_response.go +++ b/apps/call_response.go @@ -85,7 +85,14 @@ func NewDataResponse(data any) CallResponse { } } -func NewTextResponse(format string, args ...any) CallResponse { +func NewTextResponse(text string) CallResponse { + return CallResponse{ + Type: CallResponseTypeOK, + Text: text, + } +} + +func NewTextResponseFmt(format string, args ...any) CallResponse { return CallResponse{ Type: CallResponseTypeOK, Text: fmt.Sprintf(format, args...), diff --git a/examples/goapp/kv/app.go b/examples/goapp/kv/app.go index 9134e13d7..4e82cf6b8 100644 --- a/examples/goapp/kv/app.go +++ b/examples/goapp/kv/app.go @@ -77,9 +77,9 @@ var set = goapp.MakeBindableFormOrPanic("set", } changed, err := client.KVSet(prefix, key, value) if err != nil { - return apps.NewTextResponse("Error: %v", err) + return apps.NewTextResponseFmt("Error: %v", err) } - return apps.NewTextResponse("Stored a value in the KV store: prefix: %q, key: %q, value: %q, changed: %v", prefix, key, value, changed) + return apps.NewTextResponseFmt("Stored a value in the KV store: prefix: %q, key: %q, value: %q, changed: %v", prefix, key, value, changed) }, ) @@ -124,8 +124,8 @@ var get = goapp.MakeBindableFormOrPanic("get", var value any err := client.KVGet(prefix, key, &value) if err != nil { - return apps.NewTextResponse("Error: %v", err) + return apps.NewTextResponseFmt("Error: %v", err) } - return apps.NewTextResponse("Read a value from the KV store: prefix: %q, key: %q, value: %#v", prefix, key, value) + return apps.NewTextResponseFmt("Read a value from the KV store: prefix: %q, key: %q, value: %#v", prefix, key, value) }, ) diff --git a/goapp/expand/echo.go b/goapp/expand/echo.go index 6692f169e..95c7efc52 100644 --- a/goapp/expand/echo.go +++ b/goapp/expand/echo.go @@ -10,6 +10,8 @@ func handleEcho(creq goapp.CallRequest) apps.CallResponse { originallCallJSON := utils.JSONBlock(creq.Call) contextJSON := utils.JSONBlock(creq.Context) - return apps.NewTextResponse("Original Call:%s\n---\nResulting CallRequest.Context:%s", - originallCallJSON, contextJSON) + return apps.NewTextResponseFmt( + "Original Call:%s\n---\nResulting CallRequest.Context:%s", + originallCallJSON, contextJSON, + ) } diff --git a/goapp/hello-world/app.go b/goapp/hello-world/app.go index 5ddbf9d00..1a4243f1a 100644 --- a/goapp/hello-world/app.go +++ b/goapp/hello-world/app.go @@ -58,6 +58,6 @@ var send = goapp.MakeBindableFormOrPanic("send", return apps.NewErrorResponse(errors.Wrap(err, "failed to send DM to user")) } - return apps.NewTextResponse("Created a post in your DM channel. Message: `%s`.", message) + return apps.NewTextResponseFmt("Created a post in your DM channel. Message: `%s`.", message) }, ) diff --git a/server/proxy/expand.go b/server/proxy/expand.go index d5746aab3..0865e36ef 100644 --- a/server/proxy/expand.go +++ b/server/proxy/expand.go @@ -413,7 +413,7 @@ func (e *expander) expandOAuth2User(level apps.ExpandLevel) error { var v any if err = json.Unmarshal(data, &v); err != nil { - return errors.Wrapf(err, "user_id: "+userID) + return errors.Wrapf(err, "user_id: %v", userID) } e.ExpandedContext.OAuth2.User = v return nil diff --git a/test/app/ok.go b/test/app/ok.go index 1a186a5e9..462e45294 100644 --- a/test/app/ok.go +++ b/test/app/ok.go @@ -15,7 +15,7 @@ func initHTTPOK(r *mux.Router) { } func handleOK(creq *apps.CallRequest) apps.CallResponse { - return apps.NewTextResponse("```\n%s\n```\n", utils.Pretty(creq)) + return apps.NewTextResponseFmt("```\n%s\n```\n", utils.Pretty(creq)) } func handleOKEmpty(_ *apps.CallRequest) apps.CallResponse { diff --git a/test/app/subscriptions.go b/test/app/subscriptions.go index 35885695c..52182905d 100644 --- a/test/app/subscriptions.go +++ b/test/app/subscriptions.go @@ -148,7 +148,7 @@ func handleSubscription(creq *apps.CallRequest, subscribe bool) apps.CallRespons return apps.NewErrorResponse(err) } - return apps.NewTextResponse("Successfully unsubscribed from `%v` notifications.", subject) + return apps.NewTextResponseFmt("Successfully unsubscribed from `%v` notifications.", subject) } if creq.Context.Channel.Type == model.ChannelTypeOpen || creq.Context.Channel.Type == model.ChannelTypePrivate { @@ -168,7 +168,7 @@ func handleSubscription(creq *apps.CallRequest, subscribe bool) apps.CallRespons return apps.NewErrorResponse(err) } - return apps.NewTextResponse("Successfully subscribed to `%v` notifications.", subject) + return apps.NewTextResponseFmt("Successfully subscribed to `%v` notifications.", subject) } func handleSubscribe(creq *apps.CallRequest) apps.CallResponse { diff --git a/test/app/timer.go b/test/app/timer.go index e4a5e7e3a..c6319c955 100644 --- a/test/app/timer.go +++ b/test/app/timer.go @@ -97,7 +97,7 @@ func handleCreateTimer(creq *apps.CallRequest) apps.CallResponse { return apps.NewErrorResponse(errors.Wrap(err, "failed to create timer")) } - return apps.NewTextResponse("Successfully set a timer to `%v`.", at.String()) + return apps.NewTextResponseFmt("Successfully set a timer to `%v`.", at.String()) } func handleExecuteTimer(creq *apps.CallRequest) apps.CallResponse { diff --git a/test/restapitest/kv.go b/test/restapitest/kv.go index ecc83aaf6..437efc859 100644 --- a/test/restapitest/kv.go +++ b/test/restapitest/kv.go @@ -69,7 +69,7 @@ func newKVApp(t testing.TB) *goapp.App { client, prefix, key, value := params(creq) changed, err := client.KVSet(prefix, key, value) require.NoError(t, err) - return apps.NewTextResponse("%v", changed) + return apps.NewTextResponseFmt("%v", changed) }) app.HandleCall("/delete",