Remove fetch interval configuration and introduce scheduler and add dockerfile and clean depsUnverified
566c75d parent: 9e0ffc8 added
Dockerfile +23 -0 | new file mode 100644 | ||
| @@ -0,0 +1,23 @@ | ||
| 1 | +FROM golang:1.26-alpine AS builder | |
| 2 | + | |
| 3 | +RUN apk add --no-cache gcc musl-dev nodejs npm | |
| 4 | + | |
| 5 | +WORKDIR /src | |
| 6 | +COPY go.mod go.sum ./ | |
| 7 | +RUN go mod download | |
| 8 | + | |
| 9 | +COPY package.json package-lock.json ./ | |
| 10 | +RUN npm ci | |
| 11 | + | |
| 12 | +COPY . . | |
| 13 | +RUN npx tailwindcss -i ./static/input.css -o ./static/output.css --minify \ | |
| 14 | + && CGO_ENABLED=1 go build -ldflags="-s -w" -o /glean . | |
| 15 | + | |
| 16 | +FROM alpine:3.21 | |
| 17 | + | |
| 18 | +RUN apk add --no-cache ca-certificates | |
| 19 | + | |
| 20 | +COPY --from=builder /glean /usr/local/bin/glean | |
| 21 | + | |
| 22 | +EXPOSE 8080 | |
| 23 | +ENTRYPOINT ["glean"] | |
| new file mode 100644 | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | +FROM golang:1.26-alpine AS builder | ||
| 2 | + | ||
| 3 | +RUN apk add --no-cache gcc musl-dev nodejs npm | ||
| 4 | + | ||
| 5 | +WORKDIR /src | ||
| 6 | +COPY go.mod go.sum ./ | ||
| 7 | +RUN go mod download | ||
| 8 | + | ||
| 9 | +COPY package.json package-lock.json ./ | ||
| 10 | +RUN npm ci | ||
| 11 | + | ||
| 12 | +COPY . . | ||
| 13 | +RUN npx tailwindcss -i ./static/input.css -o ./static/output.css --minify \ | ||
| 14 | + && CGO_ENABLED=1 go build -ldflags="-s -w" -o /glean . | ||
| 15 | + | ||
| 16 | +FROM alpine:3.21 | ||
| 17 | + | ||
| 18 | +RUN apk add --no-cache ca-certificates | ||
| 19 | + | ||
| 20 | +COPY --from=builder /glean /usr/local/bin/glean | ||
| 21 | + | ||
| 22 | +EXPOSE 8080 | ||
| 23 | +ENTRYPOINT ["glean"] | ||
modified
Makefile +24 -1 | @@ -1,19 +1,42 @@ | ||
| 1 | -.PHONY: dev run build test clean css css-watch | |
| 1 | +.PHONY: lint | |
| 2 | +lint: | |
| 3 | + go vet ./... | |
| 4 | + go fix ./... | |
| 5 | + test -z "$(shell gofmt -l ./...)" | |
| 6 | + golangci-lint run ./... --fix | |
| 2 | 7 | |
| 8 | +.PHONY: lint-install | |
| 9 | +lint-install: | |
| 10 | + go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest | |
| 11 | + | |
| 12 | +.PHONY: dev | |
| 3 | 13 | dev: css |
| 4 | 14 | @if [ -f .env ]; then set -a; . ./.env; set +a; fi && go run . |
| 5 | 15 | |
| 16 | +.PHONY: build | |
| 6 | 17 | build: css |
| 7 | 18 | go build -o glean . |
| 8 | 19 | |
| 20 | +.PHONY: css | |
| 9 | 21 | css: |
| 10 | 22 | npx tailwindcss -i ./static/input.css -o ./static/output.css --minify |
| 11 | 23 | |
| 24 | +.PHONY: css-watch | |
| 12 | 25 | css-watch: |
| 13 | 26 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch |
| 14 | 27 | |
| 28 | +.PHONY: test | |
| 15 | 29 | test: |
| 16 | 30 | go test ./... |
| 17 | 31 | |
| 32 | +.PHONY: clean | |
| 18 | 33 | clean: |
| 19 | 34 | rm -f glean glean.db static/output.css |
| 35 | + | |
| 36 | +.PHONY: docker-build | |
| 37 | +docker-build: | |
| 38 | + docker build -t glean:latest -t atcr.io/julien.rbrt.fr/glean:latest . | |
| 39 | + | |
| 40 | +.PHONY: docker-push | |
| 41 | +docker-push: | |
| 42 | + docker push atcr.io/julien.rbrt.fr/glean:latest | |
| @@ -1,19 +1,42 @@ | |||
| 1 | -.PHONY: dev run build test clean css css-watch | 1 | +.PHONY: lint |
| 2 | +lint: | ||
| 3 | + go vet ./... | ||
| 4 | + go fix ./... | ||
| 5 | + test -z "$(shell gofmt -l ./...)" | ||
| 6 | + golangci-lint run ./... --fix | ||
| 2 | 7 | ||
| 8 | +.PHONY: lint-install | ||
| 9 | +lint-install: | ||
| 10 | + go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest | ||
| 11 | + | ||
| 12 | +.PHONY: dev | ||
| 3 | dev: css | 13 | dev: css |
| 4 | @if [ -f .env ]; then set -a; . ./.env; set +a; fi && go run . | 14 | @if [ -f .env ]; then set -a; . ./.env; set +a; fi && go run . |
| 5 | 15 | ||
| 16 | +.PHONY: build | ||
| 6 | build: css | 17 | build: css |
| 7 | go build -o glean . | 18 | go build -o glean . |
| 8 | 19 | ||
| 20 | +.PHONY: css | ||
| 9 | css: | 21 | css: |
| 10 | npx tailwindcss -i ./static/input.css -o ./static/output.css --minify | 22 | npx tailwindcss -i ./static/input.css -o ./static/output.css --minify |
| 11 | 23 | ||
| 24 | +.PHONY: css-watch | ||
| 12 | css-watch: | 25 | css-watch: |
| 13 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch | 26 | npx tailwindcss -i ./static/input.css -o ./static/output.css --watch |
| 14 | 27 | ||
| 28 | +.PHONY: test | ||
| 15 | test: | 29 | test: |
| 16 | go test ./... | 30 | go test ./... |
| 17 | 31 | ||
| 32 | +.PHONY: clean | ||
| 18 | clean: | 33 | clean: |
| 19 | rm -f glean glean.db static/output.css | 34 | rm -f glean glean.db static/output.css |
| 35 | + | ||
| 36 | +.PHONY: docker-build | ||
| 37 | +docker-build: | ||
| 38 | + docker build -t glean:latest -t atcr.io/julien.rbrt.fr/glean:latest . | ||
| 39 | + | ||
| 40 | +.PHONY: docker-push | ||
| 41 | +docker-push: | ||
| 42 | + docker push atcr.io/julien.rbrt.fr/glean:latest | ||
modified
go.mod +6 -183 | @@ -2,8 +2,6 @@ module pkg.rbrt.fr/glean | ||
| 2 | 2 | |
| 3 | 3 | go 1.26.2 |
| 4 | 4 | |
| 5 | -tool github.com/golangci/golangci-lint/cmd/golangci-lint | |
| 6 | - | |
| 7 | 5 | require ( |
| 8 | 6 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d |
| 9 | 7 | github.com/go-chi/chi/v5 v5.2.5 |
| @@ -14,198 +12,23 @@ require ( | ||
| 14 | 12 | ) |
| 15 | 13 | |
| 16 | 14 | require ( |
| 17 | - 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect | |
| 18 | - 4d63.com/gochecknoglobals v0.2.2 // indirect | |
| 19 | - github.com/4meepo/tagalign v1.4.2 // indirect | |
| 20 | - github.com/Abirdcfly/dupword v0.1.3 // indirect | |
| 21 | - github.com/Antonboom/errname v1.0.0 // indirect | |
| 22 | - github.com/Antonboom/nilnil v1.0.1 // indirect | |
| 23 | - github.com/Antonboom/testifylint v1.5.2 // indirect | |
| 24 | - github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | |
| 25 | - github.com/Crocmagnon/fatcontext v0.7.1 // indirect | |
| 26 | - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect | |
| 27 | - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect | |
| 28 | - github.com/Masterminds/semver/v3 v3.3.0 // indirect | |
| 29 | - github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect | |
| 30 | - github.com/alecthomas/go-check-sumtype v0.3.1 // indirect | |
| 31 | - github.com/alexkohler/nakedret/v2 v2.0.5 // indirect | |
| 32 | - github.com/alexkohler/prealloc v1.0.0 // indirect | |
| 33 | - github.com/alingse/asasalint v0.0.11 // indirect | |
| 34 | - github.com/alingse/nilnesserr v0.1.2 // indirect | |
| 35 | - github.com/ashanbrown/forbidigo v1.6.0 // indirect | |
| 36 | - github.com/ashanbrown/makezero v1.2.0 // indirect | |
| 37 | 15 | github.com/beorn7/perks v1.0.1 // indirect |
| 38 | - github.com/bkielbasa/cyclop v1.2.3 // indirect | |
| 39 | - github.com/blizzy78/varnamelen v0.8.0 // indirect | |
| 40 | - github.com/bombsimon/wsl/v4 v4.5.0 // indirect | |
| 41 | - github.com/breml/bidichk v0.3.2 // indirect | |
| 42 | - github.com/breml/errchkjson v0.4.0 // indirect | |
| 43 | - github.com/butuzov/ireturn v0.3.1 // indirect | |
| 44 | - github.com/butuzov/mirror v1.3.0 // indirect | |
| 45 | - github.com/catenacyber/perfsprint v0.8.2 // indirect | |
| 46 | - github.com/ccojocar/zxcvbn-go v1.0.2 // indirect | |
| 47 | - github.com/cespare/xxhash/v2 v2.3.0 // indirect | |
| 48 | - github.com/charithe/durationcheck v0.0.10 // indirect | |
| 49 | - github.com/chavacava/garif v0.1.0 // indirect | |
| 50 | - github.com/ckaznocha/intrange v0.3.0 // indirect | |
| 51 | - github.com/curioswitch/go-reassign v0.3.0 // indirect | |
| 52 | - github.com/daixiang0/gci v0.13.5 // indirect | |
| 53 | - github.com/davecgh/go-spew v1.1.1 // indirect | |
| 54 | - github.com/denis-tingaikin/go-header v0.5.0 // indirect | |
| 16 | + github.com/cespare/xxhash/v2 v2.2.0 // indirect | |
| 55 | 17 | github.com/earthboundkid/versioninfo/v2 v2.24.1 // indirect |
| 56 | - github.com/ettle/strcase v0.2.0 // indirect | |
| 57 | - github.com/fatih/color v1.18.0 // indirect | |
| 58 | - github.com/fatih/structtag v1.2.0 // indirect | |
| 59 | - github.com/firefart/nonamedreturns v1.0.5 // indirect | |
| 60 | - github.com/fsnotify/fsnotify v1.5.4 // indirect | |
| 61 | - github.com/fzipp/gocyclo v0.6.0 // indirect | |
| 62 | - github.com/ghostiam/protogetter v0.3.9 // indirect | |
| 63 | - github.com/go-critic/go-critic v0.12.0 // indirect | |
| 64 | - github.com/go-toolsmith/astcast v1.1.0 // indirect | |
| 65 | - github.com/go-toolsmith/astcopy v1.1.0 // indirect | |
| 66 | - github.com/go-toolsmith/astequal v1.2.0 // indirect | |
| 67 | - github.com/go-toolsmith/astfmt v1.1.0 // indirect | |
| 68 | - github.com/go-toolsmith/astp v1.1.0 // indirect | |
| 69 | - github.com/go-toolsmith/strparse v1.1.0 // indirect | |
| 70 | - github.com/go-toolsmith/typep v1.1.0 // indirect | |
| 71 | - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect | |
| 72 | - github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect | |
| 73 | - github.com/gobwas/glob v0.2.3 // indirect | |
| 74 | - github.com/gofrs/flock v0.12.1 // indirect | |
| 75 | 18 | github.com/golang-jwt/jwt/v5 v5.2.2 // indirect |
| 76 | - github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect | |
| 77 | - github.com/golangci/go-printf-func-name v0.1.0 // indirect | |
| 78 | - github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect | |
| 79 | - github.com/golangci/golangci-lint v1.64.8 // indirect | |
| 80 | - github.com/golangci/misspell v0.6.0 // indirect | |
| 81 | - github.com/golangci/plugin-module-register v0.1.1 // indirect | |
| 82 | - github.com/golangci/revgrep v0.8.0 // indirect | |
| 83 | - github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect | |
| 84 | - github.com/google/go-cmp v0.7.0 // indirect | |
| 19 | + github.com/google/go-cmp v0.5.9 // indirect | |
| 85 | 20 | github.com/google/go-querystring v1.1.0 // indirect |
| 86 | - github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect | |
| 87 | - github.com/gordonklaus/ineffassign v0.1.0 // indirect | |
| 88 | - github.com/gostaticanalysis/analysisutil v0.7.1 // indirect | |
| 89 | - github.com/gostaticanalysis/comment v1.5.0 // indirect | |
| 90 | - github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect | |
| 91 | - github.com/gostaticanalysis/nilerr v0.1.1 // indirect | |
| 92 | - github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect | |
| 93 | - github.com/hashicorp/go-version v1.7.0 // indirect | |
| 94 | 21 | github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect |
| 95 | - github.com/hashicorp/hcl v1.0.0 // indirect | |
| 96 | - github.com/hexops/gotextdiff v1.0.3 // indirect | |
| 97 | - github.com/inconshreveable/mousetrap v1.1.0 // indirect | |
| 98 | - github.com/jgautheron/goconst v1.7.1 // indirect | |
| 99 | - github.com/jingyugao/rowserrcheck v1.1.1 // indirect | |
| 100 | - github.com/jjti/go-spancheck v0.6.4 // indirect | |
| 101 | - github.com/julz/importas v0.2.0 // indirect | |
| 102 | - github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect | |
| 103 | - github.com/kisielk/errcheck v1.9.0 // indirect | |
| 104 | - github.com/kkHAIKE/contextcheck v1.1.6 // indirect | |
| 105 | - github.com/kulti/thelper v0.6.3 // indirect | |
| 106 | - github.com/kunwardeep/paralleltest v1.0.10 // indirect | |
| 107 | - github.com/lasiar/canonicalheader v1.1.2 // indirect | |
| 108 | - github.com/ldez/exptostd v0.4.2 // indirect | |
| 109 | - github.com/ldez/gomoddirectives v0.6.1 // indirect | |
| 110 | - github.com/ldez/grignotin v0.9.0 // indirect | |
| 111 | - github.com/ldez/tagliatelle v0.7.1 // indirect | |
| 112 | - github.com/ldez/usetesting v0.4.2 // indirect | |
| 113 | - github.com/leonklingele/grouper v1.1.2 // indirect | |
| 114 | - github.com/macabu/inamedparam v0.1.3 // indirect | |
| 115 | - github.com/magiconair/properties v1.8.6 // indirect | |
| 116 | - github.com/maratori/testableexamples v1.0.0 // indirect | |
| 117 | - github.com/maratori/testpackage v1.1.1 // indirect | |
| 118 | - github.com/matoous/godox v1.1.0 // indirect | |
| 119 | - github.com/mattn/go-colorable v0.1.14 // indirect | |
| 120 | - github.com/mattn/go-isatty v0.0.20 // indirect | |
| 121 | - github.com/mattn/go-runewidth v0.0.16 // indirect | |
| 122 | 22 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect |
| 123 | - github.com/mgechev/revive v1.7.0 // indirect | |
| 124 | - github.com/mitchellh/go-homedir v1.1.0 // indirect | |
| 125 | - github.com/mitchellh/mapstructure v1.5.0 // indirect | |
| 126 | - github.com/moricho/tparallel v0.3.2 // indirect | |
| 127 | 23 | github.com/mr-tron/base58 v1.2.0 // indirect |
| 128 | - github.com/nakabonne/nestif v0.3.1 // indirect | |
| 129 | - github.com/nishanths/exhaustive v0.12.0 // indirect | |
| 130 | - github.com/nishanths/predeclared v0.2.2 // indirect | |
| 131 | - github.com/nunnatsa/ginkgolinter v0.19.1 // indirect | |
| 132 | - github.com/olekukonko/tablewriter v0.0.5 // indirect | |
| 133 | - github.com/pelletier/go-toml v1.9.5 // indirect | |
| 134 | - github.com/pelletier/go-toml/v2 v2.2.3 // indirect | |
| 135 | - github.com/pmezard/go-difflib v1.0.0 // indirect | |
| 136 | - github.com/polyfloyd/go-errorlint v1.7.1 // indirect | |
| 137 | 24 | github.com/prometheus/client_golang v1.17.0 // indirect |
| 138 | 25 | github.com/prometheus/client_model v0.5.0 // indirect |
| 139 | 26 | github.com/prometheus/common v0.45.0 // indirect |
| 140 | 27 | github.com/prometheus/procfs v0.12.0 // indirect |
| 141 | - github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect | |
| 142 | - github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect | |
| 143 | - github.com/quasilyte/gogrep v0.5.0 // indirect | |
| 144 | - github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect | |
| 145 | - github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect | |
| 146 | - github.com/raeperd/recvcheck v0.2.0 // indirect | |
| 147 | - github.com/rivo/uniseg v0.4.7 // indirect | |
| 148 | - github.com/rogpeppe/go-internal v1.14.1 // indirect | |
| 149 | - github.com/ryancurrah/gomodguard v1.3.5 // indirect | |
| 150 | - github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect | |
| 151 | - github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect | |
| 152 | - github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect | |
| 153 | - github.com/sashamelentyev/interfacebloat v1.1.0 // indirect | |
| 154 | - github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect | |
| 155 | - github.com/securego/gosec/v2 v2.22.2 // indirect | |
| 156 | - github.com/sirupsen/logrus v1.9.3 // indirect | |
| 157 | - github.com/sivchari/containedctx v1.0.3 // indirect | |
| 158 | - github.com/sivchari/tenv v1.12.1 // indirect | |
| 159 | - github.com/sonatard/noctx v0.1.0 // indirect | |
| 160 | - github.com/sourcegraph/go-diff v0.7.0 // indirect | |
| 161 | - github.com/spf13/afero v1.12.0 // indirect | |
| 162 | - github.com/spf13/cast v1.5.0 // indirect | |
| 163 | - github.com/spf13/cobra v1.9.1 // indirect | |
| 164 | - github.com/spf13/jwalterweatherman v1.1.0 // indirect | |
| 165 | - github.com/spf13/pflag v1.0.6 // indirect | |
| 166 | - github.com/spf13/viper v1.12.0 // indirect | |
| 167 | - github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect | |
| 168 | - github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect | |
| 169 | - github.com/stretchr/objx v0.5.2 // indirect | |
| 170 | - github.com/stretchr/testify v1.10.0 // indirect | |
| 171 | - github.com/subosito/gotenv v1.4.1 // indirect | |
| 172 | - github.com/tdakkota/asciicheck v0.4.1 // indirect | |
| 173 | - github.com/tetafro/godot v1.5.0 // indirect | |
| 174 | - github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect | |
| 175 | - github.com/timonwong/loggercheck v0.10.1 // indirect | |
| 176 | - github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect | |
| 177 | - github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect | |
| 178 | - github.com/ultraware/funlen v0.2.0 // indirect | |
| 179 | - github.com/ultraware/whitespace v0.2.0 // indirect | |
| 180 | - github.com/uudashr/gocognit v1.2.0 // indirect | |
| 181 | - github.com/uudashr/iface v1.3.1 // indirect | |
| 182 | - github.com/xen0n/gosmopolitan v1.2.2 // indirect | |
| 183 | - github.com/yagipy/maintidx v1.0.0 // indirect | |
| 184 | - github.com/yeya24/promlinter v0.3.0 // indirect | |
| 185 | - github.com/ykadowak/zerologlint v0.1.5 // indirect | |
| 186 | - gitlab.com/bosi/decorder v0.4.2 // indirect | |
| 187 | 28 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect |
| 188 | 29 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect |
| 189 | - go-simpler.org/musttag v0.13.0 // indirect | |
| 190 | - go-simpler.org/sloglint v0.9.0 // indirect | |
| 191 | - go.uber.org/automaxprocs v1.6.0 // indirect | |
| 192 | - go.uber.org/multierr v1.11.0 // indirect | |
| 193 | - go.uber.org/zap v1.26.0 // indirect | |
| 194 | - golang.org/x/crypto v0.35.0 // indirect | |
| 195 | - golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect | |
| 196 | - golang.org/x/mod v0.33.0 // indirect | |
| 197 | - golang.org/x/sync v0.20.0 // indirect | |
| 198 | - golang.org/x/sys v0.42.0 // indirect | |
| 199 | - golang.org/x/text v0.22.0 // indirect | |
| 200 | - golang.org/x/time v0.10.0 // indirect | |
| 201 | - golang.org/x/tools v0.42.0 // indirect | |
| 202 | - golang.org/x/tools/go/expect v0.1.1-deprecated // indirect | |
| 203 | - golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect | |
| 204 | - google.golang.org/protobuf v1.36.5 // indirect | |
| 205 | - gopkg.in/ini.v1 v1.67.0 // indirect | |
| 206 | - gopkg.in/yaml.v2 v2.4.0 // indirect | |
| 207 | - gopkg.in/yaml.v3 v3.0.1 // indirect | |
| 208 | - honnef.co/go/tools v0.6.1 // indirect | |
| 209 | - mvdan.cc/gofumpt v0.7.0 // indirect | |
| 210 | - mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect | |
| 30 | + golang.org/x/crypto v0.21.0 // indirect | |
| 31 | + golang.org/x/sys v0.22.0 // indirect | |
| 32 | + golang.org/x/time v0.3.0 // indirect | |
| 33 | + google.golang.org/protobuf v1.33.0 // indirect | |
| 211 | 34 | ) |
| @@ -2,8 +2,6 @@ module pkg.rbrt.fr/glean | |||
| 2 | 2 | ||
| 3 | go 1.26.2 | 3 | go 1.26.2 |
| 4 | 4 | ||
| 5 | -tool github.com/golangci/golangci-lint/cmd/golangci-lint | ||
| 6 | - | ||
| 7 | require ( | 5 | require ( |
| 8 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d | 6 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d |
| 9 | github.com/go-chi/chi/v5 v5.2.5 | 7 | github.com/go-chi/chi/v5 v5.2.5 |
| @@ -14,198 +12,23 @@ require ( | |||
| 14 | ) | 12 | ) |
| 15 | 13 | ||
| 16 | require ( | 14 | require ( |
| 17 | - 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect | ||
| 18 | - 4d63.com/gochecknoglobals v0.2.2 // indirect | ||
| 19 | - github.com/4meepo/tagalign v1.4.2 // indirect | ||
| 20 | - github.com/Abirdcfly/dupword v0.1.3 // indirect | ||
| 21 | - github.com/Antonboom/errname v1.0.0 // indirect | ||
| 22 | - github.com/Antonboom/nilnil v1.0.1 // indirect | ||
| 23 | - github.com/Antonboom/testifylint v1.5.2 // indirect | ||
| 24 | - github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | ||
| 25 | - github.com/Crocmagnon/fatcontext v0.7.1 // indirect | ||
| 26 | - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect | ||
| 27 | - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect | ||
| 28 | - github.com/Masterminds/semver/v3 v3.3.0 // indirect | ||
| 29 | - github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect | ||
| 30 | - github.com/alecthomas/go-check-sumtype v0.3.1 // indirect | ||
| 31 | - github.com/alexkohler/nakedret/v2 v2.0.5 // indirect | ||
| 32 | - github.com/alexkohler/prealloc v1.0.0 // indirect | ||
| 33 | - github.com/alingse/asasalint v0.0.11 // indirect | ||
| 34 | - github.com/alingse/nilnesserr v0.1.2 // indirect | ||
| 35 | - github.com/ashanbrown/forbidigo v1.6.0 // indirect | ||
| 36 | - github.com/ashanbrown/makezero v1.2.0 // indirect | ||
| 37 | github.com/beorn7/perks v1.0.1 // indirect | 15 | github.com/beorn7/perks v1.0.1 // indirect |
| 38 | - github.com/bkielbasa/cyclop v1.2.3 // indirect | 16 | + github.com/cespare/xxhash/v2 v2.2.0 // indirect |
| 39 | - github.com/blizzy78/varnamelen v0.8.0 // indirect | ||
| 40 | - github.com/bombsimon/wsl/v4 v4.5.0 // indirect | ||
| 41 | - github.com/breml/bidichk v0.3.2 // indirect | ||
| 42 | - github.com/breml/errchkjson v0.4.0 // indirect | ||
| 43 | - github.com/butuzov/ireturn v0.3.1 // indirect | ||
| 44 | - github.com/butuzov/mirror v1.3.0 // indirect | ||
| 45 | - github.com/catenacyber/perfsprint v0.8.2 // indirect | ||
| 46 | - github.com/ccojocar/zxcvbn-go v1.0.2 // indirect | ||
| 47 | - github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||
| 48 | - github.com/charithe/durationcheck v0.0.10 // indirect | ||
| 49 | - github.com/chavacava/garif v0.1.0 // indirect | ||
| 50 | - github.com/ckaznocha/intrange v0.3.0 // indirect | ||
| 51 | - github.com/curioswitch/go-reassign v0.3.0 // indirect | ||
| 52 | - github.com/daixiang0/gci v0.13.5 // indirect | ||
| 53 | - github.com/davecgh/go-spew v1.1.1 // indirect | ||
| 54 | - github.com/denis-tingaikin/go-header v0.5.0 // indirect | ||
| 55 | github.com/earthboundkid/versioninfo/v2 v2.24.1 // indirect | 17 | github.com/earthboundkid/versioninfo/v2 v2.24.1 // indirect |
| 56 | - github.com/ettle/strcase v0.2.0 // indirect | ||
| 57 | - github.com/fatih/color v1.18.0 // indirect | ||
| 58 | - github.com/fatih/structtag v1.2.0 // indirect | ||
| 59 | - github.com/firefart/nonamedreturns v1.0.5 // indirect | ||
| 60 | - github.com/fsnotify/fsnotify v1.5.4 // indirect | ||
| 61 | - github.com/fzipp/gocyclo v0.6.0 // indirect | ||
| 62 | - github.com/ghostiam/protogetter v0.3.9 // indirect | ||
| 63 | - github.com/go-critic/go-critic v0.12.0 // indirect | ||
| 64 | - github.com/go-toolsmith/astcast v1.1.0 // indirect | ||
| 65 | - github.com/go-toolsmith/astcopy v1.1.0 // indirect | ||
| 66 | - github.com/go-toolsmith/astequal v1.2.0 // indirect | ||
| 67 | - github.com/go-toolsmith/astfmt v1.1.0 // indirect | ||
| 68 | - github.com/go-toolsmith/astp v1.1.0 // indirect | ||
| 69 | - github.com/go-toolsmith/strparse v1.1.0 // indirect | ||
| 70 | - github.com/go-toolsmith/typep v1.1.0 // indirect | ||
| 71 | - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect | ||
| 72 | - github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect | ||
| 73 | - github.com/gobwas/glob v0.2.3 // indirect | ||
| 74 | - github.com/gofrs/flock v0.12.1 // indirect | ||
| 75 | github.com/golang-jwt/jwt/v5 v5.2.2 // indirect | 18 | github.com/golang-jwt/jwt/v5 v5.2.2 // indirect |
| 76 | - github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect | 19 | + github.com/google/go-cmp v0.5.9 // indirect |
| 77 | - github.com/golangci/go-printf-func-name v0.1.0 // indirect | ||
| 78 | - github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect | ||
| 79 | - github.com/golangci/golangci-lint v1.64.8 // indirect | ||
| 80 | - github.com/golangci/misspell v0.6.0 // indirect | ||
| 81 | - github.com/golangci/plugin-module-register v0.1.1 // indirect | ||
| 82 | - github.com/golangci/revgrep v0.8.0 // indirect | ||
| 83 | - github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect | ||
| 84 | - github.com/google/go-cmp v0.7.0 // indirect | ||
| 85 | github.com/google/go-querystring v1.1.0 // indirect | 20 | github.com/google/go-querystring v1.1.0 // indirect |
| 86 | - github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect | ||
| 87 | - github.com/gordonklaus/ineffassign v0.1.0 // indirect | ||
| 88 | - github.com/gostaticanalysis/analysisutil v0.7.1 // indirect | ||
| 89 | - github.com/gostaticanalysis/comment v1.5.0 // indirect | ||
| 90 | - github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect | ||
| 91 | - github.com/gostaticanalysis/nilerr v0.1.1 // indirect | ||
| 92 | - github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect | ||
| 93 | - github.com/hashicorp/go-version v1.7.0 // indirect | ||
| 94 | github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect | 21 | github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect |
| 95 | - github.com/hashicorp/hcl v1.0.0 // indirect | ||
| 96 | - github.com/hexops/gotextdiff v1.0.3 // indirect | ||
| 97 | - github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||
| 98 | - github.com/jgautheron/goconst v1.7.1 // indirect | ||
| 99 | - github.com/jingyugao/rowserrcheck v1.1.1 // indirect | ||
| 100 | - github.com/jjti/go-spancheck v0.6.4 // indirect | ||
| 101 | - github.com/julz/importas v0.2.0 // indirect | ||
| 102 | - github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect | ||
| 103 | - github.com/kisielk/errcheck v1.9.0 // indirect | ||
| 104 | - github.com/kkHAIKE/contextcheck v1.1.6 // indirect | ||
| 105 | - github.com/kulti/thelper v0.6.3 // indirect | ||
| 106 | - github.com/kunwardeep/paralleltest v1.0.10 // indirect | ||
| 107 | - github.com/lasiar/canonicalheader v1.1.2 // indirect | ||
| 108 | - github.com/ldez/exptostd v0.4.2 // indirect | ||
| 109 | - github.com/ldez/gomoddirectives v0.6.1 // indirect | ||
| 110 | - github.com/ldez/grignotin v0.9.0 // indirect | ||
| 111 | - github.com/ldez/tagliatelle v0.7.1 // indirect | ||
| 112 | - github.com/ldez/usetesting v0.4.2 // indirect | ||
| 113 | - github.com/leonklingele/grouper v1.1.2 // indirect | ||
| 114 | - github.com/macabu/inamedparam v0.1.3 // indirect | ||
| 115 | - github.com/magiconair/properties v1.8.6 // indirect | ||
| 116 | - github.com/maratori/testableexamples v1.0.0 // indirect | ||
| 117 | - github.com/maratori/testpackage v1.1.1 // indirect | ||
| 118 | - github.com/matoous/godox v1.1.0 // indirect | ||
| 119 | - github.com/mattn/go-colorable v0.1.14 // indirect | ||
| 120 | - github.com/mattn/go-isatty v0.0.20 // indirect | ||
| 121 | - github.com/mattn/go-runewidth v0.0.16 // indirect | ||
| 122 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect | 22 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect |
| 123 | - github.com/mgechev/revive v1.7.0 // indirect | ||
| 124 | - github.com/mitchellh/go-homedir v1.1.0 // indirect | ||
| 125 | - github.com/mitchellh/mapstructure v1.5.0 // indirect | ||
| 126 | - github.com/moricho/tparallel v0.3.2 // indirect | ||
| 127 | github.com/mr-tron/base58 v1.2.0 // indirect | 23 | github.com/mr-tron/base58 v1.2.0 // indirect |
| 128 | - github.com/nakabonne/nestif v0.3.1 // indirect | ||
| 129 | - github.com/nishanths/exhaustive v0.12.0 // indirect | ||
| 130 | - github.com/nishanths/predeclared v0.2.2 // indirect | ||
| 131 | - github.com/nunnatsa/ginkgolinter v0.19.1 // indirect | ||
| 132 | - github.com/olekukonko/tablewriter v0.0.5 // indirect | ||
| 133 | - github.com/pelletier/go-toml v1.9.5 // indirect | ||
| 134 | - github.com/pelletier/go-toml/v2 v2.2.3 // indirect | ||
| 135 | - github.com/pmezard/go-difflib v1.0.0 // indirect | ||
| 136 | - github.com/polyfloyd/go-errorlint v1.7.1 // indirect | ||
| 137 | github.com/prometheus/client_golang v1.17.0 // indirect | 24 | github.com/prometheus/client_golang v1.17.0 // indirect |
| 138 | github.com/prometheus/client_model v0.5.0 // indirect | 25 | github.com/prometheus/client_model v0.5.0 // indirect |
| 139 | github.com/prometheus/common v0.45.0 // indirect | 26 | github.com/prometheus/common v0.45.0 // indirect |
| 140 | github.com/prometheus/procfs v0.12.0 // indirect | 27 | github.com/prometheus/procfs v0.12.0 // indirect |
| 141 | - github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect | ||
| 142 | - github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect | ||
| 143 | - github.com/quasilyte/gogrep v0.5.0 // indirect | ||
| 144 | - github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect | ||
| 145 | - github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect | ||
| 146 | - github.com/raeperd/recvcheck v0.2.0 // indirect | ||
| 147 | - github.com/rivo/uniseg v0.4.7 // indirect | ||
| 148 | - github.com/rogpeppe/go-internal v1.14.1 // indirect | ||
| 149 | - github.com/ryancurrah/gomodguard v1.3.5 // indirect | ||
| 150 | - github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect | ||
| 151 | - github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect | ||
| 152 | - github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect | ||
| 153 | - github.com/sashamelentyev/interfacebloat v1.1.0 // indirect | ||
| 154 | - github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect | ||
| 155 | - github.com/securego/gosec/v2 v2.22.2 // indirect | ||
| 156 | - github.com/sirupsen/logrus v1.9.3 // indirect | ||
| 157 | - github.com/sivchari/containedctx v1.0.3 // indirect | ||
| 158 | - github.com/sivchari/tenv v1.12.1 // indirect | ||
| 159 | - github.com/sonatard/noctx v0.1.0 // indirect | ||
| 160 | - github.com/sourcegraph/go-diff v0.7.0 // indirect | ||
| 161 | - github.com/spf13/afero v1.12.0 // indirect | ||
| 162 | - github.com/spf13/cast v1.5.0 // indirect | ||
| 163 | - github.com/spf13/cobra v1.9.1 // indirect | ||
| 164 | - github.com/spf13/jwalterweatherman v1.1.0 // indirect | ||
| 165 | - github.com/spf13/pflag v1.0.6 // indirect | ||
| 166 | - github.com/spf13/viper v1.12.0 // indirect | ||
| 167 | - github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect | ||
| 168 | - github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect | ||
| 169 | - github.com/stretchr/objx v0.5.2 // indirect | ||
| 170 | - github.com/stretchr/testify v1.10.0 // indirect | ||
| 171 | - github.com/subosito/gotenv v1.4.1 // indirect | ||
| 172 | - github.com/tdakkota/asciicheck v0.4.1 // indirect | ||
| 173 | - github.com/tetafro/godot v1.5.0 // indirect | ||
| 174 | - github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect | ||
| 175 | - github.com/timonwong/loggercheck v0.10.1 // indirect | ||
| 176 | - github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect | ||
| 177 | - github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect | ||
| 178 | - github.com/ultraware/funlen v0.2.0 // indirect | ||
| 179 | - github.com/ultraware/whitespace v0.2.0 // indirect | ||
| 180 | - github.com/uudashr/gocognit v1.2.0 // indirect | ||
| 181 | - github.com/uudashr/iface v1.3.1 // indirect | ||
| 182 | - github.com/xen0n/gosmopolitan v1.2.2 // indirect | ||
| 183 | - github.com/yagipy/maintidx v1.0.0 // indirect | ||
| 184 | - github.com/yeya24/promlinter v0.3.0 // indirect | ||
| 185 | - github.com/ykadowak/zerologlint v0.1.5 // indirect | ||
| 186 | - gitlab.com/bosi/decorder v0.4.2 // indirect | ||
| 187 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect | 28 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect |
| 188 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect | 29 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect |
| 189 | - go-simpler.org/musttag v0.13.0 // indirect | 30 | + golang.org/x/crypto v0.21.0 // indirect |
| 190 | - go-simpler.org/sloglint v0.9.0 // indirect | 31 | + golang.org/x/sys v0.22.0 // indirect |
| 191 | - go.uber.org/automaxprocs v1.6.0 // indirect | 32 | + golang.org/x/time v0.3.0 // indirect |
| 192 | - go.uber.org/multierr v1.11.0 // indirect | 33 | + google.golang.org/protobuf v1.33.0 // indirect |
| 193 | - go.uber.org/zap v1.26.0 // indirect | ||
| 194 | - golang.org/x/crypto v0.35.0 // indirect | ||
| 195 | - golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect | ||
| 196 | - golang.org/x/mod v0.33.0 // indirect | ||
| 197 | - golang.org/x/sync v0.20.0 // indirect | ||
| 198 | - golang.org/x/sys v0.42.0 // indirect | ||
| 199 | - golang.org/x/text v0.22.0 // indirect | ||
| 200 | - golang.org/x/time v0.10.0 // indirect | ||
| 201 | - golang.org/x/tools v0.42.0 // indirect | ||
| 202 | - golang.org/x/tools/go/expect v0.1.1-deprecated // indirect | ||
| 203 | - golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect | ||
| 204 | - google.golang.org/protobuf v1.36.5 // indirect | ||
| 205 | - gopkg.in/ini.v1 v1.67.0 // indirect | ||
| 206 | - gopkg.in/yaml.v2 v2.4.0 // indirect | ||
| 207 | - gopkg.in/yaml.v3 v3.0.1 // indirect | ||
| 208 | - honnef.co/go/tools v0.6.1 // indirect | ||
| 209 | - mvdan.cc/gofumpt v0.7.0 // indirect | ||
| 210 | - mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect | ||
| 211 | ) | 34 | ) |
modified
go.sum +12 -550 | @@ -1,280 +1,38 @@ | ||
| 1 | -4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= | |
| 2 | -4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= | |
| 3 | -4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= | |
| 4 | -4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= | |
| 5 | -github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= | |
| 6 | -github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= | |
| 7 | -github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= | |
| 8 | -github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= | |
| 9 | -github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= | |
| 10 | -github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= | |
| 11 | -github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= | |
| 12 | -github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= | |
| 13 | -github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= | |
| 14 | -github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= | |
| 15 | -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | |
| 16 | -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | |
| 17 | -github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= | |
| 18 | -github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= | |
| 19 | -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= | |
| 20 | -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= | |
| 21 | -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= | |
| 22 | -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= | |
| 23 | -github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | |
| 24 | -github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | |
| 25 | -github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= | |
| 26 | -github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= | |
| 27 | -github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= | |
| 28 | -github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= | |
| 29 | -github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= | |
| 30 | -github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= | |
| 31 | -github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= | |
| 32 | -github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= | |
| 33 | -github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= | |
| 34 | -github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= | |
| 35 | -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= | |
| 36 | -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= | |
| 37 | -github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= | |
| 38 | -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= | |
| 39 | -github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= | |
| 40 | -github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= | |
| 41 | -github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= | |
| 42 | -github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= | |
| 43 | -github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= | |
| 44 | -github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= | |
| 45 | 1 | github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= |
| 46 | 2 | github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= |
| 47 | -github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= | |
| 48 | -github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= | |
| 49 | -github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= | |
| 50 | -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= | |
| 51 | 3 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d h1:ThKFUrkm2/IZwbvmIKLJYr0wPHibtCkIVmuZCWmdIHM= |
| 52 | 4 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d/go.mod h1:JqQkz8lrOI6YZivP38GHmtVOTtzsNToITKj1gMpU5Jo= |
| 53 | -github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= | |
| 54 | -github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= | |
| 55 | -github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= | |
| 56 | -github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= | |
| 57 | -github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= | |
| 58 | -github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= | |
| 59 | -github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= | |
| 60 | -github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= | |
| 61 | -github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= | |
| 62 | -github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= | |
| 63 | -github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= | |
| 64 | -github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= | |
| 65 | -github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= | |
| 66 | -github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= | |
| 67 | -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= | |
| 68 | -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | |
| 69 | -github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= | |
| 70 | -github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= | |
| 71 | -github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= | |
| 72 | -github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= | |
| 73 | -github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= | |
| 74 | -github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= | |
| 75 | -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= | |
| 76 | -github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= | |
| 77 | -github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= | |
| 78 | -github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= | |
| 79 | -github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= | |
| 80 | -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | |
| 5 | +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | |
| 6 | +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | |
| 81 | 7 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= |
| 82 | 8 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
| 83 | -github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= | |
| 84 | -github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= | |
| 85 | -github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= | |
| 86 | -github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= | |
| 87 | 9 | github.com/earthboundkid/versioninfo/v2 v2.24.1 h1:SJTMHaoUx3GzjjnUO1QzP3ZXK6Ee/nbWyCm58eY3oUg= |
| 88 | 10 | github.com/earthboundkid/versioninfo/v2 v2.24.1/go.mod h1:VcWEooDEuyUJnMfbdTh0uFN4cfEIg+kHMuWB2CDCLjw= |
| 89 | -github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= | |
| 90 | -github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= | |
| 91 | -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= | |
| 92 | -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= | |
| 93 | -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= | |
| 94 | -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= | |
| 95 | -github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= | |
| 96 | -github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= | |
| 97 | -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= | |
| 98 | -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= | |
| 99 | -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= | |
| 100 | -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= | |
| 101 | -github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= | |
| 102 | -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= | |
| 103 | -github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= | |
| 104 | -github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= | |
| 105 | 11 | github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= |
| 106 | 12 | github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= |
| 107 | 13 | github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE= |
| 108 | 14 | github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= |
| 109 | -github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= | |
| 110 | -github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= | |
| 111 | -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= | |
| 112 | -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= | |
| 113 | -github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= | |
| 114 | -github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= | |
| 115 | -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= | |
| 116 | -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= | |
| 117 | -github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= | |
| 118 | -github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= | |
| 119 | -github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= | |
| 120 | -github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= | |
| 121 | -github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= | |
| 122 | -github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= | |
| 123 | -github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= | |
| 124 | -github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= | |
| 125 | -github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= | |
| 126 | -github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= | |
| 127 | -github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= | |
| 128 | -github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= | |
| 129 | -github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= | |
| 130 | -github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= | |
| 131 | -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= | |
| 132 | -github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= | |
| 133 | -github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= | |
| 134 | -github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= | |
| 135 | -github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= | |
| 136 | -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= | |
| 137 | -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= | |
| 138 | -github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= | |
| 139 | -github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= | |
| 140 | -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= | |
| 141 | -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= | |
| 142 | -github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= | |
| 143 | -github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= | |
| 144 | 15 | github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= |
| 145 | 16 | github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= |
| 146 | -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= | |
| 147 | -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= | |
| 148 | -github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= | |
| 149 | -github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= | |
| 150 | -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= | |
| 151 | -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= | |
| 152 | -github.com/golangci/golangci-lint v1.64.8 h1:y5TdeVidMtBGG32zgSC7ZXTFNHrsJkDnpO4ItB3Am+I= | |
| 153 | -github.com/golangci/golangci-lint v1.64.8/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= | |
| 154 | -github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= | |
| 155 | -github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= | |
| 156 | -github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= | |
| 157 | -github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= | |
| 158 | -github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= | |
| 159 | -github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= | |
| 160 | -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= | |
| 161 | -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= | |
| 162 | -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | |
| 163 | 17 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 164 | -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | |
| 165 | -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | |
| 166 | -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | |
| 167 | -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | |
| 168 | -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | |
| 18 | +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= | |
| 19 | +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | |
| 169 | 20 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= |
| 170 | 21 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= |
| 171 | -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= | |
| 172 | -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= | |
| 173 | -github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= | |
| 174 | -github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= | |
| 175 | 22 | github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= |
| 176 | 23 | github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= |
| 177 | -github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= | |
| 178 | -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= | |
| 179 | -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= | |
| 180 | -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= | |
| 181 | -github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= | |
| 182 | -github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= | |
| 183 | -github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= | |
| 184 | -github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= | |
| 185 | -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= | |
| 186 | -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= | |
| 187 | -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= | |
| 188 | -github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= | |
| 189 | -github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= | |
| 190 | -github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= | |
| 191 | -github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= | |
| 192 | -github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= | |
| 193 | -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | |
| 194 | -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | |
| 195 | -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= | |
| 196 | -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | |
| 197 | 24 | github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= |
| 198 | 25 | github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= |
| 199 | -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= | |
| 200 | -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | |
| 201 | -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= | |
| 202 | -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= | |
| 203 | -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | |
| 204 | -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | |
| 205 | 26 | github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= |
| 206 | 27 | github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= |
| 207 | -github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= | |
| 208 | -github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= | |
| 209 | -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= | |
| 210 | -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= | |
| 211 | -github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= | |
| 212 | -github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= | |
| 213 | -github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= | |
| 214 | -github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= | |
| 215 | -github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= | |
| 216 | -github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= | |
| 217 | -github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= | |
| 218 | -github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= | |
| 219 | -github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= | |
| 220 | -github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= | |
| 221 | 28 | github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= |
| 222 | 29 | github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= |
| 223 | -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | |
| 224 | -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | |
| 225 | -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | |
| 226 | -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | |
| 227 | -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= | |
| 228 | -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= | |
| 229 | -github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= | |
| 230 | -github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= | |
| 231 | -github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= | |
| 232 | -github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= | |
| 233 | -github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= | |
| 234 | -github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= | |
| 235 | -github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= | |
| 236 | -github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= | |
| 237 | -github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= | |
| 238 | -github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= | |
| 239 | -github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= | |
| 240 | -github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= | |
| 241 | -github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= | |
| 242 | -github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= | |
| 243 | -github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= | |
| 244 | -github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= | |
| 245 | -github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= | |
| 246 | -github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= | |
| 247 | -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= | |
| 248 | -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= | |
| 249 | -github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= | |
| 250 | -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= | |
| 251 | -github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= | |
| 252 | -github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= | |
| 253 | -github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= | |
| 254 | -github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= | |
| 255 | -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= | |
| 256 | -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | |
| 257 | -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= | |
| 258 | -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= | |
| 259 | -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | |
| 260 | -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | |
| 261 | -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= | |
| 262 | -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= | |
| 263 | -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | |
| 264 | 30 | github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= |
| 265 | 31 | github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= |
| 266 | 32 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= |
| 267 | 33 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= |
| 268 | -github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= | |
| 269 | -github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= | |
| 270 | 34 | github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= |
| 271 | 35 | github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= |
| 272 | -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | |
| 273 | -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | |
| 274 | -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= | |
| 275 | -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | |
| 276 | -github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= | |
| 277 | -github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= | |
| 278 | 36 | github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= |
| 279 | 37 | github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= |
| 280 | 38 | github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= |
| @@ -287,37 +45,8 @@ github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7B | ||
| 287 | 45 | github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= |
| 288 | 46 | github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= |
| 289 | 47 | github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= |
| 290 | -github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= | |
| 291 | -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= | |
| 292 | -github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= | |
| 293 | -github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= | |
| 294 | -github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= | |
| 295 | -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= | |
| 296 | -github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= | |
| 297 | -github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= | |
| 298 | -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= | |
| 299 | -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= | |
| 300 | -github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | |
| 301 | -github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | |
| 302 | -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | |
| 303 | -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | |
| 304 | -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= | |
| 305 | -github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= | |
| 306 | -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= | |
| 307 | -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= | |
| 308 | -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= | |
| 309 | -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= | |
| 310 | -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= | |
| 311 | -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= | |
| 312 | -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= | |
| 313 | -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= | |
| 314 | -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= | |
| 315 | 48 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= |
| 316 | 49 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
| 317 | -github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= | |
| 318 | -github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= | |
| 319 | -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= | |
| 320 | -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | |
| 321 | 50 | github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= |
| 322 | 51 | github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= |
| 323 | 52 | github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= |
| @@ -326,297 +55,30 @@ github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lne | ||
| 326 | 55 | github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= |
| 327 | 56 | github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= |
| 328 | 57 | github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= |
| 329 | -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= | |
| 330 | -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= | |
| 331 | -github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= | |
| 332 | -github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= | |
| 333 | -github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= | |
| 334 | -github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= | |
| 335 | -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= | |
| 336 | -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= | |
| 337 | -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= | |
| 338 | -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= | |
| 339 | -github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= | |
| 340 | -github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= | |
| 341 | -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | |
| 342 | -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | |
| 343 | -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | |
| 344 | -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | |
| 345 | -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= | |
| 346 | -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | |
| 347 | -github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= | |
| 348 | -github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= | |
| 349 | -github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= | |
| 350 | -github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= | |
| 351 | -github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= | |
| 352 | -github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= | |
| 353 | -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= | |
| 354 | -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= | |
| 355 | -github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= | |
| 356 | -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= | |
| 357 | -github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= | |
| 358 | -github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= | |
| 359 | -github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= | |
| 360 | -github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= | |
| 361 | -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= | |
| 362 | -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= | |
| 363 | -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | |
| 364 | -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= | |
| 365 | -github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= | |
| 366 | -github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= | |
| 367 | -github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= | |
| 368 | -github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= | |
| 369 | -github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= | |
| 370 | -github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= | |
| 371 | -github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= | |
| 372 | -github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= | |
| 373 | 58 | github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= |
| 374 | 59 | github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= |
| 375 | -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | |
| 376 | -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | |
| 377 | -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= | |
| 378 | -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= | |
| 379 | -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= | |
| 380 | -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= | |
| 381 | -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= | |
| 382 | -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= | |
| 383 | -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | |
| 384 | -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= | |
| 385 | -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | |
| 386 | -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= | |
| 387 | -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= | |
| 388 | -github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= | |
| 389 | -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= | |
| 390 | -github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= | |
| 391 | -github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= | |
| 392 | -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | |
| 393 | -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | |
| 394 | -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | |
| 395 | -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= | |
| 396 | -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= | |
| 397 | -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | |
| 398 | -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | |
| 399 | -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | |
| 400 | -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | |
| 401 | -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | |
| 402 | -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | |
| 403 | -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | |
| 404 | -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | |
| 405 | 60 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= |
| 406 | 61 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= |
| 407 | -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= | |
| 408 | -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= | |
| 409 | -github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= | |
| 410 | -github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= | |
| 411 | -github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= | |
| 412 | -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= | |
| 413 | -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= | |
| 414 | -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= | |
| 415 | -github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= | |
| 416 | -github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= | |
| 417 | -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= | |
| 418 | -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= | |
| 419 | -github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= | |
| 420 | -github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= | |
| 421 | -github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= | |
| 422 | -github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= | |
| 423 | -github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= | |
| 424 | -github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= | |
| 425 | -github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= | |
| 426 | -github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= | |
| 427 | -github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= | |
| 428 | -github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= | |
| 429 | -github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= | |
| 430 | -github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= | |
| 431 | -github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= | |
| 432 | -github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= | |
| 433 | 62 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e h1:28X54ciEwwUxyHn9yrZfl5ojgF4CBNLWX7LR0rvBkf4= |
| 434 | 63 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= |
| 435 | -github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= | |
| 436 | -github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= | |
| 437 | -github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= | |
| 438 | -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= | |
| 439 | -github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= | |
| 440 | -github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= | |
| 441 | -github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= | |
| 442 | -github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= | |
| 443 | -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | |
| 444 | -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | |
| 445 | -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | |
| 446 | -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | |
| 447 | -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | |
| 448 | -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | |
| 449 | -gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= | |
| 450 | -gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= | |
| 451 | 64 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= |
| 452 | 65 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= |
| 453 | 66 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= |
| 454 | 67 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= |
| 455 | -go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= | |
| 456 | -go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= | |
| 457 | -go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= | |
| 458 | -go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= | |
| 459 | -go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= | |
| 460 | -go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= | |
| 461 | -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= | |
| 462 | -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= | |
| 463 | -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= | |
| 464 | -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= | |
| 465 | -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | |
| 466 | -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | |
| 467 | -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= | |
| 468 | -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= | |
| 469 | -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | |
| 470 | -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | |
| 471 | -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | |
| 472 | -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | |
| 473 | -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= | |
| 474 | -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= | |
| 475 | -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= | |
| 476 | -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= | |
| 477 | -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= | |
| 478 | -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= | |
| 479 | -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | |
| 480 | -golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | |
| 481 | -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= | |
| 482 | -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | |
| 483 | -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |
| 484 | -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |
| 485 | -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |
| 486 | -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |
| 487 | -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= | |
| 488 | -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | |
| 489 | -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |
| 490 | -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |
| 491 | -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |
| 492 | -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |
| 493 | -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= | |
| 494 | -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= | |
| 495 | -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= | |
| 496 | -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | |
| 497 | -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |
| 498 | -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |
| 499 | -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | |
| 500 | -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | |
| 501 | -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | |
| 502 | -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | |
| 503 | -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | |
| 504 | -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | |
| 505 | -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | |
| 506 | -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | |
| 507 | -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | |
| 508 | -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | |
| 509 | -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= | |
| 510 | -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | |
| 511 | -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= | |
| 512 | -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= | |
| 513 | -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 514 | -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 515 | -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 516 | -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 517 | -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 518 | -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 519 | -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
| 520 | -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | |
| 521 | -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | |
| 522 | -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= | |
| 523 | -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= | |
| 524 | -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | |
| 525 | -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 526 | -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 527 | -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 528 | -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 529 | -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 530 | -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 531 | -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
| 532 | -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 533 | -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 534 | -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 535 | -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 536 | -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 537 | -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 538 | -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 539 | -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 540 | -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 541 | -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 542 | -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 543 | -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 544 | -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 545 | -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |
| 546 | -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= | |
| 547 | -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= | |
| 548 | -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | |
| 549 | -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | |
| 550 | -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= | |
| 551 | -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | |
| 552 | -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | |
| 553 | -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= | |
| 554 | -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= | |
| 555 | -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= | |
| 556 | -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |
| 557 | -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | |
| 558 | -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |
| 559 | -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |
| 560 | -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | |
| 561 | -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | |
| 562 | -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | |
| 563 | -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | |
| 564 | -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | |
| 565 | -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | |
| 566 | -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= | |
| 567 | -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= | |
| 568 | -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | |
| 569 | -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | |
| 570 | -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | |
| 571 | -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | |
| 572 | -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | |
| 573 | -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | |
| 574 | -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | |
| 575 | -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | |
| 576 | -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | |
| 577 | -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | |
| 578 | -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | |
| 579 | -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | |
| 580 | -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | |
| 581 | -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= | |
| 582 | -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | |
| 583 | -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= | |
| 584 | -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= | |
| 585 | -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= | |
| 586 | -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= | |
| 587 | -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= | |
| 588 | -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= | |
| 589 | -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= | |
| 590 | -golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= | |
| 591 | -golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= | |
| 592 | -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= | |
| 593 | -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= | |
| 594 | -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |
| 595 | -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |
| 68 | +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= | |
| 69 | +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= | |
| 70 | +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= | |
| 71 | +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | |
| 72 | +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= | |
| 73 | +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | |
| 596 | 74 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |
| 597 | -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |
| 598 | 75 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= |
| 599 | 76 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= |
| 600 | -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | |
| 601 | -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | |
| 602 | -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | |
| 603 | -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | |
| 604 | -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | |
| 605 | -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= | |
| 606 | -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= | |
| 607 | -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | |
| 608 | -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | |
| 609 | -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | |
| 610 | -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | |
| 77 | +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= | |
| 78 | +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= | |
| 611 | 79 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= |
| 612 | 80 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
| 613 | 81 | gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= |
| 614 | 82 | gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= |
| 615 | -honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= | |
| 616 | -honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= | |
| 617 | 83 | lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= |
| 618 | 84 | lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= |
| 619 | -mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= | |
| 620 | -mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= | |
| 621 | -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= | |
| 622 | -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= | |
| @@ -1,280 +1,38 @@ | |||
| 1 | -4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= | ||
| 2 | -4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= | ||
| 3 | -4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= | ||
| 4 | -4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= | ||
| 5 | -github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= | ||
| 6 | -github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= | ||
| 7 | -github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= | ||
| 8 | -github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= | ||
| 9 | -github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= | ||
| 10 | -github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= | ||
| 11 | -github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= | ||
| 12 | -github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= | ||
| 13 | -github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= | ||
| 14 | -github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= | ||
| 15 | -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||
| 16 | -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||
| 17 | -github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= | ||
| 18 | -github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= | ||
| 19 | -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= | ||
| 20 | -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= | ||
| 21 | -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= | ||
| 22 | -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= | ||
| 23 | -github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | ||
| 24 | -github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||
| 25 | -github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= | ||
| 26 | -github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= | ||
| 27 | -github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= | ||
| 28 | -github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= | ||
| 29 | -github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= | ||
| 30 | -github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= | ||
| 31 | -github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= | ||
| 32 | -github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= | ||
| 33 | -github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= | ||
| 34 | -github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= | ||
| 35 | -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= | ||
| 36 | -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= | ||
| 37 | -github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= | ||
| 38 | -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= | ||
| 39 | -github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= | ||
| 40 | -github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= | ||
| 41 | -github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= | ||
| 42 | -github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= | ||
| 43 | -github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= | ||
| 44 | -github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= | ||
| 45 | github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | 1 | github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= |
| 46 | github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | 2 | github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= |
| 47 | -github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= | ||
| 48 | -github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= | ||
| 49 | -github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= | ||
| 50 | -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= | ||
| 51 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d h1:ThKFUrkm2/IZwbvmIKLJYr0wPHibtCkIVmuZCWmdIHM= | 3 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d h1:ThKFUrkm2/IZwbvmIKLJYr0wPHibtCkIVmuZCWmdIHM= |
| 52 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d/go.mod h1:JqQkz8lrOI6YZivP38GHmtVOTtzsNToITKj1gMpU5Jo= | 4 | github.com/bluesky-social/indigo v0.0.0-20260417172304-7da09df6081d/go.mod h1:JqQkz8lrOI6YZivP38GHmtVOTtzsNToITKj1gMpU5Jo= |
| 53 | -github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= | 5 | +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= |
| 54 | -github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= | 6 | +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= |
| 55 | -github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= | ||
| 56 | -github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= | ||
| 57 | -github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= | ||
| 58 | -github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= | ||
| 59 | -github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= | ||
| 60 | -github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= | ||
| 61 | -github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= | ||
| 62 | -github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= | ||
| 63 | -github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= | ||
| 64 | -github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= | ||
| 65 | -github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= | ||
| 66 | -github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= | ||
| 67 | -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= | ||
| 68 | -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||
| 69 | -github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= | ||
| 70 | -github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= | ||
| 71 | -github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= | ||
| 72 | -github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= | ||
| 73 | -github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= | ||
| 74 | -github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= | ||
| 75 | -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= | ||
| 76 | -github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= | ||
| 77 | -github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= | ||
| 78 | -github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= | ||
| 79 | -github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= | ||
| 80 | -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
| 81 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | 7 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= |
| 82 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | 8 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
| 83 | -github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= | ||
| 84 | -github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= | ||
| 85 | -github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= | ||
| 86 | -github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= | ||
| 87 | github.com/earthboundkid/versioninfo/v2 v2.24.1 h1:SJTMHaoUx3GzjjnUO1QzP3ZXK6Ee/nbWyCm58eY3oUg= | 9 | github.com/earthboundkid/versioninfo/v2 v2.24.1 h1:SJTMHaoUx3GzjjnUO1QzP3ZXK6Ee/nbWyCm58eY3oUg= |
| 88 | github.com/earthboundkid/versioninfo/v2 v2.24.1/go.mod h1:VcWEooDEuyUJnMfbdTh0uFN4cfEIg+kHMuWB2CDCLjw= | 10 | github.com/earthboundkid/versioninfo/v2 v2.24.1/go.mod h1:VcWEooDEuyUJnMfbdTh0uFN4cfEIg+kHMuWB2CDCLjw= |
| 89 | -github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= | ||
| 90 | -github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= | ||
| 91 | -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= | ||
| 92 | -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= | ||
| 93 | -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= | ||
| 94 | -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= | ||
| 95 | -github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= | ||
| 96 | -github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= | ||
| 97 | -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= | ||
| 98 | -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= | ||
| 99 | -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= | ||
| 100 | -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= | ||
| 101 | -github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= | ||
| 102 | -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= | ||
| 103 | -github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= | ||
| 104 | -github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= | ||
| 105 | github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= | 11 | github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= |
| 106 | github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= | 12 | github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= |
| 107 | github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE= | 13 | github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE= |
| 108 | github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= | 14 | github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= |
| 109 | -github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= | ||
| 110 | -github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= | ||
| 111 | -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= | ||
| 112 | -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= | ||
| 113 | -github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= | ||
| 114 | -github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= | ||
| 115 | -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= | ||
| 116 | -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= | ||
| 117 | -github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= | ||
| 118 | -github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= | ||
| 119 | -github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= | ||
| 120 | -github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= | ||
| 121 | -github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= | ||
| 122 | -github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= | ||
| 123 | -github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= | ||
| 124 | -github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= | ||
| 125 | -github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= | ||
| 126 | -github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= | ||
| 127 | -github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= | ||
| 128 | -github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= | ||
| 129 | -github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= | ||
| 130 | -github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= | ||
| 131 | -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= | ||
| 132 | -github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= | ||
| 133 | -github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= | ||
| 134 | -github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= | ||
| 135 | -github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= | ||
| 136 | -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= | ||
| 137 | -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= | ||
| 138 | -github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= | ||
| 139 | -github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= | ||
| 140 | -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= | ||
| 141 | -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= | ||
| 142 | -github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= | ||
| 143 | -github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= | ||
| 144 | github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= | 15 | github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= |
| 145 | github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= | 16 | github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= |
| 146 | -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= | ||
| 147 | -github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= | ||
| 148 | -github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= | ||
| 149 | -github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= | ||
| 150 | -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= | ||
| 151 | -github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= | ||
| 152 | -github.com/golangci/golangci-lint v1.64.8 h1:y5TdeVidMtBGG32zgSC7ZXTFNHrsJkDnpO4ItB3Am+I= | ||
| 153 | -github.com/golangci/golangci-lint v1.64.8/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= | ||
| 154 | -github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= | ||
| 155 | -github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= | ||
| 156 | -github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= | ||
| 157 | -github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= | ||
| 158 | -github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= | ||
| 159 | -github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= | ||
| 160 | -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= | ||
| 161 | -github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= | ||
| 162 | -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||
| 163 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 17 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
| 164 | -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 18 | +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= |
| 165 | -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | 19 | +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= |
| 166 | -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||
| 167 | -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||
| 168 | -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||
| 169 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= | 20 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= |
| 170 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= | 21 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= |
| 171 | -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= | ||
| 172 | -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= | ||
| 173 | -github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= | ||
| 174 | -github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= | ||
| 175 | github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= | 22 | github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= |
| 176 | github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | 23 | github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= |
| 177 | -github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= | ||
| 178 | -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= | ||
| 179 | -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= | ||
| 180 | -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= | ||
| 181 | -github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= | ||
| 182 | -github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= | ||
| 183 | -github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= | ||
| 184 | -github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= | ||
| 185 | -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= | ||
| 186 | -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= | ||
| 187 | -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= | ||
| 188 | -github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= | ||
| 189 | -github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= | ||
| 190 | -github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= | ||
| 191 | -github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= | ||
| 192 | -github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= | ||
| 193 | -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | ||
| 194 | -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||
| 195 | -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= | ||
| 196 | -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||
| 197 | github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= | 24 | github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= |
| 198 | github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= | 25 | github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= |
| 199 | -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= | ||
| 200 | -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | ||
| 201 | -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= | ||
| 202 | -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= | ||
| 203 | -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= | ||
| 204 | -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= | ||
| 205 | github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= | 26 | github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= |
| 206 | github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= | 27 | github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= |
| 207 | -github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= | ||
| 208 | -github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= | ||
| 209 | -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= | ||
| 210 | -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= | ||
| 211 | -github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= | ||
| 212 | -github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= | ||
| 213 | -github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= | ||
| 214 | -github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= | ||
| 215 | -github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= | ||
| 216 | -github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= | ||
| 217 | -github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= | ||
| 218 | -github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= | ||
| 219 | -github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= | ||
| 220 | -github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= | ||
| 221 | github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= | 28 | github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= |
| 222 | github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= | 29 | github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= |
| 223 | -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||
| 224 | -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||
| 225 | -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||
| 226 | -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||
| 227 | -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= | ||
| 228 | -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= | ||
| 229 | -github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= | ||
| 230 | -github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= | ||
| 231 | -github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= | ||
| 232 | -github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= | ||
| 233 | -github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= | ||
| 234 | -github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= | ||
| 235 | -github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= | ||
| 236 | -github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= | ||
| 237 | -github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= | ||
| 238 | -github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= | ||
| 239 | -github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= | ||
| 240 | -github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= | ||
| 241 | -github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= | ||
| 242 | -github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= | ||
| 243 | -github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= | ||
| 244 | -github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= | ||
| 245 | -github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= | ||
| 246 | -github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= | ||
| 247 | -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= | ||
| 248 | -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= | ||
| 249 | -github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= | ||
| 250 | -github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= | ||
| 251 | -github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= | ||
| 252 | -github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= | ||
| 253 | -github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= | ||
| 254 | -github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= | ||
| 255 | -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= | ||
| 256 | -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | ||
| 257 | -github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= | ||
| 258 | -github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= | ||
| 259 | -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||
| 260 | -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||
| 261 | -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= | ||
| 262 | -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= | ||
| 263 | -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||
| 264 | github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= | 30 | github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= |
| 265 | github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= | 31 | github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= |
| 266 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= | 32 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= |
| 267 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= | 33 | github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= |
| 268 | -github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= | ||
| 269 | -github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= | ||
| 270 | github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= | 34 | github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= |
| 271 | github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= | 35 | github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= |
| 272 | -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | ||
| 273 | -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||
| 274 | -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= | ||
| 275 | -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | ||
| 276 | -github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= | ||
| 277 | -github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= | ||
| 278 | github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= | 36 | github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= |
| 279 | github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= | 37 | github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= |
| 280 | github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= | 38 | github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= |
| @@ -287,37 +45,8 @@ github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7B | |||
| 287 | github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= | 45 | github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= |
| 288 | github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= | 46 | github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= |
| 289 | github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= | 47 | github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= |
| 290 | -github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= | ||
| 291 | -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= | ||
| 292 | -github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= | ||
| 293 | -github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= | ||
| 294 | -github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= | ||
| 295 | -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= | ||
| 296 | -github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= | ||
| 297 | -github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= | ||
| 298 | -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= | ||
| 299 | -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= | ||
| 300 | -github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||
| 301 | -github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||
| 302 | -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||
| 303 | -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||
| 304 | -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= | ||
| 305 | -github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= | ||
| 306 | -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= | ||
| 307 | -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= | ||
| 308 | -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= | ||
| 309 | -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= | ||
| 310 | -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= | ||
| 311 | -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= | ||
| 312 | -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= | ||
| 313 | -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= | ||
| 314 | -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= | ||
| 315 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | 48 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= |
| 316 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | 49 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
| 317 | -github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= | ||
| 318 | -github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= | ||
| 319 | -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= | ||
| 320 | -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | ||
| 321 | github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= | 50 | github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= |
| 322 | github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= | 51 | github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= |
| 323 | github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= | 52 | github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= |
| @@ -326,297 +55,30 @@ github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lne | |||
| 326 | github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= | 55 | github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= |
| 327 | github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= | 56 | github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= |
| 328 | github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= | 57 | github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= |
| 329 | -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= | ||
| 330 | -github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= | ||
| 331 | -github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= | ||
| 332 | -github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= | ||
| 333 | -github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= | ||
| 334 | -github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= | ||
| 335 | -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= | ||
| 336 | -github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= | ||
| 337 | -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= | ||
| 338 | -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= | ||
| 339 | -github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= | ||
| 340 | -github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= | ||
| 341 | -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||
| 342 | -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | ||
| 343 | -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||
| 344 | -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | ||
| 345 | -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= | ||
| 346 | -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||
| 347 | -github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= | ||
| 348 | -github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= | ||
| 349 | -github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= | ||
| 350 | -github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= | ||
| 351 | -github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= | ||
| 352 | -github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= | ||
| 353 | -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= | ||
| 354 | -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= | ||
| 355 | -github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= | ||
| 356 | -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= | ||
| 357 | -github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= | ||
| 358 | -github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= | ||
| 359 | -github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= | ||
| 360 | -github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= | ||
| 361 | -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= | ||
| 362 | -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= | ||
| 363 | -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | ||
| 364 | -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= | ||
| 365 | -github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= | ||
| 366 | -github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= | ||
| 367 | -github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= | ||
| 368 | -github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= | ||
| 369 | -github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= | ||
| 370 | -github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= | ||
| 371 | -github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= | ||
| 372 | -github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= | ||
| 373 | github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= | 58 | github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= |
| 374 | github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | 59 | github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= |
| 375 | -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | ||
| 376 | -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | ||
| 377 | -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= | ||
| 378 | -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= | ||
| 379 | -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= | ||
| 380 | -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= | ||
| 381 | -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= | ||
| 382 | -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= | ||
| 383 | -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||
| 384 | -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= | ||
| 385 | -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||
| 386 | -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= | ||
| 387 | -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= | ||
| 388 | -github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= | ||
| 389 | -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= | ||
| 390 | -github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= | ||
| 391 | -github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= | ||
| 392 | -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||
| 393 | -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | ||
| 394 | -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | ||
| 395 | -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= | ||
| 396 | -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= | ||
| 397 | -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||
| 398 | -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||
| 399 | -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||
| 400 | -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||
| 401 | -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||
| 402 | -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||
| 403 | -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||
| 404 | -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||
| 405 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= | 60 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= |
| 406 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | 61 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= |
| 407 | -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= | ||
| 408 | -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= | ||
| 409 | -github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= | ||
| 410 | -github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= | ||
| 411 | -github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= | ||
| 412 | -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= | ||
| 413 | -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= | ||
| 414 | -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= | ||
| 415 | -github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= | ||
| 416 | -github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= | ||
| 417 | -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= | ||
| 418 | -github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= | ||
| 419 | -github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= | ||
| 420 | -github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= | ||
| 421 | -github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= | ||
| 422 | -github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= | ||
| 423 | -github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= | ||
| 424 | -github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= | ||
| 425 | -github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= | ||
| 426 | -github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= | ||
| 427 | -github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= | ||
| 428 | -github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= | ||
| 429 | -github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= | ||
| 430 | -github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= | ||
| 431 | -github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= | ||
| 432 | -github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= | ||
| 433 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e h1:28X54ciEwwUxyHn9yrZfl5ojgF4CBNLWX7LR0rvBkf4= | 62 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e h1:28X54ciEwwUxyHn9yrZfl5ojgF4CBNLWX7LR0rvBkf4= |
| 434 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= | 63 | github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= |
| 435 | -github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= | ||
| 436 | -github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= | ||
| 437 | -github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= | ||
| 438 | -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= | ||
| 439 | -github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= | ||
| 440 | -github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= | ||
| 441 | -github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= | ||
| 442 | -github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= | ||
| 443 | -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||
| 444 | -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||
| 445 | -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||
| 446 | -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | ||
| 447 | -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | ||
| 448 | -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||
| 449 | -gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= | ||
| 450 | -gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= | ||
| 451 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= | 64 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= |
| 452 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= | 65 | gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= |
| 453 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= | 66 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= |
| 454 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= | 67 | gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= |
| 455 | -go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= | 68 | +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= |
| 456 | -go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= | 69 | +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= |
| 457 | -go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= | 70 | +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= |
| 458 | -go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= | 71 | +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= |
| 459 | -go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= | 72 | +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= |
| 460 | -go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= | 73 | +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= |
| 461 | -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= | ||
| 462 | -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= | ||
| 463 | -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= | ||
| 464 | -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= | ||
| 465 | -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||
| 466 | -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||
| 467 | -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= | ||
| 468 | -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= | ||
| 469 | -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||
| 470 | -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||
| 471 | -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||
| 472 | -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||
| 473 | -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= | ||
| 474 | -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= | ||
| 475 | -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= | ||
| 476 | -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= | ||
| 477 | -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= | ||
| 478 | -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= | ||
| 479 | -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||
| 480 | -golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||
| 481 | -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= | ||
| 482 | -golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||
| 483 | -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||
| 484 | -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||
| 485 | -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||
| 486 | -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||
| 487 | -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= | ||
| 488 | -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||
| 489 | -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||
| 490 | -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||
| 491 | -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||
| 492 | -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||
| 493 | -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= | ||
| 494 | -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= | ||
| 495 | -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= | ||
| 496 | -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||
| 497 | -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||
| 498 | -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||
| 499 | -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | ||
| 500 | -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||
| 501 | -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||
| 502 | -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | ||
| 503 | -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||
| 504 | -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||
| 505 | -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||
| 506 | -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||
| 507 | -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||
| 508 | -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | ||
| 509 | -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= | ||
| 510 | -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||
| 511 | -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= | ||
| 512 | -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= | ||
| 513 | -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 514 | -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 515 | -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 516 | -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 517 | -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 518 | -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 519 | -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||
| 520 | -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | ||
| 521 | -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | ||
| 522 | -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= | ||
| 523 | -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= | ||
| 524 | -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||
| 525 | -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 526 | -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 527 | -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 528 | -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 529 | -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 530 | -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 531 | -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
| 532 | -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 533 | -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 534 | -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 535 | -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 536 | -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 537 | -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 538 | -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 539 | -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 540 | -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 541 | -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 542 | -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 543 | -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 544 | -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 545 | -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
| 546 | -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= | ||
| 547 | -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= | ||
| 548 | -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||
| 549 | -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||
| 550 | -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= | ||
| 551 | -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | ||
| 552 | -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | ||
| 553 | -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= | ||
| 554 | -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= | ||
| 555 | -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= | ||
| 556 | -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||
| 557 | -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | ||
| 558 | -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||
| 559 | -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||
| 560 | -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||
| 561 | -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||
| 562 | -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||
| 563 | -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||
| 564 | -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||
| 565 | -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||
| 566 | -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= | ||
| 567 | -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= | ||
| 568 | -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||
| 569 | -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||
| 570 | -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||
| 571 | -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||
| 572 | -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | ||
| 573 | -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | ||
| 574 | -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | ||
| 575 | -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | ||
| 576 | -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||
| 577 | -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | ||
| 578 | -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | ||
| 579 | -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | ||
| 580 | -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | ||
| 581 | -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= | ||
| 582 | -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | ||
| 583 | -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= | ||
| 584 | -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= | ||
| 585 | -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= | ||
| 586 | -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= | ||
| 587 | -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= | ||
| 588 | -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= | ||
| 589 | -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= | ||
| 590 | -golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= | ||
| 591 | -golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= | ||
| 592 | -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= | ||
| 593 | -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= | ||
| 594 | -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||
| 595 | -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||
| 596 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | 74 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |
| 597 | -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||
| 598 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= | 75 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= |
| 599 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= | 76 | golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= |
| 600 | -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | 77 | +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= |
| 601 | -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | 78 | +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= |
| 602 | -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||
| 603 | -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||
| 604 | -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||
| 605 | -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= | ||
| 606 | -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= | ||
| 607 | -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||
| 608 | -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||
| 609 | -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||
| 610 | -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||
| 611 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | 79 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= |
| 612 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | 80 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
| 613 | gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= | 81 | gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= |
| 614 | gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= | 82 | gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= |
| 615 | -honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= | ||
| 616 | -honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= | ||
| 617 | lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= | 83 | lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= |
| 618 | lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= | 84 | lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= |
| 619 | -mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= | ||
| 620 | -mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= | ||
| 621 | -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= | ||
| 622 | -mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= | ||
modified
internal/db/feed.go +32 -36 | @@ -26,16 +26,15 @@ type Feed struct { | ||
| 26 | 26 | } |
| 27 | 27 | |
| 28 | 28 | type Subscription struct { |
| 29 | - ID int64 | |
| 30 | - UserDID string | |
| 31 | - FeedURL string | |
| 32 | - FeedTitle string | |
| 33 | - Category sql.NullString | |
| 34 | - AddedAt sql.NullTime | |
| 35 | - UnreadCount int | |
| 36 | - FetchInterval int | |
| 37 | - URI sql.NullString | |
| 38 | - CID sql.NullString | |
| 29 | + ID int64 | |
| 30 | + UserDID string | |
| 31 | + FeedURL string | |
| 32 | + FeedTitle string | |
| 33 | + Category sql.NullString | |
| 34 | + AddedAt sql.NullTime | |
| 35 | + UnreadCount int | |
| 36 | + URI sql.NullString | |
| 37 | + CID sql.NullString | |
| 39 | 38 | } |
| 40 | 39 | |
| 41 | 40 | func (db *DB) UpsertFeed(ctx context.Context, feed *Feed) error { |
| @@ -67,16 +66,17 @@ func (db *DB) GetFeed(ctx context.Context, feedURL string) (*Feed, error) { | ||
| 67 | 66 | return f, nil |
| 68 | 67 | } |
| 69 | 68 | |
| 70 | -func (db *DB) GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) { | |
| 69 | +func (db *DB) GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*Feed, error) { | |
| 70 | + cutoff := time.Now().Add(-olderThan) | |
| 71 | 71 | rows, err := db.QueryContext(ctx, ` |
| 72 | 72 | SELECT feed_url, title, site_url, description, feed_type, |
| 73 | 73 | last_fetched_at, last_error, subscriber_count, etag, last_modified, |
| 74 | 74 | fetch_interval_minutes, next_fetch_at, consecutive_empty_fetches, error_count, favicon_url |
| 75 | 75 | FROM feeds |
| 76 | - WHERE next_fetch_at <= CURRENT_TIMESTAMP | |
| 77 | - ORDER BY next_fetch_at | |
| 76 | + WHERE subscriber_count > 0 AND (last_fetched_at IS NULL OR last_fetched_at <= ?) | |
| 77 | + ORDER BY last_fetched_at ASC NULLS FIRST | |
| 78 | 78 | LIMIT ? |
| 79 | - `, limit) | |
| 79 | + `, cutoff, limit) | |
| 80 | 80 | if err != nil { |
| 81 | 81 | return nil, err |
| 82 | 82 | } |
| @@ -95,20 +95,27 @@ func (db *DB) GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) { | ||
| 95 | 95 | return feeds, rows.Err() |
| 96 | 96 | } |
| 97 | 97 | |
| 98 | -func (db *DB) UpdateFeedFetchResult(ctx context.Context, feedURL, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error { | |
| 99 | - nextFetch := time.Now().Add(time.Duration(intervalMinutes) * time.Minute) | |
| 98 | +func (db *DB) MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error { | |
| 100 | 99 | _, err := db.ExecContext(ctx, ` |
| 101 | 100 | UPDATE feeds SET |
| 102 | 101 | etag = ?, |
| 103 | 102 | last_modified = ?, |
| 104 | - fetch_interval_minutes = ?, | |
| 105 | - next_fetch_at = ?, | |
| 106 | - consecutive_empty_fetches = ?, | |
| 107 | - error_count = ?, | |
| 103 | + error_count = 0, | |
| 104 | + last_error = '', | |
| 105 | + last_fetched_at = CURRENT_TIMESTAMP | |
| 106 | + WHERE feed_url = ? | |
| 107 | + `, etag, lastModified, feedURL) | |
| 108 | + return err | |
| 109 | +} | |
| 110 | + | |
| 111 | +func (db *DB) MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error { | |
| 112 | + _, err := db.ExecContext(ctx, ` | |
| 113 | + UPDATE feeds SET | |
| 114 | + error_count = error_count + 1, | |
| 108 | 115 | last_error = ?, |
| 109 | 116 | last_fetched_at = CURRENT_TIMESTAMP |
| 110 | 117 | WHERE feed_url = ? |
| 111 | - `, etag, lastModified, intervalMinutes, nextFetch, consecutiveEmpty, errorCount, lastError, feedURL) | |
| 118 | + `, lastError, feedURL) | |
| 112 | 119 | return err |
| 113 | 120 | } |
| 114 | 121 | |
| @@ -208,11 +215,11 @@ func (db *DB) GetSubscription(ctx context.Context, userDID, feedURL string) (*Su | ||
| 208 | 215 | s := &Subscription{} |
| 209 | 216 | err := db.QueryRowContext(ctx, ` |
| 210 | 217 | SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, |
| 211 | - COALESCE(f.fetch_interval_minutes, 30), s.uri, s.cid | |
| 218 | + s.uri, s.cid | |
| 212 | 219 | FROM subscriptions s |
| 213 | 220 | LEFT JOIN feeds f ON s.feed_url = f.feed_url |
| 214 | 221 | WHERE s.user_did = ? AND s.feed_url = ? |
| 215 | - `, userDID, feedURL).Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.FetchInterval, &s.URI, &s.CID) | |
| 222 | + `, userDID, feedURL).Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.URI, &s.CID) | |
| 216 | 223 | if err != nil { |
| 217 | 224 | return nil, err |
| 218 | 225 | } |
| @@ -221,7 +228,7 @@ func (db *DB) GetSubscription(ctx context.Context, userDID, feedURL string) (*Su | ||
| 221 | 228 | |
| 222 | 229 | func (db *DB) ListSubscriptions(ctx context.Context, userDID, category string, limit, offset int) ([]*Subscription, error) { |
| 223 | 230 | query := `SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, |
| 224 | - COALESCE(f.fetch_interval_minutes, 30), s.uri, s.cid | |
| 231 | + s.uri, s.cid | |
| 225 | 232 | FROM subscriptions s |
| 226 | 233 | LEFT JOIN feeds f ON s.feed_url = f.feed_url |
| 227 | 234 | WHERE s.user_did = ?` |
| @@ -243,7 +250,7 @@ func (db *DB) ListSubscriptions(ctx context.Context, userDID, category string, l | ||
| 243 | 250 | var subs []*Subscription |
| 244 | 251 | for rows.Next() { |
| 245 | 252 | s := &Subscription{} |
| 246 | - if err := rows.Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.FetchInterval, &s.URI, &s.CID); err != nil { | |
| 253 | + if err := rows.Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.URI, &s.CID); err != nil { | |
| 247 | 254 | return nil, err |
| 248 | 255 | } |
| 249 | 256 | subs = append(subs, s) |
| @@ -264,17 +271,6 @@ func (db *DB) UpdateFeedFavicon(ctx context.Context, feedURL, faviconURL string) | ||
| 264 | 271 | return err |
| 265 | 272 | } |
| 266 | 273 | |
| 267 | -func (db *DB) UpdateFeedInterval(ctx context.Context, feedURL string, intervalMinutes int) error { | |
| 268 | - nextFetch := time.Now().Add(time.Duration(intervalMinutes) * time.Minute) | |
| 269 | - _, err := db.ExecContext(ctx, ` | |
| 270 | - UPDATE feeds SET | |
| 271 | - fetch_interval_minutes = ?, | |
| 272 | - next_fetch_at = ? | |
| 273 | - WHERE feed_url = ? | |
| 274 | - `, intervalMinutes, nextFetch, feedURL) | |
| 275 | - return err | |
| 276 | -} | |
| 277 | - | |
| 278 | 274 | func (db *DB) ListDeadFeeds(ctx context.Context, userDID string, threshold int) ([]*Feed, error) { |
| 279 | 275 | rows, err := db.QueryContext(ctx, ` |
| 280 | 276 | SELECT f.feed_url, f.title, f.site_url, f.description, f.feed_type, |
| @@ -26,16 +26,15 @@ type Feed struct { | |||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | type Subscription struct { | 28 | type Subscription struct { |
| 29 | - ID int64 | 29 | + ID int64 |
| 30 | - UserDID string | 30 | + UserDID string |
| 31 | - FeedURL string | 31 | + FeedURL string |
| 32 | - FeedTitle string | 32 | + FeedTitle string |
| 33 | - Category sql.NullString | 33 | + Category sql.NullString |
| 34 | - AddedAt sql.NullTime | 34 | + AddedAt sql.NullTime |
| 35 | - UnreadCount int | 35 | + UnreadCount int |
| 36 | - FetchInterval int | 36 | + URI sql.NullString |
| 37 | - URI sql.NullString | 37 | + CID sql.NullString |
| 38 | - CID sql.NullString | ||
| 39 | } | 38 | } |
| 40 | 39 | ||
| 41 | func (db *DB) UpsertFeed(ctx context.Context, feed *Feed) error { | 40 | func (db *DB) UpsertFeed(ctx context.Context, feed *Feed) error { |
| @@ -67,16 +66,17 @@ func (db *DB) GetFeed(ctx context.Context, feedURL string) (*Feed, error) { | |||
| 67 | return f, nil | 66 | return f, nil |
| 68 | } | 67 | } |
| 69 | 68 | ||
| 70 | -func (db *DB) GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) { | 69 | +func (db *DB) GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*Feed, error) { |
| 70 | + cutoff := time.Now().Add(-olderThan) | ||
| 71 | rows, err := db.QueryContext(ctx, ` | 71 | rows, err := db.QueryContext(ctx, ` |
| 72 | SELECT feed_url, title, site_url, description, feed_type, | 72 | SELECT feed_url, title, site_url, description, feed_type, |
| 73 | last_fetched_at, last_error, subscriber_count, etag, last_modified, | 73 | last_fetched_at, last_error, subscriber_count, etag, last_modified, |
| 74 | fetch_interval_minutes, next_fetch_at, consecutive_empty_fetches, error_count, favicon_url | 74 | fetch_interval_minutes, next_fetch_at, consecutive_empty_fetches, error_count, favicon_url |
| 75 | FROM feeds | 75 | FROM feeds |
| 76 | - WHERE next_fetch_at <= CURRENT_TIMESTAMP | 76 | + WHERE subscriber_count > 0 AND (last_fetched_at IS NULL OR last_fetched_at <= ?) |
| 77 | - ORDER BY next_fetch_at | 77 | + ORDER BY last_fetched_at ASC NULLS FIRST |
| 78 | LIMIT ? | 78 | LIMIT ? |
| 79 | - `, limit) | 79 | + `, cutoff, limit) |
| 80 | if err != nil { | 80 | if err != nil { |
| 81 | return nil, err | 81 | return nil, err |
| 82 | } | 82 | } |
| @@ -95,20 +95,27 @@ func (db *DB) GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) { | |||
| 95 | return feeds, rows.Err() | 95 | return feeds, rows.Err() |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | -func (db *DB) UpdateFeedFetchResult(ctx context.Context, feedURL, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error { | 98 | +func (db *DB) MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error { |
| 99 | - nextFetch := time.Now().Add(time.Duration(intervalMinutes) * time.Minute) | ||
| 100 | _, err := db.ExecContext(ctx, ` | 99 | _, err := db.ExecContext(ctx, ` |
| 101 | UPDATE feeds SET | 100 | UPDATE feeds SET |
| 102 | etag = ?, | 101 | etag = ?, |
| 103 | last_modified = ?, | 102 | last_modified = ?, |
| 104 | - fetch_interval_minutes = ?, | 103 | + error_count = 0, |
| 105 | - next_fetch_at = ?, | 104 | + last_error = '', |
| 106 | - consecutive_empty_fetches = ?, | 105 | + last_fetched_at = CURRENT_TIMESTAMP |
| 107 | - error_count = ?, | 106 | + WHERE feed_url = ? |
| 107 | + `, etag, lastModified, feedURL) | ||
| 108 | + return err | ||
| 109 | +} | ||
| 110 | + | ||
| 111 | +func (db *DB) MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error { | ||
| 112 | + _, err := db.ExecContext(ctx, ` | ||
| 113 | + UPDATE feeds SET | ||
| 114 | + error_count = error_count + 1, | ||
| 108 | last_error = ?, | 115 | last_error = ?, |
| 109 | last_fetched_at = CURRENT_TIMESTAMP | 116 | last_fetched_at = CURRENT_TIMESTAMP |
| 110 | WHERE feed_url = ? | 117 | WHERE feed_url = ? |
| 111 | - `, etag, lastModified, intervalMinutes, nextFetch, consecutiveEmpty, errorCount, lastError, feedURL) | 118 | + `, lastError, feedURL) |
| 112 | return err | 119 | return err |
| 113 | } | 120 | } |
| 114 | 121 | ||
| @@ -208,11 +215,11 @@ func (db *DB) GetSubscription(ctx context.Context, userDID, feedURL string) (*Su | |||
| 208 | s := &Subscription{} | 215 | s := &Subscription{} |
| 209 | err := db.QueryRowContext(ctx, ` | 216 | err := db.QueryRowContext(ctx, ` |
| 210 | SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, | 217 | SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, |
| 211 | - COALESCE(f.fetch_interval_minutes, 30), s.uri, s.cid | 218 | + s.uri, s.cid |
| 212 | FROM subscriptions s | 219 | FROM subscriptions s |
| 213 | LEFT JOIN feeds f ON s.feed_url = f.feed_url | 220 | LEFT JOIN feeds f ON s.feed_url = f.feed_url |
| 214 | WHERE s.user_did = ? AND s.feed_url = ? | 221 | WHERE s.user_did = ? AND s.feed_url = ? |
| 215 | - `, userDID, feedURL).Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.FetchInterval, &s.URI, &s.CID) | 222 | + `, userDID, feedURL).Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.URI, &s.CID) |
| 216 | if err != nil { | 223 | if err != nil { |
| 217 | return nil, err | 224 | return nil, err |
| 218 | } | 225 | } |
| @@ -221,7 +228,7 @@ func (db *DB) GetSubscription(ctx context.Context, userDID, feedURL string) (*Su | |||
| 221 | 228 | ||
| 222 | func (db *DB) ListSubscriptions(ctx context.Context, userDID, category string, limit, offset int) ([]*Subscription, error) { | 229 | func (db *DB) ListSubscriptions(ctx context.Context, userDID, category string, limit, offset int) ([]*Subscription, error) { |
| 223 | query := `SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, | 230 | query := `SELECT s.id, s.user_did, s.feed_url, COALESCE(s.title, f.title, ''), s.category, s.added_at, |
| 224 | - COALESCE(f.fetch_interval_minutes, 30), s.uri, s.cid | 231 | + s.uri, s.cid |
| 225 | FROM subscriptions s | 232 | FROM subscriptions s |
| 226 | LEFT JOIN feeds f ON s.feed_url = f.feed_url | 233 | LEFT JOIN feeds f ON s.feed_url = f.feed_url |
| 227 | WHERE s.user_did = ?` | 234 | WHERE s.user_did = ?` |
| @@ -243,7 +250,7 @@ func (db *DB) ListSubscriptions(ctx context.Context, userDID, category string, l | |||
| 243 | var subs []*Subscription | 250 | var subs []*Subscription |
| 244 | for rows.Next() { | 251 | for rows.Next() { |
| 245 | s := &Subscription{} | 252 | s := &Subscription{} |
| 246 | - if err := rows.Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.FetchInterval, &s.URI, &s.CID); err != nil { | 253 | + if err := rows.Scan(&s.ID, &s.UserDID, &s.FeedURL, &s.FeedTitle, &s.Category, &s.AddedAt, &s.URI, &s.CID); err != nil { |
| 247 | return nil, err | 254 | return nil, err |
| 248 | } | 255 | } |
| 249 | subs = append(subs, s) | 256 | subs = append(subs, s) |
| @@ -264,17 +271,6 @@ func (db *DB) UpdateFeedFavicon(ctx context.Context, feedURL, faviconURL string) | |||
| 264 | return err | 271 | return err |
| 265 | } | 272 | } |
| 266 | 273 | ||
| 267 | -func (db *DB) UpdateFeedInterval(ctx context.Context, feedURL string, intervalMinutes int) error { | ||
| 268 | - nextFetch := time.Now().Add(time.Duration(intervalMinutes) * time.Minute) | ||
| 269 | - _, err := db.ExecContext(ctx, ` | ||
| 270 | - UPDATE feeds SET | ||
| 271 | - fetch_interval_minutes = ?, | ||
| 272 | - next_fetch_at = ? | ||
| 273 | - WHERE feed_url = ? | ||
| 274 | - `, intervalMinutes, nextFetch, feedURL) | ||
| 275 | - return err | ||
| 276 | -} | ||
| 277 | - | ||
| 278 | func (db *DB) ListDeadFeeds(ctx context.Context, userDID string, threshold int) ([]*Feed, error) { | 274 | func (db *DB) ListDeadFeeds(ctx context.Context, userDID string, threshold int) ([]*Feed, error) { |
| 279 | rows, err := db.QueryContext(ctx, ` | 275 | rows, err := db.QueryContext(ctx, ` |
| 280 | SELECT f.feed_url, f.title, f.site_url, f.description, f.feed_type, | 276 | SELECT f.feed_url, f.title, f.site_url, f.description, f.feed_type, |
modified
internal/db/store.go +9 -4 | @@ -3,6 +3,7 @@ package db | ||
| 3 | 3 | import ( |
| 4 | 4 | "context" |
| 5 | 5 | "database/sql" |
| 6 | + "time" | |
| 6 | 7 | |
| 7 | 8 | "pkg.rbrt.fr/glean/internal/feed" |
| 8 | 9 | ) |
| @@ -15,8 +16,8 @@ func NewFeedStoreAdapter(db *DB) *FeedStoreAdapter { | ||
| 15 | 16 | return &FeedStoreAdapter{db: db} |
| 16 | 17 | } |
| 17 | 18 | |
| 18 | -func (a *FeedStoreAdapter) GetFeedsToFetch(ctx context.Context, limit int) ([]*feed.Feed, error) { | |
| 19 | - dbFeeds, err := a.db.GetFeedsToFetch(ctx, limit) | |
| 19 | +func (a *FeedStoreAdapter) GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*feed.Feed, error) { | |
| 20 | + dbFeeds, err := a.db.GetFeedsToFetch(ctx, olderThan, limit) | |
| 20 | 21 | if err != nil { |
| 21 | 22 | return nil, err |
| 22 | 23 | } |
| @@ -54,6 +55,10 @@ func (a *FeedStoreAdapter) UpsertArticle(ctx context.Context, article *feed.Arti | ||
| 54 | 55 | return a.db.UpsertArticle(ctx, dbArticle) |
| 55 | 56 | } |
| 56 | 57 | |
| 57 | -func (a *FeedStoreAdapter) UpdateFeedFetchResult(ctx context.Context, feedURL, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error { | |
| 58 | - return a.db.UpdateFeedFetchResult(ctx, feedURL, etag, lastModified, intervalMinutes, consecutiveEmpty, errorCount, lastError) | |
| 58 | +func (a *FeedStoreAdapter) MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error { | |
| 59 | + return a.db.MarkFeedFetched(ctx, feedURL, etag, lastModified) | |
| 60 | +} | |
| 61 | + | |
| 62 | +func (a *FeedStoreAdapter) MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error { | |
| 63 | + return a.db.MarkFeedFetchError(ctx, feedURL, lastError) | |
| 59 | 64 | } |
| @@ -3,6 +3,7 @@ package db | |||
| 3 | import ( | 3 | import ( |
| 4 | "context" | 4 | "context" |
| 5 | "database/sql" | 5 | "database/sql" |
| 6 | + "time" | ||
| 6 | 7 | ||
| 7 | "pkg.rbrt.fr/glean/internal/feed" | 8 | "pkg.rbrt.fr/glean/internal/feed" |
| 8 | ) | 9 | ) |
| @@ -15,8 +16,8 @@ func NewFeedStoreAdapter(db *DB) *FeedStoreAdapter { | |||
| 15 | return &FeedStoreAdapter{db: db} | 16 | return &FeedStoreAdapter{db: db} |
| 16 | } | 17 | } |
| 17 | 18 | ||
| 18 | -func (a *FeedStoreAdapter) GetFeedsToFetch(ctx context.Context, limit int) ([]*feed.Feed, error) { | 19 | +func (a *FeedStoreAdapter) GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*feed.Feed, error) { |
| 19 | - dbFeeds, err := a.db.GetFeedsToFetch(ctx, limit) | 20 | + dbFeeds, err := a.db.GetFeedsToFetch(ctx, olderThan, limit) |
| 20 | if err != nil { | 21 | if err != nil { |
| 21 | return nil, err | 22 | return nil, err |
| 22 | } | 23 | } |
| @@ -54,6 +55,10 @@ func (a *FeedStoreAdapter) UpsertArticle(ctx context.Context, article *feed.Arti | |||
| 54 | return a.db.UpsertArticle(ctx, dbArticle) | 55 | return a.db.UpsertArticle(ctx, dbArticle) |
| 55 | } | 56 | } |
| 56 | 57 | ||
| 57 | -func (a *FeedStoreAdapter) UpdateFeedFetchResult(ctx context.Context, feedURL, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error { | 58 | +func (a *FeedStoreAdapter) MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error { |
| 58 | - return a.db.UpdateFeedFetchResult(ctx, feedURL, etag, lastModified, intervalMinutes, consecutiveEmpty, errorCount, lastError) | 59 | + return a.db.MarkFeedFetched(ctx, feedURL, etag, lastModified) |
| 60 | +} | ||
| 61 | + | ||
| 62 | +func (a *FeedStoreAdapter) MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error { | ||
| 63 | + return a.db.MarkFeedFetchError(ctx, feedURL, lastError) | ||
| 59 | } | 64 | } |
modified
internal/feed/fetcher.go +41 -67 | @@ -5,6 +5,7 @@ import ( | ||
| 5 | 5 | "fmt" |
| 6 | 6 | "log/slog" |
| 7 | 7 | "net/http" |
| 8 | + "sync" | |
| 8 | 9 | "time" |
| 9 | 10 | ) |
| 10 | 11 | |
| @@ -65,15 +66,14 @@ func (f *Fetcher) Fetch(ctx context.Context, feedURL, etag, lastModified string) | ||
| 65 | 66 | } |
| 66 | 67 | |
| 67 | 68 | type FeedStore interface { |
| 68 | - GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) | |
| 69 | + GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*Feed, error) | |
| 69 | 70 | UpsertArticle(ctx context.Context, article *Article) (int64, error) |
| 70 | - UpdateFeedFetchResult(ctx context.Context, feedURL string, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error | |
| 71 | + MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error | |
| 72 | + MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error | |
| 71 | 73 | } |
| 72 | 74 | |
| 73 | -type feedState struct { | |
| 74 | - interval time.Duration | |
| 75 | - consecutiveEmpty int | |
| 76 | - errorCount int | |
| 75 | +type fetchCall struct { | |
| 76 | + done chan struct{} | |
| 77 | 77 | } |
| 78 | 78 | |
| 79 | 79 | type Scheduler struct { |
| @@ -81,7 +81,7 @@ type Scheduler struct { | ||
| 81 | 81 | store FeedStore |
| 82 | 82 | logger *slog.Logger |
| 83 | 83 | interval time.Duration |
| 84 | - states map[string]*feedState | |
| 84 | + inFlight sync.Map | |
| 85 | 85 | } |
| 86 | 86 | |
| 87 | 87 | func NewScheduler(store FeedStore, logger *slog.Logger) *Scheduler { |
| @@ -89,99 +89,73 @@ func NewScheduler(store FeedStore, logger *slog.Logger) *Scheduler { | ||
| 89 | 89 | fetcher: NewFetcher(), |
| 90 | 90 | store: store, |
| 91 | 91 | logger: logger, |
| 92 | - interval: 5 * time.Minute, | |
| 93 | - states: make(map[string]*feedState), | |
| 92 | + interval: 30 * time.Minute, | |
| 93 | + inFlight: sync.Map{}, | |
| 94 | 94 | } |
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | func (s *Scheduler) Run(ctx context.Context) error { |
| 98 | - ticker := time.NewTicker(s.interval) | |
| 98 | + ticker := time.NewTicker(5 * time.Minute) | |
| 99 | 99 | defer ticker.Stop() |
| 100 | 100 | |
| 101 | + s.fetchAll(ctx) | |
| 102 | + | |
| 101 | 103 | for { |
| 102 | 104 | select { |
| 103 | 105 | case <-ctx.Done(): |
| 104 | 106 | return ctx.Err() |
| 105 | 107 | case <-ticker.C: |
| 106 | - feeds, err := s.store.GetFeedsToFetch(ctx, 100) | |
| 107 | - if err != nil { | |
| 108 | - s.logger.Error("failed to get feeds", "error", err) | |
| 109 | - continue | |
| 110 | - } | |
| 111 | - for _, feed := range feeds { | |
| 112 | - s.FetchFeed(ctx, feed) | |
| 113 | - } | |
| 108 | + s.fetchAll(ctx) | |
| 114 | 109 | } |
| 115 | 110 | } |
| 116 | 111 | } |
| 117 | 112 | |
| 113 | +func (s *Scheduler) fetchAll(ctx context.Context) { | |
| 114 | + feeds, err := s.store.GetFeedsToFetch(ctx, s.interval, 200) | |
| 115 | + if err != nil { | |
| 116 | + s.logger.Error("failed to get feeds", "error", err) | |
| 117 | + return | |
| 118 | + } | |
| 119 | + for _, f := range feeds { | |
| 120 | + s.FetchFeed(ctx, f) | |
| 121 | + } | |
| 122 | +} | |
| 123 | + | |
| 118 | 124 | func (s *Scheduler) FetchFeed(ctx context.Context, feed *Feed) { |
| 119 | - state, ok := s.states[feed.URL] | |
| 120 | - if !ok { | |
| 121 | - state = &feedState{ | |
| 122 | - interval: 30 * time.Minute, | |
| 123 | - } | |
| 124 | - s.states[feed.URL] = state | |
| 125 | + call := &fetchCall{done: make(chan struct{})} | |
| 126 | + if actual, loaded := s.inFlight.LoadOrStore(feed.URL, call); loaded { | |
| 127 | + <-actual.(*fetchCall).done | |
| 128 | + return | |
| 125 | 129 | } |
| 130 | + defer func() { | |
| 131 | + s.inFlight.Delete(feed.URL) | |
| 132 | + close(call.done) | |
| 133 | + }() | |
| 126 | 134 | |
| 127 | 135 | result, newEtag, newLastModified, err := s.fetcher.Fetch(ctx, feed.URL, feed.ETag, feed.LastModified) |
| 128 | 136 | if err != nil { |
| 129 | - state.errorCount++ | |
| 130 | - state.interval *= 2 | |
| 131 | - if state.interval > 24*time.Hour { | |
| 132 | - state.interval = 24 * time.Hour | |
| 133 | - } | |
| 134 | - | |
| 135 | - updErr := s.store.UpdateFeedFetchResult( | |
| 136 | - ctx, feed.URL, | |
| 137 | - feed.ETag, feed.LastModified, | |
| 138 | - int(state.interval.Minutes()), state.consecutiveEmpty, state.errorCount, | |
| 139 | - err.Error(), | |
| 140 | - ) | |
| 141 | - if updErr != nil { | |
| 142 | - s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | |
| 137 | + s.logger.Error("failed to fetch feed", "error", err, "feed", feed.URL) | |
| 138 | + if updErr := s.store.MarkFeedFetchError(ctx, feed.URL, err.Error()); updErr != nil { | |
| 139 | + s.logger.Error("failed to update feed fetch error", "error", updErr, "feed", feed.URL) | |
| 143 | 140 | } |
| 144 | 141 | return |
| 145 | 142 | } |
| 146 | 143 | |
| 147 | 144 | if result == nil { |
| 145 | + if updErr := s.store.MarkFeedFetched(ctx, feed.URL, feed.ETag, feed.LastModified); updErr != nil { | |
| 146 | + s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | |
| 147 | + } | |
| 148 | 148 | return |
| 149 | 149 | } |
| 150 | 150 | |
| 151 | - newCount := 0 | |
| 152 | 151 | for i := range result.Articles { |
| 153 | 152 | result.Articles[i].FeedURL = feed.URL |
| 154 | - id, upsertErr := s.store.UpsertArticle(ctx, &result.Articles[i]) | |
| 155 | - if upsertErr != nil { | |
| 153 | + if _, upsertErr := s.store.UpsertArticle(ctx, &result.Articles[i]); upsertErr != nil { | |
| 156 | 154 | s.logger.Error("failed to upsert article", "error", upsertErr, "url", result.Articles[i].URL) |
| 157 | - continue | |
| 158 | - } | |
| 159 | - if id > 0 { | |
| 160 | - newCount++ | |
| 161 | - } | |
| 162 | - } | |
| 163 | - | |
| 164 | - if newCount > 0 { | |
| 165 | - state.errorCount = 0 | |
| 166 | - state.consecutiveEmpty = 0 | |
| 167 | - state.interval = 30 * time.Minute | |
| 168 | - } else { | |
| 169 | - state.consecutiveEmpty++ | |
| 170 | - if state.consecutiveEmpty > 3 { | |
| 171 | - state.interval *= 2 | |
| 172 | - if state.interval > 6*time.Hour { | |
| 173 | - state.interval = 6 * time.Hour | |
| 174 | - } | |
| 175 | 155 | } |
| 176 | 156 | } |
| 177 | 157 | |
| 178 | - updErr := s.store.UpdateFeedFetchResult( | |
| 179 | - ctx, feed.URL, | |
| 180 | - newEtag, newLastModified, | |
| 181 | - int(state.interval.Minutes()), state.consecutiveEmpty, state.errorCount, | |
| 182 | - "", | |
| 183 | - ) | |
| 184 | - if updErr != nil { | |
| 185 | - s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | |
| 158 | + if err := s.store.MarkFeedFetched(ctx, feed.URL, newEtag, newLastModified); err != nil { | |
| 159 | + s.logger.Error("failed to update feed fetch result", "error", err, "feed", feed.URL) | |
| 186 | 160 | } |
| 187 | 161 | } |
| @@ -5,6 +5,7 @@ import ( | |||
| 5 | "fmt" | 5 | "fmt" |
| 6 | "log/slog" | 6 | "log/slog" |
| 7 | "net/http" | 7 | "net/http" |
| 8 | + "sync" | ||
| 8 | "time" | 9 | "time" |
| 9 | ) | 10 | ) |
| 10 | 11 | ||
| @@ -65,15 +66,14 @@ func (f *Fetcher) Fetch(ctx context.Context, feedURL, etag, lastModified string) | |||
| 65 | } | 66 | } |
| 66 | 67 | ||
| 67 | type FeedStore interface { | 68 | type FeedStore interface { |
| 68 | - GetFeedsToFetch(ctx context.Context, limit int) ([]*Feed, error) | 69 | + GetFeedsToFetch(ctx context.Context, olderThan time.Duration, limit int) ([]*Feed, error) |
| 69 | UpsertArticle(ctx context.Context, article *Article) (int64, error) | 70 | UpsertArticle(ctx context.Context, article *Article) (int64, error) |
| 70 | - UpdateFeedFetchResult(ctx context.Context, feedURL string, etag, lastModified string, intervalMinutes, consecutiveEmpty, errorCount int, lastError string) error | 71 | + MarkFeedFetched(ctx context.Context, feedURL, etag, lastModified string) error |
| 72 | + MarkFeedFetchError(ctx context.Context, feedURL, lastError string) error | ||
| 71 | } | 73 | } |
| 72 | 74 | ||
| 73 | -type feedState struct { | 75 | +type fetchCall struct { |
| 74 | - interval time.Duration | 76 | + done chan struct{} |
| 75 | - consecutiveEmpty int | ||
| 76 | - errorCount int | ||
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | type Scheduler struct { | 79 | type Scheduler struct { |
| @@ -81,7 +81,7 @@ type Scheduler struct { | |||
| 81 | store FeedStore | 81 | store FeedStore |
| 82 | logger *slog.Logger | 82 | logger *slog.Logger |
| 83 | interval time.Duration | 83 | interval time.Duration |
| 84 | - states map[string]*feedState | 84 | + inFlight sync.Map |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | func NewScheduler(store FeedStore, logger *slog.Logger) *Scheduler { | 87 | func NewScheduler(store FeedStore, logger *slog.Logger) *Scheduler { |
| @@ -89,99 +89,73 @@ func NewScheduler(store FeedStore, logger *slog.Logger) *Scheduler { | |||
| 89 | fetcher: NewFetcher(), | 89 | fetcher: NewFetcher(), |
| 90 | store: store, | 90 | store: store, |
| 91 | logger: logger, | 91 | logger: logger, |
| 92 | - interval: 5 * time.Minute, | 92 | + interval: 30 * time.Minute, |
| 93 | - states: make(map[string]*feedState), | 93 | + inFlight: sync.Map{}, |
| 94 | } | 94 | } |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | func (s *Scheduler) Run(ctx context.Context) error { | 97 | func (s *Scheduler) Run(ctx context.Context) error { |
| 98 | - ticker := time.NewTicker(s.interval) | 98 | + ticker := time.NewTicker(5 * time.Minute) |
| 99 | defer ticker.Stop() | 99 | defer ticker.Stop() |
| 100 | 100 | ||
| 101 | + s.fetchAll(ctx) | ||
| 102 | + | ||
| 101 | for { | 103 | for { |
| 102 | select { | 104 | select { |
| 103 | case <-ctx.Done(): | 105 | case <-ctx.Done(): |
| 104 | return ctx.Err() | 106 | return ctx.Err() |
| 105 | case <-ticker.C: | 107 | case <-ticker.C: |
| 106 | - feeds, err := s.store.GetFeedsToFetch(ctx, 100) | 108 | + s.fetchAll(ctx) |
| 107 | - if err != nil { | ||
| 108 | - s.logger.Error("failed to get feeds", "error", err) | ||
| 109 | - continue | ||
| 110 | - } | ||
| 111 | - for _, feed := range feeds { | ||
| 112 | - s.FetchFeed(ctx, feed) | ||
| 113 | - } | ||
| 114 | } | 109 | } |
| 115 | } | 110 | } |
| 116 | } | 111 | } |
| 117 | 112 | ||
| 113 | +func (s *Scheduler) fetchAll(ctx context.Context) { | ||
| 114 | + feeds, err := s.store.GetFeedsToFetch(ctx, s.interval, 200) | ||
| 115 | + if err != nil { | ||
| 116 | + s.logger.Error("failed to get feeds", "error", err) | ||
| 117 | + return | ||
| 118 | + } | ||
| 119 | + for _, f := range feeds { | ||
| 120 | + s.FetchFeed(ctx, f) | ||
| 121 | + } | ||
| 122 | +} | ||
| 123 | + | ||
| 118 | func (s *Scheduler) FetchFeed(ctx context.Context, feed *Feed) { | 124 | func (s *Scheduler) FetchFeed(ctx context.Context, feed *Feed) { |
| 119 | - state, ok := s.states[feed.URL] | 125 | + call := &fetchCall{done: make(chan struct{})} |
| 120 | - if !ok { | 126 | + if actual, loaded := s.inFlight.LoadOrStore(feed.URL, call); loaded { |
| 121 | - state = &feedState{ | 127 | + <-actual.(*fetchCall).done |
| 122 | - interval: 30 * time.Minute, | 128 | + return |
| 123 | - } | ||
| 124 | - s.states[feed.URL] = state | ||
| 125 | } | 129 | } |
| 130 | + defer func() { | ||
| 131 | + s.inFlight.Delete(feed.URL) | ||
| 132 | + close(call.done) | ||
| 133 | + }() | ||
| 126 | 134 | ||
| 127 | result, newEtag, newLastModified, err := s.fetcher.Fetch(ctx, feed.URL, feed.ETag, feed.LastModified) | 135 | result, newEtag, newLastModified, err := s.fetcher.Fetch(ctx, feed.URL, feed.ETag, feed.LastModified) |
| 128 | if err != nil { | 136 | if err != nil { |
| 129 | - state.errorCount++ | 137 | + s.logger.Error("failed to fetch feed", "error", err, "feed", feed.URL) |
| 130 | - state.interval *= 2 | 138 | + if updErr := s.store.MarkFeedFetchError(ctx, feed.URL, err.Error()); updErr != nil { |
| 131 | - if state.interval > 24*time.Hour { | 139 | + s.logger.Error("failed to update feed fetch error", "error", updErr, "feed", feed.URL) |
| 132 | - state.interval = 24 * time.Hour | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - updErr := s.store.UpdateFeedFetchResult( | ||
| 136 | - ctx, feed.URL, | ||
| 137 | - feed.ETag, feed.LastModified, | ||
| 138 | - int(state.interval.Minutes()), state.consecutiveEmpty, state.errorCount, | ||
| 139 | - err.Error(), | ||
| 140 | - ) | ||
| 141 | - if updErr != nil { | ||
| 142 | - s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | ||
| 143 | } | 140 | } |
| 144 | return | 141 | return |
| 145 | } | 142 | } |
| 146 | 143 | ||
| 147 | if result == nil { | 144 | if result == nil { |
| 145 | + if updErr := s.store.MarkFeedFetched(ctx, feed.URL, feed.ETag, feed.LastModified); updErr != nil { | ||
| 146 | + s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | ||
| 147 | + } | ||
| 148 | return | 148 | return |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | - newCount := 0 | ||
| 152 | for i := range result.Articles { | 151 | for i := range result.Articles { |
| 153 | result.Articles[i].FeedURL = feed.URL | 152 | result.Articles[i].FeedURL = feed.URL |
| 154 | - id, upsertErr := s.store.UpsertArticle(ctx, &result.Articles[i]) | 153 | + if _, upsertErr := s.store.UpsertArticle(ctx, &result.Articles[i]); upsertErr != nil { |
| 155 | - if upsertErr != nil { | ||
| 156 | s.logger.Error("failed to upsert article", "error", upsertErr, "url", result.Articles[i].URL) | 154 | s.logger.Error("failed to upsert article", "error", upsertErr, "url", result.Articles[i].URL) |
| 157 | - continue | ||
| 158 | - } | ||
| 159 | - if id > 0 { | ||
| 160 | - newCount++ | ||
| 161 | - } | ||
| 162 | - } | ||
| 163 | - | ||
| 164 | - if newCount > 0 { | ||
| 165 | - state.errorCount = 0 | ||
| 166 | - state.consecutiveEmpty = 0 | ||
| 167 | - state.interval = 30 * time.Minute | ||
| 168 | - } else { | ||
| 169 | - state.consecutiveEmpty++ | ||
| 170 | - if state.consecutiveEmpty > 3 { | ||
| 171 | - state.interval *= 2 | ||
| 172 | - if state.interval > 6*time.Hour { | ||
| 173 | - state.interval = 6 * time.Hour | ||
| 174 | - } | ||
| 175 | } | 155 | } |
| 176 | } | 156 | } |
| 177 | 157 | ||
| 178 | - updErr := s.store.UpdateFeedFetchResult( | 158 | + if err := s.store.MarkFeedFetched(ctx, feed.URL, newEtag, newLastModified); err != nil { |
| 179 | - ctx, feed.URL, | 159 | + s.logger.Error("failed to update feed fetch result", "error", err, "feed", feed.URL) |
| 180 | - newEtag, newLastModified, | ||
| 181 | - int(state.interval.Minutes()), state.consecutiveEmpty, state.errorCount, | ||
| 182 | - "", | ||
| 183 | - ) | ||
| 184 | - if updErr != nil { | ||
| 185 | - s.logger.Error("failed to update feed fetch result", "error", updErr, "feed", feed.URL) | ||
| 186 | } | 160 | } |
| 187 | } | 161 | } |
modified
internal/server/feeds_handler.go +7 -32 | @@ -4,9 +4,7 @@ import ( | ||
| 4 | 4 | "context" |
| 5 | 5 | "database/sql" |
| 6 | 6 | "encoding/json" |
| 7 | - "log/slog" | |
| 8 | 7 | "net/http" |
| 9 | - "strconv" | |
| 10 | 8 | "time" |
| 11 | 9 | |
| 12 | 10 | "pkg.rbrt.fr/glean/internal/atproto" |
| @@ -284,11 +282,15 @@ func (s *Server) handleFeedList(w http.ResponseWriter, r *http.Request) { | ||
| 284 | 282 | |
| 285 | 283 | func (s *Server) handleRefreshFeeds(w http.ResponseWriter, r *http.Request) { |
| 286 | 284 | user := currentUser(r) |
| 287 | - store := db.NewFeedStoreAdapter(s.db) | |
| 288 | - scheduler := feed.NewScheduler(store, slog.Default()) | |
| 289 | 285 | |
| 290 | 286 | subs, _ := s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) |
| 287 | + seen := make(map[string]bool) | |
| 291 | 288 | for _, sub := range subs { |
| 289 | + if seen[sub.FeedURL] { | |
| 290 | + continue | |
| 291 | + } | |
| 292 | + seen[sub.FeedURL] = true | |
| 293 | + | |
| 292 | 294 | f, err := s.db.GetFeed(r.Context(), sub.FeedURL) |
| 293 | 295 | if err != nil { |
| 294 | 296 | continue |
| @@ -302,7 +304,7 @@ func (s *Server) handleRefreshFeeds(w http.ResponseWriter, r *http.Request) { | ||
| 302 | 304 | ETag: f.Etag.String, |
| 303 | 305 | LastModified: f.LastModified.String, |
| 304 | 306 | } |
| 305 | - scheduler.FetchFeed(r.Context(), ff) | |
| 307 | + s.scheduler.FetchFeed(r.Context(), ff) | |
| 306 | 308 | } |
| 307 | 309 | |
| 308 | 310 | subs, _ = s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) |
| @@ -337,33 +339,6 @@ func (s *Server) handleDiscoverFeedURL(w http.ResponseWriter, r *http.Request) { | ||
| 337 | 339 | }) |
| 338 | 340 | } |
| 339 | 341 | |
| 340 | -func (s *Server) handleUpdateFeedInterval(w http.ResponseWriter, r *http.Request) { | |
| 341 | - user := currentUser(r) | |
| 342 | - feedURL := r.FormValue("feed_url") | |
| 343 | - intervalStr := r.FormValue("interval") | |
| 344 | - | |
| 345 | - if feedURL == "" { | |
| 346 | - http.Error(w, "feed_url required", http.StatusBadRequest) | |
| 347 | - return | |
| 348 | - } | |
| 349 | - | |
| 350 | - interval, err := strconv.Atoi(intervalStr) | |
| 351 | - if err != nil || interval < 5 { | |
| 352 | - http.Error(w, "interval must be >= 5 minutes", http.StatusBadRequest) | |
| 353 | - return | |
| 354 | - } | |
| 355 | - | |
| 356 | - if err := s.db.UpdateFeedInterval(r.Context(), feedURL, interval); err != nil { | |
| 357 | - s.logger.Error("failed to update feed interval", "error", err) | |
| 358 | - http.Error(w, err.Error(), http.StatusInternalServerError) | |
| 359 | - return | |
| 360 | - } | |
| 361 | - | |
| 362 | - w.Header().Set("HX-Refresh", "true") | |
| 363 | - w.WriteHeader(http.StatusNoContent) | |
| 364 | - _ = user | |
| 365 | -} | |
| 366 | - | |
| 367 | 342 | func nullString(s string) sql.NullString { |
| 368 | 343 | return sql.NullString{String: s, Valid: s != ""} |
| 369 | 344 | } |
| @@ -4,9 +4,7 @@ import ( | |||
| 4 | "context" | 4 | "context" |
| 5 | "database/sql" | 5 | "database/sql" |
| 6 | "encoding/json" | 6 | "encoding/json" |
| 7 | - "log/slog" | ||
| 8 | "net/http" | 7 | "net/http" |
| 9 | - "strconv" | ||
| 10 | "time" | 8 | "time" |
| 11 | 9 | ||
| 12 | "pkg.rbrt.fr/glean/internal/atproto" | 10 | "pkg.rbrt.fr/glean/internal/atproto" |
| @@ -284,11 +282,15 @@ func (s *Server) handleFeedList(w http.ResponseWriter, r *http.Request) { | |||
| 284 | 282 | ||
| 285 | func (s *Server) handleRefreshFeeds(w http.ResponseWriter, r *http.Request) { | 283 | func (s *Server) handleRefreshFeeds(w http.ResponseWriter, r *http.Request) { |
| 286 | user := currentUser(r) | 284 | user := currentUser(r) |
| 287 | - store := db.NewFeedStoreAdapter(s.db) | ||
| 288 | - scheduler := feed.NewScheduler(store, slog.Default()) | ||
| 289 | 285 | ||
| 290 | subs, _ := s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) | 286 | subs, _ := s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) |
| 287 | + seen := make(map[string]bool) | ||
| 291 | for _, sub := range subs { | 288 | for _, sub := range subs { |
| 289 | + if seen[sub.FeedURL] { | ||
| 290 | + continue | ||
| 291 | + } | ||
| 292 | + seen[sub.FeedURL] = true | ||
| 293 | + | ||
| 292 | f, err := s.db.GetFeed(r.Context(), sub.FeedURL) | 294 | f, err := s.db.GetFeed(r.Context(), sub.FeedURL) |
| 293 | if err != nil { | 295 | if err != nil { |
| 294 | continue | 296 | continue |
| @@ -302,7 +304,7 @@ func (s *Server) handleRefreshFeeds(w http.ResponseWriter, r *http.Request) { | |||
| 302 | ETag: f.Etag.String, | 304 | ETag: f.Etag.String, |
| 303 | LastModified: f.LastModified.String, | 305 | LastModified: f.LastModified.String, |
| 304 | } | 306 | } |
| 305 | - scheduler.FetchFeed(r.Context(), ff) | 307 | + s.scheduler.FetchFeed(r.Context(), ff) |
| 306 | } | 308 | } |
| 307 | 309 | ||
| 308 | subs, _ = s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) | 310 | subs, _ = s.db.ListSubscriptions(r.Context(), user.DID, "", 100, 0) |
| @@ -337,33 +339,6 @@ func (s *Server) handleDiscoverFeedURL(w http.ResponseWriter, r *http.Request) { | |||
| 337 | }) | 339 | }) |
| 338 | } | 340 | } |
| 339 | 341 | ||
| 340 | -func (s *Server) handleUpdateFeedInterval(w http.ResponseWriter, r *http.Request) { | ||
| 341 | - user := currentUser(r) | ||
| 342 | - feedURL := r.FormValue("feed_url") | ||
| 343 | - intervalStr := r.FormValue("interval") | ||
| 344 | - | ||
| 345 | - if feedURL == "" { | ||
| 346 | - http.Error(w, "feed_url required", http.StatusBadRequest) | ||
| 347 | - return | ||
| 348 | - } | ||
| 349 | - | ||
| 350 | - interval, err := strconv.Atoi(intervalStr) | ||
| 351 | - if err != nil || interval < 5 { | ||
| 352 | - http.Error(w, "interval must be >= 5 minutes", http.StatusBadRequest) | ||
| 353 | - return | ||
| 354 | - } | ||
| 355 | - | ||
| 356 | - if err := s.db.UpdateFeedInterval(r.Context(), feedURL, interval); err != nil { | ||
| 357 | - s.logger.Error("failed to update feed interval", "error", err) | ||
| 358 | - http.Error(w, err.Error(), http.StatusInternalServerError) | ||
| 359 | - return | ||
| 360 | - } | ||
| 361 | - | ||
| 362 | - w.Header().Set("HX-Refresh", "true") | ||
| 363 | - w.WriteHeader(http.StatusNoContent) | ||
| 364 | - _ = user | ||
| 365 | -} | ||
| 366 | - | ||
| 367 | func nullString(s string) sql.NullString { | 342 | func nullString(s string) sql.NullString { |
| 368 | return sql.NullString{String: s, Valid: s != ""} | 343 | return sql.NullString{String: s, Valid: s != ""} |
| 369 | } | 344 | } |
modified
internal/server/server.go +3 -2 | @@ -37,11 +37,12 @@ type Server struct { | ||
| 37 | 37 | oauth *oauth.ClientApp |
| 38 | 38 | oauthStore *db.OAuthStore |
| 39 | 39 | fetcher *feed.Fetcher |
| 40 | + scheduler *feed.Scheduler | |
| 40 | 41 | clientID string |
| 41 | 42 | callbackURL string |
| 42 | 43 | } |
| 43 | 44 | |
| 44 | -func New(database *db.DB, clientID, callbackURL, addr string, logger *slog.Logger) *Server { | |
| 45 | +func New(database *db.DB, clientID, callbackURL, addr string, scheduler *feed.Scheduler, logger *slog.Logger) *Server { | |
| 45 | 46 | oauthStore := db.NewOAuthStore(database) |
| 46 | 47 | |
| 47 | 48 | var config oauth.ClientConfig |
| @@ -64,6 +65,7 @@ func New(database *db.DB, clientID, callbackURL, addr string, logger *slog.Logge | ||
| 64 | 65 | oauth: oauthClient, |
| 65 | 66 | oauthStore: oauthStore, |
| 66 | 67 | fetcher: feed.NewFetcher(), |
| 68 | + scheduler: scheduler, | |
| 67 | 69 | clientID: clientID, |
| 68 | 70 | callbackURL: callbackURL, |
| 69 | 71 | } |
| @@ -106,7 +108,6 @@ func (s *Server) setupRoutes() { | ||
| 106 | 108 | r.Get("/opml/download", s.handleOPMLDownload) |
| 107 | 109 | r.Post("/refresh", s.handleRefreshFeeds) |
| 108 | 110 | r.Get("/list", s.handleFeedList) |
| 109 | - r.Post("/set-interval", s.handleUpdateFeedInterval) | |
| 110 | 111 | r.Get("/discover-url", s.handleDiscoverFeedURL) |
| 111 | 112 | r.Post("/clear", s.handleClearAllSubscriptions) |
| 112 | 113 | }) |
| @@ -37,11 +37,12 @@ type Server struct { | |||
| 37 | oauth *oauth.ClientApp | 37 | oauth *oauth.ClientApp |
| 38 | oauthStore *db.OAuthStore | 38 | oauthStore *db.OAuthStore |
| 39 | fetcher *feed.Fetcher | 39 | fetcher *feed.Fetcher |
| 40 | + scheduler *feed.Scheduler | ||
| 40 | clientID string | 41 | clientID string |
| 41 | callbackURL string | 42 | callbackURL string |
| 42 | } | 43 | } |
| 43 | 44 | ||
| 44 | -func New(database *db.DB, clientID, callbackURL, addr string, logger *slog.Logger) *Server { | 45 | +func New(database *db.DB, clientID, callbackURL, addr string, scheduler *feed.Scheduler, logger *slog.Logger) *Server { |
| 45 | oauthStore := db.NewOAuthStore(database) | 46 | oauthStore := db.NewOAuthStore(database) |
| 46 | 47 | ||
| 47 | var config oauth.ClientConfig | 48 | var config oauth.ClientConfig |
| @@ -64,6 +65,7 @@ func New(database *db.DB, clientID, callbackURL, addr string, logger *slog.Logge | |||
| 64 | oauth: oauthClient, | 65 | oauth: oauthClient, |
| 65 | oauthStore: oauthStore, | 66 | oauthStore: oauthStore, |
| 66 | fetcher: feed.NewFetcher(), | 67 | fetcher: feed.NewFetcher(), |
| 68 | + scheduler: scheduler, | ||
| 67 | clientID: clientID, | 69 | clientID: clientID, |
| 68 | callbackURL: callbackURL, | 70 | callbackURL: callbackURL, |
| 69 | } | 71 | } |
| @@ -106,7 +108,6 @@ func (s *Server) setupRoutes() { | |||
| 106 | r.Get("/opml/download", s.handleOPMLDownload) | 108 | r.Get("/opml/download", s.handleOPMLDownload) |
| 107 | r.Post("/refresh", s.handleRefreshFeeds) | 109 | r.Post("/refresh", s.handleRefreshFeeds) |
| 108 | r.Get("/list", s.handleFeedList) | 110 | r.Get("/list", s.handleFeedList) |
| 109 | - r.Post("/set-interval", s.handleUpdateFeedInterval) | ||
| 110 | r.Get("/discover-url", s.handleDiscoverFeedURL) | 111 | r.Get("/discover-url", s.handleDiscoverFeedURL) |
| 111 | r.Post("/clear", s.handleClearAllSubscriptions) | 112 | r.Post("/clear", s.handleClearAllSubscriptions) |
| 112 | }) | 113 | }) |
modified
internal/tmpl/feeds.html +0 -14 | @@ -63,20 +63,6 @@ | ||
| 63 | 63 | </div> |
| 64 | 64 | <div class="flex items-center gap-3"> |
| 65 | 65 | {{if .UnreadCount}}<span class="text-xs bg-spot-green/20 text-spot-green px-2.5 py-0.5 rounded-full font-bold">{{.UnreadCount}}</span>{{end}} |
| 66 | - <form hx-post="/feeds/set-interval" hx-swap="none" class="inline-flex items-center gap-1"> | |
| 67 | - {{csrfInput $.CSRFToken}} | |
| 68 | - <input type="hidden" name="feed_url" value="{{.FeedURL}}"> | |
| 69 | - <select name="interval" onchange="this.form.submit()" | |
| 70 | - class="text-xs bg-spot-hover text-spot-secondary rounded px-2 py-1 border-none focus:outline-none focus:ring-1 focus:ring-spot-green"> | |
| 71 | - <option value="15" {{if eq .FetchInterval 15}}selected{{end}}>15m</option> | |
| 72 | - <option value="30" {{if eq .FetchInterval 30}}selected{{end}}>30m</option> | |
| 73 | - <option value="60" {{if eq .FetchInterval 60}}selected{{end}}>1h</option> | |
| 74 | - <option value="120" {{if eq .FetchInterval 120}}selected{{end}}>2h</option> | |
| 75 | - <option value="360" {{if eq .FetchInterval 360}}selected{{end}}>6h</option> | |
| 76 | - <option value="720" {{if eq .FetchInterval 720}}selected{{end}}>12h</option> | |
| 77 | - <option value="1440" {{if eq .FetchInterval 1440}}selected{{end}}>24h</option> | |
| 78 | - </select> | |
| 79 | - </form> | |
| 80 | 66 | <form hx-delete="/feeds/remove" hx-target="closest .feed-item" hx-swap="outerHTML swap:0.3s" |
| 81 | 67 | hx-confirm="Unsubscribe from this feed?" class="inline"> |
| 82 | 68 | {{csrfInput $.CSRFToken}} |
| @@ -63,20 +63,6 @@ | |||
| 63 | </div> | 63 | </div> |
| 64 | <div class="flex items-center gap-3"> | 64 | <div class="flex items-center gap-3"> |
| 65 | {{if .UnreadCount}}<span class="text-xs bg-spot-green/20 text-spot-green px-2.5 py-0.5 rounded-full font-bold">{{.UnreadCount}}</span>{{end}} | 65 | {{if .UnreadCount}}<span class="text-xs bg-spot-green/20 text-spot-green px-2.5 py-0.5 rounded-full font-bold">{{.UnreadCount}}</span>{{end}} |
| 66 | - <form hx-post="/feeds/set-interval" hx-swap="none" class="inline-flex items-center gap-1"> | ||
| 67 | - {{csrfInput $.CSRFToken}} | ||
| 68 | - <input type="hidden" name="feed_url" value="{{.FeedURL}}"> | ||
| 69 | - <select name="interval" onchange="this.form.submit()" | ||
| 70 | - class="text-xs bg-spot-hover text-spot-secondary rounded px-2 py-1 border-none focus:outline-none focus:ring-1 focus:ring-spot-green"> | ||
| 71 | - <option value="15" {{if eq .FetchInterval 15}}selected{{end}}>15m</option> | ||
| 72 | - <option value="30" {{if eq .FetchInterval 30}}selected{{end}}>30m</option> | ||
| 73 | - <option value="60" {{if eq .FetchInterval 60}}selected{{end}}>1h</option> | ||
| 74 | - <option value="120" {{if eq .FetchInterval 120}}selected{{end}}>2h</option> | ||
| 75 | - <option value="360" {{if eq .FetchInterval 360}}selected{{end}}>6h</option> | ||
| 76 | - <option value="720" {{if eq .FetchInterval 720}}selected{{end}}>12h</option> | ||
| 77 | - <option value="1440" {{if eq .FetchInterval 1440}}selected{{end}}>24h</option> | ||
| 78 | - </select> | ||
| 79 | - </form> | ||
| 80 | <form hx-delete="/feeds/remove" hx-target="closest .feed-item" hx-swap="outerHTML swap:0.3s" | 66 | <form hx-delete="/feeds/remove" hx-target="closest .feed-item" hx-swap="outerHTML swap:0.3s" |
| 81 | hx-confirm="Unsubscribe from this feed?" class="inline"> | 67 | hx-confirm="Unsubscribe from this feed?" class="inline"> |
| 82 | {{csrfInput $.CSRFToken}} | 68 | {{csrfInput $.CSRFToken}} |
modified
main.go +2 -2 | @@ -36,11 +36,11 @@ func main() { | ||
| 36 | 36 | clientID := envOr("GLEAN_OAUTH_CLIENT_ID", "") |
| 37 | 37 | callbackURL := envOr("GLEAN_OAUTH_REDIRECT_URL", "") |
| 38 | 38 | |
| 39 | - srv := server.New(database, clientID, callbackURL, *addr, logger) | |
| 40 | - | |
| 41 | 39 | storeAdapter := db.NewFeedStoreAdapter(database) |
| 42 | 40 | scheduler := feed.NewScheduler(storeAdapter, logger) |
| 43 | 41 | |
| 42 | + srv := server.New(database, clientID, callbackURL, *addr, scheduler, logger) | |
| 43 | + | |
| 44 | 44 | engine := cluster.NewEngine(database.DB, logger) |
| 45 | 45 | cron := cluster.NewCron(engine, 6*time.Hour, logger) |
| 46 | 46 | |
| @@ -36,11 +36,11 @@ func main() { | |||
| 36 | clientID := envOr("GLEAN_OAUTH_CLIENT_ID", "") | 36 | clientID := envOr("GLEAN_OAUTH_CLIENT_ID", "") |
| 37 | callbackURL := envOr("GLEAN_OAUTH_REDIRECT_URL", "") | 37 | callbackURL := envOr("GLEAN_OAUTH_REDIRECT_URL", "") |
| 38 | 38 | ||
| 39 | - srv := server.New(database, clientID, callbackURL, *addr, logger) | ||
| 40 | - | ||
| 41 | storeAdapter := db.NewFeedStoreAdapter(database) | 39 | storeAdapter := db.NewFeedStoreAdapter(database) |
| 42 | scheduler := feed.NewScheduler(storeAdapter, logger) | 40 | scheduler := feed.NewScheduler(storeAdapter, logger) |
| 43 | 41 | ||
| 42 | + srv := server.New(database, clientID, callbackURL, *addr, scheduler, logger) | ||
| 43 | + | ||
| 44 | engine := cluster.NewEngine(database.DB, logger) | 44 | engine := cluster.NewEngine(database.DB, logger) |
| 45 | cron := cluster.NewCron(engine, 6*time.Hour, logger) | 45 | cron := cluster.NewCron(engine, 6*time.Hour, logger) |
| 46 | 46 | ||