vendor: update buildkit to v0.29.0-rc1

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi
2026-03-25 15:47:08 -07:00
parent a7d3578248
commit eba72a35e4
518 changed files with 29223 additions and 24305 deletions
+56 -57
View File
@@ -5,10 +5,10 @@ go 1.25.5
require ( require (
github.com/Masterminds/semver/v3 v3.4.0 github.com/Masterminds/semver/v3 v3.4.0
github.com/Microsoft/go-winio v0.6.2 github.com/Microsoft/go-winio v0.6.2
github.com/aws/aws-sdk-go-v2/config v1.32.7 github.com/aws/aws-sdk-go-v2/config v1.32.12
github.com/compose-spec/compose-go/v2 v2.9.1 github.com/compose-spec/compose-go/v2 v2.9.1
github.com/containerd/console v1.0.5 github.com/containerd/console v1.0.5
github.com/containerd/containerd/v2 v2.2.1 github.com/containerd/containerd/v2 v2.2.2
github.com/containerd/continuity v0.4.5 github.com/containerd/continuity v0.4.5
github.com/containerd/errdefs v1.0.0 github.com/containerd/errdefs v1.0.0
github.com/containerd/log v0.1.0 github.com/containerd/log v0.1.0
@@ -16,7 +16,7 @@ require (
github.com/creack/pty v1.1.24 github.com/creack/pty v1.1.24
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/distribution/reference v0.6.0 github.com/distribution/reference v0.6.0
github.com/docker/cli v29.3.0+incompatible github.com/docker/cli v29.3.1+incompatible
github.com/docker/cli-docs-tool v0.11.0 github.com/docker/cli-docs-tool v0.11.0
github.com/docker/docker v28.5.2+incompatible github.com/docker/docker v28.5.2+incompatible
github.com/docker/go-units v0.5.0 github.com/docker/go-units v0.5.0
@@ -29,11 +29,11 @@ require (
github.com/hashicorp/hcl/v2 v2.24.0 github.com/hashicorp/hcl/v2 v2.24.0
github.com/in-toto/in-toto-golang v0.10.0 github.com/in-toto/in-toto-golang v0.10.0
github.com/mitchellh/hashstructure/v2 v2.0.2 github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/moby/buildkit v0.28.0 github.com/moby/buildkit v0.29.0-rc1
github.com/moby/go-archive v0.2.0 github.com/moby/go-archive v0.2.0
github.com/moby/moby/api v1.54.0 github.com/moby/moby/api v1.54.0
github.com/moby/moby/client v0.3.0 github.com/moby/moby/client v0.3.0
github.com/moby/policy-helpers v0.0.0-20260211190020-824747bfdd3c github.com/moby/policy-helpers v0.0.0-20260324161837-b7c0b994300b
github.com/moby/sys/atomicwriter v0.1.0 github.com/moby/sys/atomicwriter v0.1.0
github.com/moby/sys/mountinfo v0.7.2 github.com/moby/sys/mountinfo v0.7.2
github.com/morikuni/aec v1.1.0 github.com/morikuni/aec v1.1.0
@@ -55,20 +55,20 @@ require (
github.com/tonistiigi/jaeger-ui-rest v0.0.0-20250408171107-3dd17559e117 github.com/tonistiigi/jaeger-ui-rest v0.0.0-20250408171107-3dd17559e117
github.com/zclconf/go-cty v1.17.0 github.com/zclconf/go-cty v1.17.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0
go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel v1.40.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0
go.opentelemetry.io/otel/metric v1.38.0 go.opentelemetry.io/otel/metric v1.40.0
go.opentelemetry.io/otel/sdk v1.38.0 go.opentelemetry.io/otel/sdk v1.40.0
go.opentelemetry.io/otel/trace v1.38.0 go.opentelemetry.io/otel/trace v1.40.0
go.yaml.in/yaml/v3 v3.0.4 go.yaml.in/yaml/v3 v3.0.4
golang.org/x/crypto v0.48.0 golang.org/x/crypto v0.48.0
golang.org/x/mod v0.33.0 golang.org/x/mod v0.33.0
golang.org/x/sync v0.19.0 golang.org/x/sync v0.19.0
golang.org/x/sys v0.41.0 golang.org/x/sys v0.42.0
golang.org/x/term v0.40.0 golang.org/x/term v0.41.0
golang.org/x/text v0.34.0 golang.org/x/text v0.34.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409
google.golang.org/grpc v1.78.0 google.golang.org/grpc v1.79.3
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1
google.golang.org/protobuf v1.36.11 google.golang.org/protobuf v1.36.11
k8s.io/api v0.35.2 k8s.io/api v0.35.2
@@ -84,19 +84,19 @@ require (
github.com/apparentlymart/go-cidr v1.0.1 // indirect github.com/apparentlymart/go-cidr v1.0.1 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect
github.com/aws/smithy-go v1.24.0 // indirect github.com/aws/smithy-go v1.24.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect github.com/blang/semver v3.5.1+incompatible // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect
@@ -104,7 +104,7 @@ require (
github.com/cloudflare/circl v1.6.3 // indirect github.com/cloudflare/circl v1.6.3 // indirect
github.com/containerd/containerd/api v1.10.0 // indirect github.com/containerd/containerd/api v1.10.0 // indirect
github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/containerd/ttrpc v1.2.7 // indirect github.com/containerd/ttrpc v1.2.8 // indirect
github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
@@ -119,27 +119,27 @@ require (
github.com/go-ini/ini v1.67.0 // indirect github.com/go-ini/ini v1.67.0 // indirect
github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.24.1 // indirect github.com/go-openapi/analysis v0.24.3 // indirect
github.com/go-openapi/errors v0.22.6 // indirect github.com/go-openapi/errors v0.22.7 // indirect
github.com/go-openapi/jsonpointer v0.22.4 // indirect github.com/go-openapi/jsonpointer v0.22.5 // indirect
github.com/go-openapi/jsonreference v0.21.4 // indirect github.com/go-openapi/jsonreference v0.21.5 // indirect
github.com/go-openapi/loads v0.23.2 // indirect github.com/go-openapi/loads v0.23.3 // indirect
github.com/go-openapi/runtime v0.29.2 // indirect github.com/go-openapi/runtime v0.29.2 // indirect
github.com/go-openapi/spec v0.22.3 // indirect github.com/go-openapi/spec v0.22.4 // indirect
github.com/go-openapi/strfmt v0.25.0 // indirect github.com/go-openapi/strfmt v0.26.1 // indirect
github.com/go-openapi/swag v0.25.4 // indirect github.com/go-openapi/swag v0.25.4 // indirect
github.com/go-openapi/swag/cmdutils v0.25.4 // indirect github.com/go-openapi/swag/cmdutils v0.25.4 // indirect
github.com/go-openapi/swag/conv v0.25.4 // indirect github.com/go-openapi/swag/conv v0.25.5 // indirect
github.com/go-openapi/swag/fileutils v0.25.4 // indirect github.com/go-openapi/swag/fileutils v0.25.5 // indirect
github.com/go-openapi/swag/jsonname v0.25.4 // indirect github.com/go-openapi/swag/jsonname v0.25.5 // indirect
github.com/go-openapi/swag/jsonutils v0.25.4 // indirect github.com/go-openapi/swag/jsonutils v0.25.5 // indirect
github.com/go-openapi/swag/loading v0.25.4 // indirect github.com/go-openapi/swag/loading v0.25.5 // indirect
github.com/go-openapi/swag/mangling v0.25.4 // indirect github.com/go-openapi/swag/mangling v0.25.5 // indirect
github.com/go-openapi/swag/netutils v0.25.4 // indirect github.com/go-openapi/swag/netutils v0.25.4 // indirect
github.com/go-openapi/swag/stringutils v0.25.4 // indirect github.com/go-openapi/swag/stringutils v0.25.5 // indirect
github.com/go-openapi/swag/typeutils v0.25.4 // indirect github.com/go-openapi/swag/typeutils v0.25.5 // indirect
github.com/go-openapi/swag/yamlutils v0.25.4 // indirect github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
github.com/go-openapi/validate v0.25.1 // indirect github.com/go-openapi/validate v0.25.2 // indirect
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/gobwas/glob v0.2.3 // indirect github.com/gobwas/glob v0.2.3 // indirect
github.com/goccy/go-json v0.10.5 // indirect github.com/goccy/go-json v0.10.5 // indirect
@@ -149,13 +149,13 @@ require (
github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect
github.com/google/go-containerregistry v0.20.7 // indirect github.com/google/go-containerregistry v0.20.7 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hiddeco/sshsig v0.2.0 // indirect github.com/hiddeco/sshsig v0.2.0 // indirect
github.com/in-toto/attestation v1.1.2 // indirect github.com/in-toto/attestation v1.1.2 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.18.4 // indirect github.com/klauspost/compress v1.18.5 // indirect
github.com/lestrrat-go/blackmagic v1.0.4 // indirect github.com/lestrrat-go/blackmagic v1.0.4 // indirect
github.com/lestrrat-go/dsig v1.0.0 // indirect github.com/lestrrat-go/dsig v1.0.0 // indirect
github.com/lestrrat-go/dsig-secp256k1 v1.0.0 // indirect github.com/lestrrat-go/dsig-secp256k1 v1.0.0 // indirect
@@ -169,7 +169,7 @@ require (
github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/locker v1.0.1 // indirect github.com/moby/locker v1.0.1 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/patternmatcher v0.6.1 // indirect
github.com/moby/spdystream v0.5.0 // indirect github.com/moby/spdystream v0.5.0 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect
github.com/moby/sys/signal v0.7.1 // indirect github.com/moby/sys/signal v0.7.1 // indirect
@@ -180,7 +180,7 @@ require (
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/oklog/ulid v1.3.1 // indirect github.com/oklog/ulid/v2 v2.1.1 // indirect
github.com/package-url/packageurl-go v0.1.1 // indirect github.com/package-url/packageurl-go v0.1.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect
@@ -213,23 +213,22 @@ require (
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect
go.mongodb.org/mongo-driver v1.17.6 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.39.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect
go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect
golang.org/x/net v0.51.0 // indirect golang.org/x/net v0.51.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/time v0.14.0 // indirect golang.org/x/time v0.14.0 // indirect
golang.org/x/tools v0.41.0 // indirect golang.org/x/tools v0.41.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect
+123 -124
View File
@@ -64,36 +64,36 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE=
github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU= github.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=
github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0= github.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=
github.com/aws/aws-sdk-go-v2/config v1.32.7 h1:vxUyWGUwmkQ2g19n7JY/9YL8MfAIl7bTesIUykECXmY= github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=
github.com/aws/aws-sdk-go-v2/config v1.32.7/go.mod h1:2/Qm5vKUU/r7Y+zUk/Ptt2MDAEKAfUtKc1+3U1Mo3oY= github.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUTvZKeLx4tH6PGQc8= github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw= github.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 h1:I0GyV8wiYrP8XpA70g1HBcQO1JlQxCMTW9npl5UbDHY= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17/go.mod h1:5M5CI3D12dNOtH3/mk6minaRwI2/37ifCURZISxA/IQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=
github.com/aws/aws-sdk-go-v2/service/kms v1.49.1 h1:U0asSZ3ifpuIehDPkRI2rxHbmFUMplDA2VeR9Uogrmw= github.com/aws/aws-sdk-go-v2/service/kms v1.49.1 h1:U0asSZ3ifpuIehDPkRI2rxHbmFUMplDA2VeR9Uogrmw=
github.com/aws/aws-sdk-go-v2/service/kms v1.49.1/go.mod h1:NZo9WJqQ0sxQ1Yqu1IwCHQFQunTms2MlVgejg16S1rY= github.com/aws/aws-sdk-go-v2/service/kms v1.49.1/go.mod h1:NZo9WJqQ0sxQ1Yqu1IwCHQFQunTms2MlVgejg16S1rY=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4fpmpyD9wYG1vfSu+Y= github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M= github.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk= github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9/go.mod h1:yifAsgBxgJWn3ggx70A3urX2AN49Y5sJTD1UQFlfqBw= github.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLzVR3XtmC4ZDPcAI6Ftvds= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ= github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ= github.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk= github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= 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/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
@@ -112,14 +112,14 @@ github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUo
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
github.com/compose-spec/compose-go/v2 v2.9.1 h1:8UwI+ujNU+9Ffkf/YgAm/qM9/eU7Jn8nHzWG721W4rs= github.com/compose-spec/compose-go/v2 v2.9.1 h1:8UwI+ujNU+9Ffkf/YgAm/qM9/eU7Jn8nHzWG721W4rs=
github.com/compose-spec/compose-go/v2 v2.9.1/go.mod h1:Oky9AZGTRB4E+0VbTPZTUu4Kp+oEMMuwZXZtPPVT1iE= github.com/compose-spec/compose-go/v2 v2.9.1/go.mod h1:Oky9AZGTRB4E+0VbTPZTUu4Kp+oEMMuwZXZtPPVT1iE=
github.com/containerd/cgroups/v3 v3.1.2 h1:OSosXMtkhI6Qove637tg1XgK4q+DhR0mX8Wi8EhrHa4= github.com/containerd/cgroups/v3 v3.1.3 h1:eUNflyMddm18+yrDmZPn3jI7C5hJ9ahABE5q6dyLYXQ=
github.com/containerd/cgroups/v3 v3.1.2/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw= github.com/containerd/cgroups/v3 v3.1.3/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw=
github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc=
github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o= github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o=
github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM= github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM=
github.com/containerd/containerd/v2 v2.2.1 h1:TpyxcY4AL5A+07dxETevunVS5zxqzuq7ZqJXknM11yk= github.com/containerd/containerd/v2 v2.2.2 h1:mjVQdtfryzT7lOqs5EYUFZm8ioPVjOpkSoG1GJPxEMY=
github.com/containerd/containerd/v2 v2.2.1/go.mod h1:NR70yW1iDxe84F2iFWbR9xfAN0N2F0NcjTi1OVth4nU= github.com/containerd/containerd/v2 v2.2.2/go.mod h1:5Jhevmv6/2J+Iu/A2xXAdUIdI5Ah/hfyO7okJ4AFIdY=
github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4=
github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE=
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
@@ -130,8 +130,8 @@ github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY
github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/nydus-snapshotter v0.15.11 h1:YTdF4rsjFRsfyaIhnWVUSLz8FqJwOyRZ5FhvFjHh7Uc= github.com/containerd/nydus-snapshotter v0.15.13 h1:z9yCiTPMxVBIZlHxOPinZXhly2MdcIqxk9VXPlHIOJY=
github.com/containerd/nydus-snapshotter v0.15.11/go.mod h1:EWRd/QJ0b6UKHAqYgiV5gHlqLC2qq5cQiSlXEdVovrA= github.com/containerd/nydus-snapshotter v0.15.13/go.mod h1:t95dwCb4I0RE4n1iOk0sJCWosNoACA8daOXmU5A2VHI=
github.com/containerd/platforms v1.0.0-rc.2 h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4= github.com/containerd/platforms v1.0.0-rc.2 h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4=
github.com/containerd/platforms v1.0.0-rc.2/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= github.com/containerd/platforms v1.0.0-rc.2/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4=
github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y=
@@ -139,8 +139,8 @@ github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47
github.com/containerd/stargz-snapshotter v0.18.2 h1:Ev/sxfQUjwzJQ9eqy3XzttcQ3osMIqkQgMYlcET+10M= github.com/containerd/stargz-snapshotter v0.18.2 h1:Ev/sxfQUjwzJQ9eqy3XzttcQ3osMIqkQgMYlcET+10M=
github.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw= github.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw=
github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY= github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY=
github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ= github.com/containerd/ttrpc v1.2.8 h1:xbVu6D4qF2jihdh9rDVOKqUMiFBQk6YctTdo1zk087Y=
github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= github.com/containerd/ttrpc v1.2.8/go.mod h1:wyZW2K79t4Hfcxl+GUvkZqRBzJlqFFvgEeeWXa42tyE=
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc= github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc=
@@ -177,8 +177,8 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= 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/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/docker/cli v29.3.0+incompatible h1:z3iWveU7h19Pqx7alZES8j+IeFQZ1lhTwb2F+V9SVvk= github.com/docker/cli v29.3.1+incompatible h1:M04FDj2TRehDacrosh7Vlkgc7AuQoWloQkf1PA5hmoI=
github.com/docker/cli v29.3.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v29.3.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/cli-docs-tool v0.11.0 h1:7d8QARFb7QEobizqxmEM7fOteZEHwH/zWgHQtHZEcfE= github.com/docker/cli-docs-tool v0.11.0 h1:7d8QARFb7QEobizqxmEM7fOteZEHwH/zWgHQtHZEcfE=
github.com/docker/cli-docs-tool v0.11.0/go.mod h1:ma8BKiisUo8D6W05XEYIh3oa1UbgrZhi1nowyKFJa8Q= github.com/docker/cli-docs-tool v0.11.0/go.mod h1:ma8BKiisUo8D6W05XEYIh3oa1UbgrZhi1nowyKFJa8Q=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
@@ -219,54 +219,54 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-openapi/analysis v0.24.1 h1:Xp+7Yn/KOnVWYG8d+hPksOYnCYImE3TieBa7rBOesYM= github.com/go-openapi/analysis v0.24.3 h1:a1hrvMr8X0Xt69KP5uVTu5jH62DscmDifrLzNglAayk=
github.com/go-openapi/analysis v0.24.1/go.mod h1:dU+qxX7QGU1rl7IYhBC8bIfmWQdX4Buoea4TGtxXY84= github.com/go-openapi/analysis v0.24.3/go.mod h1:Nc+dWJ/FxZbhSow5Yh3ozg5CLJioB+XXT6MdLvJUsUw=
github.com/go-openapi/errors v0.22.6 h1:eDxcf89O8odEnohIXwEjY1IB4ph5vmbUsBMsFNwXWPo= github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
github.com/go-openapi/errors v0.22.6/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA=
github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= github.com/go-openapi/jsonpointer v0.22.5/go.mod h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0=
github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4= github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
github.com/go-openapi/loads v0.23.2 h1:rJXAcP7g1+lWyBHC7iTY+WAF0rprtM+pm8Jxv1uQJp4= github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
github.com/go-openapi/loads v0.23.2/go.mod h1:IEVw1GfRt/P2Pplkelxzj9BYFajiWOtY2nHZNj4UnWY= github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0= github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0=
github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0= github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0=
github.com/go-openapi/spec v0.22.3 h1:qRSmj6Smz2rEBxMnLRBMeBWxbbOvuOoElvSvObIgwQc= github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ=
github.com/go-openapi/spec v0.22.3/go.mod h1:iIImLODL2loCh3Vnox8TY2YWYJZjMAKYyLH2Mu8lOZs= github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ=
github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ= github.com/go-openapi/strfmt v0.26.1 h1:7zGCHji7zSYDC2tCXIusoxYQz/48jAf2q+sF6wXTG+c=
github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8= github.com/go-openapi/strfmt v0.26.1/go.mod h1:Zslk5VZPOISLwmWTMBIS7oiVFem1o1EI6zULY8Uer7Y=
github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU=
github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ=
github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4=
github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0=
github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= github.com/go-openapi/swag/conv v0.25.5 h1:wAXBYEXJjoKwE5+vc9YHhpQOFj2JYBMF2DUi+tGu97g=
github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= github.com/go-openapi/swag/conv v0.25.5/go.mod h1:CuJ1eWvh1c4ORKx7unQnFGyvBbNlRKbnRyAvDvzWA4k=
github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= github.com/go-openapi/swag/fileutils v0.25.5 h1:B6JTdOcs2c0dBIs9HnkyTW+5gC+8NIhVBUwERkFhMWk=
github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= github.com/go-openapi/swag/fileutils v0.25.5/go.mod h1:V3cT9UdMQIaH4WiTrUc9EPtVA4txS0TOmRURmhGF4kc=
github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= github.com/go-openapi/swag/jsonname v0.25.5 h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo=
github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= github.com/go-openapi/swag/jsonname v0.25.5/go.mod h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU=
github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= github.com/go-openapi/swag/jsonutils v0.25.5 h1:XUZF8awQr75MXeC+/iaw5usY/iM7nXPDwdG3Jbl9vYo=
github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= github.com/go-openapi/swag/jsonutils v0.25.5/go.mod h1:48FXUaz8YsDAA9s5AnaUvAmry1UcLcNVWUjY42XkrN4=
github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5 h1:SX6sE4FrGb4sEnnxbFL/25yZBb5Hcg1inLeErd86Y1U=
github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5/go.mod h1:/2KvOTrKWjVA5Xli3DZWdMCZDzz3uV/T7bXwrKWPquo=
github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= github.com/go-openapi/swag/loading v0.25.5 h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU=
github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= github.com/go-openapi/swag/loading v0.25.5/go.mod h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g=
github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= github.com/go-openapi/swag/mangling v0.25.5 h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw=
github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= github.com/go-openapi/swag/mangling v0.25.5/go.mod h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY=
github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0=
github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg=
github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= github.com/go-openapi/swag/stringutils v0.25.5 h1:NVkoDOA8YBgtAR/zvCx5rhJKtZF3IzXcDdwOsYzrB6M=
github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= github.com/go-openapi/swag/stringutils v0.25.5/go.mod h1:PKK8EZdu4QJq8iezt17HM8RXnLAzY7gW0O1KKarrZII=
github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= github.com/go-openapi/swag/typeutils v0.25.5 h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E=
github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= github.com/go-openapi/swag/typeutils v0.25.5/go.mod h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc=
github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= github.com/go-openapi/swag/yamlutils v0.25.5 h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ=
github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= github.com/go-openapi/swag/yamlutils v0.25.5/go.mod h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ=
github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= github.com/go-openapi/testify/enable/yaml/v2 v2.4.1 h1:NZOrZmIb6PTv5LTFxr5/mKV/FjbUzGE7E6gLz7vFoOQ=
github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= github.com/go-openapi/testify/enable/yaml/v2 v2.4.1/go.mod h1:r7dwsujEHawapMsxA69i+XMGZrQ5tRauhLAjV/sxg3Q=
github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= github.com/go-openapi/testify/v2 v2.4.1 h1:zB34HDKj4tHwyUQHrUkpV0Q0iXQ6dUCOQtIqn8hE6Iw=
github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= github.com/go-openapi/testify/v2 v2.4.1/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54=
github.com/go-openapi/validate v0.25.1 h1:sSACUI6Jcnbo5IWqbYHgjibrhhmt3vR6lCzKZnmAgBw= github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0=
github.com/go-openapi/validate v0.25.1/go.mod h1:RMVyVFYte0gbSTaZ0N4KmTn6u/kClvAFp+mAVfS/DQc= github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY=
github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=
github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
@@ -322,8 +322,8 @@ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5T
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
@@ -378,8 +378,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -418,8 +418,8 @@ github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/buildkit v0.28.0 h1:rKulfRRSduHJPNpLTk481fHElqN9tps0VUx8YV/5zsA= github.com/moby/buildkit v0.29.0-rc1 h1:pEL7RVtmBs2mdNey32sEGsClZ2jx0C7fzyITDCa9ZCU=
github.com/moby/buildkit v0.28.0/go.mod h1:RCuOcj/bVsCriBG8NeFzRxjiCFQKnKP7KOVlNTS18t4= github.com/moby/buildkit v0.29.0-rc1/go.mod h1:N+QLSGxzV0p+GC/53SIdSs7ASUDQcdx9QSnyARzizIM=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8= github.com/moby/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8=
@@ -430,10 +430,10 @@ github.com/moby/moby/api v1.54.0 h1:7kbUgyiKcoBhm0UrWbdrMs7RX8dnwzURKVbZGy2GnL0=
github.com/moby/moby/api v1.54.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc= github.com/moby/moby/api v1.54.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc=
github.com/moby/moby/client v0.3.0 h1:UUGL5okry+Aomj3WhGt9Aigl3ZOxZGqR7XPo+RLPlKs= github.com/moby/moby/client v0.3.0 h1:UUGL5okry+Aomj3WhGt9Aigl3ZOxZGqR7XPo+RLPlKs=
github.com/moby/moby/client v0.3.0/go.mod h1:HJgFbJRvogDQjbM8fqc1MCEm4mIAGMLjXbgwoZp6jCQ= github.com/moby/moby/client v0.3.0/go.mod h1:HJgFbJRvogDQjbM8fqc1MCEm4mIAGMLjXbgwoZp6jCQ=
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.1 h1:qlhtafmr6kgMIJjKJMDmMWq7WLkKIo23hsrpR3x084U=
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/patternmatcher v0.6.1/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/policy-helpers v0.0.0-20260211190020-824747bfdd3c h1:hRUo0Ir9PEaa0PQCgg8WvGku0sgmTo/NgnCzMb83iII= github.com/moby/policy-helpers v0.0.0-20260324161837-b7c0b994300b h1:lvBBM2ACrsG5/O1G1caEwlh0XeqA89IQK3xq0Sh/5NI=
github.com/moby/policy-helpers v0.0.0-20260211190020-824747bfdd3c/go.mod h1:2P1OGoTVIrybI4M7yhpkDpqiwOnI3yR+HnNhEyo8ovs= github.com/moby/policy-helpers v0.0.0-20260324161837-b7c0b994300b/go.mod h1:Cbc1brDwYl1K294MmZB+6WhQR9Tr24hfhgSGND4UlL0=
github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
@@ -464,8 +464,8 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
github.com/open-policy-agent/opa v1.10.1 h1:haIvxZSPky8HLjRrvQwWAjCPLg8JDFSZMbbG4yyUHgY= github.com/open-policy-agent/opa v1.10.1 h1:haIvxZSPky8HLjRrvQwWAjCPLg8JDFSZMbbG4yyUHgY=
github.com/open-policy-agent/opa v1.10.1/go.mod h1:7uPI3iRpOalJ0BhK6s1JALWPU9HvaV1XeBSSMZnr/PM= github.com/open-policy-agent/opa v1.10.1/go.mod h1:7uPI3iRpOalJ0BhK6s1JALWPU9HvaV1XeBSSMZnr/PM=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
@@ -478,6 +478,7 @@ github.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22
github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg= github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg=
github.com/package-url/packageurl-go v0.1.1 h1:KTRE0bK3sKbFKAk3yy63DpeskU7Cvs/x/Da5l+RtzyU= github.com/package-url/packageurl-go v0.1.1 h1:KTRE0bK3sKbFKAk3yy63DpeskU7Cvs/x/Da5l+RtzyU=
github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
@@ -617,8 +618,6 @@ github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0
github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=
go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss=
go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
@@ -629,30 +628,30 @@ go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0/go.mod h1:rjbQTDEPQymPE0YnRQp9/NuPwwtL0sesz/fnqRW/v84= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0/go.mod h1:rjbQTDEPQymPE0YnRQp9/NuPwwtL0sesz/fnqRW/v84=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0 h1:cEf8jF6WbuGQWUVcqgyWtTR0kOOAWY1DYZ+UhvdmQPw=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0/go.mod h1:k1lzV5n5U3HkGvTCJHraTAGJ7MqsgL1wrGwTj1Isfiw=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.39.0 h1:nKP4Z2ejtHn3yShBb+2KawiXgpn8In5cT7aO2wXuOTE=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.39.0/go.mod h1:NwjeBbNigsO4Aj9WgM0C+cKIrxsZUaRmZUO7A8I7u8o=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0 h1:in9O8ESIOlwJAEGTkkf34DesGRAc/Pn8qJ7k3r/42LM=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0/go.mod h1:Rp0EXBm5tfnv0WL+ARyO/PHBEaEAT8UUHQ6AGJcSq6c=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE=
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw=
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg=
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
go.step.sm/crypto v0.74.0 h1:/APBEv45yYR4qQFg47HA8w1nesIGcxh44pGyQNw6JRA= go.step.sm/crypto v0.74.0 h1:/APBEv45yYR4qQFg47HA8w1nesIGcxh44pGyQNw6JRA=
go.step.sm/crypto v0.74.0/go.mod h1:UoXqCAJjjRgzPte0Llaqen7O9P7XjPmgjgTHQGkKCDk= go.step.sm/crypto v0.74.0/go.mod h1:UoXqCAJjjRgzPte0Llaqen7O9P7XjPmgjgTHQGkKCDk=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -694,10 +693,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
@@ -720,12 +719,12 @@ google.golang.org/api v0.260.0 h1:XbNi5E6bOVEj/uLXQRlt6TKuEzMD7zvW/6tNwltE4P4=
google.golang.org/api v0.260.0/go.mod h1:Shj1j0Phr/9sloYrKomICzdYgsSDImpTxME8rGLaZ/o= google.golang.org/api v0.260.0/go.mod h1:Shj1j0Phr/9sloYrKomICzdYgsSDImpTxME8rGLaZ/o=
google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934= google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934=
google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0= google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+1 -1
View File
@@ -3,4 +3,4 @@
package aws package aws
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.41.1" const goModuleVersion = "1.41.4"
+2 -2
View File
@@ -3,7 +3,7 @@ package query
import ( import (
"context" "context"
"fmt" "fmt"
"io/ioutil" "io"
"github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http" smithyhttp "github.com/aws/smithy-go/transport/http"
@@ -52,7 +52,7 @@ func (m *asGetRequest) HandleSerialize(
delim = "&" delim = "&"
} }
b, err := ioutil.ReadAll(stream) b, err := io.ReadAll(stream)
if err != nil { if err != nil {
return out, metadata, fmt.Errorf("unable to get request body %w", err) return out, metadata, fmt.Errorf("unable to get request body %w", err)
} }
+11
View File
@@ -300,6 +300,17 @@ func limitedRedirect(r *http.Request, via []*http.Request) error {
switch resp.StatusCode { switch resp.StatusCode {
case 307, 308: case 307, 308:
// Only allow 307 and 308 redirects as they preserve the method. // Only allow 307 and 308 redirects as they preserve the method.
// If redirecting to a different host, remove X-Amz-Security-Token header
// to prevent credentials from being sent to a different host, similar to
// how Authorization header is handled by the HTTP client.
if len(via) > 0 {
lastRequest := via[len(via)-1]
if lastRequest.URL.Host != r.URL.Host {
r.Header.Del("X-Amz-Security-Token")
}
}
return nil return nil
} }
+23
View File
@@ -1,3 +1,26 @@
# v1.32.12 (2026-03-13)
* **Bug Fix**: Replace usages of the old ioutil/ package throughout the SDK.
* **Dependency Update**: Updated to the latest SDK module versions
# v1.32.11 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.32.10 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.32.9 (2026-02-18)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.32.8 (2026-02-17)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.32.7 (2026-01-09) # v1.32.7 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+3 -3
View File
@@ -103,7 +103,7 @@ var defaultAWSConfigResolvers = []awsConfigResolver{
// //
// General the Config type will use type assertion against the Provider interfaces // General the Config type will use type assertion against the Provider interfaces
// to extract specific data from the Config. // to extract specific data from the Config.
type Config interface{} type Config any
// A loader is used to load external configuration data and returns it as // A loader is used to load external configuration data and returns it as
// a generic Config type. // a generic Config type.
@@ -170,8 +170,8 @@ func (cs configs) ResolveAWSConfig(ctx context.Context, resolvers []awsConfigRes
// ResolveConfig calls the provide function passing slice of configuration sources. // ResolveConfig calls the provide function passing slice of configuration sources.
// This implements the aws.ConfigResolver interface. // This implements the aws.ConfigResolver interface.
func (cs configs) ResolveConfig(f func(configs []interface{}) error) error { func (cs configs) ResolveConfig(f func(configs []any) error) error {
var cfgs []interface{} var cfgs []any
for i := range cs { for i := range cs {
cfgs = append(cfgs, cs[i]) cfgs = append(cfgs, cs[i])
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package config package config
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.32.7" const goModuleVersion = "1.32.12"
+1 -1
View File
@@ -130,7 +130,7 @@ type IgnoreConfiguredEndpointsProvider interface {
// GetIgnoreConfiguredEndpoints is used in knowing when to disable configured // GetIgnoreConfiguredEndpoints is used in knowing when to disable configured
// endpoints feature. // endpoints feature.
func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) { func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []any) (value bool, found bool, err error) {
for _, cfg := range configs { for _, cfg := range configs {
if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok { if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok {
value, found, err = p.GetIgnoreConfiguredEndpoints(ctx) value, found, err = p.GetIgnoreConfiguredEndpoints(ctx)
+5 -5
View File
@@ -5,7 +5,7 @@ import (
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
"fmt" "fmt"
"io/ioutil" "io"
"net/http" "net/http"
"os" "os"
@@ -21,7 +21,7 @@ import (
// This should be used as the first resolver in the slice of resolvers when // This should be used as the first resolver in the slice of resolvers when
// resolving external configuration. // resolving external configuration.
func resolveDefaultAWSConfig(ctx context.Context, cfg *aws.Config, cfgs configs) error { func resolveDefaultAWSConfig(ctx context.Context, cfg *aws.Config, cfgs configs) error {
var sources []interface{} var sources []any
for _, s := range cfgs { for _, s := range cfgs {
sources = append(sources, s) sources = append(sources, s)
} }
@@ -69,7 +69,7 @@ func resolveCustomCABundle(ctx context.Context, cfg *aws.Config, cfgs configs) e
tr.TLSClientConfig.RootCAs = x509.NewCertPool() tr.TLSClientConfig.RootCAs = x509.NewCertPool()
} }
b, err := ioutil.ReadAll(pemCerts) b, err := io.ReadAll(pemCerts)
if err != nil { if err != nil {
appendErr = fmt.Errorf("failed to read custom CA bundle PEM file") appendErr = fmt.Errorf("failed to read custom CA bundle PEM file")
} }
@@ -106,9 +106,9 @@ func resolveRegion(ctx context.Context, cfg *aws.Config, configs configs) error
} }
func resolveBaseEndpoint(ctx context.Context, cfg *aws.Config, configs configs) error { func resolveBaseEndpoint(ctx context.Context, cfg *aws.Config, configs configs) error {
var downcastCfgSources []interface{} var downcastCfgSources []any
for _, cs := range configs { for _, cs := range configs {
downcastCfgSources = append(downcastCfgSources, interface{}(cs)) downcastCfgSources = append(downcastCfgSources, any(cs))
} }
if val, found, err := GetIgnoreConfiguredEndpoints(ctx, downcastCfgSources); found && val && err == nil { if val, found, err := GetIgnoreConfiguredEndpoints(ctx, downcastCfgSources); found && val && err == nil {
+1 -2
View File
@@ -3,7 +3,6 @@ package config
import ( import (
"context" "context"
"fmt" "fmt"
"io/ioutil"
"net" "net"
"net/url" "net/url"
"os" "os"
@@ -346,7 +345,7 @@ func resolveHTTPCredProvider(ctx context.Context, cfg *aws.Config, url, authToke
options.AuthorizationTokenProvider = endpointcreds.TokenProviderFunc(func() (string, error) { options.AuthorizationTokenProvider = endpointcreds.TokenProviderFunc(func() (string, error) {
var contents []byte var contents []byte
var err error var err error
if contents, err = ioutil.ReadFile(authFilePath); err != nil { if contents, err = os.ReadFile(authFilePath); err != nil {
return "", fmt.Errorf("failed to read authorization token from %v: %v", authFilePath, err) return "", fmt.Errorf("failed to read authorization token from %v: %v", authFilePath, err)
} }
return string(contents), nil return string(contents), nil
+1 -2
View File
@@ -6,7 +6,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
@@ -502,7 +501,7 @@ func (c SharedConfig) getCustomCABundle(context.Context) (io.Reader, bool, error
return nil, false, nil return nil, false, nil
} }
b, err := ioutil.ReadFile(c.CustomCABundle) b, err := os.ReadFile(c.CustomCABundle)
if err != nil { if err != nil {
return nil, false, err return nil, false, err
} }
+22
View File
@@ -1,3 +1,25 @@
# v1.19.12 (2026-03-13)
* **Bug Fix**: Replace usages of the old ioutil/ package throughout the SDK.
* **Dependency Update**: Updated to the latest SDK module versions
# v1.19.11 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.19.10 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.19.9 (2026-02-18)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.19.8 (2026-02-17)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.19.7 (2026-01-09) # v1.19.7 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+1 -1
View File
@@ -3,4 +3,4 @@
package credentials package credentials
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.19.7" const goModuleVersion = "1.19.12"
@@ -5,7 +5,6 @@ import (
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"strconv" "strconv"
@@ -145,7 +144,7 @@ func getTokenFieldRFC3339(v interface{}, value **rfc3339) error {
} }
func loadCachedToken(filename string) (token, error) { func loadCachedToken(filename string) (token, error) {
fileBytes, err := ioutil.ReadFile(filename) fileBytes, err := os.ReadFile(filename)
if err != nil { if err != nil {
return token{}, fmt.Errorf("failed to read cached SSO token file, %w", err) return token{}, fmt.Errorf("failed to read cached SSO token file, %w", err)
} }
@@ -3,7 +3,7 @@ package stscreds
import ( import (
"context" "context"
"fmt" "fmt"
"io/ioutil" "os"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@@ -80,7 +80,7 @@ type IdentityTokenFile string
// GetIdentityToken retrieves the JWT token from the file and returns the contents as a []byte // GetIdentityToken retrieves the JWT token from the file and returns the contents as a []byte
func (j IdentityTokenFile) GetIdentityToken() ([]byte, error) { func (j IdentityTokenFile) GetIdentityToken() ([]byte, error) {
b, err := ioutil.ReadFile(string(j)) b, err := os.ReadFile(string(j))
if err != nil { if err != nil {
return nil, fmt.Errorf("unable to read file at %s: %v", string(j), err) return nil, fmt.Errorf("unable to read file at %s: %v", string(j), err)
} }
+15
View File
@@ -1,3 +1,18 @@
# v1.18.20 (2026-03-13)
* **Bug Fix**: Replace usages of the old ioutil/ package throughout the SDK.
* **Dependency Update**: Updated to the latest SDK module versions
# v1.18.19 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.18.18 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.18.17 (2026-01-09) # v1.18.17 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+2 -2
View File
@@ -226,10 +226,10 @@ func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) {
} }
func (c *Client) invokeOperation( func (c *Client) invokeOperation(
ctx context.Context, opID string, params interface{}, optFns []func(*Options), ctx context.Context, opID string, params any, optFns []func(*Options),
stackFns ...func(*middleware.Stack, Options) error, stackFns ...func(*middleware.Stack, Options) error,
) ( ) (
result interface{}, metadata middleware.Metadata, err error, result any, metadata middleware.Metadata, err error,
) { ) {
stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) stack := middleware.NewStack(opID, smithyhttp.NewStackRequest)
options := c.options.Copy() options := c.options.Copy()
@@ -61,7 +61,7 @@ func addGetDynamicDataMiddleware(stack *middleware.Stack, options Options) error
buildGetDynamicDataOutput) buildGetDynamicDataOutput)
} }
func buildGetDynamicDataPath(params interface{}) (string, error) { func buildGetDynamicDataPath(params any) (string, error) {
p, ok := params.(*GetDynamicDataInput) p, ok := params.(*GetDynamicDataInput)
if !ok { if !ok {
return "", fmt.Errorf("unknown parameter type %T", params) return "", fmt.Errorf("unknown parameter type %T", params)
@@ -70,7 +70,7 @@ func buildGetDynamicDataPath(params interface{}) (string, error) {
return appendURIPath(getDynamicDataPath, p.Path), nil return appendURIPath(getDynamicDataPath, p.Path), nil
} }
func buildGetDynamicDataOutput(resp *smithyhttp.Response) (interface{}, error) { func buildGetDynamicDataOutput(resp *smithyhttp.Response) (any, error) {
return &GetDynamicDataOutput{ return &GetDynamicDataOutput{
Content: resp.Body, Content: resp.Body,
}, nil }, nil
+2 -2
View File
@@ -59,11 +59,11 @@ func addGetIAMInfoMiddleware(stack *middleware.Stack, options Options) error {
) )
} }
func buildGetIAMInfoPath(params interface{}) (string, error) { func buildGetIAMInfoPath(params any) (string, error) {
return getIAMInfoPath, nil return getIAMInfoPath, nil
} }
func buildGetIAMInfoOutput(resp *smithyhttp.Response) (v interface{}, err error) { func buildGetIAMInfoOutput(resp *smithyhttp.Response) (v any, err error) {
defer func() { defer func() {
closeErr := resp.Body.Close() closeErr := resp.Body.Close()
if err == nil { if err == nil {
@@ -60,11 +60,11 @@ func addGetInstanceIdentityDocumentMiddleware(stack *middleware.Stack, options O
) )
} }
func buildGetInstanceIdentityDocumentPath(params interface{}) (string, error) { func buildGetInstanceIdentityDocumentPath(params any) (string, error) {
return getInstanceIdentityDocumentPath, nil return getInstanceIdentityDocumentPath, nil
} }
func buildGetInstanceIdentityDocumentOutput(resp *smithyhttp.Response) (v interface{}, err error) { func buildGetInstanceIdentityDocumentOutput(resp *smithyhttp.Response) (v any, err error) {
defer func() { defer func() {
closeErr := resp.Body.Close() closeErr := resp.Body.Close()
if err == nil { if err == nil {
@@ -61,7 +61,7 @@ func addGetMetadataMiddleware(stack *middleware.Stack, options Options) error {
buildGetMetadataOutput) buildGetMetadataOutput)
} }
func buildGetMetadataPath(params interface{}) (string, error) { func buildGetMetadataPath(params any) (string, error) {
p, ok := params.(*GetMetadataInput) p, ok := params.(*GetMetadataInput)
if !ok { if !ok {
return "", fmt.Errorf("unknown parameter type %T", params) return "", fmt.Errorf("unknown parameter type %T", params)
@@ -70,7 +70,7 @@ func buildGetMetadataPath(params interface{}) (string, error) {
return appendURIPath(getMetadataPath, p.Path), nil return appendURIPath(getMetadataPath, p.Path), nil
} }
func buildGetMetadataOutput(resp *smithyhttp.Response) (interface{}, error) { func buildGetMetadataOutput(resp *smithyhttp.Response) (any, error) {
return &GetMetadataOutput{ return &GetMetadataOutput{
Content: resp.Body, Content: resp.Body,
}, nil }, nil
+1 -1
View File
@@ -51,7 +51,7 @@ func addGetRegionMiddleware(stack *middleware.Stack, options Options) error {
) )
} }
func buildGetRegionOutput(resp *smithyhttp.Response) (interface{}, error) { func buildGetRegionOutput(resp *smithyhttp.Response) (any, error) {
out, err := buildGetInstanceIdentityDocumentOutput(resp) out, err := buildGetInstanceIdentityDocumentOutput(resp)
if err != nil { if err != nil {
return nil, err return nil, err
+2 -2
View File
@@ -64,11 +64,11 @@ func addGetTokenMiddleware(stack *middleware.Stack, options Options) error {
return nil return nil
} }
func buildGetTokenPath(interface{}) (string, error) { func buildGetTokenPath(any) (string, error) {
return getTokenPath, nil return getTokenPath, nil
} }
func buildGetTokenOutput(resp *smithyhttp.Response) (v interface{}, err error) { func buildGetTokenOutput(resp *smithyhttp.Response) (v any, err error) {
defer func() { defer func() {
closeErr := resp.Body.Close() closeErr := resp.Body.Close()
if err == nil { if err == nil {
@@ -50,11 +50,11 @@ func addGetUserDataMiddleware(stack *middleware.Stack, options Options) error {
buildGetUserDataOutput) buildGetUserDataOutput)
} }
func buildGetUserDataPath(params interface{}) (string, error) { func buildGetUserDataPath(params any) (string, error) {
return getUserDataPath, nil return getUserDataPath, nil
} }
func buildGetUserDataOutput(resp *smithyhttp.Response) (interface{}, error) { func buildGetUserDataOutput(resp *smithyhttp.Response) (any, error) {
return &GetUserDataOutput{ return &GetUserDataOutput{
Content: resp.Body, Content: resp.Body,
}, nil }, nil
@@ -3,4 +3,4 @@
package imds package imds
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.18.17" const goModuleVersion = "1.18.20"
@@ -4,7 +4,7 @@ import (
"bytes" "bytes"
"context" "context"
"fmt" "fmt"
"io/ioutil" "io"
"net/url" "net/url"
"path" "path"
"time" "time"
@@ -18,8 +18,8 @@ import (
func addAPIRequestMiddleware(stack *middleware.Stack, func addAPIRequestMiddleware(stack *middleware.Stack,
options Options, options Options,
operation string, operation string,
getPath func(interface{}) (string, error), getPath func(any) (string, error),
getOutput func(*smithyhttp.Response) (interface{}, error), getOutput func(*smithyhttp.Response) (any, error),
) (err error) { ) (err error) {
err = addRequestMiddleware(stack, options, "GET", operation, getPath, getOutput) err = addRequestMiddleware(stack, options, "GET", operation, getPath, getOutput)
if err != nil { if err != nil {
@@ -46,8 +46,8 @@ func addRequestMiddleware(stack *middleware.Stack,
options Options, options Options,
method string, method string,
operation string, operation string,
getPath func(interface{}) (string, error), getPath func(any) (string, error),
getOutput func(*smithyhttp.Response) (interface{}, error), getOutput func(*smithyhttp.Response) (any, error),
) (err error) { ) (err error) {
err = awsmiddleware.AddSDKAgentKey(awsmiddleware.FeatureMetadata, "ec2-imds")(stack) err = awsmiddleware.AddSDKAgentKey(awsmiddleware.FeatureMetadata, "ec2-imds")(stack)
if err != nil { if err != nil {
@@ -120,7 +120,7 @@ func addSetLoggerMiddleware(stack *middleware.Stack, o Options) error {
} }
type serializeRequest struct { type serializeRequest struct {
GetPath func(interface{}) (string, error) GetPath func(any) (string, error)
Method string Method string
} }
@@ -150,7 +150,7 @@ func (m *serializeRequest) HandleSerialize(
} }
type deserializeResponse struct { type deserializeResponse struct {
GetOutput func(*smithyhttp.Response) (interface{}, error) GetOutput func(*smithyhttp.Response) (any, error)
} }
func (*deserializeResponse) ID() string { func (*deserializeResponse) ID() string {
@@ -176,11 +176,11 @@ func (m *deserializeResponse) HandleDeserialize(
// read the full body so that any operation timeouts cleanup will not race // read the full body so that any operation timeouts cleanup will not race
// the body being read. // the body being read.
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return out, metadata, fmt.Errorf("read response body failed, %w", err) return out, metadata, fmt.Errorf("read response body failed, %w", err)
} }
resp.Body = ioutil.NopCloser(bytes.NewReader(body)) resp.Body = io.NopCloser(bytes.NewReader(body))
// Anything that's not 200 |< 300 is error // Anything that's not 200 |< 300 is error
if resp.StatusCode < 200 || resp.StatusCode >= 300 { if resp.StatusCode < 200 || resp.StatusCode >= 300 {
@@ -1,3 +1,17 @@
# v1.4.20 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.4.19 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.4.18 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.4.17 (2026-01-09) # v1.4.17 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+3 -3
View File
@@ -14,7 +14,7 @@ type EnableEndpointDiscoveryProvider interface {
// ResolveEnableEndpointDiscovery extracts the first instance of a EnableEndpointDiscoveryProvider from the config slice. // ResolveEnableEndpointDiscovery extracts the first instance of a EnableEndpointDiscoveryProvider from the config slice.
// Additionally returns a aws.EndpointDiscoveryEnableState to indicate if the value was found in provided configs, // Additionally returns a aws.EndpointDiscoveryEnableState to indicate if the value was found in provided configs,
// and error if one is encountered. // and error if one is encountered.
func ResolveEnableEndpointDiscovery(ctx context.Context, configs []interface{}) (value aws.EndpointDiscoveryEnableState, found bool, err error) { func ResolveEnableEndpointDiscovery(ctx context.Context, configs []any) (value aws.EndpointDiscoveryEnableState, found bool, err error) {
for _, cfg := range configs { for _, cfg := range configs {
if p, ok := cfg.(EnableEndpointDiscoveryProvider); ok { if p, ok := cfg.(EnableEndpointDiscoveryProvider); ok {
value, found, err = p.GetEnableEndpointDiscovery(ctx) value, found, err = p.GetEnableEndpointDiscovery(ctx)
@@ -33,7 +33,7 @@ type UseDualStackEndpointProvider interface {
// ResolveUseDualStackEndpoint extracts the first instance of a UseDualStackEndpoint from the config slice. // ResolveUseDualStackEndpoint extracts the first instance of a UseDualStackEndpoint from the config slice.
// Additionally returns a boolean to indicate if the value was found in provided configs, and error if one is encountered. // Additionally returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
func ResolveUseDualStackEndpoint(ctx context.Context, configs []interface{}) (value aws.DualStackEndpointState, found bool, err error) { func ResolveUseDualStackEndpoint(ctx context.Context, configs []any) (value aws.DualStackEndpointState, found bool, err error) {
for _, cfg := range configs { for _, cfg := range configs {
if p, ok := cfg.(UseDualStackEndpointProvider); ok { if p, ok := cfg.(UseDualStackEndpointProvider); ok {
value, found, err = p.GetUseDualStackEndpoint(ctx) value, found, err = p.GetUseDualStackEndpoint(ctx)
@@ -52,7 +52,7 @@ type UseFIPSEndpointProvider interface {
// ResolveUseFIPSEndpoint extracts the first instance of a UseFIPSEndpointProvider from the config slice. // ResolveUseFIPSEndpoint extracts the first instance of a UseFIPSEndpointProvider from the config slice.
// Additionally, returns a boolean to indicate if the value was found in provided configs, and error if one is encountered. // Additionally, returns a boolean to indicate if the value was found in provided configs, and error if one is encountered.
func ResolveUseFIPSEndpoint(ctx context.Context, configs []interface{}) (value aws.FIPSEndpointState, found bool, err error) { func ResolveUseFIPSEndpoint(ctx context.Context, configs []any) (value aws.FIPSEndpointState, found bool, err error) {
for _, cfg := range configs { for _, cfg := range configs {
if p, ok := cfg.(UseFIPSEndpointProvider); ok { if p, ok := cfg.(UseFIPSEndpointProvider); ok {
value, found, err = p.GetUseFIPSEndpoint(ctx) value, found, err = p.GetUseFIPSEndpoint(ctx)
+2 -2
View File
@@ -26,7 +26,7 @@ type IgnoreConfiguredEndpointsProvider interface {
// Currently duplicated from github.com/aws/aws-sdk-go-v2/config because // Currently duplicated from github.com/aws/aws-sdk-go-v2/config because
// service packages cannot import github.com/aws/aws-sdk-go-v2/config // service packages cannot import github.com/aws/aws-sdk-go-v2/config
// due to result import cycle error. // due to result import cycle error.
func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (value bool, found bool, err error) { func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []any) (value bool, found bool, err error) {
for _, cfg := range configs { for _, cfg := range configs {
if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok { if p, ok := cfg.(IgnoreConfiguredEndpointsProvider); ok {
value, found, err = p.GetIgnoreConfiguredEndpoints(ctx) value, found, err = p.GetIgnoreConfiguredEndpoints(ctx)
@@ -40,7 +40,7 @@ func GetIgnoreConfiguredEndpoints(ctx context.Context, configs []interface{}) (v
// ResolveServiceBaseEndpoint is used to retrieve service endpoints from configured sources // ResolveServiceBaseEndpoint is used to retrieve service endpoints from configured sources
// while allowing for configured endpoints to be disabled // while allowing for configured endpoints to be disabled
func ResolveServiceBaseEndpoint(ctx context.Context, sdkID string, configs []interface{}) (value string, found bool, err error) { func ResolveServiceBaseEndpoint(ctx context.Context, sdkID string, configs []any) (value string, found bool, err error) {
if val, found, _ := GetIgnoreConfiguredEndpoints(ctx, configs); found && val { if val, found, _ := GetIgnoreConfiguredEndpoints(ctx, configs); found && val {
return "", false, nil return "", false, nil
} }
@@ -3,4 +3,4 @@
package configsources package configsources
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.4.17" const goModuleVersion = "1.4.20"
@@ -152,7 +152,7 @@
"regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$",
"regions" : { "regions" : {
"eusc-de-east-1" : { "eusc-de-east-1" : {
"description" : "EU (Germany)" "description" : "AWS European Sovereign Cloud (Germany)"
} }
} }
}, { }, {
+14
View File
@@ -1,3 +1,17 @@
# v2.7.20 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v2.7.19 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v2.7.18 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v2.7.17 (2026-01-09) # v2.7.17 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+3 -3
View File
@@ -101,7 +101,7 @@ func (ps Partitions) ResolveEndpoint(region string, opts Options) (aws.Endpoint,
region = opts.ResolvedRegion region = opts.ResolvedRegion
} }
for i := 0; i < len(ps); i++ { for i := range ps {
if !ps[i].canResolveEndpoint(region, opts) { if !ps[i].canResolveEndpoint(region, opts) {
continue continue
} }
@@ -290,8 +290,8 @@ func getByPriority(s []string, p []string, def string) string {
return def return def
} }
for i := 0; i < len(p); i++ { for i := range p {
for j := 0; j < len(s); j++ { for j := range s {
if s[j] == p[i] { if s[j] == p[i] {
return s[j] return s[j]
} }
@@ -3,4 +3,4 @@
package endpoints package endpoints
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "2.7.17" const goModuleVersion = "2.7.20"
+9
View File
@@ -1,3 +1,12 @@
# v1.8.6 (2026-03-13)
* **Bug Fix**: Replace usages of the old ioutil/ package throughout the SDK.
# v1.8.5 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
# v1.8.4 (2025-10-16) # v1.8.4 (2025-10-16)
* **Dependency Update**: Bump minimum Go version to 1.23. * **Dependency Update**: Bump minimum Go version to 1.23.
+1 -1
View File
@@ -3,4 +3,4 @@
package ini package ini
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.8.4" const goModuleVersion = "1.8.6"
@@ -1,3 +1,15 @@
# v1.13.7 (2026-03-13)
* **Bug Fix**: Replace usages of the old ioutil/ package throughout the SDK.
# v1.13.6 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
# v1.13.5 (2026-02-23)
* No change notes available for this release.
# v1.13.4 (2025-12-02) # v1.13.4 (2025-12-02)
* **Dependency Update**: Upgrade to smithy-go v1.24.0. Notably this version of the library reduces the allocation footprint of the middleware system. We observe a ~10% reduction in allocations per SDK call with this change. * **Dependency Update**: Upgrade to smithy-go v1.24.0. Notably this version of the library reduces the allocation footprint of the middleware system. We observe a ~10% reduction in allocations per SDK call with this change.
@@ -3,4 +3,4 @@
package acceptencoding package acceptencoding
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.13.4" const goModuleVersion = "1.13.7"
@@ -1,3 +1,17 @@
# v1.13.20 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.13.19 (2026-03-03)
* **Bug Fix**: Modernize non codegen files with go fix
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.13.18 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.13.17 (2026-01-09) # v1.13.17 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
@@ -3,4 +3,4 @@
package presignedurl package presignedurl
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.13.17" const goModuleVersion = "1.13.20"
@@ -14,26 +14,26 @@ import (
// presigned URL. // presigned URL.
type URLPresigner interface { type URLPresigner interface {
// PresignURL presigns a URL. // PresignURL presigns a URL.
PresignURL(ctx context.Context, srcRegion string, params interface{}) (*v4.PresignedHTTPRequest, error) PresignURL(ctx context.Context, srcRegion string, params any) (*v4.PresignedHTTPRequest, error)
} }
// ParameterAccessor provides an collection of accessor to for retrieving and // ParameterAccessor provides an collection of accessor to for retrieving and
// setting the values needed to PresignedURL generation // setting the values needed to PresignedURL generation
type ParameterAccessor struct { type ParameterAccessor struct {
// GetPresignedURL accessor points to a function that retrieves a presigned url if present // GetPresignedURL accessor points to a function that retrieves a presigned url if present
GetPresignedURL func(interface{}) (string, bool, error) GetPresignedURL func(any) (string, bool, error)
// GetSourceRegion accessor points to a function that retrieves source region for presigned url // GetSourceRegion accessor points to a function that retrieves source region for presigned url
GetSourceRegion func(interface{}) (string, bool, error) GetSourceRegion func(any) (string, bool, error)
// CopyInput accessor points to a function that takes in an input, and returns a copy. // CopyInput accessor points to a function that takes in an input, and returns a copy.
CopyInput func(interface{}) (interface{}, error) CopyInput func(any) (any, error)
// SetDestinationRegion accessor points to a function that sets destination region on api input struct // SetDestinationRegion accessor points to a function that sets destination region on api input struct
SetDestinationRegion func(interface{}, string) error SetDestinationRegion func(any, string) error
// SetPresignedURL accessor points to a function that sets presigned url on api input struct // SetPresignedURL accessor points to a function that sets presigned url on api input struct
SetPresignedURL func(interface{}, string) error SetPresignedURL func(any, string) error
} }
// Options provides the set of options needed by the presigned URL middleware. // Options provides the set of options needed by the presigned URL middleware.
+13
View File
@@ -1,3 +1,16 @@
# v1.0.8 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.0.7 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.0.6 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.0.5 (2026-01-09) # v1.0.5 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+1 -2
View File
@@ -19,7 +19,6 @@
"internal/endpoints/endpoints.go", "internal/endpoints/endpoints.go",
"internal/endpoints/endpoints_test.go", "internal/endpoints/endpoints_test.go",
"options.go", "options.go",
"protocol_test.go",
"serializers.go", "serializers.go",
"snapshot_test.go", "snapshot_test.go",
"sra_operation_order_test.go", "sra_operation_order_test.go",
@@ -28,7 +27,7 @@
"types/types.go", "types/types.go",
"validators.go" "validators.go"
], ],
"go": "1.23", "go": "1.24",
"module": "github.com/aws/aws-sdk-go-v2/service/signin", "module": "github.com/aws/aws-sdk-go-v2/service/signin",
"unstable": false "unstable": false
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package signin package signin
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.0.5" const goModuleVersion = "1.0.8"
+1 -2
View File
@@ -58,8 +58,7 @@ type Options struct {
// the client option BaseEndpoint instead. // the client option BaseEndpoint instead.
EndpointResolver EndpointResolver EndpointResolver EndpointResolver
// Resolves the endpoint used for a particular service operation. This should be // Resolves the endpoint used for a particular service operation.
// used over the deprecated EndpointResolver.
EndpointResolverV2 EndpointResolverV2 EndpointResolverV2 EndpointResolverV2
// Signature Version 4 (SigV4) Signer // Signature Version 4 (SigV4) Signer
+17
View File
@@ -1,3 +1,20 @@
# v1.30.13 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.30.12 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.30.11 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.30.10 (2026-02-18)
* No change notes available for this release.
# v1.30.9 (2026-01-09) # v1.30.9 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+1 -2
View File
@@ -22,7 +22,6 @@
"internal/endpoints/endpoints.go", "internal/endpoints/endpoints.go",
"internal/endpoints/endpoints_test.go", "internal/endpoints/endpoints_test.go",
"options.go", "options.go",
"protocol_test.go",
"serializers.go", "serializers.go",
"snapshot_test.go", "snapshot_test.go",
"sra_operation_order_test.go", "sra_operation_order_test.go",
@@ -30,7 +29,7 @@
"types/types.go", "types/types.go",
"validators.go" "validators.go"
], ],
"go": "1.23", "go": "1.24",
"module": "github.com/aws/aws-sdk-go-v2/service/sso", "module": "github.com/aws/aws-sdk-go-v2/service/sso",
"unstable": false "unstable": false
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package sso package sso
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.30.9" const goModuleVersion = "1.30.13"
@@ -240,6 +240,9 @@ var defaultPartitions = endpoints.Partitions{
Region: "ap-southeast-5", Region: "ap-southeast-5",
}, },
}, },
endpoints.EndpointKey{
Region: "ap-southeast-6",
}: endpoints.Endpoint{},
endpoints.EndpointKey{ endpoints.EndpointKey{
Region: "ap-southeast-7", Region: "ap-southeast-7",
}: endpoints.Endpoint{}, }: endpoints.Endpoint{},
+1 -2
View File
@@ -58,8 +58,7 @@ type Options struct {
// the client option BaseEndpoint instead. // the client option BaseEndpoint instead.
EndpointResolver EndpointResolver EndpointResolver EndpointResolver
// Resolves the endpoint used for a particular service operation. This should be // Resolves the endpoint used for a particular service operation.
// used over the deprecated EndpointResolver.
EndpointResolverV2 EndpointResolverV2 EndpointResolverV2 EndpointResolverV2
// Signature Version 4 (SigV4) Signer // Signature Version 4 (SigV4) Signer
+17
View File
@@ -1,3 +1,20 @@
# v1.35.17 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.35.16 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.35.15 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.35.14 (2026-02-17)
* No change notes available for this release.
# v1.35.13 (2026-01-09) # v1.35.13 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+1 -2
View File
@@ -22,7 +22,6 @@
"internal/endpoints/endpoints.go", "internal/endpoints/endpoints.go",
"internal/endpoints/endpoints_test.go", "internal/endpoints/endpoints_test.go",
"options.go", "options.go",
"protocol_test.go",
"serializers.go", "serializers.go",
"snapshot_test.go", "snapshot_test.go",
"sra_operation_order_test.go", "sra_operation_order_test.go",
@@ -31,7 +30,7 @@
"types/types.go", "types/types.go",
"validators.go" "validators.go"
], ],
"go": "1.23", "go": "1.24",
"module": "github.com/aws/aws-sdk-go-v2/service/ssooidc", "module": "github.com/aws/aws-sdk-go-v2/service/ssooidc",
"unstable": false "unstable": false
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package ssooidc package ssooidc
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.35.13" const goModuleVersion = "1.35.17"
@@ -240,6 +240,9 @@ var defaultPartitions = endpoints.Partitions{
Region: "ap-southeast-5", Region: "ap-southeast-5",
}, },
}, },
endpoints.EndpointKey{
Region: "ap-southeast-6",
}: endpoints.Endpoint{},
endpoints.EndpointKey{ endpoints.EndpointKey{
Region: "ap-southeast-7", Region: "ap-southeast-7",
}: endpoints.Endpoint{}, }: endpoints.Endpoint{},
+1 -2
View File
@@ -58,8 +58,7 @@ type Options struct {
// the client option BaseEndpoint instead. // the client option BaseEndpoint instead.
EndpointResolver EndpointResolver EndpointResolver EndpointResolver
// Resolves the endpoint used for a particular service operation. This should be // Resolves the endpoint used for a particular service operation.
// used over the deprecated EndpointResolver.
EndpointResolverV2 EndpointResolverV2 EndpointResolverV2 EndpointResolverV2
// Signature Version 4 (SigV4) Signer // Signature Version 4 (SigV4) Signer
+13
View File
@@ -1,3 +1,16 @@
# v1.41.9 (2026-03-13)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.41.8 (2026-03-03)
* **Dependency Update**: Bump minimum Go version to 1.24
* **Dependency Update**: Updated to the latest SDK module versions
# v1.41.7 (2026-02-23)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.41.6 (2026-01-09) # v1.41.6 (2026-01-09)
* **Dependency Update**: Updated to the latest SDK module versions * **Dependency Update**: Updated to the latest SDK module versions
+1 -2
View File
@@ -31,7 +31,6 @@
"internal/endpoints/endpoints.go", "internal/endpoints/endpoints.go",
"internal/endpoints/endpoints_test.go", "internal/endpoints/endpoints_test.go",
"options.go", "options.go",
"protocol_test.go",
"serializers.go", "serializers.go",
"snapshot_test.go", "snapshot_test.go",
"sra_operation_order_test.go", "sra_operation_order_test.go",
@@ -39,7 +38,7 @@
"types/types.go", "types/types.go",
"validators.go" "validators.go"
], ],
"go": "1.23", "go": "1.24",
"module": "github.com/aws/aws-sdk-go-v2/service/sts", "module": "github.com/aws/aws-sdk-go-v2/service/sts",
"unstable": false "unstable": false
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package sts package sts
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.41.6" const goModuleVersion = "1.41.9"
+1 -2
View File
@@ -58,8 +58,7 @@ type Options struct {
// the client option BaseEndpoint instead. // the client option BaseEndpoint instead.
EndpointResolver EndpointResolver EndpointResolver EndpointResolver
// Resolves the endpoint used for a particular service operation. This should be // Resolves the endpoint used for a particular service operation.
// used over the deprecated EndpointResolver.
EndpointResolverV2 EndpointResolverV2 EndpointResolverV2 EndpointResolverV2
// Signature Version 4 (SigV4) Signer // Signature Version 4 (SigV4) Signer
+14
View File
@@ -1,3 +1,17 @@
# Release (2026-02-27)
## General Highlights
* **Dependency Update**: Updated to the latest SDK module versions
# Release (2026-02-20)
## General Highlights
* **Dependency Update**: Updated to the latest SDK module versions
## Module Highlights
* `github.com/aws/smithy-go`: v1.24.1
* **Feature**: Add new middleware functions to get event stream output from middleware
# Release (2025-12-01) # Release (2025-12-01)
## General Highlights ## General Highlights
+2 -2
View File
@@ -4,7 +4,7 @@
[Smithy](https://smithy.io/) code generators for Go and the accompanying smithy-go runtime. [Smithy](https://smithy.io/) code generators for Go and the accompanying smithy-go runtime.
The smithy-go runtime requires a minimum version of Go 1.23. The smithy-go runtime requires a minimum version of Go 1.24.
**WARNING: All interfaces are subject to change.** **WARNING: All interfaces are subject to change.**
@@ -80,7 +80,7 @@ example created from `smithy init`:
"service": "example.weather#Weather", "service": "example.weather#Weather",
"module": "github.com/example/weather", "module": "github.com/example/weather",
"generateGoMod": true, "generateGoMod": true,
"goDirective": "1.23" "goDirective": "1.24"
} }
} }
} }
+1 -1
View File
@@ -3,4 +3,4 @@
package smithy package smithy
// goModuleVersion is the tagged release for this module // goModuleVersion is the tagged release for this module
const goModuleVersion = "1.24.0" const goModuleVersion = "1.24.2"
+21
View File
@@ -0,0 +1,21 @@
package middleware
type eventStreamOutputKey struct{}
func AddEventStreamOutputToMetadata(metadata *Metadata, output any) {
metadata.Set(eventStreamOutputKey{}, output)
}
func GetEventStreamOutputToMetadata[T any](metadata *Metadata) (*T, bool) {
val := metadata.Get(eventStreamOutputKey{})
// not found
if val == nil {
return nil, false
}
// wrong type
res, ok := val.(*T)
if !ok {
return nil, false
}
return res, true
}
+1 -1
View File
@@ -24,7 +24,7 @@ var (
Package = "github.com/containerd/containerd/v2" Package = "github.com/containerd/containerd/v2"
// Version holds the complete version number. Filled in at linking time. // Version holds the complete version number. Filled in at linking time.
Version = "2.2.1+unknown" Version = "2.2.2+unknown"
// Revision is filled with the VCS (e.g. git) revision being used to build // Revision is filled with the VCS (e.g. git) revision being used to build
// the program at linking time. // the program at linking time.
+51 -47
View File
@@ -1,52 +1,56 @@
version: "2"
linters: linters:
enable: enable:
- staticcheck
- unconvert
- gofmt
- goimports
- revive
- ineffassign
- vet
- unused
- misspell - misspell
- revive
- unconvert
disable: disable:
- errcheck - errcheck
settings:
linters-settings: revive:
revive: rules:
ignore-generated-headers: true - name: blank-imports
rules: - name: context-as-argument
- name: blank-imports - name: context-keys-type
- name: context-as-argument - name: dot-imports
- name: context-keys-type - name: error-return
- name: dot-imports - name: error-strings
- name: error-return - name: error-naming
- name: error-strings - name: exported
- name: error-naming - name: if-return
- name: exported - name: increment-decrement
- name: if-return - name: var-naming
- name: increment-decrement arguments:
- name: var-naming - - UID
arguments: [["UID", "GID"], []] - GID
- name: var-declaration - []
- name: package-comments - name: var-declaration
- name: range - name: package-comments
- name: receiver-naming - name: range
- name: time-naming - name: receiver-naming
- name: unexported-return - name: time-naming
- name: indent-error-flow - name: unexported-return
- name: errorf - name: indent-error-flow
- name: empty-block - name: errorf
- name: superfluous-else - name: empty-block
- name: unused-parameter - name: superfluous-else
- name: unreachable-code - name: unused-parameter
- name: redefines-builtin-id - name: unreachable-code
- name: redefines-builtin-id
issues: exclusions:
include: generated: lax
- EXC0002 presets:
- comments
run: - common-false-positives
timeout: 8m - legacy
skip-dirs: - std-error-handling
- example paths:
- example
formatters:
enable:
- gofmt
- goimports
exclusions:
generated: lax
paths:
- example
+5 -4
View File
@@ -268,7 +268,8 @@ func (cs *clientStream) RecvMsg(m interface{}) error {
case msg = <-cs.s.recv: case msg = <-cs.s.recv:
} }
if msg.header.Type == messageTypeResponse { switch msg.header.Type {
case messageTypeResponse:
resp := &Response{} resp := &Response{}
err := proto.Unmarshal(msg.payload[:msg.header.Length], resp) err := proto.Unmarshal(msg.payload[:msg.header.Length], resp)
// return the payload buffer for reuse // return the payload buffer for reuse
@@ -289,7 +290,7 @@ func (cs *clientStream) RecvMsg(m interface{}) error {
cs.remoteClosed = true cs.remoteClosed = true
return nil return nil
} else if msg.header.Type == messageTypeData { case messageTypeData:
if !cs.desc.StreamingServer { if !cs.desc.StreamingServer {
cs.c.deleteStream(cs.s) cs.c.deleteStream(cs.s)
cs.remoteClosed = true cs.remoteClosed = true
@@ -310,9 +311,9 @@ func (cs *clientStream) RecvMsg(m interface{}) error {
return err return err
} }
return nil return nil
default:
return fmt.Errorf("unexpected %q message received: %w", msg.header.Type, ErrProtocol)
} }
return fmt.Errorf("unexpected %q message received: %w", msg.header.Type, ErrProtocol)
} }
// Close closes the ttrpc connection and underlying connection // Close closes the ttrpc connection and underlying connection
+4 -3
View File
@@ -113,9 +113,7 @@ func (s *Server) Serve(ctx context.Context, l net.Listener) error {
backoff *= 2 backoff *= 2
} }
if max := time.Second; backoff > max { backoff = min(time.Second, backoff)
backoff = max
}
sleep := time.Duration(rand.Int63n(int64(backoff))) sleep := time.Duration(rand.Int63n(int64(backoff)))
log.G(ctx).WithError(err).Errorf("ttrpc: failed accept; backoff %v", sleep) log.G(ctx).WithError(err).Errorf("ttrpc: failed accept; backoff %v", sleep)
@@ -415,6 +413,7 @@ func (c *serverConn) run(sctx context.Context) {
if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "StreamID is no longer active")) { if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "StreamID is no longer active")) {
return return
} }
continue
} }
sh := i.(*streamHandler) sh := i.(*streamHandler)
if mh.Flags&flagNoData != flagNoData { if mh.Flags&flagNoData != flagNoData {
@@ -428,6 +427,7 @@ func (c *serverConn) run(sctx context.Context) {
if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data handling error: %v", err)) { if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data handling error: %v", err)) {
return return
} }
continue
} }
} }
@@ -437,6 +437,7 @@ func (c *serverConn) run(sctx context.Context) {
if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data close message cannot include data")) { if !sendStatus(mh.StreamID, status.Newf(codes.InvalidArgument, "data close message cannot include data")) {
return return
} }
continue
} }
} }
} else if mh.Type == messageTypeRequest { } else if mh.Type == messageTypeRequest {
+26
View File
@@ -0,0 +1,26 @@
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
# Set default charset
[*.{js,py,go,scala,rb,java,html,css,less,sass,md}]
charset = utf-8
# Tab indentation (no size specified)
[*.go]
indent_style = tab
[*.md]
trim_trailing_whitespace = false
# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
+4 -3
View File
@@ -1,5 +1,6 @@
secrets.yml *.out
coverage.out
coverage.txt
*.cov *.cov
.idea .idea
.env
.mcp.json
.claude/
+14 -19
View File
@@ -2,34 +2,19 @@ version: "2"
linters: linters:
default: all default: all
disable: disable:
- cyclop
- depguard - depguard
- errchkjson
- errorlint
- exhaustruct
- forcetypeassert
- funlen - funlen
- gochecknoglobals
- gochecknoinits
- gocognit
- godot
- godox - godox
- gosmopolitan - gomoddirectives
- inamedparam - exhaustruct
- intrange
- ireturn
- lll
- musttag
- nestif
- nlreturn - nlreturn
- noinlineerr
- nonamedreturns - nonamedreturns
- noinlineerr
- paralleltest - paralleltest
- recvcheck - recvcheck
- testpackage - testpackage
- thelper - thelper
- tparallel - tparallel
- unparam
- varnamelen - varnamelen
- whitespace - whitespace
- wrapcheck - wrapcheck
@@ -41,8 +26,17 @@ linters:
goconst: goconst:
min-len: 2 min-len: 2
min-occurrences: 3 min-occurrences: 3
cyclop:
max-complexity: 25
gocyclo: gocyclo:
min-complexity: 45 min-complexity: 25
gocognit:
min-complexity: 35
exhaustive:
default-signifies-exhaustive: true
default-case-required: true
lll:
line-length: 180
exclusions: exclusions:
generated: lax generated: lax
presets: presets:
@@ -58,6 +52,7 @@ formatters:
enable: enable:
- gofmt - gofmt
- goimports - goimports
- gofumpt
exclusions: exclusions:
generated: lax generated: lax
paths: paths:
+4 -2
View File
@@ -23,7 +23,9 @@ include:
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or * The use of sexualized language or imagery and unwelcome sexual attention or
advances advances
* Trolling, insulting/derogatory comments, and personal or political attacks * Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment * Public or private harassment
* Publishing others' private information, such as a physical or electronic * Publishing others' private information, such as a physical or electronic
@@ -55,7 +57,7 @@ further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at ivan+abuse@flanders.co.nz. All reported by contacting the project team at <ivan+abuse@flanders.co.nz>. All
complaints will be reviewed and investigated and will result in a response that complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident. obligated to maintain confidentiality with regard to the reporter of an incident.
@@ -68,7 +70,7 @@ members of the project's leadership.
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version] available at [<http://contributor-covenant.org/version/1/4>][version]
[homepage]: http://contributor-covenant.org [homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/ [version]: http://contributor-covenant.org/version/1/4/
+27
View File
@@ -0,0 +1,27 @@
# Contributors
- Repository: ['go-openapi/analysis']
| Total Contributors | Total Contributions |
| --- | --- |
| 15 | 202 |
| Username | All Time Contribution Count | All Commits |
| --- | --- | --- |
| @fredbi | 99 | <https://github.com/go-openapi/analysis/commits?author=fredbi> |
| @casualjim | 70 | <https://github.com/go-openapi/analysis/commits?author=casualjim> |
| @keramix | 9 | <https://github.com/go-openapi/analysis/commits?author=keramix> |
| @youyuanwu | 8 | <https://github.com/go-openapi/analysis/commits?author=youyuanwu> |
| @msample | 3 | <https://github.com/go-openapi/analysis/commits?author=msample> |
| @kul-amr | 3 | <https://github.com/go-openapi/analysis/commits?author=kul-amr> |
| @mbohlool | 2 | <https://github.com/go-openapi/analysis/commits?author=mbohlool> |
| @Copilot | 1 | <https://github.com/go-openapi/analysis/commits?author=Copilot> |
| @danielfbm | 1 | <https://github.com/go-openapi/analysis/commits?author=danielfbm> |
| @gregmarr | 1 | <https://github.com/go-openapi/analysis/commits?author=gregmarr> |
| @guillemj | 1 | <https://github.com/go-openapi/analysis/commits?author=guillemj> |
| @knweiss | 1 | <https://github.com/go-openapi/analysis/commits?author=knweiss> |
| @tklauser | 1 | <https://github.com/go-openapi/analysis/commits?author=tklauser> |
| @cuishuang | 1 | <https://github.com/go-openapi/analysis/commits?author=cuishuang> |
| @ujjwalsh | 1 | <https://github.com/go-openapi/analysis/commits?author=ujjwalsh> |
_this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
+108 -8
View File
@@ -1,22 +1,46 @@
# OpenAPI analysis [![Build Status](https://github.com/go-openapi/analysis/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/analysis/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/analysis/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/analysis) # analysis
[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) <!-- Badges: status -->
[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/analysis/master/LICENSE) [![Tests][test-badge]][test-url] [![Coverage][cov-badge]][cov-url] [![CI vuln scan][vuln-scan-badge]][vuln-scan-url] [![CodeQL][codeql-badge]][codeql-url]
[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/analysis.svg)](https://pkg.go.dev/github.com/go-openapi/analysis) <!-- Badges: release & docker images -->
[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/analysis)](https://goreportcard.com/report/github.com/go-openapi/analysis) <!-- Badges: code quality -->
<!-- Badges: license & compliance -->
[![Release][release-badge]][release-url] [![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url] [![License][license-badge]][license-url]
<!-- Badges: documentation & support -->
<!-- Badges: others & stats -->
[![GoDoc][godoc-badge]][godoc-url] [![Discord Channel][discord-badge]][discord-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]
---
A foundational library to analyze an OAI specification document for easier reasoning about the content. A foundational library to analyze an OAI specification document for easier reasoning about the content.
## What's inside? ## Announcements
* **2025-12-19** : new community chat on discord
* a new discord community channel is available to be notified of changes and support users
* our venerable Slack channel remains open, and will be eventually discontinued on **2026-03-31**
You may join the discord community by clicking the invite link on the discord badge (also above). [![Discord Channel][discord-badge]][discord-url]
Or join our Slack channel: [![Slack Channel][slack-logo]![slack-badge]][slack-url]
## Status
API is stable.
## Import this library in your project
```cmd
go get github.com/go-openapi/analysis
```
## What's inside
* An analyzer providing methods to walk the functional content of a specification * An analyzer providing methods to walk the functional content of a specification
* A spec flattener producing a self-contained document bundle, while preserving `$ref`s * A spec flattener producing a self-contained document bundle, while preserving `$ref`s
* A spec merger ("mixin") to merge several spec documents into a primary spec * A spec merger ("mixin") to merge several spec documents into a primary spec
* A spec "fixer" ensuring that response descriptions are non empty * A spec "fixer" ensuring that response descriptions are non empty
[Documentation](https://pkg.go.dev/github.com/go-openapi/analysis)
## FAQ ## FAQ
* Does this library support OpenAPI 3? * Does this library support OpenAPI 3?
@@ -25,3 +49,79 @@ A foundational library to analyze an OAI specification document for easier reaso
> This package currently only supports OpenAPI 2.0 (aka Swagger 2.0). > This package currently only supports OpenAPI 2.0 (aka Swagger 2.0).
> There is no plan to make it evolve toward supporting OpenAPI 3.x. > There is no plan to make it evolve toward supporting OpenAPI 3.x.
> This [discussion thread](https://github.com/go-openapi/spec/issues/21) relates the full story. > This [discussion thread](https://github.com/go-openapi/spec/issues/21) relates the full story.
## Change log
See <https://github.com/go-openapi/analysis/releases>
<!--
## References
-->
## Licensing
This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE).
<!--
See the license NOTICE, which recalls the licensing terms of all the pieces of software
on top of which it has been built.
-->
<!--
## Limitations
-->
## Other documentation
* [All-time contributors](./CONTRIBUTORS.md)
* [Contributing guidelines](.github/CONTRIBUTING.md)
* [Maintainers documentation](docs/MAINTAINERS.md)
* [Code style](docs/STYLE.md)
## Cutting a new release
Maintainers can cut a new release by either:
* running [this workflow](https://github.com/go-openapi/analysis/actions/workflows/bump-release.yml)
* or pushing a semver tag
* signed tags are preferred
* The tag message is prepended to release notes
<!-- Badges: status -->
[test-badge]: https://github.com/go-openapi/analysis/actions/workflows/go-test.yml/badge.svg
[test-url]: https://github.com/go-openapi/analysis/actions/workflows/go-test.yml
[cov-badge]: https://codecov.io/gh/go-openapi/analysis/branch/master/graph/badge.svg
[cov-url]: https://codecov.io/gh/go-openapi/analysis
[vuln-scan-badge]: https://github.com/go-openapi/analysis/actions/workflows/scanner.yml/badge.svg
[vuln-scan-url]: https://github.com/go-openapi/analysis/actions/workflows/scanner.yml
[codeql-badge]: https://github.com/go-openapi/analysis/actions/workflows/codeql.yml/badge.svg
[codeql-url]: https://github.com/go-openapi/analysis/actions/workflows/codeql.yml
<!-- Badges: release & docker images -->
[release-badge]: https://badge.fury.io/gh/go-openapi%2Fanalysis.svg
[release-url]: https://badge.fury.io/gh/go-openapi%2Fanalysis
<!-- Badges: code quality -->
[gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/analysis
[gocard-url]: https://goreportcard.com/report/github.com/go-openapi/analysis
[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/analysis
[codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/analysis
<!-- Badges: documentation & support -->
[godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/analysis
[godoc-url]: http://pkg.go.dev/github.com/go-openapi/analysis
[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
[slack-url]: https://goswagger.slack.com/archives/C04R30YMU
[discord-badge]: https://img.shields.io/discord/1446918742398341256?logo=discord&label=discord&color=blue
[discord-url]: https://discord.gg/twZ9BwT3
<!-- Badges: license & compliance -->
[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
[license-url]: https://github.com/go-openapi/analysis/?tab=Apache-2.0-1-ov-file#readme
<!-- Badges: others & stats -->
[goversion-badge]: https://img.shields.io/github/go-mod/go-version/go-openapi/analysis
[goversion-url]: https://github.com/go-openapi/analysis/blob/master/go.mod
[top-badge]: https://img.shields.io/github/languages/top/go-openapi/analysis
[commits-badge]: https://img.shields.io/github/commits-since/go-openapi/analysis/latest
+37
View File
@@ -0,0 +1,37 @@
# Security Policy
This policy outlines the commitment and practices of the go-openapi maintainers regarding security.
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 0.x | :white_check_mark: |
## Vulnerability checks in place
This repository uses automated vulnerability scans, at every merged commit and at least once a week.
We use:
* [`GitHub CodeQL`][codeql-url]
* [`trivy`][trivy-url]
* [`govulncheck`][govulncheck-url]
Reports are centralized in github security reports and visible only to the maintainers.
## Reporting a vulnerability
If you become aware of a security vulnerability that affects the current repository,
**please report it privately to the maintainers**
rather than opening a publicly visible GitHub issue.
Please follow the instructions provided by github to [Privately report a security vulnerability][github-guidance-url].
> [!NOTE]
> On Github, navigate to the project's "Security" tab then click on "Report a vulnerability".
[codeql-url]: https://github.com/github/codeql
[trivy-url]: https://trivy.dev/docs/latest/getting-started
[govulncheck-url]: https://go.dev/blog/govulncheck
[github-guidance-url]: https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability
+38 -38
View File
@@ -164,13 +164,13 @@ func New(doc *spec.Swagger) *Spec {
return a return a
} }
// SecurityRequirement is a representation of a security requirement for an operation // SecurityRequirement is a representation of a security requirement for an operation.
type SecurityRequirement struct { type SecurityRequirement struct {
Name string Name string
Scopes []string Scopes []string
} }
// SecurityRequirementsFor gets the security requirements for the operation // SecurityRequirementsFor gets the security requirements for the operation.
func (s *Spec) SecurityRequirementsFor(operation *spec.Operation) [][]SecurityRequirement { func (s *Spec) SecurityRequirementsFor(operation *spec.Operation) [][]SecurityRequirement {
if s.spec.Security == nil && operation.Security == nil { if s.spec.Security == nil && operation.Security == nil {
return nil return nil
@@ -204,7 +204,7 @@ func (s *Spec) SecurityRequirementsFor(operation *spec.Operation) [][]SecurityRe
return result return result
} }
// SecurityDefinitionsForRequirements gets the matching security definitions for a set of requirements // SecurityDefinitionsForRequirements gets the matching security definitions for a set of requirements.
func (s *Spec) SecurityDefinitionsForRequirements(requirements []SecurityRequirement) map[string]spec.SecurityScheme { func (s *Spec) SecurityDefinitionsForRequirements(requirements []SecurityRequirement) map[string]spec.SecurityScheme {
result := make(map[string]spec.SecurityScheme) result := make(map[string]spec.SecurityScheme)
@@ -219,7 +219,7 @@ func (s *Spec) SecurityDefinitionsForRequirements(requirements []SecurityRequire
return result return result
} }
// SecurityDefinitionsFor gets the matching security definitions for a set of requirements // SecurityDefinitionsFor gets the matching security definitions for a set of requirements.
func (s *Spec) SecurityDefinitionsFor(operation *spec.Operation) map[string]spec.SecurityScheme { func (s *Spec) SecurityDefinitionsFor(operation *spec.Operation) map[string]spec.SecurityScheme {
requirements := s.SecurityRequirementsFor(operation) requirements := s.SecurityRequirementsFor(operation)
if len(requirements) == 0 { if len(requirements) == 0 {
@@ -250,7 +250,7 @@ func (s *Spec) SecurityDefinitionsFor(operation *spec.Operation) map[string]spec
return result return result
} }
// ConsumesFor gets the mediatypes for the operation // ConsumesFor gets the mediatypes for the operation.
func (s *Spec) ConsumesFor(operation *spec.Operation) []string { func (s *Spec) ConsumesFor(operation *spec.Operation) []string {
if len(operation.Consumes) == 0 { if len(operation.Consumes) == 0 {
cons := make(map[string]struct{}, len(s.spec.Consumes)) cons := make(map[string]struct{}, len(s.spec.Consumes))
@@ -269,7 +269,7 @@ func (s *Spec) ConsumesFor(operation *spec.Operation) []string {
return s.structMapKeys(cons) return s.structMapKeys(cons)
} }
// ProducesFor gets the mediatypes for the operation // ProducesFor gets the mediatypes for the operation.
func (s *Spec) ProducesFor(operation *spec.Operation) []string { func (s *Spec) ProducesFor(operation *spec.Operation) []string {
if len(operation.Produces) == 0 { if len(operation.Produces) == 0 {
prod := make(map[string]struct{}, len(s.spec.Produces)) prod := make(map[string]struct{}, len(s.spec.Produces))
@@ -306,7 +306,7 @@ func fieldNameFromParam(param *spec.Parameter) string {
// whenever an error is encountered while resolving references // whenever an error is encountered while resolving references
// on parameters. // on parameters.
// //
// This function takes as input the spec.Parameter which triggered the // This function takes as input the [spec.Parameter] which triggered the
// error and the error itself. // error and the error itself.
// //
// If the callback function returns false, the calling function should bail. // If the callback function returns false, the calling function should bail.
@@ -329,7 +329,7 @@ func (s *Spec) ParametersFor(operationID string) []spec.Parameter {
// Does not assume parameters properly resolve references or that // Does not assume parameters properly resolve references or that
// such references actually resolve to a parameter object. // such references actually resolve to a parameter object.
// //
// Upon error, invoke a ErrorOnParamFunc callback with the erroneous // Upon error, invoke a [ErrorOnParamFunc] callback with the erroneous
// parameters. If the callback is set to nil, panics upon errors. // parameters. If the callback is set to nil, panics upon errors.
func (s *Spec) SafeParametersFor(operationID string, callmeOnError ErrorOnParamFunc) []spec.Parameter { func (s *Spec) SafeParametersFor(operationID string, callmeOnError ErrorOnParamFunc) []spec.Parameter {
gatherParams := func(pi *spec.PathItem, op *spec.Operation) []spec.Parameter { gatherParams := func(pi *spec.PathItem, op *spec.Operation) []spec.Parameter {
@@ -337,7 +337,7 @@ func (s *Spec) SafeParametersFor(operationID string, callmeOnError ErrorOnParamF
s.paramsAsMap(pi.Parameters, bag, callmeOnError) s.paramsAsMap(pi.Parameters, bag, callmeOnError)
s.paramsAsMap(op.Parameters, bag, callmeOnError) s.paramsAsMap(op.Parameters, bag, callmeOnError)
var res []spec.Parameter res := make([]spec.Parameter, 0, len(bag))
for _, v := range bag { for _, v := range bag {
res = append(res, v) res = append(res, v)
} }
@@ -388,7 +388,7 @@ func (s *Spec) ParamsFor(method, path string) map[string]spec.Parameter {
// Does not assume parameters properly resolve references or that // Does not assume parameters properly resolve references or that
// such references actually resolve to a parameter object. // such references actually resolve to a parameter object.
// //
// Upon error, invoke a ErrorOnParamFunc callback with the erroneous // Upon error, invoke a [ErrorOnParamFunc] callback with the erroneous
// parameters. If the callback is set to nil, panics upon errors. // parameters. If the callback is set to nil, panics upon errors.
func (s *Spec) SafeParamsFor(method, path string, callmeOnError ErrorOnParamFunc) map[string]spec.Parameter { func (s *Spec) SafeParamsFor(method, path string, callmeOnError ErrorOnParamFunc) map[string]spec.Parameter {
res := make(map[string]spec.Parameter) res := make(map[string]spec.Parameter)
@@ -400,7 +400,7 @@ func (s *Spec) SafeParamsFor(method, path string, callmeOnError ErrorOnParamFunc
return res return res
} }
// OperationForName gets the operation for the given id // OperationForName gets the operation for the given id.
func (s *Spec) OperationForName(operationID string) (string, string, *spec.Operation, bool) { func (s *Spec) OperationForName(operationID string) (string, string, *spec.Operation, bool) {
for method, pathItem := range s.operations { for method, pathItem := range s.operations {
for path, op := range pathItem { for path, op := range pathItem {
@@ -413,7 +413,7 @@ func (s *Spec) OperationForName(operationID string) (string, string, *spec.Opera
return "", "", nil, false return "", "", nil, false
} }
// OperationFor the given method and path // OperationFor the given method and path.
func (s *Spec) OperationFor(method, path string) (*spec.Operation, bool) { func (s *Spec) OperationFor(method, path string) (*spec.Operation, bool) {
if mp, ok := s.operations[strings.ToUpper(method)]; ok { if mp, ok := s.operations[strings.ToUpper(method)]; ok {
op, fn := mp[path] op, fn := mp[path]
@@ -424,12 +424,12 @@ func (s *Spec) OperationFor(method, path string) (*spec.Operation, bool) {
return nil, false return nil, false
} }
// Operations gathers all the operations specified in the spec document // Operations gathers all the operations specified in the spec document.
func (s *Spec) Operations() map[string]map[string]*spec.Operation { func (s *Spec) Operations() map[string]map[string]*spec.Operation {
return s.operations return s.operations
} }
// AllPaths returns all the paths in the swagger spec // AllPaths returns all the paths in the swagger spec.
func (s *Spec) AllPaths() map[string]spec.PathItem { func (s *Spec) AllPaths() map[string]spec.PathItem {
if s.spec == nil || s.spec.Paths == nil { if s.spec == nil || s.spec.Paths == nil {
return nil return nil
@@ -438,7 +438,7 @@ func (s *Spec) AllPaths() map[string]spec.PathItem {
return s.spec.Paths.Paths return s.spec.Paths.Paths
} }
// OperationIDs gets all the operation ids based on method an dpath // OperationIDs gets all the operation ids based on method an dpath.
func (s *Spec) OperationIDs() []string { func (s *Spec) OperationIDs() []string {
if len(s.operations) == 0 { if len(s.operations) == 0 {
return nil return nil
@@ -458,7 +458,7 @@ func (s *Spec) OperationIDs() []string {
return result return result
} }
// OperationMethodPaths gets all the operation ids based on method an dpath // OperationMethodPaths gets all the operation ids based on method an dpath.
func (s *Spec) OperationMethodPaths() []string { func (s *Spec) OperationMethodPaths() []string {
if len(s.operations) == 0 { if len(s.operations) == 0 {
return nil return nil
@@ -474,22 +474,22 @@ func (s *Spec) OperationMethodPaths() []string {
return result return result
} }
// RequiredConsumes gets all the distinct consumes that are specified in the specification document // RequiredConsumes gets all the distinct consumes that are specified in the specification document.
func (s *Spec) RequiredConsumes() []string { func (s *Spec) RequiredConsumes() []string {
return s.structMapKeys(s.consumes) return s.structMapKeys(s.consumes)
} }
// RequiredProduces gets all the distinct produces that are specified in the specification document // RequiredProduces gets all the distinct produces that are specified in the specification document.
func (s *Spec) RequiredProduces() []string { func (s *Spec) RequiredProduces() []string {
return s.structMapKeys(s.produces) return s.structMapKeys(s.produces)
} }
// RequiredSecuritySchemes gets all the distinct security schemes that are specified in the swagger spec // RequiredSecuritySchemes gets all the distinct security schemes that are specified in the swagger spec.
func (s *Spec) RequiredSecuritySchemes() []string { func (s *Spec) RequiredSecuritySchemes() []string {
return s.structMapKeys(s.authSchemes) return s.structMapKeys(s.authSchemes)
} }
// SchemaRef is a reference to a schema // SchemaRef is a reference to a schema.
type SchemaRef struct { type SchemaRef struct {
Name string Name string
Ref spec.Ref Ref spec.Ref
@@ -498,7 +498,7 @@ type SchemaRef struct {
} }
// SchemasWithAllOf returns schema references to all schemas that are defined // SchemasWithAllOf returns schema references to all schemas that are defined
// with an allOf key // with an allOf key.
func (s *Spec) SchemasWithAllOf() (result []SchemaRef) { func (s *Spec) SchemasWithAllOf() (result []SchemaRef) {
for _, v := range s.allOfs { for _, v := range s.allOfs {
result = append(result, v) result = append(result, v)
@@ -507,7 +507,7 @@ func (s *Spec) SchemasWithAllOf() (result []SchemaRef) {
return return
} }
// AllDefinitions returns schema references for all the definitions that were discovered // AllDefinitions returns schema references for all the definitions that were discovered.
func (s *Spec) AllDefinitions() (result []SchemaRef) { func (s *Spec) AllDefinitions() (result []SchemaRef) {
for _, v := range s.allSchemas { for _, v := range s.allSchemas {
result = append(result, v) result = append(result, v)
@@ -516,7 +516,7 @@ func (s *Spec) AllDefinitions() (result []SchemaRef) {
return return
} }
// AllDefinitionReferences returns json refs for all the discovered schemas // AllDefinitionReferences returns JSON references for all the discovered schemas.
func (s *Spec) AllDefinitionReferences() (result []string) { func (s *Spec) AllDefinitionReferences() (result []string) {
for _, v := range s.references.schemas { for _, v := range s.references.schemas {
result = append(result, v.String()) result = append(result, v.String())
@@ -525,7 +525,7 @@ func (s *Spec) AllDefinitionReferences() (result []string) {
return return
} }
// AllParameterReferences returns json refs for all the discovered parameters // AllParameterReferences returns JSON references for all the discovered parameters.
func (s *Spec) AllParameterReferences() (result []string) { func (s *Spec) AllParameterReferences() (result []string) {
for _, v := range s.references.parameters { for _, v := range s.references.parameters {
result = append(result, v.String()) result = append(result, v.String())
@@ -534,7 +534,7 @@ func (s *Spec) AllParameterReferences() (result []string) {
return return
} }
// AllResponseReferences returns json refs for all the discovered responses // AllResponseReferences returns JSON references for all the discovered responses.
func (s *Spec) AllResponseReferences() (result []string) { func (s *Spec) AllResponseReferences() (result []string) {
for _, v := range s.references.responses { for _, v := range s.references.responses {
result = append(result, v.String()) result = append(result, v.String())
@@ -543,7 +543,7 @@ func (s *Spec) AllResponseReferences() (result []string) {
return return
} }
// AllPathItemReferences returns the references for all the items // AllPathItemReferences returns the references for all the items.
func (s *Spec) AllPathItemReferences() (result []string) { func (s *Spec) AllPathItemReferences() (result []string) {
for _, v := range s.references.pathItems { for _, v := range s.references.pathItems {
result = append(result, v.String()) result = append(result, v.String())
@@ -564,7 +564,7 @@ func (s *Spec) AllItemsReferences() (result []string) {
return return
} }
// AllReferences returns all the references found in the document, with possible duplicates // AllReferences returns all the references found in the document, with possible duplicates.
func (s *Spec) AllReferences() (result []string) { func (s *Spec) AllReferences() (result []string) {
for _, v := range s.references.allRefs { for _, v := range s.references.allRefs {
result = append(result, v.String()) result = append(result, v.String())
@@ -573,7 +573,7 @@ func (s *Spec) AllReferences() (result []string) {
return return
} }
// AllRefs returns all the unique references found in the document // AllRefs returns all the unique references found in the document.
func (s *Spec) AllRefs() (result []spec.Ref) { func (s *Spec) AllRefs() (result []spec.Ref) {
set := make(map[string]struct{}) set := make(map[string]struct{})
for _, v := range s.references.allRefs { for _, v := range s.references.allRefs {
@@ -592,61 +592,61 @@ func (s *Spec) AllRefs() (result []spec.Ref) {
} }
// ParameterPatterns returns all the patterns found in parameters // ParameterPatterns returns all the patterns found in parameters
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) ParameterPatterns() map[string]string { func (s *Spec) ParameterPatterns() map[string]string {
return cloneStringMap(s.patterns.parameters) return cloneStringMap(s.patterns.parameters)
} }
// HeaderPatterns returns all the patterns found in response headers // HeaderPatterns returns all the patterns found in response headers
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) HeaderPatterns() map[string]string { func (s *Spec) HeaderPatterns() map[string]string {
return cloneStringMap(s.patterns.headers) return cloneStringMap(s.patterns.headers)
} }
// ItemsPatterns returns all the patterns found in simple array items // ItemsPatterns returns all the patterns found in simple array items
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) ItemsPatterns() map[string]string { func (s *Spec) ItemsPatterns() map[string]string {
return cloneStringMap(s.patterns.items) return cloneStringMap(s.patterns.items)
} }
// SchemaPatterns returns all the patterns found in schemas // SchemaPatterns returns all the patterns found in schemas
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) SchemaPatterns() map[string]string { func (s *Spec) SchemaPatterns() map[string]string {
return cloneStringMap(s.patterns.schemas) return cloneStringMap(s.patterns.schemas)
} }
// AllPatterns returns all the patterns found in the spec // AllPatterns returns all the patterns found in the spec
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) AllPatterns() map[string]string { func (s *Spec) AllPatterns() map[string]string {
return cloneStringMap(s.patterns.allPatterns) return cloneStringMap(s.patterns.allPatterns)
} }
// ParameterEnums returns all the enums found in parameters // ParameterEnums returns all the enums found in parameters
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) ParameterEnums() map[string][]any { func (s *Spec) ParameterEnums() map[string][]any {
return cloneEnumMap(s.enums.parameters) return cloneEnumMap(s.enums.parameters)
} }
// HeaderEnums returns all the enums found in response headers // HeaderEnums returns all the enums found in response headers
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) HeaderEnums() map[string][]any { func (s *Spec) HeaderEnums() map[string][]any {
return cloneEnumMap(s.enums.headers) return cloneEnumMap(s.enums.headers)
} }
// ItemsEnums returns all the enums found in simple array items // ItemsEnums returns all the enums found in simple array items
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) ItemsEnums() map[string][]any { func (s *Spec) ItemsEnums() map[string][]any {
return cloneEnumMap(s.enums.items) return cloneEnumMap(s.enums.items)
} }
// SchemaEnums returns all the enums found in schemas // SchemaEnums returns all the enums found in schemas
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) SchemaEnums() map[string][]any { func (s *Spec) SchemaEnums() map[string][]any {
return cloneEnumMap(s.enums.schemas) return cloneEnumMap(s.enums.schemas)
} }
// AllEnums returns all the enums found in the spec // AllEnums returns all the enums found in the spec
// the map is cloned to avoid accidental changes // the map is cloned to avoid accidental changes.
func (s *Spec) AllEnums() map[string][]any { func (s *Spec) AllEnums() map[string][]any {
return cloneEnumMap(s.enums.allEnums) return cloneEnumMap(s.enums.allEnums)
} }
+1 -1
View File
@@ -9,4 +9,4 @@ import (
"github.com/go-openapi/analysis/internal/debug" "github.com/go-openapi/analysis/internal/debug"
) )
var debugLog = debug.GetLogger("analysis", os.Getenv("SWAGGER_DEBUG") != "") var debugLog = debug.GetLogger("analysis", os.Getenv("SWAGGER_DEBUG") != "") //nolint:gochecknoglobals // it's okay to use a private global for logging
+27 -28
View File
@@ -1,32 +1,31 @@
// SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers // SPDX-FileCopyrightText: Copyright 2015-2025 go-swagger maintainers
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
/* // Package analysis provides methods to work with a Swagger specification document from
Package analysis provides methods to work with a Swagger specification document from // package go-openapi/spec.
package go-openapi/spec. //
// # Analyzing a specification
## Analyzing a specification //
// An analysed specification object (type Spec) provides methods to work with swagger definition.
An analysed specification object (type Spec) provides methods to work with swagger definition. //
// # Flattening or expanding a specification
## Flattening or expanding a specification //
// Flattening a specification bundles all remote $ref in the main spec document.
Flattening a specification bundles all remote $ref in the main spec document. // Depending on flattening options, additional preprocessing may take place:
Depending on flattening options, additional preprocessing may take place: //
- full flattening: replacing all inline complex constructs by a named entry in #/definitions // - full flattening: replacing all inline complex constructs by a named entry in #/definitions
- expand: replace all $ref's in the document by their expanded content // - expand: replace all $ref's in the document by their expanded content
//
## Merging several specifications // # Merging several specifications
//
Mixin several specifications merges all Swagger constructs, and warns about found conflicts. // [Mixin] several specifications merges all Swagger constructs, and warns about found conflicts.
//
## Fixing a specification // # Fixing a specification
//
Unmarshalling a specification with golang json unmarshalling may lead to // Unmarshalling a specification with golang [json] unmarshalling may lead to
some unwanted result on present but empty fields. // some unwanted result on present but empty fields.
//
## Analyzing a Swagger schema // # Analyzing a Swagger schema
//
Swagger schemas are analyzed to determine their complexity and qualify their content. // Swagger schemas are analyzed to determine their complexity and qualify their content.
*/
package analysis package analysis
+47 -10
View File
@@ -21,7 +21,7 @@ import (
const definitionsPath = "#/definitions" const definitionsPath = "#/definitions"
// newRef stores information about refs created during the flattening process // newRef stores information about refs created during the flattening process.
type newRef struct { type newRef struct {
key string key string
newName string newName string
@@ -32,7 +32,7 @@ type newRef struct {
parents []string parents []string
} }
// context stores intermediary results from flatten // context stores intermediary results from flatten.
type context struct { type context struct {
newRefs map[string]*newRef newRefs map[string]*newRef
warnings []string warnings []string
@@ -52,13 +52,15 @@ func newContext() *context {
// There is a minimal and a full flattening mode. // There is a minimal and a full flattening mode.
// //
// Minimally flattening a spec means: // Minimally flattening a spec means:
//
// - Expanding parameters, responses, path items, parameter items and header items (references to schemas are left // - Expanding parameters, responses, path items, parameter items and header items (references to schemas are left
// unscathed) // unscathed)
// - Importing external (http, file) references so they become internal to the document // - Importing external ([http], file) references so they become internal to the document
// - Moving every JSON pointer to a $ref to a named definition (i.e. the reworked spec does not contain pointers // - Moving every JSON pointer to a $ref to a named definition (i.e. the reworked spec does not contain pointers
// like "$ref": "#/definitions/myObject/allOfs/1") // like "$ref": "#/definitions/myObject/allOfs/1")
// //
// A minimally flattened spec thus guarantees the following properties: // A minimally flattened spec thus guarantees the following properties:
//
// - all $refs point to a local definition (i.e. '#/definitions/...') // - all $refs point to a local definition (i.e. '#/definitions/...')
// - definitions are unique // - definitions are unique
// //
@@ -70,6 +72,7 @@ func newContext() *context {
// Minimal flattening is necessary and sufficient for codegen rendering using go-swagger. // Minimal flattening is necessary and sufficient for codegen rendering using go-swagger.
// //
// Fully flattening a spec means: // Fully flattening a spec means:
//
// - Moving every complex inline schema to be a definition with an auto-generated name in a depth-first fashion. // - Moving every complex inline schema to be a definition with an auto-generated name in a depth-first fashion.
// //
// By complex, we mean every JSON object with some properties. // By complex, we mean every JSON object with some properties.
@@ -80,6 +83,7 @@ func newContext() *context {
// have been created. // have been created.
// //
// Available flattening options: // Available flattening options:
//
// - Minimal: stops flattening after minimal $ref processing, leaving schema constructs untouched // - Minimal: stops flattening after minimal $ref processing, leaving schema constructs untouched
// - Expand: expand all $ref's in the document (inoperant if Minimal set to true) // - Expand: expand all $ref's in the document (inoperant if Minimal set to true)
// - Verbose: croaks about name conflicts detected // - Verbose: croaks about name conflicts detected
@@ -87,8 +91,9 @@ func newContext() *context {
// //
// NOTE: expansion removes all $ref save circular $ref, which remain in place // NOTE: expansion removes all $ref save circular $ref, which remain in place
// //
// TODO: additional options // Desirable future additions: additional options.
// - ProgagateNameExtensions: ensure that created entries properly follow naming rules when their parent have set a //
// - PropagateNameExtensions: ensure that created entries properly follow naming rules when their parent have set a
// x-go-name extension // x-go-name extension
// - LiftAllOfs: // - LiftAllOfs:
// - limit the flattening of allOf members when simple objects // - limit the flattening of allOf members when simple objects
@@ -169,7 +174,7 @@ func expand(opts *FlattenOpts) error {
} }
// normalizeRef strips the current file from any absolute file $ref. This works around issue go-openapi/spec#76: // normalizeRef strips the current file from any absolute file $ref. This works around issue go-openapi/spec#76:
// leading absolute file in $ref is stripped // leading absolute file in $ref is stripped.
func normalizeRef(opts *FlattenOpts) error { func normalizeRef(opts *FlattenOpts) error {
debugLog("normalizeRef") debugLog("normalizeRef")
@@ -491,14 +496,25 @@ func stripPointersAndOAIGen(opts *FlattenOpts) error {
// pointer and name resolution again. // pointer and name resolution again.
func stripOAIGen(opts *FlattenOpts) (bool, error) { func stripOAIGen(opts *FlattenOpts) (bool, error) {
debugLog("stripOAIGen") debugLog("stripOAIGen")
// Ensure the spec analysis is fresh, as previous steps (namePointers, etc.) might have modified refs.
opts.Spec.reload()
replacedWithComplex := false replacedWithComplex := false
// figure out referers of OAIGen definitions (doing it before the ref start mutating) // figure out referers of OAIGen definitions (doing it before the ref start mutating)
for _, r := range opts.flattenContext.newRefs { // Sort keys to ensure deterministic processing order
sortedKeys := make([]string, 0, len(opts.flattenContext.newRefs))
for k := range opts.flattenContext.newRefs {
sortedKeys = append(sortedKeys, k)
}
sort.Strings(sortedKeys)
for _, k := range sortedKeys {
r := opts.flattenContext.newRefs[k]
updateRefParents(opts.Spec.references.allRefs, r) updateRefParents(opts.Spec.references.allRefs, r)
} }
for k := range opts.flattenContext.newRefs { for _, k := range sortedKeys {
r := opts.flattenContext.newRefs[k] r := opts.flattenContext.newRefs[k]
debugLog("newRefs[%s]: isOAIGen: %t, resolved: %t, name: %s, path:%s, #parents: %d, parents: %v, ref: %s", debugLog("newRefs[%s]: isOAIGen: %t, resolved: %t, name: %s, path:%s, #parents: %d, parents: %v, ref: %s",
k, r.isOAIGen, r.resolved, r.newName, r.path, len(r.parents), r.parents, r.schema.Ref.String()) k, r.isOAIGen, r.resolved, r.newName, r.path, len(r.parents), r.parents, r.schema.Ref.String())
@@ -521,7 +537,7 @@ func stripOAIGen(opts *FlattenOpts) (bool, error) {
return replacedWithComplex, nil return replacedWithComplex, nil
} }
// updateRefParents updates all parents of an updated $ref // updateRefParents updates all parents of an updated $ref.
func updateRefParents(allRefs map[string]spec.Ref, r *newRef) { func updateRefParents(allRefs map[string]spec.Ref, r *newRef) {
if !r.isOAIGen || r.resolved { // bail on already resolved entries (avoid looping) if !r.isOAIGen || r.resolved { // bail on already resolved entries (avoid looping)
return return
@@ -580,6 +596,19 @@ func stripOAIGenForRef(opts *FlattenOpts, k string, r *newRef) (bool, error) {
replacedWithComplex = true replacedWithComplex = true
} }
} }
// update parents of the target ref (pr[0]) if it is also a newRef (OAIGen)
// This ensures that if the target is later deleted/merged, it knows about these new referers.
for _, nr := range opts.flattenContext.newRefs {
if nr.path == pr[0] && nr.isOAIGen && !nr.resolved {
for _, p := range pr[1:] {
if !slices.Contains(nr.parents, p) {
nr.parents = append(nr.parents, p)
}
}
break
}
}
} }
// remove OAIGen definition // remove OAIGen definition
@@ -587,7 +616,15 @@ func stripOAIGenForRef(opts *FlattenOpts, k string, r *newRef) (bool, error) {
delete(opts.Swagger().Definitions, path.Base(r.path)) delete(opts.Swagger().Definitions, path.Base(r.path))
// propagate changes in ref index for keys which have this one as a parent // propagate changes in ref index for keys which have this one as a parent
for kk, value := range opts.flattenContext.newRefs { // Sort keys to ensure deterministic update order
propagateKeys := make([]string, 0, len(opts.flattenContext.newRefs))
for k := range opts.flattenContext.newRefs {
propagateKeys = append(propagateKeys, k)
}
sort.Strings(propagateKeys)
for _, kk := range propagateKeys {
value := opts.flattenContext.newRefs[kk]
if kk == k || !value.isOAIGen || value.resolved { if kk == k || !value.isOAIGen || value.resolved {
continue continue
} }
+4 -4
View File
@@ -17,7 +17,7 @@ import (
"github.com/go-openapi/swag/mangling" "github.com/go-openapi/swag/mangling"
) )
// InlineSchemaNamer finds a new name for an inlined type // InlineSchemaNamer finds a new name for an inlined type.
type InlineSchemaNamer struct { type InlineSchemaNamer struct {
Spec *spec.Swagger Spec *spec.Swagger
Operations map[string]operations.OpRef Operations map[string]operations.OpRef
@@ -25,7 +25,7 @@ type InlineSchemaNamer struct {
opts *FlattenOpts opts *FlattenOpts
} }
// Name yields a new name for the inline schema // Name yields a new name for the inline schema.
func (isn *InlineSchemaNamer) Name(key string, schema *spec.Schema, aschema *AnalyzedSchema) error { func (isn *InlineSchemaNamer) Name(key string, schema *spec.Schema, aschema *AnalyzedSchema) error {
debugLog("naming inlined schema at %s", key) debugLog("naming inlined schema at %s", key)
@@ -108,7 +108,7 @@ func (isn *InlineSchemaNamer) Name(key string, schema *spec.Schema, aschema *Ana
return nil return nil
} }
// uniqifyName yields a unique name for a definition // uniqifyName yields a unique name for a definition.
func uniqifyName(definitions spec.Definitions, name string) (string, bool) { func uniqifyName(definitions spec.Definitions, name string) (string, bool) {
isOAIGen := false isOAIGen := false
if name == "" { if name == "" {
@@ -244,7 +244,7 @@ func namesForDefinition(parts sortref.SplitKey) ([][]string, int) {
return [][]string{}, 0 return [][]string{}, 0
} }
// partAdder knows how to interpret a schema when it comes to build a name from parts // partAdder knows how to interpret a schema when it comes to build a name from parts.
func partAdder(aschema *AnalyzedSchema) sortref.PartAdder { func partAdder(aschema *AnalyzedSchema) sortref.PartAdder {
return func(part string) []string { return func(part string) []string {
segments := make([]string, 0, minSegments) segments := make([]string, 0, minSegments)
+3 -3
View File
@@ -35,7 +35,7 @@ type FlattenOpts struct {
_ struct{} // require keys _ struct{} // require keys
} }
// ExpandOpts creates a spec.ExpandOptions to configure expanding a specification document. // ExpandOpts creates a spec.[spec.ExpandOptions] to configure expanding a specification document.
func (f *FlattenOpts) ExpandOpts(skipSchemas bool) *spec.ExpandOptions { func (f *FlattenOpts) ExpandOpts(skipSchemas bool) *spec.ExpandOptions {
return &spec.ExpandOptions{ return &spec.ExpandOptions{
RelativeBase: f.BasePath, RelativeBase: f.BasePath,
@@ -44,13 +44,13 @@ func (f *FlattenOpts) ExpandOpts(skipSchemas bool) *spec.ExpandOptions {
} }
} }
// Swagger gets the swagger specification for this flatten operation // Swagger gets the swagger specification for this flatten operation.
func (f *FlattenOpts) Swagger() *spec.Swagger { func (f *FlattenOpts) Swagger() *spec.Swagger {
return f.Spec.spec return f.Spec.spec
} }
// croak logs notifications and warnings about valid, but possibly unwanted constructs resulting // croak logs notifications and warnings about valid, but possibly unwanted constructs resulting
// from flattening a spec // from flattening a spec.
func (f *FlattenOpts) croak() { func (f *FlattenOpts) croak() {
if !f.Verbose { if !f.Verbose {
return return
+6
View File
@@ -0,0 +1,6 @@
go 1.24.0
use (
.
./internal/testintegration
)
+29
View File
@@ -0,0 +1,29 @@
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30 h1:BHT1/DKsYDGkUgQ2jmMaozVcdk+sVfz0+1ZJq4zkWgw=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss=
go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc=
golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=
golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
+2 -4
View File
@@ -11,11 +11,9 @@ import (
"runtime" "runtime"
) )
var ( var output = os.Stdout //nolint:gochecknoglobals // this is on purpose to be overridable during tests
output = os.Stdout
)
// GetLogger provides a prefix debug logger // GetLogger provides a prefix debug logger.
func GetLogger(prefix string, debug bool) func(string, ...any) { func GetLogger(prefix string, debug bool) func(string, ...any) {
if debug { if debug {
logger := log.New(output, prefix+":", log.LstdFlags) logger := log.New(output, prefix+":", log.LstdFlags)
@@ -17,8 +17,9 @@ import (
// NOTE: does not support JSONschema ID for $ref (we assume we are working with swagger specs here). // NOTE: does not support JSONschema ID for $ref (we assume we are working with swagger specs here).
// //
// NOTE(windows): // NOTE(windows):
// * refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec) //
// * "/ in paths may appear as escape sequences // - refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec)
// - "/ in paths may appear as escape sequences.
func RebaseRef(baseRef string, ref string) string { func RebaseRef(baseRef string, ref string) string {
baseRef, _ = url.PathUnescape(baseRef) baseRef, _ = url.PathUnescape(baseRef)
ref, _ = url.PathUnescape(ref) ref, _ = url.PathUnescape(ref)
@@ -69,8 +70,9 @@ func RebaseRef(baseRef string, ref string) string {
// Path renders absolute path on remote file refs // Path renders absolute path on remote file refs
// //
// NOTE(windows): // NOTE(windows):
// * refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec) //
// * "/ in paths may appear as escape sequences // - refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec)
// - "/ in paths may appear as escape sequences.
func Path(ref spec.Ref, basePath string) string { func Path(ref spec.Ref, basePath string) string {
uri, _ := url.PathUnescape(ref.String()) uri, _ := url.PathUnescape(ref.String())
if ref.HasFragmentOnly || filepath.IsAbs(uri) { if ref.HasFragmentOnly || filepath.IsAbs(uri) {
@@ -14,12 +14,12 @@ import (
"github.com/go-openapi/swag/mangling" "github.com/go-openapi/swag/mangling"
) )
// AllOpRefsByRef returns an index of sortable operations // AllOpRefsByRef returns an index of sortable operations.
func AllOpRefsByRef(specDoc Provider, operationIDs []string) map[string]OpRef { func AllOpRefsByRef(specDoc Provider, operationIDs []string) map[string]OpRef {
return OpRefsByRef(GatherOperations(specDoc, operationIDs)) return OpRefsByRef(GatherOperations(specDoc, operationIDs))
} }
// OpRefsByRef indexes a map of sortable operations // OpRefsByRef indexes a map of sortable operations.
func OpRefsByRef(oprefs map[string]OpRef) map[string]OpRef { func OpRefsByRef(oprefs map[string]OpRef) map[string]OpRef {
result := make(map[string]OpRef, len(oprefs)) result := make(map[string]OpRef, len(oprefs))
for _, v := range oprefs { for _, v := range oprefs {
@@ -29,7 +29,7 @@ func OpRefsByRef(oprefs map[string]OpRef) map[string]OpRef {
return result return result
} }
// OpRef is an indexable, sortable operation // OpRef is an indexable, sortable operation.
type OpRef struct { type OpRef struct {
Method string Method string
Path string Path string
@@ -39,19 +39,19 @@ type OpRef struct {
Ref spec.Ref Ref spec.Ref
} }
// OpRefs is a sortable collection of operations // OpRefs is a sortable collection of operations.
type OpRefs []OpRef type OpRefs []OpRef
func (o OpRefs) Len() int { return len(o) } func (o OpRefs) Len() int { return len(o) }
func (o OpRefs) Swap(i, j int) { o[i], o[j] = o[j], o[i] } func (o OpRefs) Swap(i, j int) { o[i], o[j] = o[j], o[i] }
func (o OpRefs) Less(i, j int) bool { return o[i].Key < o[j].Key } func (o OpRefs) Less(i, j int) bool { return o[i].Key < o[j].Key }
// Provider knows how to collect operations from a spec // Provider knows how to collect operations from a spec.
type Provider interface { type Provider interface {
Operations() map[string]map[string]*spec.Operation Operations() map[string]map[string]*spec.Operation
} }
// GatherOperations builds a map of sorted operations from a spec // GatherOperations builds a map of sorted operations from a spec.
func GatherOperations(specDoc Provider, operationIDs []string) map[string]OpRef { func GatherOperations(specDoc Provider, operationIDs []string) map[string]OpRef {
var oprefs OpRefs var oprefs OpRefs
mangler := mangling.NewNameMangler() mangler := mangling.NewNameMangler()
+1 -1
View File
@@ -58,7 +58,7 @@ func ErrCyclicChain(key string) error {
} }
func ErrInvalidPointerType(key string, value any, err error) error { func ErrInvalidPointerType(key string, value any, err error) error {
return fmt.Errorf("invalid type for resolved JSON pointer %s. Expected a schema a, got: %T (%v): %w", return fmt.Errorf("invalid type for resolved JSON pointer %s. Expected a schema a, got: %T (%w): %w",
key, value, err, ErrReplace, key, value, err, ErrReplace,
) )
} }
+29 -14
View File
@@ -22,9 +22,10 @@ const (
allocMediumMap = 64 allocMediumMap = 64
) )
//nolint:gochecknoglobals // it's okay to use a private global for logging
var debugLog = debug.GetLogger("analysis/flatten/replace", os.Getenv("SWAGGER_DEBUG") != "") var debugLog = debug.GetLogger("analysis/flatten/replace", os.Getenv("SWAGGER_DEBUG") != "")
// RewriteSchemaToRef replaces a schema with a Ref // RewriteSchemaToRef replaces a schema with a Ref.
func RewriteSchemaToRef(sp *spec.Swagger, key string, ref spec.Ref) error { func RewriteSchemaToRef(sp *spec.Swagger, key string, ref spec.Ref) error {
debugLog("rewriting schema to ref for %s with %s", key, ref.String()) debugLog("rewriting schema to ref for %s with %s", key, ref.String())
_, value, err := getPointerFromKey(sp, key) _, value, err := getPointerFromKey(sp, key)
@@ -142,7 +143,7 @@ func rewriteParentRef(sp *spec.Swagger, key string, ref spec.Ref) error {
return nil return nil
} }
// getPointerFromKey retrieves the content of the JSON pointer "key" // getPointerFromKey retrieves the content of the JSON pointer "key".
func getPointerFromKey(sp any, key string) (string, any, error) { func getPointerFromKey(sp any, key string) (string, any, error) {
switch sp.(type) { switch sp.(type) {
case *spec.Schema: case *spec.Schema:
@@ -154,7 +155,10 @@ func getPointerFromKey(sp any, key string) (string, any, error) {
return "", sp, nil return "", sp, nil
} }
// unescape chars in key, e.g. "{}" from path params // unescape chars in key, e.g. "{}" from path params
pth, _ := url.PathUnescape(key[1:]) pth, err := url.PathUnescape(key[1:])
if err != nil {
return "", nil, errors.Join(err, ErrReplace)
}
ptr, err := jsonpointer.New(pth) ptr, err := jsonpointer.New(pth)
if err != nil { if err != nil {
return "", nil, errors.Join(err, ErrReplace) return "", nil, errors.Join(err, ErrReplace)
@@ -170,7 +174,7 @@ func getPointerFromKey(sp any, key string) (string, any, error) {
return pth, value, nil return pth, value, nil
} }
// getParentFromKey retrieves the container of the JSON pointer "key" // getParentFromKey retrieves the container of the JSON pointer "key".
func getParentFromKey(sp any, key string) (string, string, any, error) { func getParentFromKey(sp any, key string) (string, string, any, error) {
switch sp.(type) { switch sp.(type) {
case *spec.Schema: case *spec.Schema:
@@ -196,7 +200,7 @@ func getParentFromKey(sp any, key string) (string, string, any, error) {
return parent, entry, pvalue, nil return parent, entry, pvalue, nil
} }
// UpdateRef replaces a ref by another one // UpdateRef replaces a ref by another one.
func UpdateRef(sp any, key string, ref spec.Ref) error { func UpdateRef(sp any, key string, ref spec.Ref) error {
switch sp.(type) { switch sp.(type) {
case *spec.Schema: case *spec.Schema:
@@ -265,7 +269,7 @@ func UpdateRef(sp any, key string, ref spec.Ref) error {
return nil return nil
} }
// UpdateRefWithSchema replaces a ref with a schema (i.e. re-inline schema) // UpdateRefWithSchema replaces a ref with a schema (i.e. re-inline schema).
func UpdateRefWithSchema(sp *spec.Swagger, key string, sch *spec.Schema) error { func UpdateRefWithSchema(sp *spec.Swagger, key string, sch *spec.Schema) error {
debugLog("updating ref for %s with schema", key) debugLog("updating ref for %s with schema", key)
pth, value, err := getPointerFromKey(sp, key) pth, value, err := getPointerFromKey(sp, key)
@@ -324,7 +328,7 @@ func UpdateRefWithSchema(sp *spec.Swagger, key string, sch *spec.Schema) error {
return nil return nil
} }
// DeepestRefResult holds the results from DeepestRef analysis // DeepestRefResult holds the results from [DeepestRef] analysis.
type DeepestRefResult struct { type DeepestRefResult struct {
Ref spec.Ref Ref spec.Ref
Schema *spec.Schema Schema *spec.Schema
@@ -332,10 +336,13 @@ type DeepestRefResult struct {
} }
// DeepestRef finds the first definition ref, from a cascade of nested refs which are not definitions. // DeepestRef finds the first definition ref, from a cascade of nested refs which are not definitions.
//
// - if no definition is found, returns the deepest ref. // - if no definition is found, returns the deepest ref.
// - pointers to external files are expanded // - pointers to external files are expanded
// //
// NOTE: all external $ref's are assumed to be already expanded at this stage. // NOTE: all external $ref's are assumed to be already expanded at this stage.
//
//nolint:gocognit,gocyclo,cyclop // definitely needs a refactoring, in a follow-up PR
func DeepestRef(sp *spec.Swagger, opts *spec.ExpandOptions, ref spec.Ref) (*DeepestRefResult, error) { func DeepestRef(sp *spec.Swagger, opts *spec.ExpandOptions, ref spec.Ref) (*DeepestRefResult, error) {
if !ref.HasFragmentOnly { if !ref.HasFragmentOnly {
// we found an external $ref, which is odd at this stage: // we found an external $ref, which is odd at this stage:
@@ -392,11 +399,13 @@ DOWNREF:
case spec.Response: case spec.Response:
// a pointer points to a schema initially marshalled in responses section... // a pointer points to a schema initially marshalled in responses section...
// Attempt to convert this to a schema. If this fails, the spec is invalid // Attempt to convert this to a schema. If this fails, the spec is invalid
asJSON, _ := refable.MarshalJSON() asJSON, err := refable.MarshalJSON()
if err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err)
}
var asSchema spec.Schema var asSchema spec.Schema
err := asSchema.UnmarshalJSON(asJSON) if err = asSchema.UnmarshalJSON(asJSON); err != nil {
if err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err) return nil, ErrInvalidPointerType(currentRef.String(), value, err)
} }
warnings = append(warnings, fmt.Sprintf("found $ref %q (response) interpreted as schema", currentRef.String())) warnings = append(warnings, fmt.Sprintf("found $ref %q (response) interpreted as schema", currentRef.String()))
@@ -409,9 +418,12 @@ DOWNREF:
case spec.Parameter: case spec.Parameter:
// a pointer points to a schema initially marshalled in parameters section... // a pointer points to a schema initially marshalled in parameters section...
// Attempt to convert this to a schema. If this fails, the spec is invalid // Attempt to convert this to a schema. If this fails, the spec is invalid
asJSON, _ := refable.MarshalJSON() asJSON, err := refable.MarshalJSON()
if err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err)
}
var asSchema spec.Schema var asSchema spec.Schema
if err := asSchema.UnmarshalJSON(asJSON); err != nil { if err = asSchema.UnmarshalJSON(asJSON); err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err) return nil, ErrInvalidPointerType(currentRef.String(), value, err)
} }
@@ -428,9 +440,12 @@ DOWNREF:
break DOWNREF break DOWNREF
} }
asJSON, _ := json.Marshal(refable) asJSON, err := json.Marshal(refable)
if err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err)
}
var asSchema spec.Schema var asSchema spec.Schema
if err := asSchema.UnmarshalJSON(asJSON); err != nil { if err = asSchema.UnmarshalJSON(asJSON); err != nil {
return nil, ErrInvalidPointerType(currentRef.String(), value, err) return nil, ErrInvalidPointerType(currentRef.String(), value, err)
} }
warnings = append(warnings, fmt.Sprintf("found $ref %q (%T) interpreted as schema", currentRef.String(), refable)) warnings = append(warnings, fmt.Sprintf("found $ref %q (%T) interpreted as schema", currentRef.String(), refable))
@@ -12,7 +12,7 @@ import (
const allocLargeMap = 150 const allocLargeMap = 150
// Save registers a schema as an entry in spec #/definitions // Save registers a schema as an entry in spec #/definitions.
func Save(sp *spec.Swagger, name string, schema *spec.Schema) { func Save(sp *spec.Swagger, name string, schema *spec.Schema) {
if schema == nil { if schema == nil {
return return
@@ -25,7 +25,7 @@ func Save(sp *spec.Swagger, name string, schema *spec.Schema) {
sp.Definitions[name] = *schema sp.Definitions[name] = *schema
} }
// Clone deep-clones a schema // Clone deep-clones a schema.
func Clone(schema *spec.Schema) *spec.Schema { func Clone(schema *spec.Schema) *spec.Schema {
var sch spec.Schema var sch spec.Schema
_ = jsonutils.FromDynamicJSON(schema, &sch) _ = jsonutils.FromDynamicJSON(schema, &sch)
+20 -24
View File
@@ -20,12 +20,8 @@ const (
definitions = "definitions" definitions = "definitions"
) )
//nolint:gochecknoglobals // it's okay to store small indexes like this as private globals
var ( var (
ignoredKeys map[string]struct{}
validMethods map[string]struct{}
)
func init() {
ignoredKeys = map[string]struct{}{ ignoredKeys = map[string]struct{}{
"schema": {}, "schema": {},
"properties": {}, "properties": {},
@@ -43,15 +39,15 @@ func init() {
"PUT": {}, "PUT": {},
"DELETE": {}, "DELETE": {},
} }
} )
// Key represent a key item constructed from /-separated segments // Key represent a key item constructed from /-separated segments.
type Key struct { type Key struct {
Segments int Segments int
Key string Key string
} }
// Keys is a sortable collable collection of Keys // Keys is a sortable collable collection of Keys.
type Keys []Key type Keys []Key
func (k Keys) Len() int { return len(k) } func (k Keys) Len() int { return len(k) }
@@ -60,7 +56,7 @@ func (k Keys) Less(i, j int) bool {
return k[i].Segments > k[j].Segments || (k[i].Segments == k[j].Segments && k[i].Key < k[j].Key) return k[i].Segments > k[j].Segments || (k[i].Segments == k[j].Segments && k[i].Key < k[j].Key)
} }
// KeyParts construct a SplitKey with all its /-separated segments decomposed. It is sortable. // KeyParts construct a [SplitKey] with all its /-separated segments decomposed. It is sortable.
func KeyParts(key string) SplitKey { func KeyParts(key string) SplitKey {
var res []string var res []string
for part := range strings.SplitSeq(key[1:], "/") { for part := range strings.SplitSeq(key[1:], "/") {
@@ -75,12 +71,12 @@ func KeyParts(key string) SplitKey {
// SplitKey holds of the parts of a /-separated key, so that their location may be determined. // SplitKey holds of the parts of a /-separated key, so that their location may be determined.
type SplitKey []string type SplitKey []string
// IsDefinition is true when the split key is in the #/definitions section of a spec // IsDefinition is true when the split key is in the #/definitions section of a spec.
func (s SplitKey) IsDefinition() bool { func (s SplitKey) IsDefinition() bool {
return len(s) > 1 && s[0] == definitions return len(s) > 1 && s[0] == definitions
} }
// DefinitionName yields the name of the definition // DefinitionName yields the name of the definition.
func (s SplitKey) DefinitionName() string { func (s SplitKey) DefinitionName() string {
if !s.IsDefinition() { if !s.IsDefinition() {
return "" return ""
@@ -89,10 +85,10 @@ func (s SplitKey) DefinitionName() string {
return s[1] return s[1]
} }
// PartAdder know how to construct the components of a new name // PartAdder know how to construct the components of a new name.
type PartAdder func(string) []string type PartAdder func(string) []string
// BuildName builds a name from segments // BuildName builds a name from segments.
func (s SplitKey) BuildName(segments []string, startIndex int, adder PartAdder) string { func (s SplitKey) BuildName(segments []string, startIndex int, adder PartAdder) string {
for i, part := range s[startIndex:] { for i, part := range s[startIndex:] {
if _, ignored := ignoredKeys[part]; !ignored || s.isKeyName(startIndex+i) { if _, ignored := ignoredKeys[part]; !ignored || s.isKeyName(startIndex+i) {
@@ -103,42 +99,42 @@ func (s SplitKey) BuildName(segments []string, startIndex int, adder PartAdder)
return strings.Join(segments, " ") return strings.Join(segments, " ")
} }
// IsOperation is true when the split key is in the operations section // IsOperation is true when the split key is in the operations section.
func (s SplitKey) IsOperation() bool { func (s SplitKey) IsOperation() bool {
return len(s) > 1 && s[0] == paths return len(s) > 1 && s[0] == paths
} }
// IsSharedOperationParam is true when the split key is in the parameters section of a path // IsSharedOperationParam is true when the split key is in the parameters section of a path.
func (s SplitKey) IsSharedOperationParam() bool { func (s SplitKey) IsSharedOperationParam() bool {
return len(s) > 2 && s[0] == paths && s[2] == parameters return len(s) > 2 && s[0] == paths && s[2] == parameters
} }
// IsSharedParam is true when the split key is in the #/parameters section of a spec // IsSharedParam is true when the split key is in the #/parameters section of a spec.
func (s SplitKey) IsSharedParam() bool { func (s SplitKey) IsSharedParam() bool {
return len(s) > 1 && s[0] == parameters return len(s) > 1 && s[0] == parameters
} }
// IsOperationParam is true when the split key is in the parameters section of an operation // IsOperationParam is true when the split key is in the parameters section of an operation.
func (s SplitKey) IsOperationParam() bool { func (s SplitKey) IsOperationParam() bool {
return len(s) > 3 && s[0] == paths && s[3] == parameters return len(s) > 3 && s[0] == paths && s[3] == parameters
} }
// IsOperationResponse is true when the split key is in the responses section of an operation // IsOperationResponse is true when the split key is in the responses section of an operation.
func (s SplitKey) IsOperationResponse() bool { func (s SplitKey) IsOperationResponse() bool {
return len(s) > 3 && s[0] == paths && s[3] == responses return len(s) > 3 && s[0] == paths && s[3] == responses
} }
// IsSharedResponse is true when the split key is in the #/responses section of a spec // IsSharedResponse is true when the split key is in the #/responses section of a spec.
func (s SplitKey) IsSharedResponse() bool { func (s SplitKey) IsSharedResponse() bool {
return len(s) > 1 && s[0] == responses return len(s) > 1 && s[0] == responses
} }
// IsDefaultResponse is true when the split key is the default response for an operation // IsDefaultResponse is true when the split key is the default response for an operation.
func (s SplitKey) IsDefaultResponse() bool { func (s SplitKey) IsDefaultResponse() bool {
return len(s) > 4 && s[0] == paths && s[3] == responses && s[4] == "default" return len(s) > 4 && s[0] == paths && s[3] == responses && s[4] == "default"
} }
// IsStatusCodeResponse is true when the split key is an operation response with a status code // IsStatusCodeResponse is true when the split key is an operation response with a status code.
func (s SplitKey) IsStatusCodeResponse() bool { func (s SplitKey) IsStatusCodeResponse() bool {
isInt := func() bool { isInt := func() bool {
_, err := strconv.Atoi(s[4]) _, err := strconv.Atoi(s[4])
@@ -149,7 +145,7 @@ func (s SplitKey) IsStatusCodeResponse() bool {
return len(s) > 4 && s[0] == paths && s[3] == responses && isInt() return len(s) > 4 && s[0] == paths && s[3] == responses && isInt()
} }
// ResponseName yields either the status code or "Default" for a response // ResponseName yields either the status code or "Default" for a response.
func (s SplitKey) ResponseName() string { func (s SplitKey) ResponseName() string {
if s.IsStatusCodeResponse() { if s.IsStatusCodeResponse() {
code, _ := strconv.Atoi(s[4]) code, _ := strconv.Atoi(s[4])
@@ -164,7 +160,7 @@ func (s SplitKey) ResponseName() string {
return "" return ""
} }
// PathItemRef constructs a $ref object from a split key of the form /{path}/{method} // PathItemRef constructs a $ref object from a split key of the form /{path}/{method}.
func (s SplitKey) PathItemRef() spec.Ref { func (s SplitKey) PathItemRef() spec.Ref {
const minValidPathItems = 3 const minValidPathItems = 3
if len(s) < minValidPathItems { if len(s) < minValidPathItems {
@@ -179,7 +175,7 @@ func (s SplitKey) PathItemRef() spec.Ref {
return spec.MustCreateRef("#" + path.Join("/", paths, jsonpointer.Escape(pth), strings.ToUpper(method))) return spec.MustCreateRef("#" + path.Join("/", paths, jsonpointer.Escape(pth), strings.ToUpper(method)))
} }
// PathRef constructs a $ref object from a split key of the form /paths/{reference} // PathRef constructs a $ref object from a split key of the form /paths/{reference}.
func (s SplitKey) PathRef() spec.Ref { func (s SplitKey) PathRef() spec.Ref {
if !s.IsOperation() { if !s.IsOperation() {
return spec.Ref{} return spec.Ref{}
+13 -9
View File
@@ -4,7 +4,9 @@
package sortref package sortref
import ( import (
"iter"
"reflect" "reflect"
"slices"
"sort" "sort"
"strings" "strings"
@@ -12,10 +14,6 @@ import (
"github.com/go-openapi/spec" "github.com/go-openapi/spec"
) )
var depthGroupOrder = []string{
"sharedParam", "sharedResponse", "sharedOpParam", "opParam", "codeResponse", "defaultResponse", "definition",
}
type mapIterator struct { type mapIterator struct {
len int len int
mapIter *reflect.MapIter mapIter *reflect.MapIter
@@ -42,7 +40,7 @@ func mustMapIterator(anyMap any) *mapIterator {
// DepthFirst sorts a map of anything. It groups keys by category // DepthFirst sorts a map of anything. It groups keys by category
// (shared params, op param, statuscode response, default response, definitions) // (shared params, op param, statuscode response, default response, definitions)
// sort groups internally by number of parts in the key and lexical names // sort groups internally by number of parts in the key and lexical names
// flatten groups into a single list of keys // flatten groups into a single list of keys.
func DepthFirst(in any) []string { func DepthFirst(in any) []string {
iterator := mustMapIterator(in) iterator := mustMapIterator(in)
sorted := make([]string, 0, iterator.Len()) sorted := make([]string, 0, iterator.Len())
@@ -77,7 +75,7 @@ func DepthFirst(in any) []string {
grouped[pk] = append(grouped[pk], Key{Segments: len(split), Key: k}) grouped[pk] = append(grouped[pk], Key{Segments: len(split), Key: k})
} }
for _, pk := range depthGroupOrder { for pk := range depthGroupOrder() {
res := grouped[pk] res := grouped[pk]
sort.Sort(res) sort.Sort(res)
@@ -89,6 +87,12 @@ func DepthFirst(in any) []string {
return sorted return sorted
} }
func depthGroupOrder() iter.Seq[string] {
return slices.Values([]string{
"sharedParam", "sharedResponse", "sharedOpParam", "opParam", "codeResponse", "defaultResponse", "definition",
})
}
// topMostRefs is able to sort refs by hierarchical then lexicographic order, // topMostRefs is able to sort refs by hierarchical then lexicographic order,
// yielding refs ordered breadth-first. // yielding refs ordered breadth-first.
type topmostRefs []string type topmostRefs []string
@@ -104,7 +108,7 @@ func (k topmostRefs) Less(i, j int) bool {
return li < lj return li < lj
} }
// TopmostFirst sorts references by depth // TopmostFirst sorts references by depth.
func TopmostFirst(refs []string) []string { func TopmostFirst(refs []string) []string {
res := topmostRefs(refs) res := topmostRefs(refs)
sort.Sort(res) sort.Sort(res)
@@ -112,13 +116,13 @@ func TopmostFirst(refs []string) []string {
return res return res
} }
// RefRevIdx is a reverse index for references // RefRevIdx is a reverse index for references.
type RefRevIdx struct { type RefRevIdx struct {
Ref spec.Ref Ref spec.Ref
Keys []string Keys []string
} }
// ReverseIndex builds a reverse index for references in schemas // ReverseIndex builds a reverse index for references in schemas.
func ReverseIndex(schemas map[string]spec.Ref, basePath string) map[string]RefRevIdx { func ReverseIndex(schemas map[string]spec.Ref, basePath string) map[string]RefRevIdx {
collected := make(map[string]RefRevIdx) collected := make(map[string]RefRevIdx)
for key, schRef := range schemas { for key, schRef := range schemas {
+3 -2
View File
@@ -18,12 +18,13 @@ import (
// needed. // needed.
// //
// The following parts of primary are subject to merge, filling empty details // The following parts of primary are subject to merge, filling empty details
//
// - Info // - Info
// - BasePath // - BasePath
// - Host // - Host
// - ExternalDocs // - ExternalDocs
// //
// Consider calling FixEmptyResponseDescriptions() on the modified primary // Consider calling [FixEmptyResponseDescriptions]() on the modified primary
// if you read them from storage and they are valid to start with. // if you read them from storage and they are valid to start with.
// //
// Entries in "paths", "definitions", "parameters" and "responses" are // Entries in "paths", "definitions", "parameters" and "responses" are
@@ -39,7 +40,7 @@ import (
// etc). Ensure they are canonical if your downstream tools do // etc). Ensure they are canonical if your downstream tools do
// key normalization of any form. // key normalization of any form.
// //
// Merging schemes (http, https), and consumers/producers do not account for // Merging schemes ([http], https), and consumers/producers do not account for
// collisions. // collisions.
func Mixin(primary *spec.Swagger, mixins ...*spec.Swagger) []string { func Mixin(primary *spec.Swagger, mixins ...*spec.Swagger) []string {
skipped := make([]string, 0, len(mixins)) skipped := make([]string, 0, len(mixins))
+3 -3
View File
@@ -8,7 +8,7 @@ import (
"github.com/go-openapi/strfmt" "github.com/go-openapi/strfmt"
) )
// SchemaOpts configures the schema analyzer // SchemaOpts configures the schema analyzer.
type SchemaOpts struct { type SchemaOpts struct {
Schema *spec.Schema Schema *spec.Schema
Root any Root any
@@ -52,7 +52,7 @@ func Schema(opts SchemaOpts) (*AnalyzedSchema, error) {
return a, nil return a, nil
} }
// AnalyzedSchema indicates what the schema represents // AnalyzedSchema indicates what the schema represents.
type AnalyzedSchema struct { type AnalyzedSchema struct {
schema *spec.Schema schema *spec.Schema
root any root any
@@ -78,7 +78,7 @@ type AnalyzedSchema struct {
IsEnum bool IsEnum bool
} }
// Inherits copies value fields from other onto this schema // Inherits copies value fields from other onto this schema.
func (a *AnalyzedSchema) inherits(other *AnalyzedSchema) { func (a *AnalyzedSchema) inherits(other *AnalyzedSchema) {
if other == nil { if other == nil {
return return
-181
View File
@@ -1,181 +0,0 @@
# git-cliff ~ configuration file
# https://git-cliff.org/docs/configuration
[changelog]
header = """
"""
footer = """
-----
**[{{ remote.github.repo }}]({{ self::remote_url() }}) license terms**
[![License][license-badge]][license-url]
[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
[license-url]: {{ self::remote_url() }}/?tab=Apache-2.0-1-ov-file#readme
{%- macro remote_url() -%}
https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
{%- endmacro -%}
"""
body = """
{%- if version %}
## [{{ version | trim_start_matches(pat="v") }}]({{ self::remote_url() }}/tree/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{%- else %}
## [unreleased]
{%- endif %}
{%- if message %}
{%- raw %}\n{% endraw %}
{{ message }}
{%- raw %}\n{% endraw %}
{%- endif %}
{%- if version %}
{%- if previous.version %}
**Full Changelog**: <{{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }}>
{%- endif %}
{%- else %}
{%- raw %}\n{% endraw %}
{%- endif %}
{%- if statistics %}{% if statistics.commit_count %}
{%- raw %}\n{% endraw %}
{{ statistics.commit_count }} commits in this release.
{%- raw %}\n{% endraw %}
{%- endif %}{% endif %}
-----
{%- for group, commits in commits | group_by(attribute="group") %}
{%- raw %}\n{% endraw %}
### {{ group | upper_first }}
{%- raw %}\n{% endraw %}
{%- for commit in commits %}
{%- if commit.remote.pr_title %}
{%- set commit_message = commit.remote.pr_title %}
{%- else %}
{%- set commit_message = commit.message %}
{%- endif %}
* {{ commit_message | split(pat="\n") | first | trim }}
{%- if commit.remote.username %}
{%- raw %} {% endraw %}by [@{{ commit.remote.username }}](https://github.com/{{ commit.remote.username }})
{%- endif %}
{%- if commit.remote.pr_number %}
{%- raw %} {% endraw %}in [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }})
{%- endif %}
{%- raw %} {% endraw %}[...]({{ self::remote_url() }}/commit/{{ commit.id }})
{%- endfor %}
{%- endfor %}
{%- if github %}
{%- raw %}\n{% endraw -%}
{%- set all_contributors = github.contributors | length %}
{%- if github.contributors | filter(attribute="username", value="dependabot[bot]") | length < all_contributors %}
-----
### People who contributed to this release
{% endif %}
{%- for contributor in github.contributors | filter(attribute="username") | sort(attribute="username") %}
{%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
* [@{{ contributor.username }}](https://github.com/{{ contributor.username }})
{%- endif %}
{%- endfor %}
{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
-----
{%- raw %}\n{% endraw %}
### New Contributors
{%- endif %}
{%- for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
{%- if contributor.username != "dependabot[bot]" and contributor.username != "github-actions[bot]" %}
* @{{ contributor.username }} made their first contribution
{%- if contributor.pr_number %}
in [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
{%- endif %}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- raw %}\n{% endraw %}
{%- macro remote_url() -%}
https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
{%- endmacro -%}
"""
# Remove leading and trailing whitespaces from the changelog's body.
trim = true
# Render body even when there are no releases to process.
render_always = true
# An array of regex based postprocessors to modify the changelog.
postprocessors = [
# Replace the placeholder <REPO> with a URL.
#{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
]
# output file path
# output = "test.md"
[git]
# Parse commits according to the conventional commits specification.
# See https://www.conventionalcommits.org
conventional_commits = false
# Exclude commits that do not match the conventional commits specification.
filter_unconventional = false
# Require all commits to be conventional.
# Takes precedence over filter_unconventional.
require_conventional = false
# Split commits on newlines, treating each line as an individual commit.
split_commits = false
# An array of regex based parsers to modify commit messages prior to further processing.
commit_preprocessors = [
# Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit message using https://github.com/crate-ci/typos.
# If the spelling is incorrect, it will be fixed automatically.
#{ pattern = '.*', replace_command = 'typos --write-changes -' }
]
# Prevent commits that are breaking from being excluded by commit parsers.
protect_breaking_commits = false
# An array of regex based parsers for extracting data from the commit message.
# Assigns commits to groups.
# Optionally sets the commit's scope and can decide to exclude commits from further processing.
commit_parsers = [
{ message = "^[Cc]hore\\([Rr]elease\\): prepare for", skip = true },
{ message = "(^[Mm]erge)|([Mm]erge conflict)", skip = true },
{ field = "author.name", pattern = "dependabot*", group = "<!-- 0A -->Updates" },
{ message = "([Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
{ body = "(.*[Ss]ecurity)|([Vv]uln)", group = "<!-- 08 -->Security" },
{ message = "([Cc]hore\\(lint\\))|(style)|(lint)|(codeql)|(golangci)", group = "<!-- 05 -->Code quality" },
{ message = "(^[Dd]oc)|((?i)readme)|(badge)|(typo)|(documentation)", group = "<!-- 03 -->Documentation" },
{ message = "(^[Ff]eat)|(^[Ee]nhancement)", group = "<!-- 00 -->Implemented enhancements" },
{ message = "(^ci)|(\\(ci\\))|(fixup\\s+ci)|(fix\\s+ci)|(license)|(example)", group = "<!-- 07 -->Miscellaneous tasks" },
{ message = "^test", group = "<!-- 06 -->Testing" },
{ message = "(^fix)|(panic)", group = "<!-- 01 -->Fixed bugs" },
{ message = "(^refact)|(rework)", group = "<!-- 02 -->Refactor" },
{ message = "(^[Pp]erf)|(performance)", group = "<!-- 04 -->Performance" },
{ message = "(^[Cc]hore)", group = "<!-- 07 -->Miscellaneous tasks" },
{ message = "^[Rr]evert", group = "<!-- 09 -->Reverted changes" },
{ message = "(upgrade.*?go)|(go\\s+version)", group = "<!-- 0A -->Updates" },
{ message = ".*", group = "<!-- 0B -->Other" },
]
# Exclude commits that are not matched by any commit parser.
filter_commits = false
# An array of link parsers for extracting external references, and turning them into URLs, using regex.
link_parsers = []
# Include only the tags that belong to the current branch.
use_branch_tags = false
# Order releases topologically instead of chronologically.
topo_order = false
# Order releases topologically instead of chronologically.
topo_order_commits = true
# Order of commits in each group/release within the changelog.
# Allowed values: newest, oldest
sort_commits = "newest"
# Process submodules commits
recurse_submodules = false
#[remote.github]
#owner = "go-openapi"
+5 -1
View File
@@ -1,3 +1,7 @@
secrets.yml
*.out *.out
*.cov
.idea
.env
.mcp.json
.claude/
settings.local.json settings.local.json
+5
View File
@@ -12,6 +12,7 @@ linters:
- paralleltest - paralleltest
- recvcheck - recvcheck
- testpackage - testpackage
- thelper
- tparallel - tparallel
- varnamelen - varnamelen
- whitespace - whitespace
@@ -40,6 +41,10 @@ linters:
- common-false-positives - common-false-positives
- legacy - legacy
- std-error-handling - std-error-handling
rules:
- linters:
- revive
text: "avoid package names that conflict with Go standard library package names"
paths: paths:
- third_party$ - third_party$
- builtin$ - builtin$
+4 -2
View File
@@ -23,7 +23,9 @@ include:
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or * The use of sexualized language or imagery and unwelcome sexual attention or
advances advances
* Trolling, insulting/derogatory comments, and personal or political attacks * Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment * Public or private harassment
* Publishing others' private information, such as a physical or electronic * Publishing others' private information, such as a physical or electronic
@@ -55,7 +57,7 @@ further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at ivan+abuse@flanders.co.nz. All reported by contacting the project team at <ivan+abuse@flanders.co.nz>. All
complaints will be reviewed and investigated and will result in a response that complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident. obligated to maintain confidentiality with regard to the reporter of an incident.
@@ -68,7 +70,7 @@ members of the project's leadership.
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version] available at [<http://contributor-covenant.org/version/1/4>][version]
[homepage]: http://contributor-covenant.org [homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/ [version]: http://contributor-covenant.org/version/1/4/
+14 -13
View File
@@ -4,21 +4,22 @@
| Total Contributors | Total Contributions | | Total Contributors | Total Contributions |
| --- | --- | | --- | --- |
| 12 | 105 | | 13 | 110 |
| Username | All Time Contribution Count | All Commits | | Username | All Time Contribution Count | All Commits |
| --- | --- | --- | | --- | --- | --- |
| @casualjim | 58 | https://github.com/go-openapi/errors/commits?author=casualjim | | @casualjim | 58 | <https://github.com/go-openapi/errors/commits?author=casualjim> |
| @fredbi | 32 | https://github.com/go-openapi/errors/commits?author=fredbi | | @fredbi | 36 | <https://github.com/go-openapi/errors/commits?author=fredbi> |
| @youyuanwu | 5 | https://github.com/go-openapi/errors/commits?author=youyuanwu | | @youyuanwu | 5 | <https://github.com/go-openapi/errors/commits?author=youyuanwu> |
| @alexandear | 2 | https://github.com/go-openapi/errors/commits?author=alexandear | | @alexandear | 2 | <https://github.com/go-openapi/errors/commits?author=alexandear> |
| @fiorix | 1 | https://github.com/go-openapi/errors/commits?author=fiorix | | @fiorix | 1 | <https://github.com/go-openapi/errors/commits?author=fiorix> |
| @ligustah | 1 | https://github.com/go-openapi/errors/commits?author=ligustah | | @ligustah | 1 | <https://github.com/go-openapi/errors/commits?author=ligustah> |
| @artemseleznev | 1 | https://github.com/go-openapi/errors/commits?author=artemseleznev | | @artemseleznev | 1 | <https://github.com/go-openapi/errors/commits?author=artemseleznev> |
| @gautierdelorme | 1 | https://github.com/go-openapi/errors/commits?author=gautierdelorme | | @gautierdelorme | 1 | <https://github.com/go-openapi/errors/commits?author=gautierdelorme> |
| @guillemj | 1 | https://github.com/go-openapi/errors/commits?author=guillemj | | @guillemj | 1 | <https://github.com/go-openapi/errors/commits?author=guillemj> |
| @maxatome | 1 | https://github.com/go-openapi/errors/commits?author=maxatome | | @maxatome | 1 | <https://github.com/go-openapi/errors/commits?author=maxatome> |
| @Simon-Li | 1 | https://github.com/go-openapi/errors/commits?author=Simon-Li | | @Simon-Li | 1 | <https://github.com/go-openapi/errors/commits?author=Simon-Li> |
| @ujjwalsh | 1 | https://github.com/go-openapi/errors/commits?author=ujjwalsh | | @aokumasan | 1 | <https://github.com/go-openapi/errors/commits?author=aokumasan> |
| @ujjwalsh | 1 | <https://github.com/go-openapi/errors/commits?author=ujjwalsh> |
_this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_ _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_
+4 -9
View File
@@ -51,7 +51,9 @@ errNotImplemented := NotImplemented("method: %s", url)
See <https://github.com/go-openapi/errors/releases> See <https://github.com/go-openapi/errors/releases>
<!-- <!--
## References ## References
--> -->
## Licensing ## Licensing
@@ -59,12 +61,9 @@ See <https://github.com/go-openapi/errors/releases>
This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE). This library ships under the [SPDX-License-Identifier: Apache-2.0](./LICENSE).
<!-- <!--
See the license [NOTICE](./NOTICE), which recalls the licensing terms of all the pieces of software
on top of which it has been built.
-->
<!--
## Limitations ## Limitations
--> -->
## Other documentation ## Other documentation
@@ -95,23 +94,19 @@ Maintainers can cut a new release by either:
<!-- Badges: release & docker images --> <!-- Badges: release & docker images -->
[release-badge]: https://badge.fury.io/gh/go-openapi%2Ferrors.svg [release-badge]: https://badge.fury.io/gh/go-openapi%2Ferrors.svg
[release-url]: https://badge.fury.io/gh/go-openapi%2Ferrors [release-url]: https://badge.fury.io/gh/go-openapi%2Ferrors
[gomod-badge]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Ferrors.svg
[gomod-url]: https://badge.fury.io/go/github.com%2Fgo-openapi%2Ferrors
<!-- Badges: code quality --> <!-- Badges: code quality -->
[gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/errors [gocard-badge]: https://goreportcard.com/badge/github.com/go-openapi/errors
[gocard-url]: https://goreportcard.com/report/github.com/go-openapi/errors [gocard-url]: https://goreportcard.com/report/github.com/go-openapi/errors
[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/errors [codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-openapi/errors
[codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/errors [codefactor-url]: https://www.codefactor.io/repository/github/go-openapi/errors
<!-- Badges: documentation & support --> <!-- Badges: documentation & support -->
[doc-badge]: https://img.shields.io/badge/doc-site-blue?link=https%3A%2F%2Fgoswagger.io%2Fgo-openapi%2F
[doc-url]: https://goswagger.io/go-openapi
[godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/errors [godoc-badge]: https://pkg.go.dev/badge/github.com/go-openapi/errors
[godoc-url]: http://pkg.go.dev/github.com/go-openapi/errors [godoc-url]: http://pkg.go.dev/github.com/go-openapi/errors
[slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png [slack-logo]: https://a.slack-edge.com/e6a93c1/img/icons/favicon-32.png
[slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM [slack-badge]: https://img.shields.io/badge/slack-blue?link=https%3A%2F%2Fgoswagger.slack.com%2Farchives%2FC04R30YM
[slack-url]: https://goswagger.slack.com/archives/C04R30YMU [slack-url]: https://goswagger.slack.com/archives/C04R30YMU
[discord-badge]: https://img.shields.io/discord/1446918742398341256?logo=discord&label=discord&color=blue [discord-badge]: https://img.shields.io/discord/1446918742398341256?logo=discord&label=discord&color=blue
[discord-url]: https://discord.gg/DrafRmZx [discord-url]: https://discord.gg/twZ9BwT3
<!-- Badges: license & compliance --> <!-- Badges: license & compliance -->
[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg [license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
+23 -5
View File
@@ -6,14 +6,32 @@ This policy outlines the commitment and practices of the go-openapi maintainers
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 0.22.x | :white_check_mark: | | 0.x | :white_check_mark: |
## Vulnerability checks in place
This repository uses automated vulnerability scans, at every merged commit and at least once a week.
We use:
* [`GitHub CodeQL`][codeql-url]
* [`trivy`][trivy-url]
* [`govulncheck`][govulncheck-url]
Reports are centralized in github security reports and visible only to the maintainers.
## Reporting a vulnerability ## Reporting a vulnerability
If you become aware of a security vulnerability that affects the current repository, If you become aware of a security vulnerability that affects the current repository,
please report it privately to the maintainers. **please report it privately to the maintainers**
rather than opening a publicly visible GitHub issue.
Please follow the instructions provided by github to Please follow the instructions provided by github to [Privately report a security vulnerability][github-guidance-url].
[Privately report a security vulnerability](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability).
TL;DR: on Github, navigate to the project's "Security" tab then click on "Report a vulnerability". > [!NOTE]
> On Github, navigate to the project's "Security" tab then click on "Report a vulnerability".
[codeql-url]: https://github.com/github/codeql
[trivy-url]: https://trivy.dev/docs/latest/getting-started
[govulncheck-url]: https://go.dev/blog/govulncheck
[github-guidance-url]: https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability

Some files were not shown because too many files have changed in this diff Show More