mirror of https://github.com/grafana/grafana.git
				
				
				
			CI: Bump golangci-lint to 2.0.2 (#103572)
This commit is contained in:
		
							parent
							
								
									b58b6e828e
								
							
						
					
					
						commit
						757be6365a
					
				|  | @ -5,7 +5,7 @@ go 1.24.1 | |||
| tool github.com/unknwon/bra | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | ||||
| 	github.com/BurntSushi/toml v1.5.0 // indirect | ||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect | ||||
| 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||||
| 	github.com/fsnotify/fsnotify v1.8.0 // indirect | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ require ( | |||
| 	github.com/yalue/merged_fs v1.3.0 // indirect | ||||
| 	golang.org/x/mod v0.24.0 // indirect | ||||
| 	golang.org/x/net v0.37.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.24.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.26.0 // indirect | ||||
| 	golang.org/x/sync v0.12.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
|  |  | |||
|  | @ -89,8 +89,8 @@ golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= | |||
| golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= | ||||
| golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= | ||||
| golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= | ||||
| golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= | ||||
| golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= | ||||
| golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= | ||||
| golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= | ||||
| golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ require ( | |||
| 	github.com/tetratelabs/wazero v1.6.0 // indirect | ||||
| 	golang.org/x/mod v0.24.0 // indirect | ||||
| 	golang.org/x/net v0.37.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.24.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.26.0 // indirect | ||||
| 	golang.org/x/sync v0.12.0 // indirect | ||||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
|  |  | |||
|  | @ -57,8 +57,8 @@ golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= | |||
| golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= | ||||
| golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= | ||||
| golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= | ||||
| golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= | ||||
| golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= | ||||
| golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= | ||||
| golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= | ||||
| golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= | ||||
|  |  | |||
|  | @ -2,44 +2,52 @@ module golangci-lint | |||
| 
 | ||||
| go 1.24.1 | ||||
| 
 | ||||
| tool github.com/golangci/golangci-lint/cmd/golangci-lint | ||||
| tool github.com/golangci/golangci-lint/v2/cmd/golangci-lint | ||||
| 
 | ||||
| require ( | ||||
| 	4d63.com/gocheckcompilerdirectives v1.2.1 // indirect | ||||
| 	4d63.com/gochecknoglobals v0.2.1 // indirect | ||||
| 	github.com/4meepo/tagalign v1.3.4 // indirect | ||||
| 	4d63.com/gocheckcompilerdirectives v1.3.0 // indirect | ||||
| 	4d63.com/gochecknoglobals v0.2.2 // indirect | ||||
| 	github.com/4meepo/tagalign v1.4.2 // indirect | ||||
| 	github.com/Abirdcfly/dupword v0.1.3 // indirect | ||||
| 	github.com/Antonboom/errname v1.0.0 // indirect | ||||
| 	github.com/Antonboom/nilnil v1.0.0 // indirect | ||||
| 	github.com/Antonboom/testifylint v1.5.0 // indirect | ||||
| 	github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | ||||
| 	github.com/Crocmagnon/fatcontext v0.5.2 // indirect | ||||
| 	github.com/Antonboom/errname v1.1.0 // indirect | ||||
| 	github.com/Antonboom/nilnil v1.1.0 // indirect | ||||
| 	github.com/Antonboom/testifylint v1.6.0 // indirect | ||||
| 	github.com/BurntSushi/toml v1.5.0 // indirect | ||||
| 	github.com/Crocmagnon/fatcontext v0.7.1 // indirect | ||||
| 	github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect | ||||
| 	github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect | ||||
| 	github.com/Masterminds/semver/v3 v3.3.0 // indirect | ||||
| 	github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect | ||||
| 	github.com/alecthomas/go-check-sumtype v0.2.0 // indirect | ||||
| 	github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect | ||||
| 	github.com/Masterminds/semver/v3 v3.3.1 // indirect | ||||
| 	github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect | ||||
| 	github.com/alecthomas/go-check-sumtype v0.3.1 // indirect | ||||
| 	github.com/alexkohler/nakedret/v2 v2.0.5 // indirect | ||||
| 	github.com/alexkohler/prealloc v1.0.0 // indirect | ||||
| 	github.com/alingse/asasalint v0.0.11 // indirect | ||||
| 	github.com/alingse/nilnesserr v0.1.2 // indirect | ||||
| 	github.com/ashanbrown/forbidigo v1.6.0 // indirect | ||||
| 	github.com/ashanbrown/makezero v1.1.1 // indirect | ||||
| 	github.com/ashanbrown/makezero v1.2.0 // indirect | ||||
| 	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect | ||||
| 	github.com/beorn7/perks v1.0.1 // indirect | ||||
| 	github.com/bkielbasa/cyclop v1.2.3 // indirect | ||||
| 	github.com/blizzy78/varnamelen v0.8.0 // indirect | ||||
| 	github.com/bombsimon/wsl/v4 v4.4.1 // indirect | ||||
| 	github.com/breml/bidichk v0.3.2 // indirect | ||||
| 	github.com/breml/errchkjson v0.4.0 // indirect | ||||
| 	github.com/butuzov/ireturn v0.3.0 // indirect | ||||
| 	github.com/butuzov/mirror v1.2.0 // indirect | ||||
| 	github.com/catenacyber/perfsprint v0.7.1 // indirect | ||||
| 	github.com/bombsimon/wsl/v4 v4.6.0 // indirect | ||||
| 	github.com/breml/bidichk v0.3.3 // indirect | ||||
| 	github.com/breml/errchkjson v0.4.1 // indirect | ||||
| 	github.com/butuzov/ireturn v0.3.1 // indirect | ||||
| 	github.com/butuzov/mirror v1.3.0 // indirect | ||||
| 	github.com/catenacyber/perfsprint v0.9.1 // indirect | ||||
| 	github.com/ccojocar/zxcvbn-go v1.0.2 // indirect | ||||
| 	github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||||
| 	github.com/charithe/durationcheck v0.0.10 // indirect | ||||
| 	github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect | ||||
| 	github.com/charmbracelet/lipgloss v1.1.0 // indirect | ||||
| 	github.com/charmbracelet/x/ansi v0.8.0 // indirect | ||||
| 	github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect | ||||
| 	github.com/charmbracelet/x/term v0.2.1 // indirect | ||||
| 	github.com/chavacava/garif v0.1.0 // indirect | ||||
| 	github.com/ckaznocha/intrange v0.2.1 // indirect | ||||
| 	github.com/curioswitch/go-reassign v0.2.0 // indirect | ||||
| 	github.com/daixiang0/gci v0.13.5 // indirect | ||||
| 	github.com/ckaznocha/intrange v0.3.1 // indirect | ||||
| 	github.com/curioswitch/go-reassign v0.3.0 // indirect | ||||
| 	github.com/daixiang0/gci v0.13.6 // indirect | ||||
| 	github.com/dave/dst v0.27.3 // indirect | ||||
| 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||||
| 	github.com/denis-tingaikin/go-header v0.5.0 // indirect | ||||
| 	github.com/ettle/strcase v0.2.0 // indirect | ||||
|  | @ -48,8 +56,8 @@ require ( | |||
| 	github.com/firefart/nonamedreturns v1.0.5 // indirect | ||||
| 	github.com/fsnotify/fsnotify v1.8.0 // indirect | ||||
| 	github.com/fzipp/gocyclo v0.6.0 // indirect | ||||
| 	github.com/ghostiam/protogetter v0.3.8 // indirect | ||||
| 	github.com/go-critic/go-critic v0.11.5 // indirect | ||||
| 	github.com/ghostiam/protogetter v0.3.12 // indirect | ||||
| 	github.com/go-critic/go-critic v0.13.0 // indirect | ||||
| 	github.com/go-toolsmith/astcast v1.1.0 // indirect | ||||
| 	github.com/go-toolsmith/astcopy v1.1.0 // indirect | ||||
| 	github.com/go-toolsmith/astequal v1.2.0 // indirect | ||||
|  | @ -58,128 +66,131 @@ require ( | |||
| 	github.com/go-toolsmith/strparse v1.1.0 // indirect | ||||
| 	github.com/go-toolsmith/typep v1.1.0 // indirect | ||||
| 	github.com/go-viper/mapstructure/v2 v2.2.1 // indirect | ||||
| 	github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect | ||||
| 	github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect | ||||
| 	github.com/gobwas/glob v0.2.3 // indirect | ||||
| 	github.com/gofrs/flock v0.12.1 // indirect | ||||
| 	github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect | ||||
| 	github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect | ||||
| 	github.com/golangci/go-printf-func-name v0.1.0 // indirect | ||||
| 	github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 // indirect | ||||
| 	github.com/golangci/golangci-lint v1.62.0 // indirect | ||||
| 	github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect | ||||
| 	github.com/golangci/golangci-lint/v2 v2.0.2 // indirect | ||||
| 	github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect | ||||
| 	github.com/golangci/misspell v0.6.0 // indirect | ||||
| 	github.com/golangci/modinfo v0.3.4 // indirect | ||||
| 	github.com/golangci/plugin-module-register v0.1.1 // indirect | ||||
| 	github.com/golangci/revgrep v0.5.3 // indirect | ||||
| 	github.com/golangci/revgrep v0.8.0 // indirect | ||||
| 	github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/gordonklaus/ineffassign v0.1.0 // indirect | ||||
| 	github.com/gostaticanalysis/analysisutil v0.7.1 // indirect | ||||
| 	github.com/gostaticanalysis/comment v1.4.2 // indirect | ||||
| 	github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect | ||||
| 	github.com/gostaticanalysis/comment v1.5.0 // indirect | ||||
| 	github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect | ||||
| 	github.com/gostaticanalysis/nilerr v0.1.1 // indirect | ||||
| 	github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect | ||||
| 	github.com/hashicorp/go-version v1.7.0 // indirect | ||||
| 	github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect | ||||
| 	github.com/hashicorp/hcl v1.0.0 // indirect | ||||
| 	github.com/hexops/gotextdiff v1.0.3 // indirect | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/jgautheron/goconst v1.7.1 // indirect | ||||
| 	github.com/jingyugao/rowserrcheck v1.1.1 // indirect | ||||
| 	github.com/jjti/go-spancheck v0.6.2 // indirect | ||||
| 	github.com/julz/importas v0.1.0 // indirect | ||||
| 	github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect | ||||
| 	github.com/kisielk/errcheck v1.8.0 // indirect | ||||
| 	github.com/kkHAIKE/contextcheck v1.1.5 // indirect | ||||
| 	github.com/jjti/go-spancheck v0.6.4 // indirect | ||||
| 	github.com/julz/importas v0.2.0 // indirect | ||||
| 	github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect | ||||
| 	github.com/kisielk/errcheck v1.9.0 // indirect | ||||
| 	github.com/kkHAIKE/contextcheck v1.1.6 // indirect | ||||
| 	github.com/klauspost/compress v1.18.0 // indirect | ||||
| 	github.com/kulti/thelper v0.6.3 // indirect | ||||
| 	github.com/kunwardeep/paralleltest v1.0.10 // indirect | ||||
| 	github.com/kyoh86/exportloopref v0.1.11 // indirect | ||||
| 	github.com/lasiar/canonicalheader v1.1.2 // indirect | ||||
| 	github.com/ldez/gomoddirectives v0.2.4 // indirect | ||||
| 	github.com/ldez/tagliatelle v0.5.0 // indirect | ||||
| 	github.com/ldez/exptostd v0.4.2 // indirect | ||||
| 	github.com/ldez/gomoddirectives v0.6.1 // indirect | ||||
| 	github.com/ldez/grignotin v0.9.0 // indirect | ||||
| 	github.com/ldez/tagliatelle v0.7.1 // indirect | ||||
| 	github.com/ldez/usetesting v0.4.2 // indirect | ||||
| 	github.com/leonklingele/grouper v1.1.2 // indirect | ||||
| 	github.com/macabu/inamedparam v0.1.3 // indirect | ||||
| 	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect | ||||
| 	github.com/macabu/inamedparam v0.2.0 // indirect | ||||
| 	github.com/magiconair/properties v1.8.7 // indirect | ||||
| 	github.com/maratori/testableexamples v1.0.0 // indirect | ||||
| 	github.com/maratori/testpackage v1.1.1 // indirect | ||||
| 	github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect | ||||
| 	github.com/matoous/godox v1.1.0 // indirect | ||||
| 	github.com/matryer/is v1.4.1 // indirect | ||||
| 	github.com/mattn/go-colorable v0.1.14 // indirect | ||||
| 	github.com/mattn/go-isatty v0.0.20 // indirect | ||||
| 	github.com/mattn/go-runewidth v0.0.16 // indirect | ||||
| 	github.com/mgechev/revive v1.5.0 // indirect | ||||
| 	github.com/mgechev/revive v1.7.0 // indirect | ||||
| 	github.com/mitchellh/go-homedir v1.1.0 // indirect | ||||
| 	github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect | ||||
| 	github.com/moricho/tparallel v0.3.2 // indirect | ||||
| 	github.com/muesli/termenv v0.16.0 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/nakabonne/nestif v0.3.1 // indirect | ||||
| 	github.com/nishanths/exhaustive v0.12.0 // indirect | ||||
| 	github.com/nishanths/predeclared v0.2.2 // indirect | ||||
| 	github.com/nunnatsa/ginkgolinter v0.18.0 // indirect | ||||
| 	github.com/nunnatsa/ginkgolinter v0.19.1 // indirect | ||||
| 	github.com/olekukonko/tablewriter v0.0.5 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/pelletier/go-toml/v2 v2.2.3 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||||
| 	github.com/polyfloyd/go-errorlint v1.6.0 // indirect | ||||
| 	github.com/polyfloyd/go-errorlint v1.7.1 // indirect | ||||
| 	github.com/prometheus/client_golang v1.21.1 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| 	github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect | ||||
| 	github.com/quasilyte/go-ruleguard v0.4.4 // indirect | ||||
| 	github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect | ||||
| 	github.com/quasilyte/gogrep v0.5.0 // indirect | ||||
| 	github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect | ||||
| 	github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect | ||||
| 	github.com/raeperd/recvcheck v0.1.2 // indirect | ||||
| 	github.com/raeperd/recvcheck v0.2.0 // indirect | ||||
| 	github.com/rivo/uniseg v0.4.7 // indirect | ||||
| 	github.com/rogpeppe/go-internal v1.14.1 // indirect | ||||
| 	github.com/ryancurrah/gomodguard v1.3.5 // indirect | ||||
| 	github.com/ryancurrah/gomodguard v1.4.1 // indirect | ||||
| 	github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect | ||||
| 	github.com/sagikazarmark/locafero v0.4.0 // indirect | ||||
| 	github.com/sagikazarmark/slog-shim v0.1.0 // indirect | ||||
| 	github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect | ||||
| 	github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect | ||||
| 	github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect | ||||
| 	github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect | ||||
| 	github.com/sashamelentyev/interfacebloat v1.1.0 // indirect | ||||
| 	github.com/sashamelentyev/usestdlibvars v1.27.0 // indirect | ||||
| 	github.com/securego/gosec/v2 v2.21.4 // indirect | ||||
| 	github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect | ||||
| 	github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect | ||||
| 	github.com/securego/gosec/v2 v2.22.2 // indirect | ||||
| 	github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect | ||||
| 	github.com/sirupsen/logrus v1.9.3 // indirect | ||||
| 	github.com/sivchari/containedctx v1.0.3 // indirect | ||||
| 	github.com/sivchari/tenv v1.12.1 // indirect | ||||
| 	github.com/sonatard/noctx v0.1.0 // indirect | ||||
| 	github.com/sourcegraph/conc v0.3.0 // indirect | ||||
| 	github.com/sourcegraph/go-diff v0.7.0 // indirect | ||||
| 	github.com/spf13/afero v1.11.0 // indirect | ||||
| 	github.com/spf13/afero v1.12.0 // indirect | ||||
| 	github.com/spf13/cast v1.7.0 // indirect | ||||
| 	github.com/spf13/cobra v1.9.1 // indirect | ||||
| 	github.com/spf13/pflag v1.0.6 // indirect | ||||
| 	github.com/spf13/viper v1.19.0 // indirect | ||||
| 	github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect | ||||
| 	github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect | ||||
| 	github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect | ||||
| 	github.com/stretchr/objx v0.5.2 // indirect | ||||
| 	github.com/stretchr/testify v1.10.0 // indirect | ||||
| 	github.com/subosito/gotenv v1.6.0 // indirect | ||||
| 	github.com/tdakkota/asciicheck v0.2.0 // indirect | ||||
| 	github.com/tetafro/godot v1.4.18 // indirect | ||||
| 	github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect | ||||
| 	github.com/tdakkota/asciicheck v0.4.1 // indirect | ||||
| 	github.com/tetafro/godot v1.5.0 // indirect | ||||
| 	github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect | ||||
| 	github.com/timonwong/loggercheck v0.10.1 // indirect | ||||
| 	github.com/tomarrell/wrapcheck/v2 v2.9.0 // indirect | ||||
| 	github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect | ||||
| 	github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect | ||||
| 	github.com/ultraware/funlen v0.1.0 // indirect | ||||
| 	github.com/ultraware/whitespace v0.1.1 // indirect | ||||
| 	github.com/uudashr/gocognit v1.1.3 // indirect | ||||
| 	github.com/uudashr/iface v1.2.0 // indirect | ||||
| 	github.com/xen0n/gosmopolitan v1.2.2 // indirect | ||||
| 	github.com/ultraware/funlen v0.2.0 // indirect | ||||
| 	github.com/ultraware/whitespace v0.2.0 // indirect | ||||
| 	github.com/uudashr/gocognit v1.2.0 // indirect | ||||
| 	github.com/uudashr/iface v1.3.1 // indirect | ||||
| 	github.com/xen0n/gosmopolitan v1.3.0 // indirect | ||||
| 	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect | ||||
| 	github.com/yagipy/maintidx v1.0.0 // indirect | ||||
| 	github.com/yeya24/promlinter v0.3.0 // indirect | ||||
| 	github.com/ykadowak/zerologlint v0.1.5 // indirect | ||||
| 	gitlab.com/bosi/decorder v0.4.2 // indirect | ||||
| 	go-simpler.org/musttag v0.13.0 // indirect | ||||
| 	go-simpler.org/sloglint v0.7.2 // indirect | ||||
| 	go-simpler.org/sloglint v0.9.0 // indirect | ||||
| 	go.uber.org/automaxprocs v1.6.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.27.0 // indirect | ||||
| 	golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect | ||||
| 	golang.org/x/exp/typeparams v0.0.0-20240909161429-701f63a606c0 // indirect | ||||
| 	golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect | ||||
| 	golang.org/x/mod v0.24.0 // indirect | ||||
| 	golang.org/x/sync v0.12.0 // indirect | ||||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
|  | @ -189,7 +200,7 @@ require ( | |||
| 	gopkg.in/ini.v1 v1.67.0 // indirect | ||||
| 	gopkg.in/yaml.v2 v2.4.0 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	honnef.co/go/tools v0.5.1 // indirect | ||||
| 	honnef.co/go/tools v0.6.1 // indirect | ||||
| 	mvdan.cc/gofumpt v0.7.0 // indirect | ||||
| 	mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect | ||||
| 	mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect | ||||
| ) | ||||
|  |  | |||
|  | @ -1,84 +1,104 @@ | |||
| 4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= | ||||
| 4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= | ||||
| 4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= | ||||
| 4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= | ||||
| github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8= | ||||
| github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0= | ||||
| 4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= | ||||
| 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= | ||||
| 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= | ||||
| 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= | ||||
| github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= | ||||
| github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= | ||||
| github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= | ||||
| github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= | ||||
| github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= | ||||
| github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= | ||||
| github.com/Antonboom/nilnil v1.0.0 h1:n+v+B12dsE5tbAqRODXmEKfZv9j2KcTBrp+LkoM4HZk= | ||||
| github.com/Antonboom/nilnil v1.0.0/go.mod h1:fDJ1FSFoLN6yoG65ANb1WihItf6qt9PJVTn/s2IrcII= | ||||
| github.com/Antonboom/testifylint v1.5.0 h1:dlUIsDMtCrZWUnvkaCz3quJCoIjaGi41GzjPBGkkJ8A= | ||||
| github.com/Antonboom/testifylint v1.5.0/go.mod h1:wqaJbu0Blb5Wag2wv7Z5xt+CIV+eVLxtGZrlK13z3AE= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/Crocmagnon/fatcontext v0.5.2 h1:vhSEg8Gqng8awhPju2w7MKHqMlg4/NI+gSDHtR3xgwA= | ||||
| github.com/Crocmagnon/fatcontext v0.5.2/go.mod h1:87XhRMaInHP44Q7Tlc7jkgKKB7kZAOPiDkFMdKCC+74= | ||||
| github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE= | ||||
| github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw= | ||||
| github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng= | ||||
| github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE= | ||||
| github.com/Antonboom/testifylint v1.6.0 h1:6rdILVPt4+rqcvhid8w9wJNynKLUgqHNpFyM67UeXyc= | ||||
| github.com/Antonboom/testifylint v1.6.0/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI= | ||||
| github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= | ||||
| github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= | ||||
| github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= | ||||
| github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= | ||||
| github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= | ||||
| github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= | ||||
| github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | ||||
| github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= | ||||
| github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= | ||||
| github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= | ||||
| github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= | ||||
| github.com/alecthomas/go-check-sumtype v0.2.0 h1:Bo+e4DFf3rs7ME9w/0SU/g6nmzJaphduP8Cjiz0gbwY= | ||||
| github.com/alecthomas/go-check-sumtype v0.2.0/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= | ||||
| github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= | ||||
| github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= | ||||
| github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= | ||||
| github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= | ||||
| github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= | ||||
| github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= | ||||
| github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= | ||||
| github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= | ||||
| github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= | ||||
| github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= | ||||
| github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= | ||||
| github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= | ||||
| github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= | ||||
| github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= | ||||
| github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= | ||||
| github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= | ||||
| github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= | ||||
| github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= | ||||
| github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= | ||||
| github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= | ||||
| github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= | ||||
| github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= | ||||
| github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= | ||||
| github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= | ||||
| github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= | ||||
| github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= | ||||
| github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= | ||||
| github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= | ||||
| github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= | ||||
| github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | ||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||
| github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= | ||||
| github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= | ||||
| github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= | ||||
| github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= | ||||
| github.com/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw= | ||||
| github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= | ||||
| github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= | ||||
| github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= | ||||
| github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= | ||||
| github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= | ||||
| github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= | ||||
| github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= | ||||
| github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= | ||||
| github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= | ||||
| github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= | ||||
| github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= | ||||
| github.com/bombsimon/wsl/v4 v4.6.0 h1:ew2R/N42su553DKTYqt3HSxaQN+uHQPv4xZ2MBmwaW4= | ||||
| github.com/bombsimon/wsl/v4 v4.6.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= | ||||
| github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= | ||||
| github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= | ||||
| github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= | ||||
| github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= | ||||
| github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= | ||||
| github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= | ||||
| github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= | ||||
| github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= | ||||
| github.com/catenacyber/perfsprint v0.9.1 h1:5LlTp4RwTooQjJCvGEFV6XksZvWE7wCOUvjD2z0vls0= | ||||
| github.com/catenacyber/perfsprint v0.9.1/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= | ||||
| github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= | ||||
| github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= | ||||
| github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= | ||||
| github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= | ||||
| github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= | ||||
| github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= | ||||
| github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= | ||||
| github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= | ||||
| github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= | ||||
| github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= | ||||
| github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= | ||||
| github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= | ||||
| github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= | ||||
| github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= | ||||
| github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= | ||||
| github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= | ||||
| github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= | ||||
| github.com/ckaznocha/intrange v0.2.1 h1:M07spnNEQoALOJhwrImSrJLaxwuiQK+hA2DeajBlwYk= | ||||
| github.com/ckaznocha/intrange v0.2.1/go.mod h1:7NEhVyf8fzZO5Ds7CRaqPEm52Ut83hsTiL5zbER/HYk= | ||||
| github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= | ||||
| github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= | ||||
| github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= | ||||
| github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= | ||||
| github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= | ||||
| github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= | ||||
| github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= | ||||
| github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= | ||||
| github.com/daixiang0/gci v0.13.6 h1:RKuEOSkGpSadkGbvZ6hJ4ddItT3cVZ9Vn9Rybk6xjl8= | ||||
| github.com/daixiang0/gci v0.13.6/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= | ||||
| github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= | ||||
| github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= | ||||
| github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= | ||||
| github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= | ||||
| github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= | ||||
| github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= | ||||
| github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= | ||||
| github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= | ||||
| github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= | ||||
| github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= | ||||
| github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= | ||||
|  | @ -93,10 +113,10 @@ github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/ | |||
| github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= | ||||
| github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= | ||||
| github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= | ||||
| github.com/ghostiam/protogetter v0.3.8 h1:LYcXbYvybUyTIxN2Mj9h6rHrDZBDwZloPoKctWrFyJY= | ||||
| github.com/ghostiam/protogetter v0.3.8/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= | ||||
| github.com/go-critic/go-critic v0.11.5 h1:TkDTOn5v7EEngMxu8KbuFqFR43USaaH8XRJLz1jhVYA= | ||||
| github.com/go-critic/go-critic v0.11.5/go.mod h1:wu6U7ny9PiaHaZHcvMDmdysMqvDem162Rh3zWTrqk8M= | ||||
| github.com/ghostiam/protogetter v0.3.12 h1:xTPjH97iKph27vXRRKV0OCke5sAMoHPbVeVstdzmCLE= | ||||
| github.com/ghostiam/protogetter v0.3.12/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= | ||||
| github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY= | ||||
| github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI= | ||||
| github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= | ||||
| github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= | ||||
| github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= | ||||
|  | @ -124,28 +144,28 @@ github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUN | |||
| github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= | ||||
| github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= | ||||
| github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= | ||||
| github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= | ||||
| github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= | ||||
| github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= | ||||
| github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= | ||||
| github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= | ||||
| github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= | ||||
| github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= | ||||
| github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= | ||||
| github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= | ||||
| github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= | ||||
| github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= | ||||
| github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= | ||||
| github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= | ||||
| github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= | ||||
| github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= | ||||
| github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= | ||||
| github.com/golangci/golangci-lint v1.62.0 h1:/G0g+bi1BhmGJqLdNQkKBWjcim8HjOPc4tsKuHDOhcI= | ||||
| github.com/golangci/golangci-lint v1.62.0/go.mod h1:jtoOhQcKTz8B6dGNFyfQV3WZkQk+YvBDewDtNpiAJts= | ||||
| github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= | ||||
| github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= | ||||
| github.com/golangci/golangci-lint/v2 v2.0.2 h1:dMCC8ikPiLDvHMFy3+XypSAuGDBOLzwWqqamer+bWsY= | ||||
| github.com/golangci/golangci-lint/v2 v2.0.2/go.mod h1:ptNNMeGBQrbves0Qq38xvfdJg18PzxmT+7KRCOpm6i8= | ||||
| github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8= | ||||
| github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ= | ||||
| github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= | ||||
| github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= | ||||
| github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= | ||||
| github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= | ||||
| github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= | ||||
| github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= | ||||
| github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= | ||||
| github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= | ||||
| github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= | ||||
| github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= | ||||
| github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= | ||||
| github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= | ||||
| github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
|  | @ -162,18 +182,25 @@ github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it | |||
| github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= | ||||
| github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= | ||||
| github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= | ||||
| github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= | ||||
| github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= | ||||
| github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= | ||||
| github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= | ||||
| github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= | ||||
| github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= | ||||
| github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= | ||||
| github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= | ||||
| github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= | ||||
| github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= | ||||
| github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= | ||||
| github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= | ||||
| github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= | ||||
| github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= | ||||
| github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= | ||||
| github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= | ||||
| github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= | ||||
| github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= | ||||
| github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | ||||
| github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||||
| github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= | ||||
| github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||||
| github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= | ||||
| github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= | ||||
| github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= | ||||
| github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | ||||
| github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= | ||||
|  | @ -184,46 +211,55 @@ github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5 | |||
| github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= | ||||
| github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= | ||||
| github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= | ||||
| github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= | ||||
| github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= | ||||
| github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= | ||||
| github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= | ||||
| github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= | ||||
| github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= | ||||
| github.com/kisielk/errcheck v1.8.0 h1:ZX/URYa7ilESY19ik/vBmCn6zdGQLxACwjAcWbHlYlg= | ||||
| github.com/kisielk/errcheck v1.8.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= | ||||
| github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= | ||||
| github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= | ||||
| github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= | ||||
| github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= | ||||
| github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= | ||||
| github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= | ||||
| github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= | ||||
| github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= | ||||
| github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= | ||||
| github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= | ||||
| github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= | ||||
| github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||
| github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= | ||||
| github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= | ||||
| github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= | ||||
| github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= | ||||
| github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= | ||||
| github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= | ||||
| github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= | ||||
| github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= | ||||
| github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= | ||||
| github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= | ||||
| github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= | ||||
| github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= | ||||
| github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= | ||||
| github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= | ||||
| github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= | ||||
| github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= | ||||
| github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= | ||||
| github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= | ||||
| github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= | ||||
| github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= | ||||
| github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= | ||||
| github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= | ||||
| github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= | ||||
| github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= | ||||
| github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= | ||||
| github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= | ||||
| github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= | ||||
| github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= | ||||
| github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= | ||||
| github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= | ||||
| github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= | ||||
| github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= | ||||
| github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= | ||||
| github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= | ||||
| github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= | ||||
| github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= | ||||
| github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= | ||||
| github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= | ||||
| github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= | ||||
| github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= | ||||
| github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | ||||
| github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ= | ||||
| github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | ||||
|  | @ -234,14 +270,16 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D | |||
| github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= | ||||
| github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= | ||||
| github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||||
| github.com/mgechev/revive v1.5.0 h1:oaSmjA7rP8+HyoRuCgC531VHwnLH1AlJdjj+1AnQceQ= | ||||
| github.com/mgechev/revive v1.5.0/go.mod h1:L6T3H8EoerRO86c7WuGpvohIUmiploGiyoYbtIWFmV8= | ||||
| github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= | ||||
| github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= | ||||
| github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | ||||
| github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||||
| github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= | ||||
| github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | ||||
| github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= | ||||
| github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= | ||||
| github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= | ||||
| github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= | ||||
|  | @ -250,14 +288,14 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK | |||
| github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= | ||||
| github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= | ||||
| github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= | ||||
| github.com/nunnatsa/ginkgolinter v0.18.0 h1:ZXO1wKhPg3A6LpbN5dMuqwhfOjN5c3ous8YdKOuqk9k= | ||||
| github.com/nunnatsa/ginkgolinter v0.18.0/go.mod h1:vPrWafSULmjMGCMsfGA908if95VnHQNAahvSBOjTuWs= | ||||
| github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= | ||||
| github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= | ||||
| github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= | ||||
| github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= | ||||
| github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= | ||||
| github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= | ||||
|  | @ -270,8 +308,8 @@ github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xl | |||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= | ||||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/polyfloyd/go-errorlint v1.6.0 h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY= | ||||
| github.com/polyfloyd/go-errorlint v1.6.0/go.mod h1:HR7u8wuP1kb1NeN1zqTd1ZMlqUKPPHF+Id4vIPvDqVw= | ||||
| github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= | ||||
| github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= | ||||
| github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= | ||||
| github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | ||||
| github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= | ||||
|  | @ -282,8 +320,8 @@ github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ | |||
| github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= | ||||
| github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= | ||||
| github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= | ||||
| github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= | ||||
| github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= | ||||
| github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ= | ||||
| github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= | ||||
| github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= | ||||
| github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= | ||||
| github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= | ||||
|  | @ -292,50 +330,48 @@ github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl | |||
| github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= | ||||
| github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= | ||||
| github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= | ||||
| github.com/raeperd/recvcheck v0.1.2 h1:SjdquRsRXJc26eSonWIo8b7IMtKD3OAT2Lb5G3ZX1+4= | ||||
| github.com/raeperd/recvcheck v0.1.2/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= | ||||
| github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= | ||||
| github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= | ||||
| github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||||
| github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | ||||
| github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||||
| github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | ||||
| github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= | ||||
| github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||
| github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= | ||||
| github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= | ||||
| github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= | ||||
| github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= | ||||
| github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= | ||||
| github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= | ||||
| github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= | ||||
| github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= | ||||
| github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= | ||||
| github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= | ||||
| github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= | ||||
| github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= | ||||
| github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= | ||||
| github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= | ||||
| github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= | ||||
| github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= | ||||
| github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= | ||||
| github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= | ||||
| github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= | ||||
| github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= | ||||
| github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI= | ||||
| github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= | ||||
| github.com/securego/gosec/v2 v2.21.4 h1:Le8MSj0PDmOnHJgUATjD96PaXRvCpKC+DGJvwyy0Mlk= | ||||
| github.com/securego/gosec/v2 v2.21.4/go.mod h1:Jtb/MwRQfRxCXyCm1rfM1BEiiiTfUOdyzzAhlr6lUTA= | ||||
| github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= | ||||
| github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= | ||||
| github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= | ||||
| github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= | ||||
| github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= | ||||
| github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= | ||||
| github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= | ||||
| github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= | ||||
| github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= | ||||
| github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= | ||||
| github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | ||||
| github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= | ||||
| github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= | ||||
| github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= | ||||
| github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= | ||||
| github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= | ||||
| github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= | ||||
| github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= | ||||
| github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= | ||||
| github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= | ||||
| github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= | ||||
| github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= | ||||
| github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= | ||||
| github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= | ||||
| github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | ||||
| github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | ||||
| github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= | ||||
| github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= | ||||
| github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= | ||||
|  | @ -347,8 +383,8 @@ github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= | |||
| github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= | ||||
| github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= | ||||
| github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= | ||||
| github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= | ||||
| github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= | ||||
| github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= | ||||
| github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | ||||
| github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | ||||
|  | @ -365,32 +401,34 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf | |||
| github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||
| github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= | ||||
| github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= | ||||
| github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= | ||||
| github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= | ||||
| github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= | ||||
| github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= | ||||
| github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= | ||||
| github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= | ||||
| github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= | ||||
| github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= | ||||
| github.com/tetafro/godot v1.4.18 h1:ouX3XGiziKDypbpXqShBfnNLTSjR8r3/HVzrtJ+bHlI= | ||||
| github.com/tetafro/godot v1.4.18/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= | ||||
| github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= | ||||
| github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= | ||||
| github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= | ||||
| github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= | ||||
| github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= | ||||
| github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= | ||||
| github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= | ||||
| github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= | ||||
| github.com/tomarrell/wrapcheck/v2 v2.9.0 h1:801U2YCAjLhdN8zhZ/7tdjB3EnAoRlJHt/s+9hijLQ4= | ||||
| github.com/tomarrell/wrapcheck/v2 v2.9.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= | ||||
| github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= | ||||
| github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= | ||||
| github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= | ||||
| github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= | ||||
| github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= | ||||
| github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= | ||||
| github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ= | ||||
| github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= | ||||
| github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= | ||||
| github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= | ||||
| github.com/uudashr/iface v1.2.0 h1:ECJjh5q/1Zmnv/2yFpWV6H3oMg5+Mo+vL0aqw9Gjazo= | ||||
| github.com/uudashr/iface v1.2.0/go.mod h1:Ux/7d/rAF3owK4m53cTVXL4YoVHKNqnoOeQHn2xrlp0= | ||||
| github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= | ||||
| github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= | ||||
| github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= | ||||
| github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= | ||||
| github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= | ||||
| github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= | ||||
| github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= | ||||
| github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= | ||||
| github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= | ||||
| github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= | ||||
| github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM= | ||||
| github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= | ||||
| github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= | ||||
| github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= | ||||
| github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= | ||||
|  | @ -409,8 +447,8 @@ go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= | |||
| go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= | ||||
| go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= | ||||
| go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= | ||||
| go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= | ||||
| go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= | ||||
| go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= | ||||
| go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= | ||||
| go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= | ||||
| go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= | ||||
| go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= | ||||
|  | @ -423,26 +461,27 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk | |||
| golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= | ||||
| golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= | ||||
| golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= | ||||
| golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= | ||||
| golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= | ||||
| golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||||
| golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||||
| golang.org/x/exp/typeparams v0.0.0-20240909161429-701f63a606c0 h1:bVwtbF629Xlyxk6xLQq2TDYmqP0uiWaet5LwRebuY0k= | ||||
| golang.org/x/exp/typeparams v0.0.0-20240909161429-701f63a606c0/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||||
| golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= | ||||
| golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= | ||||
| golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= | ||||
| golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= | ||||
| golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||||
| golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= | ||||
| golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= | ||||
| golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= | ||||
| golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= | ||||
| golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
|  | @ -452,10 +491,12 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v | |||
| golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | ||||
| golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||
| golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||||
| golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= | ||||
| golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||
| golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= | ||||
| golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||||
| golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | ||||
| golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= | ||||
| golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||||
| golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= | ||||
| golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
|  | @ -465,6 +506,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ | |||
| golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | ||||
| golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= | ||||
| golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= | ||||
| golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= | ||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
|  | @ -472,7 +515,6 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w | |||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
|  | @ -483,50 +525,52 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc | |||
| golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= | ||||
| golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
| golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||||
| golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||||
| golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= | ||||
| golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= | ||||
| golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | ||||
| golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | ||||
| golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= | ||||
| golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= | ||||
| golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | ||||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||
| golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | ||||
| golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= | ||||
| golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | ||||
| golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= | ||||
| golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||
| golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= | ||||
| golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | ||||
| golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= | ||||
| golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | ||||
| golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | ||||
| golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= | ||||
| golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= | ||||
| golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | ||||
| golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= | ||||
| golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= | ||||
| golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= | ||||
| golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= | ||||
| golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= | ||||
| golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= | ||||
| golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= | ||||
| golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= | ||||
| golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= | ||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
|  | @ -536,6 +580,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | |||
| google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= | ||||
| google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
| gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= | ||||
|  | @ -546,9 +591,9 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | |||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= | ||||
| honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= | ||||
| honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= | ||||
| honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= | ||||
| mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= | ||||
| mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= | ||||
| mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= | ||||
| mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= | ||||
| mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8= | ||||
| mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= | ||||
|  |  | |||
|  | @ -8,7 +8,11 @@ require ( | |||
| 	github.com/MakeNowJust/heredoc v1.0.0 // indirect | ||||
| 	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect | ||||
| 	github.com/briandowns/spinner v1.23.0 // indirect | ||||
| 	github.com/charmbracelet/lipgloss v0.6.0 // indirect | ||||
| 	github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect | ||||
| 	github.com/charmbracelet/lipgloss v1.1.0 // indirect | ||||
| 	github.com/charmbracelet/x/ansi v0.8.0 // indirect | ||||
| 	github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect | ||||
| 	github.com/charmbracelet/x/term v0.2.1 // indirect | ||||
| 	github.com/creack/pty v1.1.18 // indirect | ||||
| 	github.com/evilmartians/lefthook v1.4.8 // indirect | ||||
| 	github.com/fatih/color v1.18.0 // indirect | ||||
|  | @ -23,21 +27,21 @@ require ( | |||
| 	github.com/mattn/go-isatty v0.0.20 // indirect | ||||
| 	github.com/mattn/go-runewidth v0.0.16 // indirect | ||||
| 	github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect | ||||
| 	github.com/muesli/reflow v0.3.0 // indirect | ||||
| 	github.com/muesli/termenv v0.15.1 // indirect | ||||
| 	github.com/muesli/termenv v0.16.0 // indirect | ||||
| 	github.com/pelletier/go-toml/v2 v2.2.3 // indirect | ||||
| 	github.com/rivo/uniseg v0.4.7 // indirect | ||||
| 	github.com/rogpeppe/go-internal v1.14.1 // indirect | ||||
| 	github.com/sagikazarmark/locafero v0.4.0 // indirect | ||||
| 	github.com/sagikazarmark/slog-shim v0.1.0 // indirect | ||||
| 	github.com/sourcegraph/conc v0.3.0 // indirect | ||||
| 	github.com/spf13/afero v1.11.0 // indirect | ||||
| 	github.com/spf13/afero v1.12.0 // indirect | ||||
| 	github.com/spf13/cast v1.7.0 // indirect | ||||
| 	github.com/spf13/cobra v1.9.1 // indirect | ||||
| 	github.com/spf13/pflag v1.0.6 // indirect | ||||
| 	github.com/spf13/viper v1.19.0 // indirect | ||||
| 	github.com/stretchr/testify v1.10.0 // indirect | ||||
| 	github.com/subosito/gotenv v1.6.0 // indirect | ||||
| 	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect | ||||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
|  |  | |||
|  | @ -6,8 +6,16 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE | |||
| github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= | ||||
| github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= | ||||
| github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= | ||||
| github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= | ||||
| github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= | ||||
| github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= | ||||
| github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= | ||||
| github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= | ||||
| github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= | ||||
| github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= | ||||
| github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= | ||||
| github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= | ||||
| github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= | ||||
| github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= | ||||
| github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= | ||||
| github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= | ||||
| github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= | ||||
|  | @ -43,27 +51,18 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V | |||
| github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= | ||||
| github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= | ||||
| github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= | ||||
| github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||||
| github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||||
| github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||||
| github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= | ||||
| github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= | ||||
| github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||||
| github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= | ||||
| github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||||
| github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= | ||||
| github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | ||||
| github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= | ||||
| github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= | ||||
| github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= | ||||
| github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= | ||||
| github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= | ||||
| github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= | ||||
| github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= | ||||
| github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= | ||||
| github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= | ||||
| github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= | ||||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= | ||||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||||
| github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||||
| github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | ||||
| github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||||
|  | @ -76,8 +75,8 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g | |||
| github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= | ||||
| github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= | ||||
| github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= | ||||
| github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= | ||||
| github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= | ||||
| github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | ||||
| github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | ||||
| github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= | ||||
| github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= | ||||
| github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= | ||||
|  | @ -90,11 +89,12 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf | |||
| github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||
| github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= | ||||
| github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= | ||||
| golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= | ||||
| golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= | ||||
| golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ tool github.com/go-swagger/go-swagger/cmd/swagger | |||
| require ( | ||||
| 	dario.cat/mergo v1.0.1 // indirect | ||||
| 	github.com/Masterminds/goutils v1.1.1 // indirect | ||||
| 	github.com/Masterminds/semver/v3 v3.3.0 // indirect | ||||
| 	github.com/Masterminds/semver/v3 v3.3.1 // indirect | ||||
| 	github.com/Masterminds/sprig/v3 v3.3.0 // indirect | ||||
| 	github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect | ||||
| 	github.com/felixge/httpsnoop v1.0.4 // indirect | ||||
|  | @ -45,7 +45,7 @@ require ( | |||
| 	github.com/sagikazarmark/slog-shim v0.1.0 // indirect | ||||
| 	github.com/shopspring/decimal v1.4.0 // indirect | ||||
| 	github.com/sourcegraph/conc v0.3.0 // indirect | ||||
| 	github.com/spf13/afero v1.11.0 // indirect | ||||
| 	github.com/spf13/afero v1.12.0 // indirect | ||||
| 	github.com/spf13/cast v1.7.0 // indirect | ||||
| 	github.com/spf13/pflag v1.0.6 // indirect | ||||
| 	github.com/spf13/viper v1.19.0 // indirect | ||||
|  |  | |||
|  | @ -2,8 +2,8 @@ dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= | |||
| dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= | ||||
| github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= | ||||
| github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= | ||||
| github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | ||||
| github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= | ||||
| github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= | ||||
| github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= | ||||
| github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= | ||||
|  | @ -88,8 +88,8 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp | |||
| github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= | ||||
| github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= | ||||
| github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= | ||||
| github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= | ||||
| github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= | ||||
| github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | ||||
| github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | ||||
| github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= | ||||
| github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= | ||||
| github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= | ||||
|  |  | |||
|  | @ -22,9 +22,9 @@ jobs: | |||
|           go-version-file: ./go.mod | ||||
|       - run: make gen-go | ||||
|       - name: golangci-lint | ||||
|         uses: golangci/golangci-lint-action@v6 | ||||
|         uses: golangci/golangci-lint-action@v7 | ||||
|         with: | ||||
|           version: v1.64.2 | ||||
|           version: v2.0.2 | ||||
|           args: | | ||||
|             --verbose $(go list -m -f '{{.Dir}}' | xargs -I{} sh -c 'test ! -f {}/.nolint && echo {}/...') | ||||
|           install-mode: binary | ||||
|  |  | |||
							
								
								
									
										558
									
								
								.golangci.yml
								
								
								
								
							
							
						
						
									
										558
									
								
								.golangci.yml
								
								
								
								
							|  | @ -1,214 +1,15 @@ | |||
| # This file is best edited with some JSON-schema-aware editor. | ||||
| # VSCode/Cursor/... user? See: https://github.com/redhat-developer/vscode-yaml | ||||
| # Others can set up the YAML LSP manually, which supports schemas: https://github.com/redhat-developer/yaml-language-server | ||||
| 
 | ||||
| # $schema: https://golangci-lint.run/jsonschema/golangci.jsonschema.json | ||||
| version: "2" | ||||
| run: | ||||
|   timeout: 15m | ||||
|   concurrency: 10 | ||||
|   allow-parallel-runners: true | ||||
| linters-settings: | ||||
|   exhaustive: | ||||
|     default-signifies-exhaustive: true | ||||
|   revive: | ||||
|     ignore-generated-header: false | ||||
|     severity: warning | ||||
|     confidence: 3 | ||||
|   depguard: | ||||
|     rules: | ||||
|       main: | ||||
|         allow: [] | ||||
|         deny: | ||||
|           - pkg: io/ioutil | ||||
|             desc: >- | ||||
|               Deprecated: As of Go 1.16, the same functionality is now provided | ||||
|               by package io or package os, and those implementations should be | ||||
|               preferred in new code. See the specific function documentation for | ||||
|               details. | ||||
|           - pkg: gopkg.in/yaml.v2 | ||||
|             desc: >- | ||||
|               Grafana packages are not allowed to depend on gopkg.in/yaml.v2 as | ||||
|               gopkg.in/yaml.v3 is now available | ||||
|           - pkg: github.com/pkg/errors | ||||
|             desc: >- | ||||
|               Deprecated: Go 1.13 supports the functionality provided by | ||||
|               pkg/errors in the standard library. | ||||
|           - pkg: github.com/xorcare/pointer | ||||
|             desc: >- | ||||
|               Use pkg/util.Pointer instead, which is a generic one-liner | ||||
|               alternative | ||||
|           - pkg: github.com/gofrs/uuid | ||||
|             desc: 'Use github.com/google/uuid instead, which we already depend on.' | ||||
|           - pkg: github.com/bmizerany/assert | ||||
|             desc: >- | ||||
|               Use github.com/stretchr/testify/assert instead, which we already | ||||
|               depend on. | ||||
|       coreplugins: | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg/api | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/cmd | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/cuectx | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/extensions | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/kinds | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/middleware | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/modules | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/registry | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/services | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/build | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/codegen | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/events | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/ifaces | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/kindsysreport | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/mocks | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/plugins | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/setting | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/util | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/bus | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/components | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/expr | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/infra | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/login | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/models | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/server | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/tests | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/web | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|           - pkg: github.com/grafana/grafana/pkg/tsdb/intervalv2 | ||||
|             desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|         files: | ||||
|           - '**/pkg/tsdb/grafana-pyroscope-datasource/*' | ||||
|           - '**/pkg/tsdb/grafana-pyroscope-datasource/**/*' | ||||
|           - '**/pkg/tsdb/grafana-testdata-datasource/*' | ||||
|           - '**/pkg/tsdb/grafana-testdata-datasource/**/*' | ||||
|           - '**/pkg/tsdb/azuremonitor/*' | ||||
|           - '**/pkg/tsdb/azuremonitor/**/*' | ||||
|           - '**/pkg/tsdb/cloud-monitoring/*' | ||||
|           - '**/pkg/tsdb/cloud-monitoring/**/*' | ||||
|           - '**/pkg/tsdb/mysql/*' | ||||
|           - '**/pkg/tsdb/mysql/**/*' | ||||
|           - '**/pkg/tsdb/parca/*' | ||||
|           - '**/pkg/tsdb/parca/**/*' | ||||
|           - '**/pkg/tsdb/tempo/*' | ||||
|           - '**/pkg/tsdb/tempo/**/*' | ||||
|           - '**/pkg/tsdb/cloudwatch/*' | ||||
|           - '**/pkg/tsdb/cloudwatch/**/*' | ||||
|       apiserver: | ||||
|         list-mode: lax | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/apimachinery | ||||
|           - github.com/grafana/grafana/pkg/apiserver | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: apiserver is not allowed to import grafana core | ||||
|         files: | ||||
|           - '**/pkg/apiserver/*' | ||||
|           - '**/pkg/apiserver/**/*' | ||||
|       apimachinery: | ||||
|         list-mode: lax | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/apimachinery | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: apimachinery is not allowed to import grafana core | ||||
|         files: | ||||
|           - '**/pkg/apimachinery/*' | ||||
|           - '**/pkg/apimachinery/**/*' | ||||
|       aggregator: | ||||
|         list-mode: lax | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/aggregator | ||||
|           - github.com/grafana/grafana/pkg/semconv | ||||
|           - github.com/grafana/grafana/pkg/apimachinery | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: apimachinery is not allowed to import grafana core | ||||
|         files: | ||||
|           - ./pkg/aggregator/* | ||||
|           - ./pkg/aggregator/**/* | ||||
|       promlib: | ||||
|         list-mode: lax | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: promlib is not allowed to import grafana core | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/promlib | ||||
|         files: | ||||
|           - '**/pkg/promlib/**/*' | ||||
|       storage-unified-resource: | ||||
|         list-mode: lax | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/apimachinery | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: pkg/storage/unified/resource is not allowed to import grafana core | ||||
|         files: | ||||
|           - ./pkg/storage/unified/resource/* | ||||
|           - ./pkg/storage/unified/resource/**/* | ||||
|       storage-unified-apistore: | ||||
|         list-mode: lax | ||||
|         allow: | ||||
|           - github.com/grafana/grafana/pkg/apimachinery | ||||
|           - github.com/grafana/grafana/pkg/apiserver | ||||
|           - github.com/grafana/grafana/pkg/unified/resource | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: pkg/storage/unified/apistore is not allowed to import grafana core | ||||
|         files: | ||||
|           - ./pkg/storage/unified/apistore/* | ||||
|           - ./pkg/storage/unified/apistore/**/* | ||||
|       apps-playlist: | ||||
|         list-mode: lax | ||||
|         allow: [] | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: apps/playlist is not allowed to import grafana core | ||||
|         files: | ||||
|           - ./apps/playlist/* | ||||
|           - ./apps/playlist/**/* | ||||
|       apps-investigation: | ||||
|         list-mode: lax | ||||
|         allow: [] | ||||
|         deny: | ||||
|           - pkg: github.com/grafana/grafana/pkg | ||||
|             desc: apps/investigations is not allowed to import grafana core | ||||
|         files: | ||||
|           - ./apps/investigations/* | ||||
|           - ./apps/investigations/**/* | ||||
|   gocritic: | ||||
|     enabled-checks: | ||||
|       - ruleguard | ||||
|     settings: | ||||
|       ruleguard: | ||||
|         rules: pkg/ruleguard.rules.go | ||||
|   misspell: | ||||
|     ignore-words: | ||||
|       - Unknwon | ||||
|       - Creater | ||||
|   nakedret: | ||||
|     max-func-lines: 60 | ||||
| linters: | ||||
|   disable-all: true | ||||
|   default: none | ||||
|   enable: | ||||
|     - asciicheck | ||||
|     - bodyclose | ||||
|  | @ -218,10 +19,8 @@ linters: | |||
|     - errorlint | ||||
|     - exhaustive | ||||
|     - gocyclo | ||||
|     - goimports | ||||
|     - goprintffuncname | ||||
|     - gosec | ||||
|     - gosimple | ||||
|     - govet | ||||
|     - ineffassign | ||||
|     - misspell | ||||
|  | @ -229,78 +28,281 @@ linters: | |||
|     - prealloc | ||||
|     - revive | ||||
|     - staticcheck | ||||
|     - stylecheck | ||||
|     - unconvert | ||||
|     - unused | ||||
|     - whitespace | ||||
|   settings: | ||||
|     depguard: | ||||
|       rules: | ||||
|         aggregator: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - ./pkg/aggregator/* | ||||
|             - ./pkg/aggregator/**/* | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/aggregator | ||||
|             - github.com/grafana/grafana/pkg/semconv | ||||
|             - github.com/grafana/grafana/pkg/apimachinery | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: apimachinery is not allowed to import grafana core | ||||
|         apimachinery: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - '**/pkg/apimachinery/*' | ||||
|             - '**/pkg/apimachinery/**/*' | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/apimachinery | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: apimachinery is not allowed to import grafana core | ||||
|         apiserver: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - '**/pkg/apiserver/*' | ||||
|             - '**/pkg/apiserver/**/*' | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/apimachinery | ||||
|             - github.com/grafana/grafana/pkg/apiserver | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: apiserver is not allowed to import grafana core | ||||
|         apps-investigation: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - ./apps/investigations/* | ||||
|             - ./apps/investigations/**/* | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: apps/investigations is not allowed to import grafana core | ||||
|         apps-playlist: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - ./apps/playlist/* | ||||
|             - ./apps/playlist/**/* | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: apps/playlist is not allowed to import grafana core | ||||
|         coreplugins: | ||||
|           files: | ||||
|             - '**/pkg/tsdb/grafana-pyroscope-datasource/*' | ||||
|             - '**/pkg/tsdb/grafana-pyroscope-datasource/**/*' | ||||
|             - '**/pkg/tsdb/grafana-testdata-datasource/*' | ||||
|             - '**/pkg/tsdb/grafana-testdata-datasource/**/*' | ||||
|             - '**/pkg/tsdb/azuremonitor/*' | ||||
|             - '**/pkg/tsdb/azuremonitor/**/*' | ||||
|             - '**/pkg/tsdb/cloud-monitoring/*' | ||||
|             - '**/pkg/tsdb/cloud-monitoring/**/*' | ||||
|             - '**/pkg/tsdb/mysql/*' | ||||
|             - '**/pkg/tsdb/mysql/**/*' | ||||
|             - '**/pkg/tsdb/parca/*' | ||||
|             - '**/pkg/tsdb/parca/**/*' | ||||
|             - '**/pkg/tsdb/tempo/*' | ||||
|             - '**/pkg/tsdb/tempo/**/*' | ||||
|             - '**/pkg/tsdb/cloudwatch/*' | ||||
|             - '**/pkg/tsdb/cloudwatch/**/*' | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg/api | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/cmd | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/cuectx | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/extensions | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/kinds | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/middleware | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/modules | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/registry | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/services | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/build | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/codegen | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/events | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/ifaces | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/kindsysreport | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/mocks | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/plugins | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/setting | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/util | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/bus | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/components | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/expr | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/infra | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/login | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/models | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/server | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/tests | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/web | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|             - pkg: github.com/grafana/grafana/pkg/tsdb/intervalv2 | ||||
|               desc: Core plugins are not allowed to depend on Grafana core packages | ||||
|         main: | ||||
|           deny: | ||||
|             - pkg: io/ioutil | ||||
|               desc: 'Deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code. See the specific function documentation for details.' | ||||
|             - pkg: gopkg.in/yaml.v2 | ||||
|               desc: Grafana packages are not allowed to depend on gopkg.in/yaml.v2 as gopkg.in/yaml.v3 is now available | ||||
|             - pkg: github.com/pkg/errors | ||||
|               desc: 'Deprecated: Go 1.13 supports the functionality provided by pkg/errors in the standard library.' | ||||
|             - pkg: github.com/xorcare/pointer | ||||
|               desc: Use pkg/util.Pointer instead, which is a generic one-liner alternative | ||||
|             - pkg: github.com/gofrs/uuid | ||||
|               desc: Use github.com/google/uuid instead, which we already depend on. | ||||
|             - pkg: github.com/bmizerany/assert | ||||
|               desc: Use github.com/stretchr/testify/assert instead, which we already depend on. | ||||
|         promlib: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - '**/pkg/promlib/**/*' | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/promlib | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: promlib is not allowed to import grafana core | ||||
|         storage-unified-apistore: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - ./pkg/storage/unified/apistore/* | ||||
|             - ./pkg/storage/unified/apistore/**/* | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/apimachinery | ||||
|             - github.com/grafana/grafana/pkg/apiserver | ||||
|             - github.com/grafana/grafana/pkg/unified/resource | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: pkg/storage/unified/apistore is not allowed to import grafana core | ||||
|         storage-unified-resource: | ||||
|           list-mode: lax | ||||
|           files: | ||||
|             - ./pkg/storage/unified/resource/* | ||||
|             - ./pkg/storage/unified/resource/**/* | ||||
|           allow: | ||||
|             - github.com/grafana/grafana/pkg/apimachinery | ||||
|           deny: | ||||
|             - pkg: github.com/grafana/grafana/pkg | ||||
|               desc: pkg/storage/unified/resource is not allowed to import grafana core | ||||
|     exhaustive: | ||||
|       default-signifies-exhaustive: true | ||||
|     gocritic: | ||||
|       enabled-checks: | ||||
|         - ruleguard | ||||
|       settings: | ||||
|         ruleguard: | ||||
|           rules: pkg/ruleguard.rules.go | ||||
|     misspell: | ||||
|       ignore-rules: | ||||
|         - Unknwon | ||||
|         - Creater | ||||
|     nakedret: | ||||
|       max-func-lines: 60 | ||||
|     revive: | ||||
|       confidence: 3 | ||||
|       severity: warning | ||||
|   exclusions: | ||||
|     generated: lax | ||||
|     rules: | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: ST1003 | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: ST1001 | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: 'SA1019: http.CloseNotifier' | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: 'SA1019: strings.Title' | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: 'SA1019: "go.opentelemetry.io/otel/exporters/jaeger"' | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: use fake service and real access control evaluator instead | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G108 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G110 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G115 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G201 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G202 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: G306 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: "401" | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: "402" | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: "501" | ||||
|       - linters: | ||||
|           - gosec | ||||
|         text: "404" | ||||
|       - linters: | ||||
|           - errorlint | ||||
|         text: non-wrapping format verb for fmt.Errorf | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: ST1000 | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: ST1020 | ||||
|       - linters: | ||||
|           - staticcheck | ||||
|         text: ST1021 | ||||
|       - linters: | ||||
|           - gosec | ||||
|         path: (.+)_test\.go | ||||
|         text: G601 | ||||
|     paths: | ||||
|       - devenv | ||||
|       - scripts | ||||
|       - third_party$ | ||||
|       - builtin$ | ||||
|       - examples$ | ||||
| issues: | ||||
|   exclude-use-default: false | ||||
|   max-same-issues: 0 | ||||
|   exclude-dirs: | ||||
|     - devenv | ||||
|     - scripts | ||||
|   exclude-rules: | ||||
|     - linters: | ||||
|         - stylecheck | ||||
|       text: ST1003 | ||||
|     - linters: | ||||
|         - stylecheck | ||||
|       text: ST1001 | ||||
|     - linters: | ||||
|         - staticcheck | ||||
|       text: 'SA1019: http.CloseNotifier' | ||||
|     - linters: | ||||
|         - staticcheck | ||||
|       text: 'SA1019: strings.Title' | ||||
|     - linters: | ||||
|         - staticcheck | ||||
|       text: 'SA1019: "go.opentelemetry.io/otel/exporters/jaeger"' | ||||
|     - linters: | ||||
|         - staticcheck | ||||
|       text: use fake service and real access control evaluator instead | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G108 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G110 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G115 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G201 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G202 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: G306 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: '401' | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: '402' | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: '501' | ||||
|     - linters: | ||||
|         - gosec | ||||
|       text: '404' | ||||
|     - linters: | ||||
|         - errorlint | ||||
|       text: non-wrapping format verb for fmt.Errorf | ||||
|     - linters: | ||||
|         - stylecheck | ||||
|       text: ST1000 | ||||
|     - linters: | ||||
|         - stylecheck | ||||
|       text: ST1020 | ||||
|     - linters: | ||||
|         - stylecheck | ||||
|       text: ST1021 | ||||
|     - linters: | ||||
|         - gosec | ||||
|       path: (.+)_test\.go | ||||
|       text: G601 | ||||
| formatters: | ||||
|   enable: | ||||
|     - goimports | ||||
|   exclusions: | ||||
|     generated: lax | ||||
|     paths: | ||||
|       - devenv | ||||
|       - scripts | ||||
|       - third_party$ | ||||
|       - builtin$ | ||||
|       - examples$ | ||||
|  |  | |||
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							|  | @ -358,7 +358,7 @@ lint-go-diff: | |||
| 		$(XARGSR) dirname | \
 | ||||
| 		sort -u | \
 | ||||
| 		sed 's,^,./,' | \
 | ||||
| 		$(XARGSR) $(GO) tool golangci-lint run --config .golangci.toml | ||||
| 		$(XARGSR) $(GO) tool golangci-lint run --config .golangci.yml | ||||
| 
 | ||||
| # with disabled SC1071 we are ignored some TCL,Expect `/usr/bin/env expect` scripts
 | ||||
| .PHONY: shellcheck | ||||
|  |  | |||
|  | @ -150,7 +150,7 @@ func TestRunner_cleanupChecks_ErrorOnDelete(t *testing.T) { | |||
| 			items := make([]advisorv0alpha1.Check, 0, defaultMaxHistory+1) | ||||
| 			for i := 0; i < defaultMaxHistory+1; i++ { | ||||
| 				item := advisorv0alpha1.Check{} | ||||
| 				item.ObjectMeta.SetLabels(map[string]string{ | ||||
| 				item.SetLabels(map[string]string{ | ||||
| 					checks.TypeLabel: "mock", | ||||
| 				}) | ||||
| 				items = append(items, item) | ||||
|  | @ -178,11 +178,11 @@ func TestRunner_cleanupChecks_Success(t *testing.T) { | |||
| 	items := make([]advisorv0alpha1.Check, 0, defaultMaxHistory+1) | ||||
| 	for i := 0; i < defaultMaxHistory+1; i++ { | ||||
| 		item := advisorv0alpha1.Check{} | ||||
| 		item.ObjectMeta.SetName(fmt.Sprintf("check-%d", i)) | ||||
| 		item.ObjectMeta.SetLabels(map[string]string{ | ||||
| 		item.SetName(fmt.Sprintf("check-%d", i)) | ||||
| 		item.SetLabels(map[string]string{ | ||||
| 			checks.TypeLabel: "mock", | ||||
| 		}) | ||||
| 		item.ObjectMeta.SetCreationTimestamp(metav1.NewTime(time.Time{}.Add(time.Duration(i) * time.Hour))) | ||||
| 		item.SetCreationTimestamp(metav1.NewTime(time.Time{}.Add(time.Duration(i) * time.Hour))) | ||||
| 		items = append(items, item) | ||||
| 	} | ||||
| 	// shuffle the items to ensure the oldest are deleted
 | ||||
|  |  | |||
|  | @ -49,8 +49,6 @@ require ( | |||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/prometheus/client_golang v1.21.1 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
|  | @ -81,7 +79,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect | ||||
| 	google.golang.org/grpc v1.71.0 // indirect | ||||
|  |  | |||
|  | @ -109,10 +109,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G | |||
| github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
|  | @ -239,8 +239,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ require ( | |||
| ) | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | ||||
| 	github.com/BurntSushi/toml v1.5.0 // indirect | ||||
| 	github.com/apache/arrow-go/v18 v18.2.0 // indirect | ||||
| 	github.com/beorn7/perks v1.0.1 // indirect | ||||
| 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect | ||||
|  | @ -106,7 +106,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= | ||||
| github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= | ||||
| github.com/apache/arrow-go/v18 v18.2.0 h1:QhWqpgZMKfWOniGPhbUxrHohWnooGURqL2R2Gg4SO1Q= | ||||
|  | @ -315,8 +315,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
|  |  | |||
|  | @ -94,9 +94,10 @@ func migrateTableDisplayModeToCellOptions(displayMode string) map[string]interfa | |||
| 	switch displayMode { | ||||
| 	case "basic", "gradient-gauge", "lcd-gauge": | ||||
| 		gaugeMode := "basic" | ||||
| 		if displayMode == "gradient-gauge" { | ||||
| 		switch displayMode { | ||||
| 		case "gradient-gauge": | ||||
| 			gaugeMode = "gradient" | ||||
| 		} else if displayMode == "lcd-gauge" { | ||||
| 		case "lcd-gauge": | ||||
| 			gaugeMode = "lcd" | ||||
| 		} | ||||
| 		return map[string]interface{}{ | ||||
|  |  | |||
|  | @ -29,7 +29,6 @@ require ( | |||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/grafana/grafana-app-sdk/logging v0.35.1 // indirect | ||||
| 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect | ||||
|  | @ -45,8 +44,8 @@ require ( | |||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect | ||||
| 	github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| 	github.com/perimeterx/marshmallow v1.1.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.21.1 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
|  | @ -71,7 +70,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
|  |  | |||
|  | @ -89,10 +89,10 @@ github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//J | |||
| github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= | ||||
| github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= | ||||
| github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= | ||||
| github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
|  | @ -175,8 +175,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | ||||
|  |  | |||
|  | @ -30,7 +30,6 @@ require ( | |||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/grafana/grafana-app-sdk/logging v0.35.1 // indirect | ||||
| 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect | ||||
|  | @ -46,8 +45,8 @@ require ( | |||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect | ||||
| 	github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| 	github.com/perimeterx/marshmallow v1.1.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.21.1 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
|  | @ -72,7 +71,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
|  |  | |||
|  | @ -89,10 +89,10 @@ github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//J | |||
| github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= | ||||
| github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= | ||||
| github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= | ||||
| github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
|  | @ -175,8 +175,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ To ensure consistency across the Go codebase, we require all code to | |||
| pass a number of linter checks. | ||||
| 
 | ||||
| We use [GolangCI-Lint](https://github.com/golangci/golangci-lint) with a | ||||
| custom configuration [.golangci.toml](/.golangci.toml) to run these | ||||
| custom configuration [.golangci.yml](/.golangci.yml) to run these | ||||
| checks. | ||||
| 
 | ||||
| To run all linters, use the `lint-go` Makefile target: | ||||
|  |  | |||
							
								
								
									
										17
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										17
									
								
								go.mod
								
								
								
								
							|  | @ -19,10 +19,10 @@ require ( | |||
| 	github.com/Azure/azure-storage-blob-go v0.15.0 // @grafana/grafana-backend-group | ||||
| 	github.com/Azure/go-autorest/autorest v0.11.29 // @grafana/grafana-backend-group | ||||
| 	github.com/Azure/go-autorest/autorest/adal v0.9.24 // @grafana/grafana-backend-group | ||||
| 	github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // @grafana/identity-access-team | ||||
| 	github.com/BurntSushi/toml v1.5.0 // @grafana/identity-access-team | ||||
| 	github.com/DATA-DOG/go-sqlmock v1.5.2 // @grafana/grafana-search-and-storage | ||||
| 	github.com/Masterminds/semver v1.5.0 // @grafana/grafana-backend-group | ||||
| 	github.com/Masterminds/semver/v3 v3.3.0 // @grafana/grafana-developer-enablement-squad | ||||
| 	github.com/Masterminds/semver/v3 v3.3.1 // @grafana/grafana-developer-enablement-squad | ||||
| 	github.com/Masterminds/sprig/v3 v3.3.0 // @grafana/grafana-backend-group | ||||
| 	github.com/ProtonMail/go-crypto v1.1.6 // @grafana/plugins-platform-backend | ||||
| 	github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f // @grafana/grafana-backend-group | ||||
|  | @ -182,10 +182,10 @@ require ( | |||
| 	golang.org/x/oauth2 v0.27.0 // @grafana/identity-access-team | ||||
| 	golang.org/x/sync v0.12.0 // @grafana/alerting-backend | ||||
| 	golang.org/x/text v0.23.0 // @grafana/grafana-backend-group | ||||
| 	golang.org/x/time v0.9.0 // @grafana/grafana-backend-group | ||||
| 	golang.org/x/time v0.10.0 // @grafana/grafana-backend-group | ||||
| 	golang.org/x/tools v0.31.0 // indirect; @grafana/grafana-as-code | ||||
| 	gonum.org/v1/gonum v0.15.1 // @grafana/oss-big-tent | ||||
| 	google.golang.org/api v0.220.0 // @grafana/grafana-backend-group | ||||
| 	google.golang.org/api v0.223.0 // @grafana/grafana-backend-group | ||||
| 	google.golang.org/grpc v1.71.0 // @grafana/plugins-platform-backend | ||||
| 	google.golang.org/protobuf v1.36.6 // @grafana/plugins-platform-backend | ||||
| 	gopkg.in/ini.v1 v1.67.0 // @grafana/alerting-backend | ||||
|  | @ -231,7 +231,7 @@ require ( | |||
| require ( | ||||
| 	cel.dev/expr v0.19.1 // indirect | ||||
| 	cloud.google.com/go v0.118.2 // indirect | ||||
| 	cloud.google.com/go/auth v0.14.1 // indirect | ||||
| 	cloud.google.com/go/auth v0.15.0 // indirect | ||||
| 	cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect | ||||
| 	cloud.google.com/go/compute/metadata v0.6.0 // indirect | ||||
| 	cloud.google.com/go/iam v1.3.1 // indirect | ||||
|  | @ -513,7 +513,7 @@ require ( | |||
| 	github.com/skeema/knownhosts v1.3.1 // indirect | ||||
| 	github.com/sony/gobreaker v0.5.0 // indirect | ||||
| 	github.com/sourcegraph/conc v0.3.0 // indirect | ||||
| 	github.com/spf13/afero v1.11.0 // indirect | ||||
| 	github.com/spf13/afero v1.12.0 // indirect | ||||
| 	github.com/spf13/cast v1.7.0 // indirect | ||||
| 	github.com/spf13/viper v1.19.0 // indirect | ||||
| 	github.com/stoewer/go-strcase v1.3.0 // indirect | ||||
|  | @ -577,6 +577,11 @@ require ( | |||
| 	sigs.k8s.io/yaml v1.4.0 // indirect | ||||
| ) | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| ) | ||||
| 
 | ||||
| // Use fork of crewjam/saml with fixes for some issues until changes get merged into upstream | ||||
| replace github.com/crewjam/saml => github.com/grafana/saml v0.4.15-0.20240917091248-ae3bbdad8a56 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										32
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										32
									
								
								go.sum
								
								
								
								
							|  | @ -109,8 +109,8 @@ cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVo | |||
| cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= | ||||
| cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= | ||||
| cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= | ||||
| cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= | ||||
| cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= | ||||
| cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= | ||||
| cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= | ||||
| cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= | ||||
| cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= | ||||
| cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= | ||||
|  | @ -707,8 +707,8 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5g | |||
| github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= | ||||
| github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= | ||||
| github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= | ||||
|  | @ -736,8 +736,8 @@ github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy86 | |||
| github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= | ||||
| github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= | ||||
| github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= | ||||
| github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | ||||
| github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= | ||||
| github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= | ||||
| github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= | ||||
| github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= | ||||
|  | @ -2085,13 +2085,13 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W | |||
| github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||
| github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= | ||||
| github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= | ||||
| github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||
| github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/open-feature/go-sdk v1.14.1 h1:jcxjCIG5Up3XkgYwWN5Y/WWfc6XobOhqrIwjyDBsoQo= | ||||
| github.com/open-feature/go-sdk v1.14.1/go.mod h1:t337k0VB/t/YxJ9S0prT30ISUHwYmUd/jhUZgFcOvGg= | ||||
| github.com/open-feature/go-sdk-contrib/providers/go-feature-flag v0.2.3 h1:6jpO63NCEZv4xunJj+aNlDuFVuRkVBPMcIuxvFPYRWQ= | ||||
|  | @ -2348,8 +2348,8 @@ github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY52 | |||
| github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= | ||||
| github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= | ||||
| github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= | ||||
| github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= | ||||
| github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= | ||||
| github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= | ||||
| github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= | ||||
| github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= | ||||
| github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= | ||||
| github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= | ||||
|  | @ -3018,8 +3018,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb | |||
| golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
|  | @ -3187,8 +3187,8 @@ google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjY | |||
| google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= | ||||
| google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= | ||||
| google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= | ||||
| google.golang.org/api v0.220.0 h1:3oMI4gdBgB72WFVwE1nerDD8W3HUOS4kypK6rRLbGns= | ||||
| google.golang.org/api v0.220.0/go.mod h1:26ZAlY6aN/8WgpCzjPNy18QpYaz7Zgg1h0qe1GkZEmY= | ||||
| google.golang.org/api v0.223.0 h1:JUTaWEriXmEy5AhvdMgksGGPEFsYfUKaPEYXd4c3Wvc= | ||||
| google.golang.org/api v0.223.0/go.mod h1:C+RS7Z+dDwds2b+zoAk5hN/eSfsiCn0UDrYof/M4d2M= | ||||
| google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||
| google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
| google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
|  |  | |||
							
								
								
									
										33
									
								
								go.work.sum
								
								
								
								
							
							
						
						
									
										33
									
								
								go.work.sum
								
								
								
								
							|  | @ -443,6 +443,7 @@ cloud.google.com/go/speech v1.26.0 h1:qvURtJs7BQzQhbxWxwai0pT79S8KLVKJ/4W8igVkt1 | |||
| cloud.google.com/go/speech v1.26.0/go.mod h1:78bqDV2SgwFlP/M4n3i3PwLthFq6ta7qmyG6lUV7UCA= | ||||
| cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= | ||||
| cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= | ||||
| cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= | ||||
| cloud.google.com/go/storagetransfer v1.11.1 h1:Hd7H1zXGQGEWyWXxWVXDMuNCGasNQim1y9CIaMZIBX8= | ||||
| cloud.google.com/go/storagetransfer v1.11.1/go.mod h1:xnJo9pWysRIha8MgZxhrBEwLYbEdvdmEedhNsP5NINM= | ||||
| cloud.google.com/go/storagetransfer v1.12.1 h1:W3v9A7MGBN7H9sAFstyciwP/1XEQhUhZfrjclmDnpMs= | ||||
|  | @ -662,6 +663,8 @@ github.com/aws/aws-sdk-go-v2/service/sqs v1.34.3/go.mod h1:L0enV3GCRd5iG9B64W35C | |||
| github.com/aws/aws-sdk-go-v2/service/ssm v1.52.4 h1:hgSBvRT7JEWx2+vEGI9/Ld5rZtl7M5lu8PqdvOmbRHw= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssm v1.52.4/go.mod h1:v7NIzEFIHBiicOMaMTuEmbnzGnqW0d+6ulNALul6fYE= | ||||
| github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= | ||||
| github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8= | ||||
| github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA= | ||||
| github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= | ||||
| github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= | ||||
| github.com/baidubce/bce-sdk-go v0.9.188 h1:8MA7ewe4VpX01uYl7Kic6ZvfIReUFdSKbY46ZqlQM7U= | ||||
|  | @ -723,6 +726,8 @@ github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEe | |||
| github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= | ||||
| github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= | ||||
| github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= | ||||
| github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30= | ||||
| github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U= | ||||
| github.com/checkpoint-restore/go-criu/v5 v5.0.0 h1:TW8f/UvntYoVDMN1K2HlT82qH1rb0sOjpGw3m6Ym+i4= | ||||
| github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= | ||||
| github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= | ||||
|  | @ -909,6 +914,8 @@ github.com/eapache/go-resiliency v1.6.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6 | |||
| github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 h1:Oy0F4ALJ04o5Qqpdz8XLIpNA3WM/iSIXqxtqo7UGVws= | ||||
| github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= | ||||
| github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= | ||||
| github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= | ||||
| github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= | ||||
| github.com/efficientgo/tools/core v0.0.0-20220225185207-fe763185946b h1:ZHiD4/yE4idlbqvAO6iYCOYRzOMRpxkW+FKasRA3tsQ= | ||||
| github.com/efficientgo/tools/core v0.0.0-20220225185207-fe763185946b/go.mod h1:OmVcnJopJL8d3X3sSXTiypGoUSgFq1aDGmlrdi9dn/M= | ||||
| github.com/elastic/go-sysinfo v1.8.1/go.mod h1:JfllUnzoQV/JRYymbH3dO1yggI3mV2oTKSXsDHM+uIM= | ||||
|  | @ -923,6 +930,7 @@ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1 | |||
| github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= | ||||
| github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= | ||||
| github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= | ||||
| github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= | ||||
| github.com/envoyproxy/go-control-plane/envoy v1.32.3/go.mod h1:F6hWupPfh75TBXGKA++MCT/CZHFq5r9/uwt/kQYkZfE= | ||||
| github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= | ||||
| github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= | ||||
|  | @ -1031,6 +1039,8 @@ github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzq | |||
| github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= | ||||
| github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= | ||||
| github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= | ||||
| github.com/golangci/modinfo v0.3.3 h1:YBQDZpDMJpe5mtd0klUFYL8tSVkmF3cmm0fZ48sc7+s= | ||||
| github.com/golangci/modinfo v0.3.3/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= | ||||
| github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12 h1:uK3X/2mt4tbSGoHvbLBHUny7CKiuwUip3MArtukol4E= | ||||
| github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= | ||||
| github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= | ||||
|  | @ -1040,6 +1050,8 @@ github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | |||
| github.com/google/cel-go v0.22.0/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8= | ||||
| github.com/google/generative-ai-go v0.18.0 h1:6ybg9vOCLcI/UpBBYXOTVgvKmcUKFRNj+2Cj3GnebSo= | ||||
| github.com/google/generative-ai-go v0.18.0/go.mod h1:JYolL13VG7j79kM5BtHz4qwONHkeJQzOCkKXnpqtS/E= | ||||
| github.com/google/generative-ai-go v0.19.0 h1:R71szggh8wHMCUlEMsW2A/3T+5LdEIkiaHSYgSpUgdg= | ||||
| github.com/google/generative-ai-go v0.19.0/go.mod h1:JYolL13VG7j79kM5BtHz4qwONHkeJQzOCkKXnpqtS/E= | ||||
| github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= | ||||
| github.com/google/go-jsonnet v0.18.0 h1:/6pTy6g+Jh1a1I2UMoAODkqELFiVIdOxbNwv0DDzoOg= | ||||
| github.com/google/go-jsonnet v0.18.0/go.mod h1:C3fTzyVJDslXdiTqw/bTFk7vSGyCtH3MGRbDfvEwGd0= | ||||
|  | @ -1065,6 +1077,7 @@ github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07 | |||
| github.com/googleapis/gnostic v0.3.0 h1:CcQijm0XKekKjP/YCz28LXVSpgguuB+nCxaSjCe09y0= | ||||
| github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= | ||||
| github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= | ||||
| github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4= | ||||
| github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ= | ||||
| github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= | ||||
| github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= | ||||
|  | @ -1112,8 +1125,6 @@ github.com/grafana/grafana/pkg/semconv v0.0.0-20250121113133-e747350fee2d/go.mod | |||
| github.com/grafana/grafana/pkg/storage/unified/apistore v0.0.0-20250121113133-e747350fee2d/go.mod h1:CXpwZ3Mkw6xVlGKc0SqUxqXCP3Uv182q6qAQnLaLxRg= | ||||
| github.com/grafana/prometheus-alertmanager v0.25.1-0.20240930132144-b5e64e81e8d3 h1:6D2gGAwyQBElSrp3E+9lSr7k8gLuP3Aiy20rweLWeBw= | ||||
| github.com/grafana/prometheus-alertmanager v0.25.1-0.20240930132144-b5e64e81e8d3/go.mod h1:YeND+6FDA7OuFgDzYODN8kfPhXLCehcpxe4T9mdnpCY= | ||||
| github.com/grafana/prometheus-alertmanager v0.25.1-0.20250331083058-4563aec7a975 h1:4/BZkGObFWZf4cLbE2Vqg/1VTz67Q0AJ7LHspWLKJoQ= | ||||
| github.com/grafana/prometheus-alertmanager v0.25.1-0.20250331083058-4563aec7a975/go.mod h1:FGdGvhI40Dq+CTQaSzK9evuve774cgOUdGfVO04OXkw= | ||||
| github.com/grafana/tail v0.0.0-20230510142333-77b18831edf0 h1:bjh0PVYSVVFxzINqPFYJmAmJNrWPgnVjuSdYJGHmtFU= | ||||
| github.com/grafana/tail v0.0.0-20230510142333-77b18831edf0/go.mod h1:7t5XR+2IA8P2qggOAHTj/GCZfoLBle3OvNSYh1VkRBU= | ||||
| github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= | ||||
|  | @ -1337,6 +1348,8 @@ github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1 | |||
| github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5 h1:0KqC6/sLy7fDpBdybhVkkv4Yz+PmB7c9Dz9z3dLW804= | ||||
| github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= | ||||
| github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= | ||||
| github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= | ||||
| github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= | ||||
| github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8 h1:P48LjvUQpTReR3TQRbxSeSBsMXzfK0uol7eRcr7VBYQ= | ||||
| github.com/natessilva/dag v0.0.0-20180124060714-7194b8dcc5c4 h1:dnMxwus89s86tI8rcGVp2HwZzlz7c5o92VOy7dSckBQ= | ||||
| github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= | ||||
|  | @ -1372,6 +1385,7 @@ github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvw | |||
| github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= | ||||
| github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= | ||||
| github.com/onsi/ginkgo/v2 v2.20.1/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI= | ||||
| github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM= | ||||
| github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= | ||||
| github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= | ||||
| github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= | ||||
|  | @ -1469,6 +1483,8 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgc | |||
| github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= | ||||
| github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= | ||||
| github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= | ||||
| github.com/pkg/sftp v1.13.7 h1:uv+I3nNJvlKZIQGSr8JVQLNHFU9YhhNpvC14Y6KgmSM= | ||||
| github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= | ||||
| github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= | ||||
| github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= | ||||
| github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= | ||||
|  | @ -1525,12 +1541,14 @@ github.com/schollz/progressbar/v3 v3.14.6/go.mod h1:Nrzpuw3Nl0srLY0VlTvC4V6RL50p | |||
| github.com/seccomp/libseccomp-golang v0.9.1 h1:NJjM5DNFOs0s3kYE1WUOr6G8V97sdt46rlXTMfXGWBo= | ||||
| github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= | ||||
| github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= | ||||
| github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= | ||||
| github.com/shirou/gopsutil/v3 v3.24.4 h1:dEHgzZXt4LMNm+oYELpzl9YCqV65Yr/6SfrvgRBtXeU= | ||||
| github.com/shirou/gopsutil/v3 v3.24.4/go.mod h1:lTd2mdiOspcqLgAnr9/nGi71NkeMpWKdmhuxm9GusH8= | ||||
| github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= | ||||
| github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= | ||||
| github.com/shirou/gopsutil/v4 v4.24.0-alpha.1 h1:lLPAdP4TpfgJ5byoc3EFwNSKZj8kCnDFHtuWTktWl0s= | ||||
| github.com/shirou/gopsutil/v4 v4.24.0-alpha.1/go.mod h1:GVpYUxBee6CTWux2/JslZ7fYPwqkQ8YDJSXmGAryYy4= | ||||
| github.com/shirou/gopsutil/v4 v4.25.2 h1:NMscG3l2CqtWFS86kj3vP7soOczqrQYIEhO/pMvvQkk= | ||||
| github.com/shirou/gopsutil/v4 v4.25.2/go.mod h1:34gBYJzyqCDT11b6bMHP0XCvWeU3J61XRT7a2EmCRTA= | ||||
| github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= | ||||
| github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= | ||||
| github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= | ||||
|  | @ -1637,8 +1655,6 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 | |||
| github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | ||||
| github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= | ||||
| github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= | ||||
| github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= | ||||
| github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= | ||||
| github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 h1:LY6cI8cP4B9rrpTleZk95+08kl2gF4rixG7+V/dwL6Q= | ||||
| github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77/go.mod h1:Er+FePu1dNUieD+XTMDduGpQuCPssK5Q4BjF+IIXJ3I= | ||||
|  | @ -1898,7 +1914,7 @@ golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc | |||
| golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= | ||||
| golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= | ||||
| golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= | ||||
| golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
|  | @ -1963,6 +1979,7 @@ google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOn | |||
| google.golang.org/api v0.203.0/go.mod h1:BuOVyCSYEPwJb3npWvDnNmFI92f3GeRnHNkETneT3SI= | ||||
| google.golang.org/api v0.211.0/go.mod h1:XOloB4MXFH4UTlQSGuNUxw0UT74qdENK8d6JNsXKLi0= | ||||
| google.golang.org/api v0.214.0/go.mod h1:bYPpLG8AyeMWwDU6NXoB00xC0DFkikVvd5MfwoxjLqE= | ||||
| google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= | ||||
| google.golang.org/api v0.217.0/go.mod h1:qMc2E8cBAbQlRypBTBWHklNJlaZZJBwDv81B1Iu8oSI= | ||||
| google.golang.org/api v0.218.0/go.mod h1:5VGHBAkxrA/8EFjLVEYmMUJ8/8+gWWQ3s4cFH0FxG2M= | ||||
| google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
|  | @ -2004,6 +2021,8 @@ google.golang.org/genproto/googleapis/bytestream v0.0.0-20250102185135-698230207 | |||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20250102185135-69823020774d/go.mod h1:s4mHJ3FfG8P6A3O+gZ8TVqB3ufjOl9UG3ANCMMwCHmo= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20250127172529-29210b9bc287 h1:c/HGC2hBfwgjeBtQMLjfmuS2KG28ngtUpn5XiX8o3rY= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20250127172529-29210b9bc287/go.mod h1:7VGktjvijnuhf2AobFqsoaBGnG8rImcxqoL+QPBPRq4= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20250219182151-9fdb1cabc7b2 h1:UZtupsOaDeUm4KiG4HQTSyENUuCayW8K5d5cs7zK79c= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:35wIojE/F1ptq1nfNDNjtowabHoMSA2qQs7+smpCO5s= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= | ||||
|  | @ -2021,12 +2040,14 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go. | |||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250124145028-65684f501c47/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250212204824-5a70512c5d8b/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | ||||
| google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ require ( | |||
| 
 | ||||
| require ( | ||||
| 	cel.dev/expr v0.19.1 // indirect | ||||
| 	github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect | ||||
| 	github.com/BurntSushi/toml v1.5.0 // indirect | ||||
| 	github.com/NYTimes/gziphandler v1.1.1 // indirect | ||||
| 	github.com/antlr4-go/antlr/v4 v4.13.1 // indirect | ||||
| 	github.com/apache/arrow-go/v18 v18.2.0 // indirect | ||||
|  | @ -59,7 +59,6 @@ require ( | |||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/gorilla/mux v1.8.1 // indirect | ||||
| 	github.com/gorilla/websocket v1.5.3 // indirect | ||||
|  | @ -94,8 +93,8 @@ require ( | |||
| 	github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect | ||||
| 	github.com/oklog/run v1.1.0 // indirect | ||||
| 	github.com/olekukonko/tablewriter v0.0.5 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| 	github.com/perimeterx/marshmallow v1.1.5 // indirect | ||||
| 	github.com/pierrec/lz4/v4 v4.1.22 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
|  | @ -145,7 +144,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect | ||||
| 	google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4 // indirect | ||||
|  |  | |||
|  | @ -3,8 +3,8 @@ cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= | |||
| cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= | ||||
| github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | ||||
| github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= | ||||
| github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= | ||||
| github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= | ||||
|  | @ -240,10 +240,10 @@ github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= | |||
| github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= | ||||
| github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= | ||||
| github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||
| github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= | ||||
| github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= | ||||
|  | @ -453,8 +453,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
|  |  | |||
|  | @ -151,7 +151,7 @@ func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) { | |||
| 	if !ok { | ||||
| 		return nil, nil, fmt.Errorf("given object is not a DataPlaneService") | ||||
| 	} | ||||
| 	return labels.Set(s.ObjectMeta.Labels), ToSelectableFields(s), nil | ||||
| 	return labels.Set(s.Labels), ToSelectableFields(s), nil | ||||
| } | ||||
| 
 | ||||
| // MatchDataPlaneService is the filter used by the generic etcd backend to watch events
 | ||||
|  |  | |||
|  | @ -709,9 +709,9 @@ func getMultiAccessControlMetadata(c *contextmodel.ReqContext, | |||
| 		return map[string]ac.Metadata{} | ||||
| 	} | ||||
| 
 | ||||
| 	if len(c.SignedInUser.GetPermissions()) == 0 { | ||||
| 	if len(c.GetPermissions()) == 0 { | ||||
| 		return map[string]ac.Metadata{} | ||||
| 	} | ||||
| 
 | ||||
| 	return ac.GetResourcesMetadata(c.Req.Context(), c.SignedInUser.GetPermissions(), prefix, resourceIDs) | ||||
| 	return ac.GetResourcesMetadata(c.Req.Context(), c.GetPermissions(), prefix, resourceIDs) | ||||
| } | ||||
|  |  | |||
|  | @ -69,7 +69,7 @@ func (hs *HTTPServer) AdminGetStats(c *contextmodel.ReqContext) response.Respons | |||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to get anon stats from database", err) | ||||
| 	} | ||||
| 	adminStats.AnonymousStats.ActiveDevices = devicesCount | ||||
| 	adminStats.ActiveDevices = devicesCount | ||||
| 
 | ||||
| 	return response.JSON(http.StatusOK, adminStats) | ||||
| } | ||||
|  |  | |||
|  | @ -367,7 +367,7 @@ func (hs *HTTPServer) AdminLogoutUser(c *contextmodel.ReqContext) response.Respo | |||
| 		return response.Error(http.StatusBadRequest, "id is invalid", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if c.SignedInUser.GetID() == authlib.NewTypeID(authlib.TypeUser, id) { | ||||
| 	if c.GetID() == authlib.NewTypeID(authlib.TypeUser, id) { | ||||
| 		return response.Error(http.StatusBadRequest, "You cannot logout yourself", nil) | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -37,7 +37,7 @@ func (hs *HTTPServer) GetAnnotations(c *contextmodel.ReqContext) response.Respon | |||
| 	query := &annotations.ItemQuery{ | ||||
| 		From:         c.QueryInt64("from"), | ||||
| 		To:           c.QueryInt64("to"), | ||||
| 		OrgID:        c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:        c.GetOrgID(), | ||||
| 		UserID:       c.QueryInt64("userId"), | ||||
| 		AlertID:      c.QueryInt64("alertId"), | ||||
| 		AlertUID:     c.Query("alertUID"), | ||||
|  | @ -56,7 +56,7 @@ func (hs *HTTPServer) GetAnnotations(c *contextmodel.ReqContext) response.Respon | |||
| 
 | ||||
| 	// When dashboard UID present in the request, we ignore dashboard ID
 | ||||
| 	if query.DashboardUID != "" { | ||||
| 		dq := dashboards.GetDashboardQuery{UID: query.DashboardUID, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 		dq := dashboards.GetDashboardQuery{UID: query.DashboardUID, OrgID: c.GetOrgID()} | ||||
| 		dqResult, err := hs.DashboardService.GetDashboard(c.Req.Context(), &dq) | ||||
| 		if err != nil { | ||||
| 			return response.Error(http.StatusBadRequest, "Invalid dashboard UID in annotation request", err) | ||||
|  | @ -81,7 +81,7 @@ func (hs *HTTPServer) GetAnnotations(c *contextmodel.ReqContext) response.Respon | |||
| 			if val, ok := dashboardCache[item.DashboardID]; ok { | ||||
| 				item.DashboardUID = val | ||||
| 			} else { | ||||
| 				query := dashboards.GetDashboardQuery{ID: item.DashboardID, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 				query := dashboards.GetDashboardQuery{ID: item.DashboardID, OrgID: c.GetOrgID()} | ||||
| 				queryResult, err := hs.DashboardService.GetDashboard(c.Req.Context(), &query) | ||||
| 				if err == nil && queryResult != nil { | ||||
| 					item.DashboardUID = &queryResult.UID | ||||
|  | @ -124,7 +124,7 @@ func (hs *HTTPServer) PostAnnotation(c *contextmodel.ReqContext) response.Respon | |||
| 
 | ||||
| 	// overwrite dashboardId when dashboardUID is not empty
 | ||||
| 	if cmd.DashboardUID != "" { | ||||
| 		query := dashboards.GetDashboardQuery{OrgID: c.SignedInUser.GetOrgID(), UID: cmd.DashboardUID} | ||||
| 		query := dashboards.GetDashboardQuery{OrgID: c.GetOrgID(), UID: cmd.DashboardUID} | ||||
| 		queryResult, err := hs.DashboardService.GetDashboard(c.Req.Context(), &query) | ||||
| 		if err == nil { | ||||
| 			cmd.DashboardId = queryResult.ID | ||||
|  | @ -148,7 +148,7 @@ func (hs *HTTPServer) PostAnnotation(c *contextmodel.ReqContext) response.Respon | |||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 	item := annotations.Item{ | ||||
| 		OrgID:       c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:       c.GetOrgID(), | ||||
| 		UserID:      userID, | ||||
| 		DashboardID: cmd.DashboardId, | ||||
| 		PanelID:     cmd.PanelId, | ||||
|  | @ -231,7 +231,7 @@ func (hs *HTTPServer) PostGraphiteAnnotation(c *contextmodel.ReqContext) respons | |||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 	item := annotations.Item{ | ||||
| 		OrgID:  c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:  c.GetOrgID(), | ||||
| 		UserID: userID, | ||||
| 		Epoch:  cmd.When * 1000, | ||||
| 		Text:   text, | ||||
|  | @ -284,7 +284,7 @@ func (hs *HTTPServer) UpdateAnnotation(c *contextmodel.ReqContext) response.Resp | |||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 	item := annotations.Item{ | ||||
| 		OrgID:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:    c.GetOrgID(), | ||||
| 		UserID:   userID, | ||||
| 		ID:       annotationID, | ||||
| 		Epoch:    cmd.Time, | ||||
|  | @ -342,7 +342,7 @@ func (hs *HTTPServer) PatchAnnotation(c *contextmodel.ReqContext) response.Respo | |||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 	existing := annotations.Item{ | ||||
| 		OrgID:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:    c.GetOrgID(), | ||||
| 		UserID:   userID, | ||||
| 		ID:       annotationID, | ||||
| 		Epoch:    annotation.Time, | ||||
|  | @ -395,7 +395,7 @@ func (hs *HTTPServer) MassDeleteAnnotations(c *contextmodel.ReqContext) response | |||
| 	} | ||||
| 
 | ||||
| 	if cmd.DashboardUID != "" { | ||||
| 		query := dashboards.GetDashboardQuery{OrgID: c.SignedInUser.GetOrgID(), UID: cmd.DashboardUID} | ||||
| 		query := dashboards.GetDashboardQuery{OrgID: c.GetOrgID(), UID: cmd.DashboardUID} | ||||
| 		queryResult, err := hs.DashboardService.GetDashboard(c.Req.Context(), &query) | ||||
| 		if err == nil { | ||||
| 			cmd.DashboardId = queryResult.ID | ||||
|  | @ -420,13 +420,13 @@ func (hs *HTTPServer) MassDeleteAnnotations(c *contextmodel.ReqContext) response | |||
| 		} | ||||
| 		dashboardId = annotation.DashboardID | ||||
| 		deleteParams = &annotations.DeleteParams{ | ||||
| 			OrgID: c.SignedInUser.GetOrgID(), | ||||
| 			OrgID: c.GetOrgID(), | ||||
| 			ID:    cmd.AnnotationId, | ||||
| 		} | ||||
| 	} else { | ||||
| 		dashboardId = cmd.DashboardId | ||||
| 		deleteParams = &annotations.DeleteParams{ | ||||
| 			OrgID:       c.SignedInUser.GetOrgID(), | ||||
| 			OrgID:       c.GetOrgID(), | ||||
| 			DashboardID: cmd.DashboardId, | ||||
| 			PanelID:     cmd.PanelId, | ||||
| 		} | ||||
|  | @ -507,7 +507,7 @@ func (hs *HTTPServer) DeleteAnnotationByID(c *contextmodel.ReqContext) response. | |||
| 	} | ||||
| 
 | ||||
| 	err = hs.annotationsRepo.Delete(c.Req.Context(), &annotations.DeleteParams{ | ||||
| 		OrgID: c.SignedInUser.GetOrgID(), | ||||
| 		OrgID: c.GetOrgID(), | ||||
| 		ID:    annotationID, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
|  | @ -561,7 +561,7 @@ func findAnnotationByID(ctx context.Context, repo annotations.Repository, annota | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetAnnotationTags(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := &annotations.TagsQuery{ | ||||
| 		OrgID: c.SignedInUser.GetOrgID(), | ||||
| 		OrgID: c.GetOrgID(), | ||||
| 		Tag:   c.Query("tag"), | ||||
| 		Limit: c.QueryInt64("limit"), | ||||
| 	} | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ import ( | |||
| // 404: notFoundError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetAPIKeys(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := apikey.GetApiKeysQuery{OrgID: c.SignedInUser.GetOrgID(), User: c.SignedInUser, IncludeExpired: c.QueryBool("includeExpired")} | ||||
| 	query := apikey.GetApiKeysQuery{OrgID: c.GetOrgID(), User: c.SignedInUser, IncludeExpired: c.QueryBool("includeExpired")} | ||||
| 
 | ||||
| 	keys, err := hs.apiKeyService.GetAPIKeys(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
|  | @ -86,7 +86,7 @@ func (hs *HTTPServer) DeleteAPIKey(c *contextmodel.ReqContext) response.Response | |||
| 		return response.Error(http.StatusBadRequest, "id is invalid", err) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd := &apikey.DeleteCommand{ID: id, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	cmd := &apikey.DeleteCommand{ID: id, OrgID: c.GetOrgID()} | ||||
| 	err = hs.apiKeyService.DeleteApiKey(c.Req.Context(), cmd) | ||||
| 	if err != nil { | ||||
| 		var status int | ||||
|  |  | |||
|  | @ -52,11 +52,11 @@ func (hs *HTTPServer) isDashboardStarredByUser(c *contextmodel.ReqContext, dashI | |||
| 		return false, nil | ||||
| 	} | ||||
| 
 | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return false, nil | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
|  | @ -97,14 +97,14 @@ func (hs *HTTPServer) GetDashboard(c *contextmodel.ReqContext) response.Response | |||
| 	c.Req = c.Req.WithContext(ctx) | ||||
| 
 | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	dash, rsp := hs.getDashboardHelper(ctx, c.SignedInUser.GetOrgID(), 0, uid) | ||||
| 	dash, rsp := hs.getDashboardHelper(ctx, c.GetOrgID(), 0, uid) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
| 
 | ||||
| 	// v2 is not supported in /api
 | ||||
| 	if strings.HasPrefix(dash.APIVersion, "v2") { | ||||
| 		url := fmt.Sprintf("/apis/dashboard.grafana.app/%s/namespaces/%s/dashboards/%s", dash.APIVersion, hs.namespacer(c.SignedInUser.GetOrgID()), dash.UID) | ||||
| 		url := fmt.Sprintf("/apis/dashboard.grafana.app/%s/namespaces/%s/dashboards/%s", dash.APIVersion, hs.namespacer(c.GetOrgID()), dash.UID) | ||||
| 		return response.Error(http.StatusNotAcceptable, "dashboard api version not supported, use "+url+" instead", nil) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -115,7 +115,7 @@ func (hs *HTTPServer) GetDashboard(c *contextmodel.ReqContext) response.Response | |||
| 
 | ||||
| 	// If public dashboards is enabled and we have a public dashboard, update meta values
 | ||||
| 	if hs.Cfg.PublicDashboardsEnabled { | ||||
| 		publicDashboard, err := hs.PublicDashboardsApi.PublicDashboardService.FindByDashboardUid(ctx, c.SignedInUser.GetOrgID(), dash.UID) | ||||
| 		publicDashboard, err := hs.PublicDashboardsApi.PublicDashboardService.FindByDashboardUid(ctx, c.GetOrgID(), dash.UID) | ||||
| 		if err != nil && !errors.Is(err, publicdashboardModels.ErrPublicDashboardNotFound) { | ||||
| 			return response.Error(http.StatusInternalServerError, "Error while retrieving public dashboards", err) | ||||
| 		} | ||||
|  | @ -205,7 +205,7 @@ func (hs *HTTPServer) GetDashboard(c *contextmodel.ReqContext) response.Response | |||
| 	// lookup folder title & url
 | ||||
| 	if dash.FolderUID != "" && hs.Features.IsEnabledGlobally(featuremgmt.FlagKubernetesClientDashboardsFolders) { | ||||
| 		queryResult, err := hs.folderService.Get(ctx, &folder.GetFolderQuery{ | ||||
| 			OrgID:        c.SignedInUser.GetOrgID(), | ||||
| 			OrgID:        c.GetOrgID(), | ||||
| 			UID:          &dash.FolderUID, | ||||
| 			SignedInUser: c.SignedInUser, | ||||
| 		}) | ||||
|  | @ -368,7 +368,7 @@ func (hs *HTTPServer) deleteDashboard(c *contextmodel.ReqContext) response.Respo | |||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 
 | ||||
| 	var rsp response.Response | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), 0, uid) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), 0, uid) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
|  | @ -386,7 +386,7 @@ func (hs *HTTPServer) deleteDashboard(c *contextmodel.ReqContext) response.Respo | |||
| 			"error", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = hs.DashboardService.DeleteDashboard(c.Req.Context(), dash.ID, dash.UID, c.SignedInUser.GetOrgID()) | ||||
| 	err = hs.DashboardService.DeleteDashboard(c.Req.Context(), dash.ID, dash.UID, c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		var dashboardErr dashboardaccess.DashboardErr | ||||
| 		if ok := errors.As(err, &dashboardErr); ok { | ||||
|  | @ -404,7 +404,7 @@ func (hs *HTTPServer) deleteDashboard(c *contextmodel.ReqContext) response.Respo | |||
| 	} | ||||
| 
 | ||||
| 	if hs.Live != nil { | ||||
| 		err := hs.Live.GrafanaScope.Dashboards.DashboardDeleted(c.SignedInUser.GetOrgID(), c.SignedInUser, dash.UID) | ||||
| 		err := hs.Live.GrafanaScope.Dashboards.DashboardDeleted(c.GetOrgID(), c.SignedInUser, dash.UID) | ||||
| 		if err != nil { | ||||
| 			hs.log.Error("Failed to broadcast delete info", "dashboard", dash.UID, "error", err) | ||||
| 		} | ||||
|  | @ -458,11 +458,11 @@ func (hs *HTTPServer) postDashboard(c *contextmodel.ReqContext, cmd dashboards.S | |||
| 	var err error | ||||
| 
 | ||||
| 	var userID int64 | ||||
| 	if id, err := identity.UserIdentifier(c.SignedInUser.GetID()); err == nil { | ||||
| 	if id, err := identity.UserIdentifier(c.GetID()); err == nil { | ||||
| 		userID = id | ||||
| 	} | ||||
| 
 | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	cmd.UserID = userID | ||||
| 
 | ||||
| 	dash := cmd.GetDashboardModel() | ||||
|  | @ -500,7 +500,7 @@ func (hs *HTTPServer) postDashboard(c *contextmodel.ReqContext, cmd dashboards.S | |||
| 	dashItem := &dashboards.SaveDashboardDTO{ | ||||
| 		Dashboard: dash, | ||||
| 		Message:   cmd.Message, | ||||
| 		OrgID:     c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:     c.GetOrgID(), | ||||
| 		User:      c.SignedInUser, | ||||
| 		Overwrite: cmd.Overwrite, | ||||
| 	} | ||||
|  | @ -516,10 +516,10 @@ func (hs *HTTPServer) postDashboard(c *contextmodel.ReqContext, cmd dashboards.S | |||
| 		// This will broadcast all save requests only if a `gitops` observer exists.
 | ||||
| 		// gitops is useful when trying to save dashboards in an environment where the user can not save
 | ||||
| 		channel := hs.Live.GrafanaScope.Dashboards | ||||
| 		liveerr := channel.DashboardSaved(c.SignedInUser.GetOrgID(), c.SignedInUser, cmd.Message, dashboard, saveErr) | ||||
| 		liveerr := channel.DashboardSaved(c.GetOrgID(), c.SignedInUser, cmd.Message, dashboard, saveErr) | ||||
| 
 | ||||
| 		// When an error exists, but the value broadcast to a gitops listener return 202
 | ||||
| 		if liveerr == nil && saveErr != nil && channel.HasGitOpsObserver(c.SignedInUser.GetOrgID()) { | ||||
| 		if liveerr == nil && saveErr != nil && channel.HasGitOpsObserver(c.GetOrgID()) { | ||||
| 			return response.JSON(http.StatusAccepted, util.DynMap{ | ||||
| 				"status":  "pending", | ||||
| 				"message": "changes were broadcast to the gitops listener", | ||||
|  | @ -573,11 +573,11 @@ func (hs *HTTPServer) GetHomeDashboard(c *contextmodel.ReqContext) response.Resp | |||
| 	c.Req = c.Req.WithContext(ctx) | ||||
| 
 | ||||
| 	var userID int64 | ||||
| 	if id, err := identity.UserIdentifier(c.SignedInUser.GetID()); err == nil { | ||||
| 	if id, err := identity.UserIdentifier(c.GetID()); err == nil { | ||||
| 		userID = id | ||||
| 	} | ||||
| 
 | ||||
| 	prefsQuery := pref.GetPreferenceWithDefaultsQuery{OrgID: c.SignedInUser.GetOrgID(), UserID: userID, Teams: c.SignedInUser.GetTeams()} | ||||
| 	prefsQuery := pref.GetPreferenceWithDefaultsQuery{OrgID: c.GetOrgID(), UserID: userID, Teams: c.GetTeams()} | ||||
| 	homePage := hs.Cfg.HomePage | ||||
| 
 | ||||
| 	preference, err := hs.preferenceService.GetWithDefaults(c.Req.Context(), &prefsQuery) | ||||
|  | @ -620,7 +620,7 @@ func (hs *HTTPServer) GetHomeDashboard(c *contextmodel.ReqContext) response.Resp | |||
| 	}() | ||||
| 
 | ||||
| 	dash := dtos.DashboardFullWithMeta{} | ||||
| 	dash.Meta.CanEdit = c.SignedInUser.HasRole(org.RoleEditor) | ||||
| 	dash.Meta.CanEdit = c.HasRole(org.RoleEditor) | ||||
| 	dash.Meta.FolderTitle = "General" | ||||
| 	dash.Dashboard = simplejson.New() | ||||
| 
 | ||||
|  | @ -706,13 +706,13 @@ func (hs *HTTPServer) GetDashboardVersions(c *contextmodel.ReqContext) response. | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), dashID, dashUID) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), dashID, dashUID) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
| 
 | ||||
| 	query := dashver.ListDashboardVersionsQuery{ | ||||
| 		OrgID:         c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:         c.GetOrgID(), | ||||
| 		DashboardID:   dash.ID, | ||||
| 		DashboardUID:  dash.UID, | ||||
| 		Limit:         c.QueryInt("limit"), | ||||
|  | @ -747,7 +747,7 @@ func (hs *HTTPServer) GetDashboardVersions(c *contextmodel.ReqContext) response. | |||
| 			if found { | ||||
| 				creator = login | ||||
| 			} else { | ||||
| 				creator = hs.getIdentityName(c.Req.Context(), c.SignedInUser.GetOrgID(), version.CreatedBy) | ||||
| 				creator = hs.getIdentityName(c.Req.Context(), c.GetOrgID(), version.CreatedBy) | ||||
| 				if creator != anonString { | ||||
| 					loginMem[version.CreatedBy] = creator | ||||
| 				} | ||||
|  | @ -817,7 +817,7 @@ func (hs *HTTPServer) GetDashboardVersion(c *contextmodel.ReqContext) response.R | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), dashID, dashUID) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), dashID, dashUID) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
|  | @ -827,7 +827,7 @@ func (hs *HTTPServer) GetDashboardVersion(c *contextmodel.ReqContext) response.R | |||
| 		return response.Err(err) | ||||
| 	} | ||||
| 	query := dashver.GetDashboardVersionQuery{ | ||||
| 		OrgID:        c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:        c.GetOrgID(), | ||||
| 		DashboardID:  dash.ID, | ||||
| 		DashboardUID: dash.UID, | ||||
| 		Version:      version, | ||||
|  | @ -895,7 +895,7 @@ func (hs *HTTPServer) CalculateDashboardDiff(c *contextmodel.ReqContext) respons | |||
| 	} | ||||
| 
 | ||||
| 	options := dashdiffs.Options{ | ||||
| 		OrgId:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgId:    c.GetOrgID(), | ||||
| 		DiffType: dashdiffs.ParseDiffType(apiOptions.DiffType), | ||||
| 		Base: dashdiffs.DiffTarget{ | ||||
| 			DashboardId:      apiOptions.Base.DashboardId, | ||||
|  | @ -1001,12 +1001,12 @@ func (hs *HTTPServer) RestoreDashboardVersion(c *contextmodel.ReqContext) respon | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), dashID, dashUID) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), dashID, dashUID) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
| 
 | ||||
| 	versionQuery := dashver.GetDashboardVersionQuery{DashboardID: dashID, DashboardUID: dash.UID, Version: apiCmd.Version, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	versionQuery := dashver.GetDashboardVersionQuery{DashboardID: dashID, DashboardUID: dash.UID, Version: apiCmd.Version, OrgID: c.GetOrgID()} | ||||
| 	version, err := hs.dashboardVersionService.Get(c.Req.Context(), &versionQuery) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusNotFound, "Dashboard version not found", nil) | ||||
|  | @ -1020,13 +1020,13 @@ func (hs *HTTPServer) RestoreDashboardVersion(c *contextmodel.ReqContext) respon | |||
| 	} | ||||
| 
 | ||||
| 	var userID int64 | ||||
| 	if id, err := identity.UserIdentifier(c.SignedInUser.GetID()); err == nil { | ||||
| 	if id, err := identity.UserIdentifier(c.GetID()); err == nil { | ||||
| 		userID = id | ||||
| 	} | ||||
| 
 | ||||
| 	saveCmd := dashboards.SaveDashboardCommand{} | ||||
| 	saveCmd.RestoredFrom = version.Version | ||||
| 	saveCmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	saveCmd.OrgID = c.GetOrgID() | ||||
| 	saveCmd.UserID = userID | ||||
| 	saveCmd.Dashboard = version.Data | ||||
| 	saveCmd.Dashboard.Set("version", dash.Version) | ||||
|  | @ -1065,7 +1065,7 @@ func (hs *HTTPServer) GetDashboardTags(c *contextmodel.ReqContext) { | |||
| 	defer span.End() | ||||
| 	c.Req = c.Req.WithContext(ctx) | ||||
| 
 | ||||
| 	query := dashboards.GetDashboardTagsQuery{OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	query := dashboards.GetDashboardTagsQuery{OrgID: c.GetOrgID()} | ||||
| 	queryResult, err := hs.DashboardService.GetDashboardTags(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
| 		c.JsonApiErr(500, "Failed to get tags from database", err) | ||||
|  |  | |||
|  | @ -58,7 +58,7 @@ func (hs *HTTPServer) GetDashboardPermissionList(c *contextmodel.ReqContext) res | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), dashID, dashUID) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), dashID, dashUID) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
|  | @ -143,7 +143,7 @@ func (hs *HTTPServer) UpdateDashboardPermissions(c *contextmodel.ReqContext) res | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.SignedInUser.GetOrgID(), dashID, dashUID) | ||||
| 	dash, rsp := hs.getDashboardHelper(c.Req.Context(), c.GetOrgID(), dashID, dashUID) | ||||
| 	if rsp != nil { | ||||
| 		return rsp | ||||
| 	} | ||||
|  | @ -151,7 +151,7 @@ func (hs *HTTPServer) UpdateDashboardPermissions(c *contextmodel.ReqContext) res | |||
| 	items := make([]*dashboards.DashboardACL, 0, len(apiCmd.Items)) | ||||
| 	for _, item := range apiCmd.Items { | ||||
| 		items = append(items, &dashboards.DashboardACL{ | ||||
| 			OrgID:       c.SignedInUser.GetOrgID(), | ||||
| 			OrgID:       c.GetOrgID(), | ||||
| 			DashboardID: dashID, | ||||
| 			UserID:      item.UserID, | ||||
| 			TeamID:      item.TeamID, | ||||
|  |  | |||
|  | @ -233,7 +233,7 @@ func (hs *HTTPServer) DeleteDashboardSnapshot(c *contextmodel.ReqContext) respon | |||
| 			return response.Error(http.StatusInternalServerError, "Error while checking permissions for snapshot", err) | ||||
| 		} | ||||
| 
 | ||||
| 		if !canEdit && queryResult.UserID != c.SignedInUser.UserID && !errors.Is(err, dashboards.ErrDashboardNotFound) { | ||||
| 		if !canEdit && queryResult.UserID != c.UserID && !errors.Is(err, dashboards.ErrDashboardNotFound) { | ||||
| 			return response.Error(http.StatusForbidden, "Access denied to this snapshot", nil) | ||||
| 		} | ||||
| 	} | ||||
|  | @ -273,7 +273,7 @@ func (hs *HTTPServer) SearchDashboardSnapshots(c *contextmodel.ReqContext) respo | |||
| 	searchQuery := dashboardsnapshots.GetDashboardSnapshotsQuery{ | ||||
| 		Name:         query, | ||||
| 		Limit:        limit, | ||||
| 		OrgID:        c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:        c.GetOrgID(), | ||||
| 		SignedInUser: c.SignedInUser, | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ var datasourcesLogger = log.New("datasources") | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetDataSources(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := datasources.GetDataSourcesQuery{OrgID: c.SignedInUser.GetOrgID(), DataSourceLimit: hs.Cfg.DataSourceLimit} | ||||
| 	query := datasources.GetDataSourcesQuery{OrgID: c.GetOrgID(), DataSourceLimit: hs.Cfg.DataSourceLimit} | ||||
| 
 | ||||
| 	dataSources, err := hs.DataSourcesService.GetDataSources(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
|  | @ -112,7 +112,7 @@ func (hs *HTTPServer) GetDataSourceById(c *contextmodel.ReqContext) response.Res | |||
| 	} | ||||
| 	query := datasources.GetDataSourceQuery{ | ||||
| 		ID:    id, | ||||
| 		OrgID: c.SignedInUser.GetOrgID(), | ||||
| 		OrgID: c.GetOrgID(), | ||||
| 	} | ||||
| 
 | ||||
| 	dataSource, err := hs.DataSourcesService.GetDataSource(c.Req.Context(), &query) | ||||
|  | @ -161,7 +161,7 @@ func (hs *HTTPServer) DeleteDataSourceById(c *contextmodel.ReqContext) response. | |||
| 		return response.Error(http.StatusBadRequest, "Missing valid datasource id", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	ds, err := hs.getRawDataSourceById(c.Req.Context(), id, c.SignedInUser.GetOrgID()) | ||||
| 	ds, err := hs.getRawDataSourceById(c.Req.Context(), id, c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, datasources.ErrDataSourceNotFound) { | ||||
| 			return response.Error(http.StatusNotFound, "Data source not found", nil) | ||||
|  | @ -173,14 +173,14 @@ func (hs *HTTPServer) DeleteDataSourceById(c *contextmodel.ReqContext) response. | |||
| 		return response.Error(http.StatusForbidden, "Cannot delete read-only data source", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{ID: id, OrgID: c.SignedInUser.GetOrgID(), Name: ds.Name} | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{ID: id, OrgID: c.GetOrgID(), Name: ds.Name} | ||||
| 
 | ||||
| 	err = hs.DataSourcesService.DeleteDataSource(c.Req.Context(), cmd) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to delete datasource", err) | ||||
| 	} | ||||
| 
 | ||||
| 	hs.Live.HandleDatasourceDelete(c.SignedInUser.GetOrgID(), ds.UID) | ||||
| 	hs.Live.HandleDatasourceDelete(c.GetOrgID(), ds.UID) | ||||
| 
 | ||||
| 	return response.Success("Data source deleted") | ||||
| } | ||||
|  | @ -200,7 +200,7 @@ func (hs *HTTPServer) DeleteDataSourceById(c *contextmodel.ReqContext) response. | |||
| // 404: notFoundError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetDataSourceByUID(c *contextmodel.ReqContext) response.Response { | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), web.Params(c.Req)[":uid"], c.SignedInUser.GetOrgID()) | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), web.Params(c.Req)[":uid"], c.GetOrgID()) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, datasources.ErrDataSourceNotFound) { | ||||
|  | @ -237,7 +237,7 @@ func (hs *HTTPServer) DeleteDataSourceByUID(c *contextmodel.ReqContext) response | |||
| 		return response.Error(http.StatusBadRequest, "Missing datasource uid", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), uid, c.SignedInUser.GetOrgID()) | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), uid, c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, datasources.ErrDataSourceNotFound) { | ||||
| 			return response.Error(http.StatusNotFound, "Data source not found", nil) | ||||
|  | @ -249,14 +249,14 @@ func (hs *HTTPServer) DeleteDataSourceByUID(c *contextmodel.ReqContext) response | |||
| 		return response.Error(http.StatusForbidden, "Cannot delete read-only data source", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{UID: uid, OrgID: c.SignedInUser.GetOrgID(), Name: ds.Name} | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{UID: uid, OrgID: c.GetOrgID(), Name: ds.Name} | ||||
| 
 | ||||
| 	err = hs.DataSourcesService.DeleteDataSource(c.Req.Context(), cmd) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to delete datasource", err) | ||||
| 	} | ||||
| 
 | ||||
| 	hs.Live.HandleDatasourceDelete(c.SignedInUser.GetOrgID(), ds.UID) | ||||
| 	hs.Live.HandleDatasourceDelete(c.GetOrgID(), ds.UID) | ||||
| 
 | ||||
| 	return response.JSON(http.StatusOK, util.DynMap{ | ||||
| 		"message": "Data source deleted", | ||||
|  | @ -284,7 +284,7 @@ func (hs *HTTPServer) DeleteDataSourceByName(c *contextmodel.ReqContext) respons | |||
| 		return response.Error(http.StatusBadRequest, "Missing valid datasource name", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	getCmd := &datasources.GetDataSourceQuery{Name: name, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	getCmd := &datasources.GetDataSourceQuery{Name: name, OrgID: c.GetOrgID()} | ||||
| 	dataSource, err := hs.DataSourcesService.GetDataSource(c.Req.Context(), getCmd) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, datasources.ErrDataSourceNotFound) { | ||||
|  | @ -297,13 +297,13 @@ func (hs *HTTPServer) DeleteDataSourceByName(c *contextmodel.ReqContext) respons | |||
| 		return response.Error(http.StatusForbidden, "Cannot delete read-only data source", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{Name: name, OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	cmd := &datasources.DeleteDataSourceCommand{Name: name, OrgID: c.GetOrgID()} | ||||
| 	err = hs.DataSourcesService.DeleteDataSource(c.Req.Context(), cmd) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to delete datasource", err) | ||||
| 	} | ||||
| 
 | ||||
| 	hs.Live.HandleDatasourceDelete(c.SignedInUser.GetOrgID(), dataSource.UID) | ||||
| 	hs.Live.HandleDatasourceDelete(c.GetOrgID(), dataSource.UID) | ||||
| 
 | ||||
| 	return response.JSON(http.StatusOK, util.DynMap{ | ||||
| 		"message": "Data source deleted", | ||||
|  | @ -366,10 +366,10 @@ func (hs *HTTPServer) AddDataSource(c *contextmodel.ReqContext) response.Respons | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 
 | ||||
| 	datasourcesLogger.Debug("Received command to add data source", "url", cmd.URL) | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	cmd.UserID = userID | ||||
| 	if cmd.URL != "" { | ||||
| 		if resp := validateURL(cmd.Type, cmd.URL); resp != nil { | ||||
|  | @ -438,7 +438,7 @@ func (hs *HTTPServer) UpdateDataSourceByID(c *contextmodel.ReqContext) response. | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	datasourcesLogger.Debug("Received command to update data source", "url", cmd.URL) | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	var err error | ||||
| 	if cmd.ID, err = strconv.ParseInt(web.Params(c.Req)[":id"], 10, 64); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "id is invalid", err) | ||||
|  | @ -483,7 +483,7 @@ func (hs *HTTPServer) UpdateDataSourceByUID(c *contextmodel.ReqContext) response | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	datasourcesLogger.Debug("Received command to update data source", "url", cmd.URL) | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	if resp := validateURL(cmd.Type, cmd.URL); resp != nil { | ||||
| 		return resp | ||||
| 	} | ||||
|  | @ -491,7 +491,7 @@ func (hs *HTTPServer) UpdateDataSourceByUID(c *contextmodel.ReqContext) response | |||
| 		return response.Error(http.StatusBadRequest, "Failed to update datasource", err) | ||||
| 	} | ||||
| 
 | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), web.Params(c.Req)[":uid"], c.SignedInUser.GetOrgID()) | ||||
| 	ds, err := hs.getRawDataSourceByUID(c.Req.Context(), web.Params(c.Req)[":uid"], c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, datasources.ErrDataSourceNotFound) { | ||||
| 			return response.Error(http.StatusNotFound, "Data source not found", nil) | ||||
|  | @ -523,7 +523,7 @@ func (hs *HTTPServer) updateDataSourceByID(c *contextmodel.ReqContext, ds *datas | |||
| 
 | ||||
| 	query := datasources.GetDataSourceQuery{ | ||||
| 		ID:    cmd.ID, | ||||
| 		OrgID: c.SignedInUser.GetOrgID(), | ||||
| 		OrgID: c.GetOrgID(), | ||||
| 	} | ||||
| 
 | ||||
| 	dataSource, err := hs.DataSourcesService.GetDataSource(c.Req.Context(), &query) | ||||
|  | @ -536,7 +536,7 @@ func (hs *HTTPServer) updateDataSourceByID(c *contextmodel.ReqContext, ds *datas | |||
| 
 | ||||
| 	datasourceDTO := hs.convertModelToDtos(c.Req.Context(), dataSource) | ||||
| 
 | ||||
| 	hs.Live.HandleDatasourceUpdate(c.SignedInUser.GetOrgID(), datasourceDTO.UID) | ||||
| 	hs.Live.HandleDatasourceUpdate(c.GetOrgID(), datasourceDTO.UID) | ||||
| 
 | ||||
| 	return response.JSON(http.StatusOK, util.DynMap{ | ||||
| 		"message":    "Datasource updated", | ||||
|  | @ -587,7 +587,7 @@ func (hs *HTTPServer) getRawDataSourceByUID(ctx context.Context, uid string, org | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetDataSourceByName(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := datasources.GetDataSourceQuery{Name: web.Params(c.Req)[":name"], OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	query := datasources.GetDataSourceQuery{Name: web.Params(c.Req)[":name"], OrgID: c.GetOrgID()} | ||||
| 
 | ||||
| 	dataSource, err := hs.DataSourcesService.GetDataSource(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
|  | @ -615,7 +615,7 @@ func (hs *HTTPServer) GetDataSourceByName(c *contextmodel.ReqContext) response.R | |||
| // 404: notFoundError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetDataSourceIdByName(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := datasources.GetDataSourceQuery{Name: web.Params(c.Req)[":name"], OrgID: c.SignedInUser.GetOrgID()} | ||||
| 	query := datasources.GetDataSourceQuery{Name: web.Params(c.Req)[":name"], OrgID: c.GetOrgID()} | ||||
| 
 | ||||
| 	ds, err := hs.DataSourcesService.GetDataSource(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
|  |  | |||
|  | @ -78,7 +78,7 @@ func (hs *HTTPServer) GetFolders(c *contextmodel.ReqContext) response.Response { | |||
| 
 | ||||
| 	if hs.Features.IsEnabled(c.Req.Context(), featuremgmt.FlagNestedFolders) { | ||||
| 		q := &folder.GetChildrenQuery{ | ||||
| 			OrgID:        c.SignedInUser.GetOrgID(), | ||||
| 			OrgID:        c.GetOrgID(), | ||||
| 			Limit:        c.QueryInt64("limit"), | ||||
| 			Page:         c.QueryInt64("page"), | ||||
| 			UID:          c.Query("parentUid"), | ||||
|  | @ -126,7 +126,7 @@ func (hs *HTTPServer) GetFolders(c *contextmodel.ReqContext) response.Response { | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetFolderByUID(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	if err != nil { | ||||
| 		return apierrors.ToFolderErrorResponse(err) | ||||
| 	} | ||||
|  | @ -191,7 +191,7 @@ func (hs *HTTPServer) CreateFolder(c *contextmodel.ReqContext) response.Response | |||
| 	if err := web.Bind(c.Req, &cmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	cmd.SignedInUser = c.SignedInUser | ||||
| 
 | ||||
| 	folder, err := hs.folderService.Create(c.Req.Context(), &cmd) | ||||
|  | @ -267,7 +267,7 @@ func (hs *HTTPServer) MoveFolder(c *contextmodel.ReqContext) response.Response { | |||
| 		} | ||||
| 		var err error | ||||
| 
 | ||||
| 		cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 		cmd.OrgID = c.GetOrgID() | ||||
| 		cmd.UID = web.Params(c.Req)[":uid"] | ||||
| 		cmd.SignedInUser = c.SignedInUser | ||||
| 		theFolder, err := hs.folderService.Move(c.Req.Context(), &cmd) | ||||
|  | @ -304,7 +304,7 @@ func (hs *HTTPServer) UpdateFolder(c *contextmodel.ReqContext) response.Response | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	cmd.UID = web.Params(c.Req)[":uid"] | ||||
| 	cmd.SignedInUser = c.SignedInUser | ||||
| 	result, err := hs.folderService.Update(c.Req.Context(), &cmd) | ||||
|  | @ -349,7 +349,7 @@ func (hs *HTTPServer) DeleteFolder(c *contextmodel.ReqContext) response.Response | |||
| 	*/ | ||||
| 
 | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	err = hs.folderService.Delete(c.Req.Context(), &folder.DeleteFolderCommand{UID: uid, OrgID: c.SignedInUser.GetOrgID(), ForceDeleteRules: c.QueryBool("forceDeleteRules"), SignedInUser: c.SignedInUser}) | ||||
| 	err = hs.folderService.Delete(c.Req.Context(), &folder.DeleteFolderCommand{UID: uid, OrgID: c.GetOrgID(), ForceDeleteRules: c.QueryBool("forceDeleteRules"), SignedInUser: c.SignedInUser}) | ||||
| 	if err != nil { | ||||
| 		return apierrors.ToFolderErrorResponse(err) | ||||
| 	} | ||||
|  | @ -371,7 +371,7 @@ func (hs *HTTPServer) DeleteFolder(c *contextmodel.ReqContext) response.Response | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetFolderDescendantCounts(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	counts, err := hs.folderService.GetDescendantCounts(c.Req.Context(), &folder.GetDescendantCountsQuery{OrgID: c.SignedInUser.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	counts, err := hs.folderService.GetDescendantCounts(c.Req.Context(), &folder.GetDescendantCountsQuery{OrgID: c.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	if err != nil { | ||||
| 		return apierrors.ToFolderErrorResponse(err) | ||||
| 	} | ||||
|  | @ -381,7 +381,7 @@ func (hs *HTTPServer) GetFolderDescendantCounts(c *contextmodel.ReqContext) resp | |||
| func (hs *HTTPServer) newToFolderDto(c *contextmodel.ReqContext, f *folder.Folder) (dtos.Folder, error) { | ||||
| 	ctx := c.Req.Context() | ||||
| 	toDTO := func(f *folder.Folder, checkCanView bool) (dtos.Folder, error) { | ||||
| 		g, err := guardian.NewByFolder(c.Req.Context(), f, c.SignedInUser.GetOrgID(), c.SignedInUser) | ||||
| 		g, err := guardian.NewByFolder(c.Req.Context(), f, c.GetOrgID(), c.SignedInUser) | ||||
| 		if err != nil { | ||||
| 			return dtos.Folder{}, err | ||||
| 		} | ||||
|  | @ -468,7 +468,7 @@ func (hs *HTTPServer) getFolderACMetadata(c *contextmodel.ReqContext, f *folder. | |||
| 		return nil, nil | ||||
| 	} | ||||
| 
 | ||||
| 	parents, err := hs.folderService.GetParents(c.Req.Context(), folder.GetParentsQuery{UID: f.UID, OrgID: c.SignedInUser.GetOrgID()}) | ||||
| 	parents, err := hs.folderService.GetParents(c.Req.Context(), folder.GetParentsQuery{UID: f.UID, OrgID: c.GetOrgID()}) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -495,7 +495,7 @@ func (hs *HTTPServer) searchFolders(c *contextmodel.ReqContext, permission dashb | |||
| 		DashboardIds: make([]int64, 0), | ||||
| 		FolderIds:    make([]int64, 0), // nolint:staticcheck
 | ||||
| 		Limit:        c.QueryInt64("limit"), | ||||
| 		OrgId:        c.SignedInUser.GetOrgID(), | ||||
| 		OrgId:        c.GetOrgID(), | ||||
| 		Type:         "dash-folder", | ||||
| 		Permission:   permission, | ||||
| 		Page:         c.QueryInt64("page"), | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ import ( | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetFolderPermissionList(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return apierrors.ToFolderErrorResponse(err) | ||||
|  | @ -87,7 +87,7 @@ func (hs *HTTPServer) UpdateFolderPermissions(c *contextmodel.ReqContext) respon | |||
| 	} | ||||
| 
 | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.SignedInUser.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	folder, err := hs.folderService.Get(c.Req.Context(), &folder.GetFolderQuery{OrgID: c.GetOrgID(), UID: &uid, SignedInUser: c.SignedInUser}) | ||||
| 	if err != nil { | ||||
| 		return apierrors.ToFolderErrorResponse(err) | ||||
| 	} | ||||
|  | @ -95,7 +95,7 @@ func (hs *HTTPServer) UpdateFolderPermissions(c *contextmodel.ReqContext) respon | |||
| 	items := make([]*dashboards.DashboardACL, 0, len(apiCmd.Items)) | ||||
| 	for _, item := range apiCmd.Items { | ||||
| 		items = append(items, &dashboards.DashboardACL{ | ||||
| 			OrgID:       c.SignedInUser.GetOrgID(), | ||||
| 			OrgID:       c.GetOrgID(), | ||||
| 			DashboardID: folder.ID, // nolint:staticcheck
 | ||||
| 			UserID:      item.UserID, | ||||
| 			TeamID:      item.TeamID, | ||||
|  | @ -114,7 +114,7 @@ func (hs *HTTPServer) UpdateFolderPermissions(c *contextmodel.ReqContext) respon | |||
| 
 | ||||
| 	items = append(items, hs.filterHiddenACL(c.SignedInUser, acl)...) | ||||
| 
 | ||||
| 	if err := hs.updateDashboardAccessControl(c.Req.Context(), c.SignedInUser.GetOrgID(), folder.UID, true, items, acl); err != nil { | ||||
| 	if err := hs.updateDashboardAccessControl(c.Req.Context(), c.GetOrgID(), folder.UID, true, items, acl); err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to create permission", err) | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -102,7 +102,7 @@ func (hs *HTTPServer) getFrontendSettings(c *contextmodel.ReqContext) (*dtos.Fro | |||
| 	c, span := hs.injectSpan(c, "api.getFrontendSettings") | ||||
| 	defer span.End() | ||||
| 
 | ||||
| 	availablePlugins, err := hs.availablePlugins(c.Req.Context(), c.SignedInUser.GetOrgID()) | ||||
| 	availablePlugins, err := hs.availablePlugins(c.Req.Context(), c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -404,7 +404,7 @@ func (hs *HTTPServer) getFrontendSettings(c *contextmodel.ReqContext) (*dtos.Fro | |||
| 	} | ||||
| 
 | ||||
| 	// Set the kubernetes namespace
 | ||||
| 	frontendSettings.Namespace = hs.namespacer(c.SignedInUser.OrgID) | ||||
| 	frontendSettings.Namespace = hs.namespacer(c.OrgID) | ||||
| 
 | ||||
| 	// experimental scope features
 | ||||
| 	if hs.Features.IsEnabled(c.Req.Context(), featuremgmt.FlagScopeFilters) { | ||||
|  | @ -431,8 +431,8 @@ func (hs *HTTPServer) getFSDataSources(c *contextmodel.ReqContext, availablePlug | |||
| 	defer span.End() | ||||
| 
 | ||||
| 	orgDataSources := make([]*datasources.DataSource, 0) | ||||
| 	if c.SignedInUser.GetOrgID() != 0 { | ||||
| 		query := datasources.GetDataSourcesQuery{OrgID: c.SignedInUser.GetOrgID(), DataSourceLimit: hs.Cfg.DataSourceLimit} | ||||
| 	if c.GetOrgID() != 0 { | ||||
| 		query := datasources.GetDataSourcesQuery{OrgID: c.GetOrgID(), DataSourceLimit: hs.Cfg.DataSourceLimit} | ||||
| 		dataSources, err := hs.DataSourcesService.GetDataSources(c.Req.Context(), &query) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
|  |  | |||
|  | @ -32,9 +32,9 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	userID, _ := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, _ := identity.UserIdentifier(c.GetID()) | ||||
| 
 | ||||
| 	prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: userID, OrgID: c.SignedInUser.GetOrgID(), Teams: c.Teams} | ||||
| 	prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: userID, OrgID: c.GetOrgID(), Teams: c.Teams} | ||||
| 	prefs, err := hs.preferenceService.GetWithDefaults(c.Req.Context(), &prefsQuery) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
|  | @ -103,13 +103,13 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV | |||
| 			UID:                        c.UserUID, // << not set yet
 | ||||
| 			IsSignedIn:                 c.IsSignedIn, | ||||
| 			Login:                      c.Login, | ||||
| 			Email:                      c.SignedInUser.GetEmail(), | ||||
| 			Email:                      c.GetEmail(), | ||||
| 			Name:                       c.Name, | ||||
| 			OrgId:                      c.SignedInUser.GetOrgID(), | ||||
| 			OrgId:                      c.GetOrgID(), | ||||
| 			OrgName:                    c.OrgName, | ||||
| 			OrgRole:                    c.SignedInUser.GetOrgRole(), | ||||
| 			OrgRole:                    c.GetOrgRole(), | ||||
| 			OrgCount:                   hs.getUserOrgCount(c, userID), | ||||
| 			GravatarUrl:                dtos.GetGravatarUrl(hs.Cfg, c.SignedInUser.GetEmail()), | ||||
| 			GravatarUrl:                dtos.GetGravatarUrl(hs.Cfg, c.GetEmail()), | ||||
| 			IsGrafanaAdmin:             c.IsGrafanaAdmin, | ||||
| 			Theme:                      theme.ID, | ||||
| 			LightTheme:                 theme.Type == "light", | ||||
|  | @ -177,7 +177,7 @@ func (hs *HTTPServer) setIndexViewData(c *contextmodel.ReqContext) (*dtos.IndexV | |||
| 
 | ||||
| func (hs *HTTPServer) buildUserAnalyticsSettings(c *contextmodel.ReqContext) dtos.AnalyticsSettings { | ||||
| 	// Anonymous users do not have an email or auth info
 | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return dtos.AnalyticsSettings{Identifier: "@" + hs.Cfg.AppURL} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -185,10 +185,10 @@ func (hs *HTTPServer) buildUserAnalyticsSettings(c *contextmodel.ReqContext) dto | |||
| 		return dtos.AnalyticsSettings{} | ||||
| 	} | ||||
| 
 | ||||
| 	identifier := c.SignedInUser.GetEmail() + "@" + hs.Cfg.AppURL | ||||
| 	identifier := c.GetEmail() + "@" + hs.Cfg.AppURL | ||||
| 
 | ||||
| 	if authenticatedBy := c.SignedInUser.GetAuthenticatedBy(); authenticatedBy == login.GrafanaComAuthModule { | ||||
| 		identifier = c.SignedInUser.GetAuthID() | ||||
| 	if authenticatedBy := c.GetAuthenticatedBy(); authenticatedBy == login.GrafanaComAuthModule { | ||||
| 		identifier = c.GetAuthID() | ||||
| 	} | ||||
| 
 | ||||
| 	return dtos.AnalyticsSettings{ | ||||
|  |  | |||
|  | @ -130,8 +130,8 @@ func (hs *HTTPServer) LoginView(c *contextmodel.ReqContext) { | |||
| 		// LDAP users authenticated by auth proxy are also assigned login token but their auth module is LDAP
 | ||||
| 		if hs.Cfg.AuthProxy.Enabled && | ||||
| 			hs.Cfg.AuthProxy.EnableLoginToken && | ||||
| 			c.SignedInUser.IsAuthenticatedBy(loginservice.AuthProxyAuthModule, loginservice.LDAPAuthModule) { | ||||
| 			user := &user.User{ID: c.SignedInUser.UserID, Email: c.SignedInUser.Email, Login: c.SignedInUser.Login} | ||||
| 			c.IsAuthenticatedBy(loginservice.AuthProxyAuthModule, loginservice.LDAPAuthModule) { | ||||
| 			user := &user.User{ID: c.UserID, Email: c.Email, Login: c.Login} | ||||
| 			err := hs.loginUserWithUser(user, c) | ||||
| 			if err != nil { | ||||
| 				c.Handle(hs.Cfg, http.StatusInternalServerError, "Failed to sign in user", err) | ||||
|  | @ -290,7 +290,7 @@ func (hs *HTTPServer) loginUserWithUser(user *user.User, c *contextmodel.ReqCont | |||
| func (hs *HTTPServer) Logout(c *contextmodel.ReqContext) { | ||||
| 	// FIXME: restructure saml client to implement authn.LogoutClient
 | ||||
| 	if hs.samlSingleLogoutEnabled() { | ||||
| 		if c.SignedInUser.GetAuthenticatedBy() == loginservice.SAMLAuthModule { | ||||
| 		if c.GetAuthenticatedBy() == loginservice.SAMLAuthModule { | ||||
| 			c.Redirect(hs.Cfg.AppSubURL + "/logout/saml") | ||||
| 			return | ||||
| 		} | ||||
|  | @ -305,7 +305,7 @@ func (hs *HTTPServer) Logout(c *contextmodel.ReqContext) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	hs.log.Info("Successful Logout", "id", c.SignedInUser.GetID()) | ||||
| 	hs.log.Info("Successful Logout", "id", c.GetID()) | ||||
| 	c.Redirect(redirect.URL) | ||||
| } | ||||
| 
 | ||||
|  | @ -350,15 +350,15 @@ func (hs *HTTPServer) redirectURLWithErrorCookie(c *contextmodel.ReqContext, err | |||
| 	setCookie := true | ||||
| 	if hs.Features.IsEnabled(c.Req.Context(), featuremgmt.FlagIndividualCookiePreferences) { | ||||
| 		var userID int64 | ||||
| 		if c.SignedInUser != nil && !c.SignedInUser.IsNil() { | ||||
| 		if c.SignedInUser != nil && !c.IsNil() { | ||||
| 			var errID error | ||||
| 			userID, errID = identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 			userID, errID = identity.UserIdentifier(c.GetID()) | ||||
| 			if errID != nil { | ||||
| 				hs.log.Error("failed to retrieve user ID", "error", errID) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: userID, OrgID: c.SignedInUser.GetOrgID(), Teams: c.Teams} | ||||
| 		prefsQuery := pref.GetPreferenceWithDefaultsQuery{UserID: userID, OrgID: c.GetOrgID(), Teams: c.Teams} | ||||
| 		prefs, err := hs.preferenceService.GetWithDefaults(c.Req.Context(), &prefsQuery) | ||||
| 		if err != nil { | ||||
| 			c.Redirect(hs.Cfg.AppSubURL + "/login") | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import ( | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetCurrentOrg(c *contextmodel.ReqContext) response.Response { | ||||
| 	return hs.getOrgHelper(c.Req.Context(), c.SignedInUser.GetOrgID()) | ||||
| 	return hs.getOrgHelper(c.Req.Context(), c.GetOrgID()) | ||||
| } | ||||
| 
 | ||||
| // swagger:route GET /orgs/{org_id} orgs getOrgByID
 | ||||
|  | @ -132,11 +132,11 @@ func (hs *HTTPServer) CreateOrg(c *contextmodel.ReqContext) response.Response { | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return response.Error(http.StatusForbidden, "Only users can create organizations", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to parse user id", err) | ||||
| 	} | ||||
|  | @ -173,7 +173,7 @@ func (hs *HTTPServer) UpdateCurrentOrg(c *contextmodel.ReqContext) response.Resp | |||
| 	if err := web.Bind(c.Req, &form); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	return hs.updateOrgHelper(c.Req.Context(), form, c.SignedInUser.GetOrgID()) | ||||
| 	return hs.updateOrgHelper(c.Req.Context(), form, c.GetOrgID()) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PUT /orgs/{org_id} orgs updateOrg
 | ||||
|  | @ -228,7 +228,7 @@ func (hs *HTTPServer) UpdateCurrentOrgAddress(c *contextmodel.ReqContext) respon | |||
| 	if err := web.Bind(c.Req, &form); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	return hs.updateOrgAddressHelper(c.Req.Context(), form, c.SignedInUser.GetOrgID()) | ||||
| 	return hs.updateOrgAddressHelper(c.Req.Context(), form, c.GetOrgID()) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PUT /orgs/{org_id}/address orgs updateOrgAddress
 | ||||
|  | @ -293,7 +293,7 @@ func (hs *HTTPServer) DeleteOrgByID(c *contextmodel.ReqContext) response.Respons | |||
| 		return response.Error(http.StatusBadRequest, "orgId is invalid", err) | ||||
| 	} | ||||
| 	// before deleting an org, check if user does not belong to the current org
 | ||||
| 	if c.SignedInUser.GetOrgID() == orgID { | ||||
| 	if c.GetOrgID() == orgID { | ||||
| 		return response.Error(http.StatusBadRequest, "Can not delete org for current user", nil) | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ import ( | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetPendingOrgInvites(c *contextmodel.ReqContext) response.Response { | ||||
| 	query := tempuser.GetTempUsersQuery{OrgID: c.SignedInUser.GetOrgID(), Status: tempuser.TmpUserInvitePending} | ||||
| 	query := tempuser.GetTempUsersQuery{OrgID: c.GetOrgID(), Status: tempuser.TmpUserInvitePending} | ||||
| 
 | ||||
| 	queryResult, err := hs.tempUserService.GetTempUsersQuery(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
|  | @ -67,7 +67,7 @@ func (hs *HTTPServer) AddOrgInvite(c *contextmodel.ReqContext) response.Response | |||
| 	if !inviteDto.Role.IsValid() { | ||||
| 		return response.Error(http.StatusBadRequest, "Invalid role specified", nil) | ||||
| 	} | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(inviteDto.Role) && !c.SignedInUser.GetIsGrafanaAdmin() { | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(inviteDto.Role) && !c.GetIsGrafanaAdmin() { | ||||
| 		return response.Error(http.StatusForbidden, "Cannot assign a role higher than user's role", nil) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -96,13 +96,13 @@ func (hs *HTTPServer) AddOrgInvite(c *contextmodel.ReqContext) response.Response | |||
| 	} | ||||
| 
 | ||||
| 	cmd := tempuser.CreateTempUserCommand{} | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	cmd.Email = inviteDto.LoginOrEmail | ||||
| 	cmd.Name = inviteDto.Name | ||||
| 	cmd.Status = tempuser.TmpUserInvitePending | ||||
| 
 | ||||
| 	var userID int64 | ||||
| 	if id, err := identity.UserIdentifier(c.SignedInUser.GetID()); err == nil { | ||||
| 	if id, err := identity.UserIdentifier(c.GetID()); err == nil { | ||||
| 		userID = id | ||||
| 	} | ||||
| 
 | ||||
|  | @ -126,10 +126,10 @@ func (hs *HTTPServer) AddOrgInvite(c *contextmodel.ReqContext) response.Response | |||
| 			Template: "new_user_invite", | ||||
| 			Data: map[string]any{ | ||||
| 				"Name":      util.StringsFallback2(cmd.Name, cmd.Email), | ||||
| 				"OrgName":   c.SignedInUser.GetOrgName(), | ||||
| 				"Email":     c.SignedInUser.GetEmail(), | ||||
| 				"OrgName":   c.GetOrgName(), | ||||
| 				"Email":     c.GetEmail(), | ||||
| 				"LinkUrl":   setting.ToAbsUrl("invite/" + cmd.Code), | ||||
| 				"InvitedBy": c.SignedInUser.GetName(), | ||||
| 				"InvitedBy": c.GetName(), | ||||
| 			}, | ||||
| 		} | ||||
| 
 | ||||
|  | @ -154,7 +154,7 @@ func (hs *HTTPServer) AddOrgInvite(c *contextmodel.ReqContext) response.Response | |||
| 
 | ||||
| func (hs *HTTPServer) inviteExistingUserToOrg(c *contextmodel.ReqContext, user *user.User, inviteDto *dtos.AddInviteForm) response.Response { | ||||
| 	// user exists, add org role
 | ||||
| 	createOrgUserCmd := org.AddOrgUserCommand{OrgID: c.SignedInUser.GetOrgID(), UserID: user.ID, Role: inviteDto.Role} | ||||
| 	createOrgUserCmd := org.AddOrgUserCommand{OrgID: c.GetOrgID(), UserID: user.ID, Role: inviteDto.Role} | ||||
| 	if err := hs.orgService.AddOrgUser(c.Req.Context(), &createOrgUserCmd); err != nil { | ||||
| 		if errors.Is(err, org.ErrOrgUserAlreadyAdded) { | ||||
| 			return response.Error(http.StatusPreconditionFailed, fmt.Sprintf("User %s is already added to organization", inviteDto.LoginOrEmail), err) | ||||
|  | @ -168,8 +168,8 @@ func (hs *HTTPServer) inviteExistingUserToOrg(c *contextmodel.ReqContext, user * | |||
| 			Template: "invited_to_org", | ||||
| 			Data: map[string]any{ | ||||
| 				"Name":      user.NameOrFallback(), | ||||
| 				"OrgName":   c.SignedInUser.GetOrgName(), | ||||
| 				"InvitedBy": c.SignedInUser.GetName(), | ||||
| 				"OrgName":   c.GetOrgName(), | ||||
| 				"InvitedBy": c.GetName(), | ||||
| 			}, | ||||
| 		} | ||||
| 
 | ||||
|  | @ -179,7 +179,7 @@ func (hs *HTTPServer) inviteExistingUserToOrg(c *contextmodel.ReqContext, user * | |||
| 	} | ||||
| 
 | ||||
| 	return response.JSON(http.StatusOK, util.DynMap{ | ||||
| 		"message": fmt.Sprintf("Existing Grafana user %s added to org %s", user.NameOrFallback(), c.SignedInUser.GetOrgName()), | ||||
| 		"message": fmt.Sprintf("Existing Grafana user %s added to org %s", user.NameOrFallback(), c.GetOrgName()), | ||||
| 		"userId":  user.ID, | ||||
| 	}) | ||||
| } | ||||
|  | @ -204,7 +204,7 @@ func (hs *HTTPServer) RevokeInvite(c *contextmodel.ReqContext) response.Response | |||
| 		return response.Error(http.StatusInternalServerError, "Failed to get invite", err) | ||||
| 	} | ||||
| 
 | ||||
| 	canRevoke := c.SignedInUser.GetOrgID() == queryResult.OrgID || c.SignedInUser.GetIsGrafanaAdmin() | ||||
| 	canRevoke := c.GetOrgID() == queryResult.OrgID || c.GetIsGrafanaAdmin() | ||||
| 	if !canRevoke { | ||||
| 		return response.Error(http.StatusForbidden, "Permission denied: not permitted to revoke invite", nil) | ||||
| 	} | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ func (hs *HTTPServer) AddOrgUserToCurrentOrg(c *contextmodel.ReqContext) respons | |||
| 	if err := web.Bind(c.Req, &cmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	return hs.addOrgUserHelper(c, cmd) | ||||
| } | ||||
| 
 | ||||
|  | @ -74,7 +74,7 @@ func (hs *HTTPServer) addOrgUserHelper(c *contextmodel.ReqContext, cmd org.AddOr | |||
| 	if !cmd.Role.IsValid() { | ||||
| 		return response.Error(http.StatusBadRequest, "Invalid role specified", nil) | ||||
| 	} | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(cmd.Role) && !c.SignedInUser.GetIsGrafanaAdmin() { | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(cmd.Role) && !c.GetIsGrafanaAdmin() { | ||||
| 		return response.Error(http.StatusForbidden, "Cannot assign a role higher than user's role", nil) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -117,7 +117,7 @@ func (hs *HTTPServer) addOrgUserHelper(c *contextmodel.ReqContext, cmd org.AddOr | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetOrgUsersForCurrentOrg(c *contextmodel.ReqContext) response.Response { | ||||
| 	result, err := hs.searchOrgUsersHelper(c, &org.SearchOrgUsersQuery{ | ||||
| 		OrgID: c.SignedInUser.GetOrgID(), | ||||
| 		OrgID: c.GetOrgID(), | ||||
| 		Query: c.Query("query"), | ||||
| 		Limit: c.QueryInt("limit"), | ||||
| 		User:  c.SignedInUser, | ||||
|  | @ -146,7 +146,7 @@ func (hs *HTTPServer) GetOrgUsersForCurrentOrg(c *contextmodel.ReqContext) respo | |||
| 
 | ||||
| func (hs *HTTPServer) GetOrgUsersForCurrentOrgLookup(c *contextmodel.ReqContext) response.Response { | ||||
| 	orgUsersResult, err := hs.searchOrgUsersHelper(c, &org.SearchOrgUsersQuery{ | ||||
| 		OrgID:                    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:                    c.GetOrgID(), | ||||
| 		Query:                    c.Query("query"), | ||||
| 		Limit:                    c.QueryInt("limit"), | ||||
| 		User:                     c.SignedInUser, | ||||
|  | @ -277,7 +277,7 @@ func (hs *HTTPServer) SearchOrgUsersWithPaging(c *contextmodel.ReqContext) respo | |||
| 	} | ||||
| 
 | ||||
| 	query := &org.SearchOrgUsersQuery{ | ||||
| 		OrgID:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:    c.GetOrgID(), | ||||
| 		Query:    c.Query("query"), | ||||
| 		Page:     page, | ||||
| 		Limit:    perPage, | ||||
|  | @ -325,9 +325,9 @@ func (hs *HTTPServer) searchOrgUsersHelper(c *contextmodel.ReqContext, query *or | |||
| 	// Get accesscontrol metadata and IPD labels for users in the target org
 | ||||
| 	accessControlMetadata := map[string]accesscontrol.Metadata{} | ||||
| 	if c.QueryBool("accesscontrol") { | ||||
| 		permissions := c.SignedInUser.GetPermissions() | ||||
| 		if query.OrgID != c.SignedInUser.GetOrgID() { | ||||
| 			identity, err := hs.authnService.ResolveIdentity(c.Req.Context(), query.OrgID, c.SignedInUser.GetID()) | ||||
| 		permissions := c.GetPermissions() | ||||
| 		if query.OrgID != c.GetOrgID() { | ||||
| 			identity, err := hs.authnService.ResolveIdentity(c.Req.Context(), query.OrgID, c.GetID()) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
|  | @ -368,7 +368,7 @@ func (hs *HTTPServer) UpdateOrgUserForCurrentOrg(c *contextmodel.ReqContext) res | |||
| 	if err := web.Bind(c.Req, &cmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 	var err error | ||||
| 	cmd.UserID, err = strconv.ParseInt(web.Params(c.Req)[":userId"], 10, 64) | ||||
| 	if err != nil { | ||||
|  | @ -411,7 +411,7 @@ func (hs *HTTPServer) updateOrgUserHelper(c *contextmodel.ReqContext, cmd org.Up | |||
| 	if !cmd.Role.IsValid() { | ||||
| 		return response.Error(http.StatusBadRequest, "Invalid role specified", nil) | ||||
| 	} | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(cmd.Role) && !c.SignedInUser.GetIsGrafanaAdmin() { | ||||
| 	if !c.SignedInUser.GetOrgRole().Includes(cmd.Role) && !c.GetIsGrafanaAdmin() { | ||||
| 		return response.Error(http.StatusForbidden, "Cannot assign a role higher than user's role", nil) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -468,7 +468,7 @@ func (hs *HTTPServer) RemoveOrgUserForCurrentOrg(c *contextmodel.ReqContext) res | |||
| 
 | ||||
| 	return hs.removeOrgUserHelper(c.Req.Context(), &org.RemoveOrgUserCommand{ | ||||
| 		UserID:                   userId, | ||||
| 		OrgID:                    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:                    c.GetOrgID(), | ||||
| 		ShouldDeleteOrphanedUser: true, | ||||
| 	}) | ||||
| } | ||||
|  |  | |||
|  | @ -51,7 +51,7 @@ func (hs *HTTPServer) registerPlaylistAPI(apiRoute routing.RouteRegister) { | |||
| 
 | ||||
| func (hs *HTTPServer) validateOrgPlaylist(c *contextmodel.ReqContext) { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	query := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.SignedInUser.GetOrgID()} | ||||
| 	query := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.GetOrgID()} | ||||
| 	p, err := hs.playlistService.GetWithoutItems(c.Req.Context(), &query) | ||||
| 
 | ||||
| 	if err != nil { | ||||
|  | @ -64,7 +64,7 @@ func (hs *HTTPServer) validateOrgPlaylist(c *contextmodel.ReqContext) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if p.OrgId != c.SignedInUser.GetOrgID() { | ||||
| 	if p.OrgId != c.GetOrgID() { | ||||
| 		c.JsonApiErr(403, "You are not allowed to edit/view playlist", nil) | ||||
| 		return | ||||
| 	} | ||||
|  | @ -88,7 +88,7 @@ func (hs *HTTPServer) SearchPlaylists(c *contextmodel.ReqContext) response.Respo | |||
| 	searchQuery := playlist.GetPlaylistsQuery{ | ||||
| 		Name:  query, | ||||
| 		Limit: limit, | ||||
| 		OrgId: c.SignedInUser.GetOrgID(), | ||||
| 		OrgId: c.GetOrgID(), | ||||
| 	} | ||||
| 
 | ||||
| 	playlists, err := hs.playlistService.Search(c.Req.Context(), &searchQuery) | ||||
|  | @ -111,7 +111,7 @@ func (hs *HTTPServer) SearchPlaylists(c *contextmodel.ReqContext) response.Respo | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetPlaylist(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	cmd := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.SignedInUser.GetOrgID()} | ||||
| 	cmd := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.GetOrgID()} | ||||
| 
 | ||||
| 	dto, err := hs.playlistService.Get(c.Req.Context(), &cmd) | ||||
| 	if err != nil { | ||||
|  | @ -133,7 +133,7 @@ func (hs *HTTPServer) GetPlaylist(c *contextmodel.ReqContext) response.Response | |||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetPlaylistItems(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 	cmd := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.SignedInUser.GetOrgID()} | ||||
| 	cmd := playlist.GetPlaylistByUidQuery{UID: uid, OrgId: c.GetOrgID()} | ||||
| 
 | ||||
| 	dto, err := hs.playlistService.Get(c.Req.Context(), &cmd) | ||||
| 	if err != nil { | ||||
|  | @ -156,7 +156,7 @@ func (hs *HTTPServer) GetPlaylistItems(c *contextmodel.ReqContext) response.Resp | |||
| func (hs *HTTPServer) DeletePlaylist(c *contextmodel.ReqContext) response.Response { | ||||
| 	uid := web.Params(c.Req)[":uid"] | ||||
| 
 | ||||
| 	cmd := playlist.DeletePlaylistCommand{UID: uid, OrgId: c.SignedInUser.GetOrgID()} | ||||
| 	cmd := playlist.DeletePlaylistCommand{UID: uid, OrgId: c.GetOrgID()} | ||||
| 	if err := hs.playlistService.Delete(c.Req.Context(), &cmd); err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to delete playlist", err) | ||||
| 	} | ||||
|  | @ -179,7 +179,7 @@ func (hs *HTTPServer) CreatePlaylist(c *contextmodel.ReqContext) response.Respon | |||
| 	if err := web.Bind(c.Req, &cmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	cmd.OrgId = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgId = c.GetOrgID() | ||||
| 
 | ||||
| 	p, err := hs.playlistService.Create(c.Req.Context(), &cmd) | ||||
| 	if err != nil { | ||||
|  | @ -204,7 +204,7 @@ func (hs *HTTPServer) UpdatePlaylist(c *contextmodel.ReqContext) response.Respon | |||
| 	if err := web.Bind(c.Req, &cmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	cmd.OrgId = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgId = c.GetOrgID() | ||||
| 	cmd.UID = web.Params(c.Req)[":uid"] | ||||
| 
 | ||||
| 	_, err := hs.playlistService.Update(c.Req.Context(), &cmd) | ||||
|  | @ -214,7 +214,7 @@ func (hs *HTTPServer) UpdatePlaylist(c *contextmodel.ReqContext) response.Respon | |||
| 
 | ||||
| 	dto, err := hs.playlistService.Get(c.Req.Context(), &playlist.GetPlaylistByUidQuery{ | ||||
| 		UID:   cmd.UID, | ||||
| 		OrgId: c.SignedInUser.GetOrgID(), | ||||
| 		OrgId: c.GetOrgID(), | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to load playlist", err) | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ func (hs *HTTPServer) GetPluginDashboards(c *contextmodel.ReqContext) response.R | |||
| 	pluginID := web.Params(c.Req)[":pluginId"] | ||||
| 
 | ||||
| 	listReq := &plugindashboards.ListPluginDashboardsRequest{ | ||||
| 		OrgID:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:    c.GetOrgID(), | ||||
| 		PluginID: pluginID, | ||||
| 	} | ||||
| 	list, err := hs.pluginDashboardService.ListPluginDashboards(c.Req.Context(), listReq) | ||||
|  |  | |||
|  | @ -43,7 +43,7 @@ func (hs *HTTPServer) ProxyPluginRequest(c *contextmodel.ReqContext) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	query := pluginsettings.GetByPluginIDArgs{OrgID: c.SignedInUser.GetOrgID(), PluginID: plugin.ID} | ||||
| 	query := pluginsettings.GetByPluginIDArgs{OrgID: c.GetOrgID(), PluginID: plugin.ID} | ||||
| 	ps, err := hs.PluginSettings.GetPluginSettingByPluginID(c.Req.Context(), &query) | ||||
| 	if err != nil { | ||||
| 		c.JsonApiErr(http.StatusInternalServerError, "Failed to fetch plugin settings", err) | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ func (hs *HTTPServer) CallResource(c *contextmodel.ReqContext) { | |||
| } | ||||
| 
 | ||||
| func (hs *HTTPServer) callPluginResource(c *contextmodel.ReqContext, pluginID string) { | ||||
| 	pCtx, err := hs.pluginContextProvider.Get(c.Req.Context(), pluginID, c.SignedInUser, c.SignedInUser.GetOrgID()) | ||||
| 	pCtx, err := hs.pluginContextProvider.Get(c.Req.Context(), pluginID, c.SignedInUser, c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, plugins.ErrPluginNotRegistered) { | ||||
| 			c.JsonApiErr(404, "Plugin not found", nil) | ||||
|  |  | |||
|  | @ -148,8 +148,8 @@ func (proxy *DataSourceProxy) HandleRequest() { | |||
| 	span.SetAttributes( | ||||
| 		attribute.String("datasource_name", proxy.ds.Name), | ||||
| 		attribute.String("datasource_type", proxy.ds.Type), | ||||
| 		attribute.String("user", proxy.ctx.SignedInUser.Login), | ||||
| 		attribute.Int64("org_id", proxy.ctx.SignedInUser.OrgID), | ||||
| 		attribute.String("user", proxy.ctx.Login), | ||||
| 		attribute.Int64("org_id", proxy.ctx.OrgID), | ||||
| 	) | ||||
| 
 | ||||
| 	proxy.addTraceFromHeaderValue(span, "X-Panel-Id", "panel_id") | ||||
|  |  | |||
|  | @ -268,7 +268,7 @@ func TestDataSourceProxy_routeRule(t *testing.T) { | |||
| 
 | ||||
| 			t.Run("plugin route with admin role and user is admin", func(t *testing.T) { | ||||
| 				ctx, _ := setUp() | ||||
| 				ctx.SignedInUser.OrgRole = org.RoleAdmin | ||||
| 				ctx.OrgRole = org.RoleAdmin | ||||
| 				proxy, err := setupDSProxyTest(t, ctx, ds, routes, "api/admin") | ||||
| 				require.NoError(t, err) | ||||
| 				err = proxy.validateRequest() | ||||
|  | @ -278,9 +278,9 @@ func TestDataSourceProxy_routeRule(t *testing.T) { | |||
| 
 | ||||
| 		t.Run("plugin route with RBAC protection user is allowed", func(t *testing.T) { | ||||
| 			ctx, _ := setUp() | ||||
| 			ctx.SignedInUser.OrgID = int64(1) | ||||
| 			ctx.SignedInUser.OrgRole = identity.RoleNone | ||||
| 			ctx.SignedInUser.Permissions = map[int64]map[string][]string{1: {"test-app.settings:read": nil}} | ||||
| 			ctx.OrgID = int64(1) | ||||
| 			ctx.OrgRole = identity.RoleNone | ||||
| 			ctx.Permissions = map[int64]map[string][]string{1: {"test-app.settings:read": nil}} | ||||
| 			proxy, err := setupDSProxyTest(t, ctx, ds, routes, "api/rbac-restricted") | ||||
| 			require.NoError(t, err) | ||||
| 			err = proxy.validateRequest() | ||||
|  | @ -289,9 +289,9 @@ func TestDataSourceProxy_routeRule(t *testing.T) { | |||
| 
 | ||||
| 		t.Run("plugin route with RBAC protection user is not allowed", func(t *testing.T) { | ||||
| 			ctx, _ := setUp() | ||||
| 			ctx.SignedInUser.OrgID = int64(1) | ||||
| 			ctx.SignedInUser.OrgRole = identity.RoleNone | ||||
| 			ctx.SignedInUser.Permissions = map[int64]map[string][]string{1: {"test-app:read": nil}} | ||||
| 			ctx.OrgID = int64(1) | ||||
| 			ctx.OrgRole = identity.RoleNone | ||||
| 			ctx.Permissions = map[int64]map[string][]string{1: {"test-app:read": nil}} | ||||
| 			proxy, err := setupDSProxyTest(t, ctx, ds, routes, "api/rbac-restricted") | ||||
| 			require.NoError(t, err) | ||||
| 			err = proxy.validateRequest() | ||||
|  | @ -300,9 +300,9 @@ func TestDataSourceProxy_routeRule(t *testing.T) { | |||
| 
 | ||||
| 		t.Run("plugin route with dynamic RBAC protection user is allowed", func(t *testing.T) { | ||||
| 			ctx, _ := setUp() | ||||
| 			ctx.SignedInUser.OrgID = int64(1) | ||||
| 			ctx.SignedInUser.OrgRole = identity.RoleNone | ||||
| 			ctx.SignedInUser.Permissions = map[int64]map[string][]string{1: {"datasources:read": {"datasources:uid:dsUID"}}} | ||||
| 			ctx.OrgID = int64(1) | ||||
| 			ctx.OrgRole = identity.RoleNone | ||||
| 			ctx.Permissions = map[int64]map[string][]string{1: {"datasources:read": {"datasources:uid:dsUID"}}} | ||||
| 			proxy, err := setupDSProxyTest(t, ctx, ds, routes, "api/rbac-home") | ||||
| 			require.NoError(t, err) | ||||
| 			err = proxy.validateRequest() | ||||
|  | @ -311,10 +311,10 @@ func TestDataSourceProxy_routeRule(t *testing.T) { | |||
| 
 | ||||
| 		t.Run("plugin route with dynamic RBAC protection user is not allowed", func(t *testing.T) { | ||||
| 			ctx, _ := setUp() | ||||
| 			ctx.SignedInUser.OrgID = int64(1) | ||||
| 			ctx.SignedInUser.OrgRole = identity.RoleNone | ||||
| 			ctx.OrgID = int64(1) | ||||
| 			ctx.OrgRole = identity.RoleNone | ||||
| 			// Has access but to another app
 | ||||
| 			ctx.SignedInUser.Permissions = map[int64]map[string][]string{1: {"datasources:read": {"datasources:uid:notTheDsUID"}}} | ||||
| 			ctx.Permissions = map[int64]map[string][]string{1: {"datasources:read": {"datasources:uid:notTheDsUID"}}} | ||||
| 			proxy, err := setupDSProxyTest(t, ctx, ds, routes, "api/rbac-home") | ||||
| 			require.NoError(t, err) | ||||
| 			err = proxy.validateRequest() | ||||
|  |  | |||
|  | @ -119,8 +119,8 @@ func (proxy *PluginProxy) HandleRequest() { | |||
| 	proxy.ctx.Req = proxy.ctx.Req.WithContext(ctx) | ||||
| 
 | ||||
| 	span.SetAttributes( | ||||
| 		attribute.String("user", proxy.ctx.SignedInUser.Login), | ||||
| 		attribute.Int64("org_id", proxy.ctx.SignedInUser.OrgID), | ||||
| 		attribute.String("user", proxy.ctx.Login), | ||||
| 		attribute.Int64("org_id", proxy.ctx.OrgID), | ||||
| 	) | ||||
| 
 | ||||
| 	proxy.tracer.Inject(ctx, proxy.ctx.Req.Header, span) | ||||
|  |  | |||
|  | @ -239,11 +239,11 @@ func TestPluginProxy(t *testing.T) { | |||
| 	}) | ||||
| 
 | ||||
| 	t.Run("When proxying a request should set expected response headers", func(t *testing.T) { | ||||
| 		requestHandled := false | ||||
| 		requestHandled := make(chan struct{}) | ||||
| 		backendServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | ||||
| 			w.WriteHeader(200) | ||||
| 			_, _ = w.Write([]byte("I am the backend")) | ||||
| 			requestHandled = true | ||||
| 			close(requestHandled) | ||||
| 		})) | ||||
| 		t.Cleanup(backendServer.Close) | ||||
| 
 | ||||
|  | @ -271,10 +271,10 @@ func TestPluginProxy(t *testing.T) { | |||
| 		require.NoError(t, err) | ||||
| 		proxy.HandleRequest() | ||||
| 
 | ||||
| 		for { | ||||
| 			if requestHandled { | ||||
| 				break | ||||
| 			} | ||||
| 		select { | ||||
| 		case <-requestHandled: | ||||
| 		case <-t.Context().Done(): | ||||
| 			t.Fatal("timeout waiting for request to be handled") | ||||
| 		} | ||||
| 
 | ||||
| 		require.Equal(t, "sandbox", ctx.Resp.Header().Get("Content-Security-Policy")) | ||||
|  | @ -427,10 +427,8 @@ func TestPluginProxyRoutes(t *testing.T) { | |||
| 			require.NoError(t, err) | ||||
| 			proxy.HandleRequest() | ||||
| 
 | ||||
| 			for { | ||||
| 				if requestHandled || ctx.Resp.Written() { | ||||
| 					break | ||||
| 				} | ||||
| 			for !requestHandled && !ctx.Resp.Written() { | ||||
| 
 | ||||
| 			} | ||||
| 
 | ||||
| 			require.Equal(t, tc.expectedStatus, ctx.Resp.Status()) | ||||
|  | @ -561,10 +559,8 @@ func TestPluginProxyRoutesAccessControl(t *testing.T) { | |||
| 			require.NoError(t, err) | ||||
| 			proxy.HandleRequest() | ||||
| 
 | ||||
| 			for { | ||||
| 				if requestHandled || ctx.Resp.Written() { | ||||
| 					break | ||||
| 				} | ||||
| 			for !requestHandled && !ctx.Resp.Written() { | ||||
| 
 | ||||
| 			} | ||||
| 
 | ||||
| 			require.Equal(t, tc.expectedStatus, ctx.Resp.Status()) | ||||
|  |  | |||
|  | @ -67,7 +67,7 @@ func (hs *HTTPServer) GetPluginList(c *contextmodel.ReqContext) response.Respons | |||
| 		ac.EvalPermission(pluginaccesscontrol.ActionInstall), | ||||
| 	)) | ||||
| 
 | ||||
| 	pluginSettingsMap, err := hs.pluginSettings(c.Req.Context(), c.SignedInUser.GetOrgID()) | ||||
| 	pluginSettingsMap, err := hs.pluginSettings(c.Req.Context(), c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to get list of plugins", err) | ||||
| 	} | ||||
|  | @ -221,7 +221,7 @@ func (hs *HTTPServer) GetPluginSettingByID(c *contextmodel.ReqContext) response. | |||
| 
 | ||||
| 	ps, err := hs.PluginSettings.GetPluginSettingByPluginID(c.Req.Context(), &pluginsettings.GetByPluginIDArgs{ | ||||
| 		PluginID: pluginID, | ||||
| 		OrgID:    c.SignedInUser.GetOrgID(), | ||||
| 		OrgID:    c.GetOrgID(), | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		if !errors.Is(err, pluginsettings.ErrPluginSettingNotFound) { | ||||
|  | @ -263,7 +263,7 @@ func (hs *HTTPServer) UpdatePluginSetting(c *contextmodel.ReqContext) response.R | |||
| 		return response.Error(http.StatusBadRequest, "Cannot disable auto-enabled plugin", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd.OrgId = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgId = c.GetOrgID() | ||||
| 	cmd.PluginId = pluginID | ||||
| 	if err := hs.PluginSettings.UpdatePluginSetting(c.Req.Context(), &pluginsettings.UpdateArgs{ | ||||
| 		Enabled:                 cmd.Enabled, | ||||
|  | @ -418,7 +418,7 @@ func (hs *HTTPServer) redirectCDNPluginAsset(c *contextmodel.ReqContext, plugin | |||
| // /api/plugins/:pluginId/health
 | ||||
| func (hs *HTTPServer) CheckHealth(c *contextmodel.ReqContext) response.Response { | ||||
| 	pluginID := web.Params(c.Req)[":pluginId"] | ||||
| 	pCtx, err := hs.pluginContextProvider.Get(c.Req.Context(), pluginID, c.SignedInUser, c.SignedInUser.GetOrgID()) | ||||
| 	pCtx, err := hs.pluginContextProvider.Get(c.Req.Context(), pluginID, c.SignedInUser, c.GetOrgID()) | ||||
| 	if err != nil { | ||||
| 		return response.ErrOrFallback(http.StatusInternalServerError, "Failed to get plugin settings", err) | ||||
| 	} | ||||
|  | @ -559,13 +559,13 @@ func (hs *HTTPServer) hasPluginRequestedPermissions(c *contextmodel.ReqContext, | |||
| 	} | ||||
| 
 | ||||
| 	// No registration => Early return
 | ||||
| 	if plugin.JSONData.IAM == nil || len(plugin.JSONData.IAM.Permissions) == 0 { | ||||
| 	if plugin.IAM == nil || len(plugin.IAM.Permissions) == 0 { | ||||
| 		hs.log.Debug("plugin did not request permissions on Grafana", "pluginID", pluginID) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	hs.log.Debug("check installer's permissions, plugin wants to register an external service") | ||||
| 	evaluator := evalAllPermissions(plugin.JSONData.IAM.Permissions) | ||||
| 	evaluator := evalAllPermissions(plugin.IAM.Permissions) | ||||
| 	hasAccess := ac.HasGlobalAccess(hs.AccessControl, hs.authnService, c) | ||||
| 	if hs.Cfg.RBAC.SingleOrganization { | ||||
| 		// In a single organization setup, no need for a global check
 | ||||
|  |  | |||
|  | @ -365,11 +365,7 @@ func TestMakePluginResourceRequest(t *testing.T) { | |||
| 	err := hs.makePluginResourceRequest(resp, req, pCtx) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for { | ||||
| 		if resp.Flushed { | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	require.True(t, resp.Flushed, "response should be flushed after request is processed") | ||||
| 
 | ||||
| 	res := resp.Result() | ||||
| 	require.NoError(t, res.Body.Close()) | ||||
|  | @ -402,11 +398,7 @@ func TestMakePluginResourceRequestContentTypeUnique(t *testing.T) { | |||
| 			err := hs.makePluginResourceRequest(resp, req, pCtx) | ||||
| 			require.NoError(t, err) | ||||
| 
 | ||||
| 			for { | ||||
| 				if resp.Flushed { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			require.True(t, resp.Flushed, "response should be flushed after request is processed") | ||||
| 			require.Len(t, resp.Header().Values("Content-Type"), 1, "should have 1 Content-Type header") | ||||
| 			require.Len(t, resp.Header().Values("x-another"), 1, "should have 1 X-Another header") | ||||
| 		}) | ||||
|  | @ -428,12 +420,7 @@ func TestMakePluginResourceRequestContentTypeEmpty(t *testing.T) { | |||
| 	err := hs.makePluginResourceRequest(resp, req, pCtx) | ||||
| 	require.NoError(t, err) | ||||
| 
 | ||||
| 	for { | ||||
| 		if resp.Flushed { | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	require.True(t, resp.Flushed, "response should be flushed after request is processed") | ||||
| 	require.Zero(t, resp.Header().Get("Content-Type")) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -22,13 +22,13 @@ func (hs *HTTPServer) SetHomeDashboard(c *contextmodel.ReqContext) response.Resp | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to set home dashboard", err) | ||||
| 	} | ||||
| 
 | ||||
| 	cmd.UserID = userID | ||||
| 	cmd.OrgID = c.SignedInUser.GetOrgID() | ||||
| 	cmd.OrgID = c.GetOrgID() | ||||
| 
 | ||||
| 	// the default value of HomeDashboardID is taken from input, when HomeDashboardID is set also,
 | ||||
| 	// UID is used in preference to identify dashboard
 | ||||
|  | @ -64,12 +64,12 @@ func (hs *HTTPServer) SetHomeDashboard(c *contextmodel.ReqContext) response.Resp | |||
| // 401: unauthorisedError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetUserPreferences(c *contextmodel.ReqContext) response.Response { | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to update user preferences", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return prefapi.GetPreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.SignedInUser.GetOrgID(), userID, 0) | ||||
| 	return prefapi.GetPreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.GetOrgID(), userID, 0) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PUT /user/preferences user_preferences updateUserPreferences
 | ||||
|  | @ -89,13 +89,13 @@ func (hs *HTTPServer) UpdateUserPreferences(c *contextmodel.ReqContext) response | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to update user preferences", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return prefapi.UpdatePreferencesFor(c.Req.Context(), hs.DashboardService, | ||||
| 		hs.preferenceService, hs.Features, c.SignedInUser.GetOrgID(), userID, 0, &dtoCmd) | ||||
| 		hs.preferenceService, hs.Features, c.GetOrgID(), userID, 0, &dtoCmd) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PATCH /user/preferences user_preferences patchUserPreferences
 | ||||
|  | @ -113,12 +113,12 @@ func (hs *HTTPServer) PatchUserPreferences(c *contextmodel.ReqContext) response. | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Failed to update user preferences", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return hs.patchPreferencesFor(c.Req.Context(), c.SignedInUser.GetOrgID(), userID, 0, &dtoCmd) | ||||
| 	return hs.patchPreferencesFor(c.Req.Context(), c.GetOrgID(), userID, 0, &dtoCmd) | ||||
| } | ||||
| 
 | ||||
| func (hs *HTTPServer) patchPreferencesFor(ctx context.Context, orgID, userID, teamId int64, dtoCmd *dtos.PatchPrefsCmd) response.Response { | ||||
|  | @ -176,7 +176,7 @@ func (hs *HTTPServer) patchPreferencesFor(ctx context.Context, orgID, userID, te | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetOrgPreferences(c *contextmodel.ReqContext) response.Response { | ||||
| 	return prefapi.GetPreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.SignedInUser.GetOrgID(), 0, 0) | ||||
| 	return prefapi.GetPreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.GetOrgID(), 0, 0) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PUT /org/preferences org_preferences updateOrgPreferences
 | ||||
|  | @ -195,7 +195,7 @@ func (hs *HTTPServer) UpdateOrgPreferences(c *contextmodel.ReqContext) response. | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return prefapi.UpdatePreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.SignedInUser.GetOrgID(), 0, 0, &dtoCmd) | ||||
| 	return prefapi.UpdatePreferencesFor(c.Req.Context(), hs.DashboardService, hs.preferenceService, hs.Features, c.GetOrgID(), 0, 0, &dtoCmd) | ||||
| } | ||||
| 
 | ||||
| // swagger:route PATCH /org/preferences org_preferences patchOrgPreferences
 | ||||
|  | @ -213,7 +213,7 @@ func (hs *HTTPServer) PatchOrgPreferences(c *contextmodel.ReqContext) response.R | |||
| 	if err := web.Bind(c.Req, &dtoCmd); err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 	return hs.patchPreferencesFor(c.Req.Context(), c.SignedInUser.GetOrgID(), 0, 0, &dtoCmd) | ||||
| 	return hs.patchPreferencesFor(c.Req.Context(), c.GetOrgID(), 0, 0, &dtoCmd) | ||||
| } | ||||
| 
 | ||||
| // swagger:parameters  updateUserPreferences
 | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| // 404: notFoundError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetCurrentOrgQuotas(c *contextmodel.ReqContext) response.Response { | ||||
| 	return hs.getOrgQuotasHelper(c, c.SignedInUser.GetOrgID()) | ||||
| 	return hs.getOrgQuotasHelper(c, c.GetOrgID()) | ||||
| } | ||||
| 
 | ||||
| // swagger:route GET /orgs/{org_id}/quotas orgs getOrgQuota
 | ||||
|  |  | |||
|  | @ -65,7 +65,7 @@ func (hs *HTTPServer) RenderHandler(c *contextmodel.ReqContext) { | |||
| 		headers["Accept-Language"] = acceptLanguageHeader | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		hs.log.Debug("Failed to parse user id", "err", err) | ||||
| 	} | ||||
|  | @ -83,9 +83,9 @@ func (hs *HTTPServer) RenderHandler(c *contextmodel.ReqContext) { | |||
| 				Timeout: time.Duration(timeout) * time.Second, | ||||
| 			}, | ||||
| 			AuthOpts: rendering.AuthOpts{ | ||||
| 				OrgID:   c.SignedInUser.GetOrgID(), | ||||
| 				OrgID:   c.GetOrgID(), | ||||
| 				UserID:  userID, | ||||
| 				OrgRole: c.SignedInUser.GetOrgRole(), | ||||
| 				OrgRole: c.GetOrgRole(), | ||||
| 			}, | ||||
| 			Path:            web.Params(c.Req)["*"] + queryParams, | ||||
| 			Timezone:        queryReader.Get("tz", ""), | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ func (hs *HTTPServer) Search(c *contextmodel.ReqContext) response.Response { | |||
| 	deleted := c.Query("deleted") | ||||
| 	permission := dashboardaccess.PERMISSION_VIEW | ||||
| 
 | ||||
| 	if deleted == "true" && c.SignedInUser.GetOrgRole() != org.RoleAdmin { | ||||
| 	if deleted == "true" && c.GetOrgRole() != org.RoleAdmin { | ||||
| 		return response.Error(http.StatusUnauthorized, "Unauthorized", nil) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -88,7 +88,7 @@ func (hs *HTTPServer) Search(c *contextmodel.ReqContext) response.Response { | |||
| 		Page:          page, | ||||
| 		IsStarred:     starred == "true", | ||||
| 		IsDeleted:     deleted == "true", | ||||
| 		OrgId:         c.SignedInUser.GetOrgID(), | ||||
| 		OrgId:         c.GetOrgID(), | ||||
| 		DashboardIds:  dbIDs, | ||||
| 		DashboardUIDs: dbUIDs, | ||||
| 		Type:          dashboardType, | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ func (hs *HTTPServer) createShortURL(c *contextmodel.ReqContext) response.Respon | |||
| 		return response.Err(err) | ||||
| 	} | ||||
| 
 | ||||
| 	url := fmt.Sprintf("%s/goto/%s?orgId=%d", strings.TrimSuffix(hs.Cfg.AppURL, "/"), shortURL.Uid, c.SignedInUser.GetOrgID()) | ||||
| 	url := fmt.Sprintf("%s/goto/%s?orgId=%d", strings.TrimSuffix(hs.Cfg.AppURL, "/"), shortURL.Uid, c.GetOrgID()) | ||||
| 	c.Logger.Debug("Created short URL", "url", url) | ||||
| 
 | ||||
| 	dto := dtos.ShortURL{ | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ func (hs *HTTPServer) SignUp(c *contextmodel.ReqContext) response.Response { | |||
| 		return response.Error(http.StatusUnprocessableEntity, "User with same email address already exists", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := identity.UserIdentifier(c.SignedInUser.GetID()) | ||||
| 	userID, err := identity.UserIdentifier(c.GetID()) | ||||
| 	if err != nil { | ||||
| 		hs.log.Debug("Failed to parse user id", "err", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ func (hs *HTTPServer) registerSwaggerUI(r routing.RouteRegister) { | |||
| 
 | ||||
| 	// The swagger based api navigator
 | ||||
| 	r.Get("/swagger", func(c *contextmodel.ReqContext) { | ||||
| 		ctx := c.Context.Req.Context() | ||||
| 		ctx := c.Req.Context() | ||||
| 		assets, err := webassets.GetWebAssets(ctx, hs.Cfg, hs.License) | ||||
| 		if err != nil { | ||||
| 			errhttp.Write(ctx, err, c.Resp) | ||||
|  |  | |||
|  | @ -33,12 +33,12 @@ import ( | |||
| func (hs *HTTPServer) GetSignedInUser(c *contextmodel.ReqContext) response.Response { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return response.JSON(http.StatusOK, user.UserProfileDTO{ | ||||
| 			IsGrafanaAdmin: c.SignedInUser.GetIsGrafanaAdmin(), | ||||
| 			OrgID:          c.SignedInUser.GetOrgID(), | ||||
| 			UID:            c.SignedInUser.GetID(), | ||||
| 			Name:           c.SignedInUser.GetName(), | ||||
| 			Email:          c.SignedInUser.GetEmail(), | ||||
| 			Login:          c.SignedInUser.GetLogin(), | ||||
| 			IsGrafanaAdmin: c.GetIsGrafanaAdmin(), | ||||
| 			OrgID:          c.GetOrgID(), | ||||
| 			UID:            c.GetID(), | ||||
| 			Name:           c.GetName(), | ||||
| 			Email:          c.GetEmail(), | ||||
| 			Login:          c.GetLogin(), | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -156,10 +156,10 @@ func (hs *HTTPServer) UpdateSignedInUser(c *contextmodel.ReqContext) response.Re | |||
| 	} | ||||
| 
 | ||||
| 	if hs.Cfg.AuthProxy.Enabled { | ||||
| 		if hs.Cfg.AuthProxy.HeaderProperty == "email" && cmd.Email != c.SignedInUser.GetEmail() { | ||||
| 		if hs.Cfg.AuthProxy.HeaderProperty == "email" && cmd.Email != c.GetEmail() { | ||||
| 			return response.Error(http.StatusBadRequest, "Not allowed to change email when auth proxy is using email property", nil) | ||||
| 		} | ||||
| 		if hs.Cfg.AuthProxy.HeaderProperty == "username" && cmd.Login != c.SignedInUser.GetLogin() { | ||||
| 		if hs.Cfg.AuthProxy.HeaderProperty == "username" && cmd.Login != c.GetLogin() { | ||||
| 			return response.Error(http.StatusBadRequest, "Not allowed to change username when auth proxy is using username property", nil) | ||||
| 		} | ||||
| 	} | ||||
|  | @ -277,16 +277,16 @@ func (hs *HTTPServer) handleUpdateUser(ctx context.Context, cmd user.UpdateUserC | |||
| } | ||||
| 
 | ||||
| func (hs *HTTPServer) StartEmailVerificaton(c *contextmodel.ReqContext) response.Response { | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return response.Error(http.StatusBadRequest, "Only users can verify their email", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	if c.SignedInUser.GetEmailVerified() { | ||||
| 	if c.GetEmailVerified() { | ||||
| 		// email is already verified so we don't need to trigger the flow.
 | ||||
| 		return response.Respond(http.StatusNotModified, nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "Got invalid user id", err) | ||||
| 	} | ||||
|  | @ -375,7 +375,7 @@ func (hs *HTTPServer) GetSignedInUserTeamList(c *contextmodel.ReqContext) respon | |||
| 		return errResponse | ||||
| 	} | ||||
| 
 | ||||
| 	return hs.getUserTeamList(c, c.SignedInUser.GetOrgID(), userID) | ||||
| 	return hs.getUserTeamList(c, c.GetOrgID(), userID) | ||||
| } | ||||
| 
 | ||||
| // swagger:route GET /users/{user_id}/teams users getUserTeams
 | ||||
|  | @ -395,7 +395,7 @@ func (hs *HTTPServer) GetUserTeams(c *contextmodel.ReqContext) response.Response | |||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusBadRequest, "id is invalid", err) | ||||
| 	} | ||||
| 	return hs.getUserTeamList(c, c.SignedInUser.GetOrgID(), id) | ||||
| 	return hs.getUserTeamList(c, c.GetOrgID(), id) | ||||
| } | ||||
| 
 | ||||
| func (hs *HTTPServer) getUserTeamList(c *contextmodel.ReqContext, orgID int64, userID int64) response.Response { | ||||
|  | @ -504,13 +504,13 @@ func (hs *HTTPServer) ChangeActiveOrgAndRedirectToHome(c *contextmodel.ReqContex | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		hs.log.Debug("Requested endpoint only available to users") | ||||
| 		c.JsonApiErr(http.StatusNotModified, "Endpoint only available for users", nil) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		c.JsonApiErr(http.StatusInternalServerError, "Failed to parse user id", err) | ||||
| 		return | ||||
|  | @ -630,12 +630,12 @@ func (hs *HTTPServer) ClearHelpFlags(c *contextmodel.ReqContext) response.Respon | |||
| } | ||||
| 
 | ||||
| func (hs *HTTPServer) getUserID(c *contextmodel.ReqContext) (int64, *response.NormalResponse) { | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		hs.log.Debug("Requested endpoint only available to users") | ||||
| 		return 0, response.Error(http.StatusNotModified, "Endpoint only available for users", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return 0, response.Error(http.StatusInternalServerError, "Failed to parse user id", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -33,11 +33,11 @@ import ( | |||
| // 403: forbiddenError
 | ||||
| // 500: internalServerError
 | ||||
| func (hs *HTTPServer) GetUserAuthTokens(c *contextmodel.ReqContext) response.Response { | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return response.Error(http.StatusForbidden, "entity not allowed to get tokens", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "failed to parse user id", err) | ||||
| 	} | ||||
|  | @ -63,11 +63,11 @@ func (hs *HTTPServer) RevokeUserAuthToken(c *contextmodel.ReqContext) response.R | |||
| 		return response.Error(http.StatusBadRequest, "bad request data", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if !c.SignedInUser.IsIdentityType(claims.TypeUser) { | ||||
| 	if !c.IsIdentityType(claims.TypeUser) { | ||||
| 		return response.Error(http.StatusForbidden, "entity not allowed to revoke tokens", nil) | ||||
| 	} | ||||
| 
 | ||||
| 	userID, err := c.SignedInUser.GetInternalID() | ||||
| 	userID, err := c.GetInternalID() | ||||
| 	if err != nil { | ||||
| 		return response.Error(http.StatusInternalServerError, "failed to parse user id", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -857,7 +857,7 @@ func (b *BlobInfo) ContentType() string { | |||
| func (b *BlobInfo) String() string { | ||||
| 	sb := bytes.NewBufferString(b.UID) | ||||
| 	if b.Size > 0 { | ||||
| 		sb.WriteString(fmt.Sprintf("; size=%d", b.Size)) | ||||
| 		fmt.Fprintf(sb, "; size=%d", b.Size) | ||||
| 	} | ||||
| 	if b.Hash != "" { | ||||
| 		sb.WriteString("; hash=") | ||||
|  |  | |||
|  | @ -36,7 +36,6 @@ require ( | |||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/gorilla/websocket v1.5.3 // indirect | ||||
| 	github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect | ||||
|  | @ -51,8 +50,8 @@ require ( | |||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||||
| 	github.com/prometheus/client_golang v1.21.1 // indirect | ||||
|  | @ -84,7 +83,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
|  |  | |||
|  | @ -121,10 +121,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G | |||
| github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
|  | @ -267,8 +267,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
|  |  | |||
|  | @ -212,7 +212,7 @@ func (ra *ResponseAdapter) FlushError() error { | |||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	return ra.buffered.Writer.Flush() | ||||
| 	return ra.buffered.Flush() | ||||
| } | ||||
| 
 | ||||
| // Response returns the [http.Response] generated by the [http.Handler].
 | ||||
|  |  | |||
|  | @ -42,7 +42,6 @@ require ( | |||
| 	github.com/google/btree v1.1.3 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/gorilla/websocket v1.5.3 // indirect | ||||
| 	github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect | ||||
|  | @ -57,8 +56,8 @@ require ( | |||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.0 // indirect | ||||
| 	github.com/onsi/gomega v1.36.1 // indirect | ||||
| 	github.com/onsi/ginkgo/v2 v2.22.2 // indirect | ||||
| 	github.com/onsi/gomega v1.36.2 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
|  | @ -88,7 +87,7 @@ require ( | |||
| 	golang.org/x/sys v0.31.0 // indirect | ||||
| 	golang.org/x/term v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.23.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/time v0.10.0 // indirect | ||||
| 	golang.org/x/tools v0.31.0 // indirect | ||||
| 	google.golang.org/genproto v0.0.0-20250122153221-138b5a5a4fd4 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect | ||||
|  |  | |||
|  | @ -125,10 +125,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G | |||
| github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= | ||||
| github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= | ||||
| github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= | ||||
| github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= | ||||
| github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= | ||||
| github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= | ||||
| github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= | ||||
| github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
|  | @ -275,8 +275,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
|  |  | |||
|  | @ -51,17 +51,17 @@ func TestGenericStrategy(t *testing.T) { | |||
| 			t.Parallel() | ||||
| 			oldObj := obj.DeepCopy() | ||||
| 			newObj := obj.DeepCopy() | ||||
| 			newObj.ObjectMeta.Annotations = map[string]string{"foo": "baz"} | ||||
| 			newObj.ObjectMeta.Labels = map[string]string{"foo": "baz"} | ||||
| 			newObj.ObjectMeta.Finalizers = []string{"foo"} | ||||
| 			newObj.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 			newObj.Annotations = map[string]string{"foo": "baz"} | ||||
| 			newObj.Labels = map[string]string{"foo": "baz"} | ||||
| 			newObj.Finalizers = []string{"foo"} | ||||
| 			newObj.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 
 | ||||
| 			strategy := generic.NewStrategy(runtime.NewScheme(), gv) | ||||
| 			strategy.PrepareForUpdate(t.Context(), newObj, oldObj) | ||||
| 			assert.Equal(t, map[string]string{"foo": "baz"}, newObj.ObjectMeta.Annotations) | ||||
| 			assert.Equal(t, map[string]string{"foo": "baz"}, newObj.ObjectMeta.Labels) | ||||
| 			assert.Equal(t, []string{"foo"}, newObj.ObjectMeta.Finalizers) | ||||
| 			assert.Equal(t, []metav1.OwnerReference{{Name: "foo"}}, newObj.ObjectMeta.OwnerReferences) | ||||
| 			assert.Equal(t, map[string]string{"foo": "baz"}, newObj.Annotations) | ||||
| 			assert.Equal(t, map[string]string{"foo": "baz"}, newObj.Labels) | ||||
| 			assert.Equal(t, []string{"foo"}, newObj.Finalizers) | ||||
| 			assert.Equal(t, []metav1.OwnerReference{{Name: "foo"}}, newObj.OwnerReferences) | ||||
| 			assert.Equal(t, int64(1), newObj.Generation) | ||||
| 		}) | ||||
| 
 | ||||
|  | @ -165,7 +165,7 @@ func TestStatusStrategy(t *testing.T) { | |||
| 			t.Parallel() | ||||
| 			oldObj := obj.DeepCopy() | ||||
| 			newObj := obj.DeepCopy() | ||||
| 			newObj.ObjectMeta.Labels = map[string]string{"foo": "baz"} | ||||
| 			newObj.Labels = map[string]string{"foo": "baz"} | ||||
| 			expectedObj := obj.DeepCopy() | ||||
| 
 | ||||
| 			strategy := generic.NewStatusStrategy(runtime.NewScheme(), gv) | ||||
|  | @ -177,7 +177,7 @@ func TestStatusStrategy(t *testing.T) { | |||
| 			t.Parallel() | ||||
| 			oldObj := obj.DeepCopy() | ||||
| 			newObj := obj.DeepCopy() | ||||
| 			newObj.ObjectMeta.Annotations = map[string]string{"foo": "baz"} | ||||
| 			newObj.Annotations = map[string]string{"foo": "baz"} | ||||
| 			expectedObj := obj.DeepCopy() | ||||
| 
 | ||||
| 			strategy := generic.NewStatusStrategy(runtime.NewScheme(), gv) | ||||
|  | @ -189,7 +189,7 @@ func TestStatusStrategy(t *testing.T) { | |||
| 			t.Parallel() | ||||
| 			oldObj := obj.DeepCopy() | ||||
| 			newObj := obj.DeepCopy() | ||||
| 			newObj.ObjectMeta.Finalizers = []string{"foo"} | ||||
| 			newObj.Finalizers = []string{"foo"} | ||||
| 			expectedObj := obj.DeepCopy() | ||||
| 
 | ||||
| 			strategy := generic.NewStatusStrategy(runtime.NewScheme(), gv) | ||||
|  | @ -201,7 +201,7 @@ func TestStatusStrategy(t *testing.T) { | |||
| 			t.Parallel() | ||||
| 			oldObj := obj.DeepCopy() | ||||
| 			newObj := obj.DeepCopy() | ||||
| 			newObj.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 			newObj.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 			expectedObj := obj.DeepCopy() | ||||
| 
 | ||||
| 			strategy := generic.NewStatusStrategy(runtime.NewScheme(), gv) | ||||
|  | @ -302,27 +302,27 @@ func TestCompleteStrategy(t *testing.T) { | |||
| 				t.Parallel() | ||||
| 				oldObj := obj.DeepCopy() | ||||
| 				newObj := obj.DeepCopy() | ||||
| 				newObj.ObjectMeta.Annotations = map[string]string{"foo": "baz"} | ||||
| 				newObj.ObjectMeta.Labels = map[string]string{"foo": "baz"} | ||||
| 				newObj.ObjectMeta.Finalizers = []string{"foo"} | ||||
| 				newObj.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 				newObj.Annotations = map[string]string{"foo": "baz"} | ||||
| 				newObj.Labels = map[string]string{"foo": "baz"} | ||||
| 				newObj.Finalizers = []string{"foo"} | ||||
| 				newObj.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 
 | ||||
| 				strategy := generic.NewCompleteStrategy(runtime.NewScheme(), gv) | ||||
| 				strategy.PrepareForUpdate(t.Context(), newObj, oldObj) | ||||
| 				assert.Equal(t, map[string]string{"foo": "baz"}, newObj.ObjectMeta.Annotations) | ||||
| 				assert.Equal(t, map[string]string{"foo": "baz"}, newObj.ObjectMeta.Labels) | ||||
| 				assert.Equal(t, []string{"foo"}, newObj.ObjectMeta.Finalizers) | ||||
| 				assert.Equal(t, []metav1.OwnerReference{{Name: "foo"}}, newObj.ObjectMeta.OwnerReferences) | ||||
| 				assert.Equal(t, map[string]string{"foo": "baz"}, newObj.Annotations) | ||||
| 				assert.Equal(t, map[string]string{"foo": "baz"}, newObj.Labels) | ||||
| 				assert.Equal(t, []string{"foo"}, newObj.Finalizers) | ||||
| 				assert.Equal(t, []metav1.OwnerReference{{Name: "foo"}}, newObj.OwnerReferences) | ||||
| 			}) | ||||
| 
 | ||||
| 			t.Run("does not increment generation", func(t *testing.T) { | ||||
| 				t.Parallel() | ||||
| 				oldObj := obj.DeepCopy() | ||||
| 				newObj := obj.DeepCopy() | ||||
| 				newObj.ObjectMeta.Annotations = map[string]string{"foo": "baz"} | ||||
| 				newObj.ObjectMeta.Labels = map[string]string{"foo": "baz"} | ||||
| 				newObj.ObjectMeta.Finalizers = []string{"foo"} | ||||
| 				newObj.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 				newObj.Annotations = map[string]string{"foo": "baz"} | ||||
| 				newObj.Labels = map[string]string{"foo": "baz"} | ||||
| 				newObj.Finalizers = []string{"foo"} | ||||
| 				newObj.OwnerReferences = []metav1.OwnerReference{{Name: "foo"}} | ||||
| 
 | ||||
| 				strategy := generic.NewCompleteStrategy(runtime.NewScheme(), gv) | ||||
| 				strategy.PrepareForUpdate(t.Context(), newObj, oldObj) | ||||
|  |  | |||
|  | @ -63,8 +63,8 @@ func RunTestCreate(ctx context.Context, t *testing.T, store storage.Interface, v | |||
| 				return | ||||
| 			} | ||||
| 			// basic tests of the output
 | ||||
| 			if tt.inputObj.ObjectMeta.Name != out.ObjectMeta.Name { | ||||
| 				t.Errorf("pod name want=%s, get=%s", tt.inputObj.ObjectMeta.Name, out.ObjectMeta.Name) | ||||
| 			if tt.inputObj.Name != out.Name { | ||||
| 				t.Errorf("pod name want=%s, get=%s", tt.inputObj.Name, out.Name) | ||||
| 			} | ||||
| 			if out.ResourceVersion == "" { | ||||
| 				t.Errorf("output should have non-empty resource version") | ||||
|  | @ -360,7 +360,7 @@ func RunTestDeleteWithSuggestionAndConflict(ctx context.Context, t *testing.T, s | |||
| 	if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 		storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 			pod := obj.(*example.Pod) | ||||
| 			pod.ObjectMeta.Labels = map[string]string{"foo": "bar"} | ||||
| 			pod.Labels = map[string]string{"foo": "bar"} | ||||
| 			return pod, nil | ||||
| 		}), nil); err != nil { | ||||
| 		t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -374,7 +374,7 @@ func RunTestDeleteWithSuggestionAndConflict(ctx context.Context, t *testing.T, s | |||
| 	if err := store.Get(ctx, key, storage.GetOptions{}, &example.Pod{}); !storage.IsNotFound(err) { | ||||
| 		t.Errorf("Unexpected error on reading object: %v", err) | ||||
| 	} | ||||
| 	updatedPod.ObjectMeta.ResourceVersion = out.ObjectMeta.ResourceVersion | ||||
| 	updatedPod.ResourceVersion = out.ResourceVersion | ||||
| 	expectNoDiff(t, "incorrect pod:", updatedPod, out) | ||||
| } | ||||
| 
 | ||||
|  | @ -395,7 +395,7 @@ func RunTestDeleteWithConflict(ctx context.Context, t *testing.T, store storage. | |||
| 		if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 			storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 				pod := obj.(*example.Pod) | ||||
| 				pod.ObjectMeta.Labels = map[string]string{"foo": "bar"} | ||||
| 				pod.Labels = map[string]string{"foo": "bar"} | ||||
| 				return pod, nil | ||||
| 			}), nil); err != nil { | ||||
| 			t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -419,7 +419,7 @@ func RunTestDeleteWithConflict(ctx context.Context, t *testing.T, store storage. | |||
| 	if err := store.Get(ctx, key, storage.GetOptions{}, &example.Pod{}); !storage.IsNotFound(err) { | ||||
| 		t.Errorf("Unexpected error on reading object: %v", err) | ||||
| 	} | ||||
| 	updatedPod.ObjectMeta.ResourceVersion = out.ObjectMeta.ResourceVersion | ||||
| 	updatedPod.ResourceVersion = out.ResourceVersion | ||||
| 	expectNoDiff(t, "incorrect pod:", updatedPod, out) | ||||
| } | ||||
| 
 | ||||
|  | @ -462,7 +462,7 @@ func RunTestValidateDeletionWithSuggestion(ctx context.Context, t *testing.T, st | |||
| 	if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 		storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 			pod := obj.(*example.Pod) | ||||
| 			pod.ObjectMeta.Labels = map[string]string{"foo": "bar"} | ||||
| 			pod.Labels = map[string]string{"foo": "bar"} | ||||
| 			return pod, nil | ||||
| 		}), nil); err != nil { | ||||
| 		t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -472,7 +472,7 @@ func RunTestValidateDeletionWithSuggestion(ctx context.Context, t *testing.T, st | |||
| 	validateFresh := func(_ context.Context, obj runtime.Object) error { | ||||
| 		calls++ | ||||
| 		pod := obj.(*example.Pod) | ||||
| 		if pod.ObjectMeta.Labels == nil || pod.ObjectMeta.Labels["foo"] != "bar" { | ||||
| 		if pod.Labels == nil || pod.Labels["foo"] != "bar" { | ||||
| 			return fmt.Errorf("stale object") | ||||
| 		} | ||||
| 		return nil | ||||
|  | @ -518,7 +518,7 @@ func RunTestValidateDeletionWithOnlySuggestionValid(ctx context.Context, t *test | |||
| 	if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 		storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 			pod := obj.(*example.Pod) | ||||
| 			pod.ObjectMeta.Labels = map[string]string{"foo": "barbar"} | ||||
| 			pod.Labels = map[string]string{"foo": "barbar"} | ||||
| 			return pod, nil | ||||
| 		}), nil); err != nil { | ||||
| 		t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -528,7 +528,7 @@ func RunTestValidateDeletionWithOnlySuggestionValid(ctx context.Context, t *test | |||
| 	validateFresh := func(_ context.Context, obj runtime.Object) error { | ||||
| 		calls++ | ||||
| 		pod := obj.(*example.Pod) | ||||
| 		if pod.ObjectMeta.Labels == nil || pod.ObjectMeta.Labels["foo"] != "bar" { | ||||
| 		if pod.Labels == nil || pod.Labels["foo"] != "bar" { | ||||
| 			return fmt.Errorf("stale object") | ||||
| 		} | ||||
| 		return nil | ||||
|  | @ -559,7 +559,7 @@ func RunTestPreconditionalDeleteWithSuggestion(ctx context.Context, t *testing.T | |||
| 	if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 		storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 			pod := obj.(*example.Pod) | ||||
| 			pod.ObjectMeta.UID = "myUID" | ||||
| 			pod.UID = "myUID" | ||||
| 			return pod, nil | ||||
| 		}), nil); err != nil { | ||||
| 		t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -587,7 +587,7 @@ func RunTestPreconditionalDeleteWithOnlySuggestionPass(ctx context.Context, t *t | |||
| 	if err := store.GuaranteedUpdate(ctx, key, updatedPod, false, nil, | ||||
| 		storage.SimpleUpdate(func(obj runtime.Object) (runtime.Object, error) { | ||||
| 			pod := obj.(*example.Pod) | ||||
| 			pod.ObjectMeta.UID = "otherUID" | ||||
| 			pod.UID = "otherUID" | ||||
| 			return pod, nil | ||||
| 		}), nil); err != nil { | ||||
| 		t.Errorf("Unexpected failure during updated: %v", err) | ||||
|  | @ -2083,7 +2083,7 @@ func RunTestListInconsistentContinuation(ctx context.Context, t *testing.T, stor | |||
| 	if !ok { | ||||
| 		t.Fatalf("expect error of implements the APIStatus interface, got %v", reflect.TypeOf(err)) | ||||
| 	} | ||||
| 	inconsistentContinueFromSecondItem := status.Status().ListMeta.Continue | ||||
| 	inconsistentContinueFromSecondItem := status.Status().Continue | ||||
| 	if len(inconsistentContinueFromSecondItem) == 0 { | ||||
| 		t.Fatalf("expect non-empty continue token") | ||||
| 	} | ||||
|  | @ -2345,8 +2345,8 @@ func RunTestGuaranteedUpdate(ctx context.Context, t *testing.T, store InterfaceW | |||
| 			if err != nil { | ||||
| 				t.Fatalf("%s: GuaranteedUpdate failed: %v", tt.name, err) | ||||
| 			} | ||||
| 			if !reflect.DeepEqual(out.ObjectMeta.Annotations, annotations) { | ||||
| 				t.Errorf("%s: pod annotations want=%s, get=%s", tt.name, annotations, out.ObjectMeta.Annotations) | ||||
| 			if !reflect.DeepEqual(out.Annotations, annotations) { | ||||
| 				t.Errorf("%s: pod annotations want=%s, get=%s", tt.name, annotations, out.Annotations) | ||||
| 			} | ||||
| 			// nolint:staticcheck
 | ||||
| 			if out.SelfLink != "" { | ||||
|  |  | |||
|  | @ -1577,8 +1577,8 @@ func namespacedScopedNodeNameAttrFunc(obj runtime.Object) (labels.Set, fields.Se | |||
| 	pod := obj.(*example.Pod) | ||||
| 	return nil, fields.Set{ | ||||
| 		"spec.nodeName":      pod.Spec.NodeName, | ||||
| 		"metadata.name":      pod.ObjectMeta.Name, | ||||
| 		"metadata.namespace": pod.ObjectMeta.Namespace, | ||||
| 		"metadata.name":      pod.Name, | ||||
| 		"metadata.namespace": pod.Namespace, | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -1586,7 +1586,7 @@ func clusterScopedNodeNameAttrFunc(obj runtime.Object) (labels.Set, fields.Set, | |||
| 	pod := obj.(*example.Pod) | ||||
| 	return nil, fields.Set{ | ||||
| 		"spec.nodeName": pod.Spec.NodeName, | ||||
| 		"metadata.name": pod.ObjectMeta.Name, | ||||
| 		"metadata.name": pod.Name, | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ replace github.com/docker/docker => github.com/moby/moby v27.5.1+incompatible | |||
| 
 | ||||
| require ( | ||||
| 	cloud.google.com/go/storage v1.50.0 // @grafana/grafana-backend-group | ||||
| 	github.com/Masterminds/semver/v3 v3.3.0 // @grafana/grafana-developer-enablement-squad | ||||
| 	github.com/Masterminds/semver/v3 v3.3.1 // @grafana/grafana-developer-enablement-squad | ||||
| 	github.com/aws/aws-sdk-go v1.55.6 // @grafana/aws-datasources | ||||
| 	github.com/docker/docker v27.5.1+incompatible // @grafana/grafana-developer-enablement-squad | ||||
| 	github.com/drone/drone-cli v1.8.0 // @grafana/grafana-developer-enablement-squad | ||||
|  | @ -31,8 +31,8 @@ require ( | |||
| 	golang.org/x/oauth2 v0.27.0 // @grafana/identity-access-team | ||||
| 	golang.org/x/sync v0.12.0 // indirect; @grafana/alerting-backend | ||||
| 	golang.org/x/text v0.23.0 // indirect; @grafana/grafana-backend-group | ||||
| 	golang.org/x/time v0.9.0 // indirect; @grafana/grafana-backend-group | ||||
| 	google.golang.org/api v0.220.0 // @grafana/grafana-backend-group | ||||
| 	golang.org/x/time v0.10.0 // indirect; @grafana/grafana-backend-group | ||||
| 	google.golang.org/api v0.223.0 // @grafana/grafana-backend-group | ||||
| 	google.golang.org/grpc v1.71.0 // indirect; @grafana/plugins-platform-backend | ||||
| 	google.golang.org/protobuf v1.36.6 // indirect; @grafana/plugins-platform-backend | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // @grafana/alerting-backend | ||||
|  | @ -40,7 +40,7 @@ require ( | |||
| 
 | ||||
| require ( | ||||
| 	cloud.google.com/go v0.118.2 // indirect | ||||
| 	cloud.google.com/go/auth v0.14.1 // indirect | ||||
| 	cloud.google.com/go/auth v0.15.0 // indirect | ||||
| 	cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect | ||||
| 	cloud.google.com/go/compute/metadata v0.6.0 // indirect | ||||
| 	cloud.google.com/go/iam v1.3.1 // indirect | ||||
|  |  | |||
|  | @ -3,8 +3,8 @@ cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= | |||
| cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| cloud.google.com/go v0.118.2 h1:bKXO7RXMFDkniAAvvuMrAPtQ/VHrs9e7J5UT3yrGdTY= | ||||
| cloud.google.com/go v0.118.2/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= | ||||
| cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= | ||||
| cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= | ||||
| cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= | ||||
| cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= | ||||
| cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= | ||||
| cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= | ||||
| cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= | ||||
|  | @ -42,8 +42,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp | |||
| github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0/go.mod h1:wRbFgBQUVm1YXrvWKofAEmq9HNJTDphbAaJSSX01KUI= | ||||
| github.com/Khan/genqlient v0.8.0 h1:Hd1a+E1CQHYbMEKakIkvBH3zW0PWEeiX6Hp1i2kP2WE= | ||||
| github.com/Khan/genqlient v0.8.0/go.mod h1:hn70SpYjWteRGvxTwo0kfaqg4wxvndECGkfa1fdDdYI= | ||||
| github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= | ||||
| github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= | ||||
| github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= | ||||
| github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= | ||||
| github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= | ||||
| github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= | ||||
|  | @ -344,8 +344,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |||
| golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | ||||
| golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | ||||
| golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= | ||||
| golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= | ||||
| golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= | ||||
|  | @ -358,8 +358,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | |||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/api v0.220.0 h1:3oMI4gdBgB72WFVwE1nerDD8W3HUOS4kypK6rRLbGns= | ||||
| google.golang.org/api v0.220.0/go.mod h1:26ZAlY6aN/8WgpCzjPNy18QpYaz7Zgg1h0qe1GkZEmY= | ||||
| google.golang.org/api v0.223.0 h1:JUTaWEriXmEy5AhvdMgksGGPEFsYfUKaPEYXd4c3Wvc= | ||||
| google.golang.org/api v0.223.0/go.mod h1:C+RS7Z+dDwds2b+zoAk5hN/eSfsiCn0UDrYof/M4d2M= | ||||
| google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||
| google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
| google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ require ( | |||
| 
 | ||||
| require ( | ||||
| 	github.com/cockroachdb/apd/v2 v2.0.2 // indirect | ||||
| 	github.com/dave/jennifer v1.6.0 // indirect | ||||
| 	github.com/dave/jennifer v1.7.1 // indirect | ||||
| 	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||||
| 	github.com/emicklei/proto v1.13.2 // indirect | ||||
| 	github.com/expr-lang/expr v1.17.0 // indirect | ||||
|  |  | |||
|  | @ -3,8 +3,8 @@ github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOG | |||
| github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||
| github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= | ||||
| github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= | ||||
| github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI= | ||||
| github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk= | ||||
| github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= | ||||
| github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= | ||||
|  |  | |||
|  | @ -51,6 +51,6 @@ func (jenny *CoreRegistryJenny) Generate(cueFiles ...SchemaForGen) (codejen.File | |||
| } | ||||
| 
 | ||||
| func getSchemaName(pkg string) (string, error) { | ||||
| 	pkg = strings.Replace(pkg, "-", "_", -1) | ||||
| 	pkg = strings.ReplaceAll(pkg, "-", "_") | ||||
| 	return strings.ToLower(pkg), nil | ||||
| } | ||||
|  |  | |||
|  | @ -86,7 +86,7 @@ func (gen *genTSVeneerIndex) extractTSIndexVeneerElements(def SchemaForGen, tf * | |||
| 			// Only deal with subpaths that are definitions, for now
 | ||||
| 			// TODO incorporate smarts about grouped lineages here
 | ||||
| 			if name == "" { | ||||
| 				if !(sels[0].IsDefinition() || sels[0].String() == "spec") { | ||||
| 				if !sels[0].IsDefinition() && sels[0].String() != "spec" { | ||||
| 					return false | ||||
| 				} | ||||
| 				// It might seem to make sense that we'd strip out the leading # here for
 | ||||
|  | @ -235,7 +235,7 @@ func findDeclNode(name, basename string, tf *ast.File) declPair { | |||
| 			} | ||||
| 		case ast.VarDecl: | ||||
| 			if x.Names.Idents[0].Name == "default"+name { | ||||
| 				p.D = &x.Names.Idents[0] | ||||
| 				p.D = &x.Idents[0] | ||||
| 				if name == "spec" { | ||||
| 					p.D.Name = "default" + basename | ||||
| 				} | ||||
|  |  | |||
|  | @ -207,7 +207,7 @@ func (f *JSONFormatter) processArray(array []any, deltas []diff.Delta) error { | |||
| 			if int(d.Position.(diff.Index)) < len(array) { | ||||
| 				continue | ||||
| 			} | ||||
| 			f.printRecursive(d.Position.String(), d.Value, ChangeAdded) | ||||
| 			f.printRecursive(d.String(), d.Value, ChangeAdded) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -227,7 +227,7 @@ func (f *JSONFormatter) processObject(object map[string]any, deltas []diff.Delta | |||
| 	for _, delta := range deltas { | ||||
| 		d, ok := delta.(*diff.Added) | ||||
| 		if ok { | ||||
| 			f.printRecursive(d.Position.String(), d.Value, ChangeAdded) | ||||
| 			f.printRecursive(d.String(), d.Value, ChangeAdded) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -225,5 +225,5 @@ type writerWrapper struct { | |||
| } | ||||
| 
 | ||||
| func (w writerWrapper) SetACL(acl string) { | ||||
| 	w.ObjectAttrs.PredefinedACL = acl | ||||
| 	w.PredefinedACL = acl | ||||
| } | ||||
|  |  | |||
|  | @ -63,7 +63,7 @@ func (e *Expr) Execute(refID string, vars Vars, tracer tracing.Tracer) (r Result | |||
| 
 | ||||
| func (e *Expr) executeState(s *State) (r Results, err error) { | ||||
| 	defer errRecover(&err, s) | ||||
| 	r, err = s.walk(e.Tree.Root) | ||||
| 	r, err = s.walk(e.Root) | ||||
| 	s.addDropNotices(&r) | ||||
| 	return | ||||
| } | ||||
|  |  | |||
|  | @ -176,7 +176,7 @@ func (f *FuncNode) Check(t *Tree) error { | |||
| 		// 	argType = TypeNumberSet
 | ||||
| 		// }
 | ||||
| 		if funcType == TypeVariantSet { | ||||
| 			if !(argType == TypeNumberSet || argType == TypeSeriesSet || argType == TypeScalar) { | ||||
| 			if argType != TypeNumberSet && argType != TypeSeriesSet && argType != TypeScalar { | ||||
| 				return fmt.Errorf("parse: expected %v or %v for argument %v, got %v", TypeNumberSet, TypeSeriesSet, i, argType) | ||||
| 			} | ||||
| 		} else if funcType != argType { | ||||
|  |  | |||
|  | @ -36,10 +36,7 @@ func (s Series) Resample(refID string, interval time.Duration, downsampler Reduc | |||
| 	for !t.After(to) && idx <= newSeriesLength { | ||||
| 		vals := make([]*float64, 0) | ||||
| 		sIdx := bookmark | ||||
| 		for { | ||||
| 			if sIdx == s.Len() { | ||||
| 				break | ||||
| 			} | ||||
| 		for sIdx != s.Len() { | ||||
| 			st, v := s.GetPoint(sIdx) | ||||
| 			if st.After(t) { | ||||
| 				break | ||||
|  |  | |||
|  | @ -74,8 +74,8 @@ func (s *Service) TransformData(ctx context.Context, now time.Time, req *Request | |||
| 	ctx, span := s.tracer.Start(ctx, "SSE.TransformData") | ||||
| 	defer func() { | ||||
| 		var respStatus string | ||||
| 		switch { | ||||
| 		case err == nil: | ||||
| 		switch err { | ||||
| 		case nil: | ||||
| 			respStatus = "success" | ||||
| 		default: | ||||
| 			respStatus = "failure" | ||||
|  |  | |||
|  | @ -134,7 +134,7 @@ func (c cdkBlobStorage) Upsert(ctx context.Context, command *UpsertFileCommand) | |||
| 			metadata[k] = v | ||||
| 		} | ||||
| 	} else { | ||||
| 		metadata = existing.FileMetadata.Properties | ||||
| 		metadata = existing.Properties | ||||
| 	} | ||||
| 
 | ||||
| 	metadata[originalPathAttributeKey] = existing.FullPath | ||||
|  | @ -294,10 +294,7 @@ func (c cdkBlobStorage) list(ctx context.Context, folderPath string, paging *Pag | |||
| 	recursive := options.Recursive | ||||
| 	pageSize := paging.Limit | ||||
| 
 | ||||
| 	foundCursor := true | ||||
| 	if paging.After != "" { | ||||
| 		foundCursor = false | ||||
| 	} | ||||
| 	foundCursor := paging.After == "" | ||||
| 
 | ||||
| 	files := make([]*File, 0) | ||||
| 
 | ||||
|  |  | |||
|  | @ -373,7 +373,7 @@ func (b wrapper) List(ctx context.Context, folderPath string, paging *Paging, op | |||
| 		return &ListResponse{ | ||||
| 			Files:    []*File{{Contents: contents, FileMetadata: file.FileMetadata}}, | ||||
| 			HasMore:  false, | ||||
| 			LastPath: file.FileMetadata.FullPath, | ||||
| 			LastPath: file.FullPath, | ||||
| 		}, nil | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -78,7 +78,7 @@ func PrometheusMetricsMiddleware(metrics *PrometheusMetrics) httpclient.Middlewa | |||
| 			metrics.inFlightGauge.Dec() | ||||
| 			metrics.requestsCounter.Inc() | ||||
| 			metrics.durationSecondsHistogram.Observe(time.Since(startTime).Seconds()) | ||||
| 			if err != nil || (res != nil && !(res.StatusCode >= 200 && res.StatusCode <= 299)) { | ||||
| 			if err != nil || (res != nil && (res.StatusCode < 200 || res.StatusCode > 299)) { | ||||
| 				metrics.failureCounter.Inc() | ||||
| 			} | ||||
| 
 | ||||
|  |  | |||
|  | @ -89,7 +89,7 @@ func (lm *logManager) initialize(loggers []logWithFilters) { | |||
| 		defaultLoggers[index] = level.NewFilter(logger.val, logger.maxLevel) | ||||
| 	} | ||||
| 
 | ||||
| 	lm.ConcreteLogger.Swap(&compositeLogger{loggers: defaultLoggers}) | ||||
| 	lm.Swap(&compositeLogger{loggers: defaultLoggers}) | ||||
| 	lm.logFilters = loggers | ||||
| 
 | ||||
| 	loggersByName := []string{} | ||||
|  |  | |||
|  | @ -60,7 +60,7 @@ func (h *slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler { | |||
| 	for _, attr := range attrs { | ||||
| 		out = append(out, attr.Key, attr.Value) | ||||
| 	} | ||||
| 	return New(h.Logger.New(out...)) | ||||
| 	return New(h.New(out...)) | ||||
| } | ||||
| 
 | ||||
| // WithGroup implements slog.Handler.WithGroup.
 | ||||
|  | @ -68,5 +68,5 @@ func (h *slogHandler) WithGroup(name string) slog.Handler { | |||
| 	if name == "" { | ||||
| 		return h | ||||
| 	} | ||||
| 	return New(h.Logger.New("group", name)) | ||||
| 	return New(h.New("group", name)) | ||||
| } | ||||
|  |  | |||
|  | @ -371,7 +371,10 @@ func replaceInvalidRune(c rune) rune { | |||
| 	if c == ' ' { | ||||
| 		return '.' | ||||
| 	} | ||||
| 	if !((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '-' || c == '_' || c == ':' || (c >= '0' && c <= '9')) { | ||||
| 
 | ||||
| 	isAlphanumeric := (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') | ||||
| 	isValidSpecialCharacter := c == '-' || c == '_' || c == ':' | ||||
| 	if !isAlphanumeric && !isValidSpecialCharacter { | ||||
| 		return '_' | ||||
| 	} | ||||
| 	return c | ||||
|  |  | |||
|  | @ -552,11 +552,11 @@ func (s *SocialAzureAD) SupportBundleContent(bf *bytes.Buffer) error { | |||
| 
 | ||||
| 	bf.WriteString("## AzureAD specific configuration\n\n") | ||||
| 	bf.WriteString("```ini\n") | ||||
| 	bf.WriteString(fmt.Sprintf("allowed_groups = %v\n", s.info.AllowedGroups)) | ||||
| 	bf.WriteString(fmt.Sprintf("forceUseGraphAPI = %v\n", s.forceUseGraphAPI)) | ||||
| 	fmt.Fprintf(bf, "allowed_groups = %v\n", s.info.AllowedGroups) | ||||
| 	fmt.Fprintf(bf, "forceUseGraphAPI = %v\n", s.forceUseGraphAPI) | ||||
| 	bf.WriteString("```\n\n") | ||||
| 
 | ||||
| 	return s.SocialBase.getBaseSupportBundleContent(bf) | ||||
| 	return s.getBaseSupportBundleContent(bf) | ||||
| } | ||||
| 
 | ||||
| func (s *SocialAzureAD) isAllowedTenant(tenantID string) bool { | ||||
|  |  | |||
|  | @ -846,9 +846,9 @@ func TestSocialAzureAD_UserInfo(t *testing.T) { | |||
| 				cache) | ||||
| 
 | ||||
| 			if tt.fields.usGovURL { | ||||
| 				s.SocialBase.Endpoint.AuthURL = usGovAuthURL | ||||
| 				s.Endpoint.AuthURL = usGovAuthURL | ||||
| 			} else { | ||||
| 				s.SocialBase.Endpoint.AuthURL = authURL | ||||
| 				s.Endpoint.AuthURL = authURL | ||||
| 			} | ||||
| 
 | ||||
| 			cl := jwt.Claims{ | ||||
|  | @ -1023,7 +1023,7 @@ func TestSocialAzureAD_SkipOrgRole(t *testing.T) { | |||
| 				featuremgmt.WithFeatures(), | ||||
| 				cache) | ||||
| 
 | ||||
| 			s.SocialBase.Endpoint.AuthURL = authURL | ||||
| 			s.Endpoint.AuthURL = authURL | ||||
| 
 | ||||
| 			cl := jwt.Claims{ | ||||
| 				Subject:   "subject", | ||||
|  |  | |||
|  | @ -651,13 +651,13 @@ func (s *SocialGenericOAuth) SupportBundleContent(bf *bytes.Buffer) error { | |||
| 
 | ||||
| 	bf.WriteString("## GenericOAuth specific configuration\n\n") | ||||
| 	bf.WriteString("```ini\n") | ||||
| 	bf.WriteString(fmt.Sprintf("name_attribute_path = %s\n", s.nameAttributePath)) | ||||
| 	bf.WriteString(fmt.Sprintf("login_attribute_path = %s\n", s.loginAttributePath)) | ||||
| 	bf.WriteString(fmt.Sprintf("id_token_attribute_name = %s\n", s.idTokenAttributeName)) | ||||
| 	bf.WriteString(fmt.Sprintf("team_ids_attribute_path = %s\n", s.teamIdsAttributePath)) | ||||
| 	bf.WriteString(fmt.Sprintf("team_ids = %v\n", s.teamIds)) | ||||
| 	bf.WriteString(fmt.Sprintf("allowed_organizations = %v\n", s.allowedOrganizations)) | ||||
| 	fmt.Fprintf(bf, "name_attribute_path = %s\n", s.nameAttributePath) | ||||
| 	fmt.Fprintf(bf, "login_attribute_path = %s\n", s.loginAttributePath) | ||||
| 	fmt.Fprintf(bf, "id_token_attribute_name = %s\n", s.idTokenAttributeName) | ||||
| 	fmt.Fprintf(bf, "team_ids_attribute_path = %s\n", s.teamIdsAttributePath) | ||||
| 	fmt.Fprintf(bf, "team_ids = %v\n", s.teamIds) | ||||
| 	fmt.Fprintf(bf, "allowed_organizations = %v\n", s.allowedOrganizations) | ||||
| 	bf.WriteString("```\n\n") | ||||
| 
 | ||||
| 	return s.SocialBase.getBaseSupportBundleContent(bf) | ||||
| 	return s.getBaseSupportBundleContent(bf) | ||||
| } | ||||
|  |  | |||
|  | @ -226,7 +226,7 @@ func (s *SocialGoogle) AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) | |||
| 	if s.info.UseRefreshToken { | ||||
| 		opts = append(opts, oauth2.AccessTypeOffline, oauth2.ApprovalForce) | ||||
| 	} | ||||
| 	return s.SocialBase.Config.AuthCodeURL(state, opts...) | ||||
| 	return s.Config.AuthCodeURL(state, opts...) | ||||
| } | ||||
| 
 | ||||
| func (s *SocialGoogle) extractFromToken(_ context.Context, _ *http.Client, token *oauth2.Token) (*googleUserData, error) { | ||||
|  | @ -270,7 +270,7 @@ type googleGroupResp struct { | |||
| } | ||||
| 
 | ||||
| func (s *SocialGoogle) retrieveGroups(ctx context.Context, client *http.Client, userData *googleUserData) ([]string, error) { | ||||
| 	s.log.Debug("Retrieving groups", "scopes", s.Config.Scopes) | ||||
| 	s.log.Debug("Retrieving groups", "scopes", s.Scopes) | ||||
| 	if !slices.Contains(s.Scopes, googleIAMScope) { | ||||
| 		return nil, nil | ||||
| 	} | ||||
|  |  | |||
|  | @ -112,23 +112,23 @@ func (s *SocialBase) TokenSource(ctx context.Context, t *oauth2.Token) oauth2.To | |||
| func (s *SocialBase) getBaseSupportBundleContent(bf *bytes.Buffer) error { | ||||
| 	bf.WriteString("## Client configuration\n\n") | ||||
| 	bf.WriteString("```ini\n") | ||||
| 	bf.WriteString(fmt.Sprintf("allow_assign_grafana_admin = %v\n", s.info.AllowAssignGrafanaAdmin)) | ||||
| 	bf.WriteString(fmt.Sprintf("allow_sign_up = %v\n", s.info.AllowSignup)) | ||||
| 	bf.WriteString(fmt.Sprintf("allowed_domains = %v\n", s.info.AllowedDomains)) | ||||
| 	bf.WriteString(fmt.Sprintf("auto_assign_org_role = %v\n", s.cfg.AutoAssignOrgRole)) | ||||
| 	bf.WriteString(fmt.Sprintf("role_attribute_path = %v\n", s.info.RoleAttributePath)) | ||||
| 	bf.WriteString(fmt.Sprintf("role_attribute_strict = %v\n", s.info.RoleAttributeStrict)) | ||||
| 	bf.WriteString(fmt.Sprintf("skip_org_role_sync = %v\n", s.info.SkipOrgRoleSync)) | ||||
| 	bf.WriteString(fmt.Sprintf("client_authentication = %v\n", s.info.ClientAuthentication)) | ||||
| 	bf.WriteString(fmt.Sprintf("client_id = %v\n", s.Config.ClientID)) | ||||
| 	bf.WriteString(fmt.Sprintf("client_secret = %v ; issue if empty\n", strings.Repeat("*", len(s.Config.ClientSecret)))) | ||||
| 	bf.WriteString(fmt.Sprintf("managed_identity_client_id = %v\n", s.info.ManagedIdentityClientID)) | ||||
| 	bf.WriteString(fmt.Sprintf("federated_credential_audience = %v\n", s.info.FederatedCredentialAudience)) | ||||
| 	bf.WriteString(fmt.Sprintf("auth_url = %v\n", s.Config.Endpoint.AuthURL)) | ||||
| 	bf.WriteString(fmt.Sprintf("token_url = %v\n", s.Config.Endpoint.TokenURL)) | ||||
| 	bf.WriteString(fmt.Sprintf("auth_style = %v\n", s.Config.Endpoint.AuthStyle)) | ||||
| 	bf.WriteString(fmt.Sprintf("redirect_url = %v\n", s.Config.RedirectURL)) | ||||
| 	bf.WriteString(fmt.Sprintf("scopes = %v\n", s.Config.Scopes)) | ||||
| 	fmt.Fprintf(bf, "allow_assign_grafana_admin = %v\n", s.info.AllowAssignGrafanaAdmin) | ||||
| 	fmt.Fprintf(bf, "allow_sign_up = %v\n", s.info.AllowSignup) | ||||
| 	fmt.Fprintf(bf, "allowed_domains = %v\n", s.info.AllowedDomains) | ||||
| 	fmt.Fprintf(bf, "auto_assign_org_role = %v\n", s.cfg.AutoAssignOrgRole) | ||||
| 	fmt.Fprintf(bf, "role_attribute_path = %v\n", s.info.RoleAttributePath) | ||||
| 	fmt.Fprintf(bf, "role_attribute_strict = %v\n", s.info.RoleAttributeStrict) | ||||
| 	fmt.Fprintf(bf, "skip_org_role_sync = %v\n", s.info.SkipOrgRoleSync) | ||||
| 	fmt.Fprintf(bf, "client_authentication = %v\n", s.info.ClientAuthentication) | ||||
| 	fmt.Fprintf(bf, "client_id = %v\n", s.ClientID) | ||||
| 	fmt.Fprintf(bf, "client_secret = %v ; issue if empty\n", strings.Repeat("*", len(s.ClientSecret))) | ||||
| 	fmt.Fprintf(bf, "managed_identity_client_id = %v\n", s.info.ManagedIdentityClientID) | ||||
| 	fmt.Fprintf(bf, "federated_credential_audience = %v\n", s.info.FederatedCredentialAudience) | ||||
| 	fmt.Fprintf(bf, "auth_url = %v\n", s.Endpoint.AuthURL) | ||||
| 	fmt.Fprintf(bf, "token_url = %v\n", s.Endpoint.TokenURL) | ||||
| 	fmt.Fprintf(bf, "auth_style = %v\n", s.Endpoint.AuthStyle) | ||||
| 	fmt.Fprintf(bf, "redirect_url = %v\n", s.RedirectURL) | ||||
| 	fmt.Fprintf(bf, "scopes = %v\n", s.Scopes) | ||||
| 	bf.WriteString("```\n\n") | ||||
| 
 | ||||
| 	return nil | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue