mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 17:51:57 +00:00
telemetrygateway: use official SAMS SDK (#62094)
Migrates Telemetry Gateway to use the official SAMS SDK: https://github.com/sourcegraph/sourcegraph-accounts-sdk-go. This is important as we start accepting events from other managed services (https://github.com/sourcegraph/self-serve-cody/pull/721) and need to do token introspection + scope checks on the incoming requests. As part of this, I also upgraded the SDK dependency, which involved some constructor changes (https://github.com/sourcegraph/sourcegraph-accounts-sdk-go/pull/12) ## Test plan My setup from https://github.com/sourcegraph/sourcegraph/pull/61022 still runs, indicating all required configuration is present: ``` [telemetry-g...y] DEBUG service service/service.go:69 using SAMS client {"samsExternalURL": "https://accounts.sourcegraph.com", "samsAPIURL": null, "clientID": "sams_cid_ ``` CI passes as well. --------- Co-authored-by: Joe Chen <joe@sourcegraph.com>
This commit is contained in:
parent
f869f924f0
commit
fd3a4a3a9b
@ -77,9 +77,11 @@ func SignOut(w http.ResponseWriter, r *http.Request, sessionKey string, getProvi
|
||||
// dotcom-specific operation, we can live with it, to avoid cascading
|
||||
// refactorings that doesn't really do any useful in enterprise environment.
|
||||
samsClient, err := sams.NewClientV1(
|
||||
p.config.Issuer,
|
||||
p.config.ClientID,
|
||||
p.config.ClientSecret,
|
||||
sams.ClientV1ConnConfig{
|
||||
ExternalURL: p.config.Issuer,
|
||||
ClientID: p.config.ClientID,
|
||||
ClientSecret: p.config.ClientSecret,
|
||||
},
|
||||
[]scopes.Scope{
|
||||
"sams::session::read",
|
||||
"sams::session::write",
|
||||
|
||||
@ -16,12 +16,12 @@ go_library(
|
||||
"//cmd/telemetry-gateway/internal/server/samsm2m",
|
||||
"//internal/licensing",
|
||||
"//internal/pubsub",
|
||||
"//internal/sams",
|
||||
"//internal/trace",
|
||||
"//lib/errors",
|
||||
"//lib/telemetrygateway/v1:telemetrygateway",
|
||||
"@com_github_cockroachdb_redact//:redact",
|
||||
"@com_github_sourcegraph_log//:log",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//:sourcegraph-accounts-sdk-go",
|
||||
"@io_opentelemetry_go_otel//:otel",
|
||||
"@io_opentelemetry_go_otel//attribute",
|
||||
"@io_opentelemetry_go_otel_metric//:metric",
|
||||
|
||||
@ -8,10 +8,12 @@ go_library(
|
||||
visibility = ["//cmd/telemetry-gateway:__subpackages__"],
|
||||
deps = [
|
||||
"//internal/authbearer",
|
||||
"//internal/sams",
|
||||
"//lib/errors",
|
||||
"@com_github_sourcegraph_log//:log",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//:sourcegraph-accounts-sdk-go",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//scopes",
|
||||
"@io_opentelemetry_go_otel//:otel",
|
||||
"@io_opentelemetry_go_otel//attribute",
|
||||
"@io_opentelemetry_go_otel//codes",
|
||||
"@io_opentelemetry_go_otel_trace//:trace",
|
||||
"@org_golang_google_grpc//codes",
|
||||
@ -25,10 +27,11 @@ go_test(
|
||||
srcs = ["samsm2m_test.go"],
|
||||
embed = [":samsm2m"],
|
||||
deps = [
|
||||
"//internal/sams",
|
||||
"//lib/errors",
|
||||
"@com_github_hexops_autogold_v2//:autogold",
|
||||
"@com_github_sourcegraph_log//logtest",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//:sourcegraph-accounts-sdk-go",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//scopes",
|
||||
"@com_github_stretchr_testify//assert",
|
||||
"@com_github_stretchr_testify//require",
|
||||
"@org_golang_google_grpc//metadata",
|
||||
|
||||
@ -2,10 +2,9 @@ package samsm2m
|
||||
|
||||
import (
|
||||
"context"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
otelcodes "go.opentelemetry.io/otel/codes"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
"google.golang.org/grpc/codes"
|
||||
@ -14,21 +13,27 @@ import (
|
||||
|
||||
"github.com/sourcegraph/log"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph-accounts-sdk-go/scopes"
|
||||
|
||||
sams "github.com/sourcegraph/sourcegraph-accounts-sdk-go"
|
||||
"github.com/sourcegraph/sourcegraph/internal/authbearer"
|
||||
"github.com/sourcegraph/sourcegraph/internal/sams"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
)
|
||||
|
||||
const requiredSamsScope = "telemetry_gateway::events::write"
|
||||
var requiredSamsScope = scopes.ToScope(scopes.ServiceTelemetryGateway, "events", scopes.ActionWrite)
|
||||
|
||||
var tracer = otel.GetTracerProvider().Tracer("telemetry-gateway/samsm2m")
|
||||
|
||||
type TokenIntrospector interface {
|
||||
IntrospectToken(ctx context.Context, token string) (*sams.IntrospectTokenResponse, error)
|
||||
}
|
||||
|
||||
// CheckWriteEventsScope ensures the request context has a valid SAMS MSM token
|
||||
// with requiredSamsScope. It returns a gRPC status error suitable to be returned
|
||||
// directly from an RPC implementation.
|
||||
//
|
||||
// See: go/sams-m2m
|
||||
func CheckWriteEventsScope(ctx context.Context, logger log.Logger, samsClient sams.Client) (err error) {
|
||||
func CheckWriteEventsScope(ctx context.Context, logger log.Logger, tokens TokenIntrospector) (err error) {
|
||||
var span trace.Span
|
||||
ctx, span = tracer.Start(ctx, "CheckWriteEventsScope")
|
||||
defer func() {
|
||||
@ -58,26 +63,27 @@ func CheckWriteEventsScope(ctx context.Context, logger log.Logger, samsClient sa
|
||||
// TODO: as part of go/sams-m2m we need to build out a SDK for SAMS M2M
|
||||
// consumers that has a recommended short-caching mechanism. Avoid doing it
|
||||
// for now until we have a concerted effort.
|
||||
result, err := samsClient.IntrospectToken(ctx, token)
|
||||
result, err := tokens.IntrospectToken(ctx, token)
|
||||
if err != nil {
|
||||
logger.Error("samsClient.IntrospectToken failed", log.Error(err))
|
||||
return status.Error(codes.Internal, "unable to validate token")
|
||||
}
|
||||
span.SetAttributes(attribute.String("client_id", result.ClientID))
|
||||
|
||||
// Active encapsulates whether the token is active, including expiration.
|
||||
if !result.Active {
|
||||
// Record detailed error in span, and return an opaque one
|
||||
span.RecordError(errors.New("inactive scope"))
|
||||
span.RecordError(errors.New("inactive token"))
|
||||
return status.Error(codes.PermissionDenied, "permission denied")
|
||||
}
|
||||
|
||||
// Check for our required scope.
|
||||
gotScopes := strings.Split(result.Scope, " ")
|
||||
if !slices.Contains(gotScopes, requiredSamsScope) {
|
||||
if !result.Scopes.Match(requiredSamsScope) {
|
||||
// Record detailed error in span and logs, and return an opaque one
|
||||
err = errors.Newf("got scopes %q, required: %q", gotScopes, requiredSamsScope)
|
||||
err = errors.Newf("got scopes %+v, required: %+v", result.Scopes, requiredSamsScope)
|
||||
span.RecordError(err)
|
||||
logger.Error("attempt to authenticate using SAMS token without required scope",
|
||||
log.String("clientID", result.ClientID),
|
||||
log.Error(err))
|
||||
return status.Error(codes.PermissionDenied, "permission denied")
|
||||
}
|
||||
|
||||
@ -10,16 +10,18 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"google.golang.org/grpc/metadata"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/internal/sams"
|
||||
"github.com/sourcegraph/sourcegraph-accounts-sdk-go/scopes"
|
||||
|
||||
sams "github.com/sourcegraph/sourcegraph-accounts-sdk-go"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
)
|
||||
|
||||
type mockSAMSClient struct {
|
||||
result *sams.TokenIntrospection
|
||||
result *sams.IntrospectTokenResponse
|
||||
error error
|
||||
}
|
||||
|
||||
func (m mockSAMSClient) IntrospectToken(context.Context, string) (*sams.TokenIntrospection, error) {
|
||||
func (m mockSAMSClient) IntrospectToken(context.Context, string) (*sams.IntrospectTokenResponse, error) {
|
||||
return m.result, m.error
|
||||
}
|
||||
|
||||
@ -27,7 +29,7 @@ func TestCheckWriteEventsScope(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
metadata map[string]string
|
||||
samsClient sams.Client
|
||||
samsClient TokenIntrospector
|
||||
wantErr autogold.Value
|
||||
}{
|
||||
{
|
||||
@ -57,22 +59,25 @@ func TestCheckWriteEventsScope(t *testing.T) {
|
||||
{
|
||||
name: "token ok, but inactive",
|
||||
metadata: map[string]string{"authorization": "bearer foobar"},
|
||||
samsClient: mockSAMSClient{result: &sams.TokenIntrospection{Active: false}},
|
||||
samsClient: mockSAMSClient{result: &sams.IntrospectTokenResponse{Active: false}},
|
||||
wantErr: autogold.Expect("rpc error: code = PermissionDenied desc = permission denied"),
|
||||
},
|
||||
{
|
||||
name: "token ok and active, but invalid scope",
|
||||
metadata: map[string]string{"authorization": "bearer foobar"},
|
||||
samsClient: mockSAMSClient{result: &sams.TokenIntrospection{Active: true, Scope: "foo bar"}},
|
||||
wantErr: autogold.Expect("rpc error: code = PermissionDenied desc = permission denied"),
|
||||
name: "token ok and active, but invalid scope",
|
||||
metadata: map[string]string{"authorization": "bearer foobar"},
|
||||
samsClient: mockSAMSClient{result: &sams.IntrospectTokenResponse{
|
||||
Active: true,
|
||||
Scopes: scopes.ToScopes([]string{"foo", "bar"}),
|
||||
}},
|
||||
wantErr: autogold.Expect("rpc error: code = PermissionDenied desc = permission denied"),
|
||||
},
|
||||
{
|
||||
name: "token ok and active and valid scope",
|
||||
metadata: map[string]string{"authorization": "bearer foobar"},
|
||||
samsClient: mockSAMSClient{
|
||||
result: &sams.TokenIntrospection{
|
||||
result: &sams.IntrospectTokenResponse{
|
||||
Active: true,
|
||||
Scope: "foo bar " + requiredSamsScope,
|
||||
Scopes: append(scopes.ToScopes([]string{"foo", "bar"}), requiredSamsScope),
|
||||
},
|
||||
},
|
||||
wantErr: nil, // success
|
||||
|
||||
@ -12,9 +12,9 @@ import (
|
||||
|
||||
"github.com/sourcegraph/log"
|
||||
|
||||
sams "github.com/sourcegraph/sourcegraph-accounts-sdk-go"
|
||||
"github.com/sourcegraph/sourcegraph/internal/licensing"
|
||||
"github.com/sourcegraph/sourcegraph/internal/pubsub"
|
||||
"github.com/sourcegraph/sourcegraph/internal/sams"
|
||||
sgtrace "github.com/sourcegraph/sourcegraph/internal/trace"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
|
||||
@ -29,7 +29,7 @@ type Server struct {
|
||||
publishOpts events.PublishStreamOptions
|
||||
|
||||
// samsClient is used for M2M authn/authz: go/sams-m2m
|
||||
samsClient sams.Client
|
||||
samsClient *sams.ClientV1
|
||||
|
||||
recordEventsMetrics recordEventsMetrics
|
||||
recordEventMetrics recordEventMetrics
|
||||
@ -43,7 +43,7 @@ var _ telemetrygatewayv1.TelemeteryGatewayServiceServer = (*Server)(nil)
|
||||
func New(
|
||||
logger log.Logger,
|
||||
eventsTopic pubsub.TopicPublisher,
|
||||
samsClient sams.Client,
|
||||
samsClient *sams.ClientV1,
|
||||
publishOpts events.PublishStreamOptions,
|
||||
) (*Server, error) {
|
||||
recordEventsRPCMetrics, err := newRecordEventsMetrics()
|
||||
@ -140,7 +140,7 @@ func (s *Server) RecordEvents(stream telemetrygatewayv1.TelemeteryGatewayService
|
||||
|
||||
// 🚨 SECURITY: Only known clients registered in SAMS can submit events
|
||||
// as a managed service.
|
||||
if err := samsm2m.CheckWriteEventsScope(stream.Context(), logger, s.samsClient); err != nil {
|
||||
if err := samsm2m.CheckWriteEventsScope(stream.Context(), logger, s.samsClient.Tokens()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -229,7 +229,7 @@ func (s *Server) RecordEvent(ctx context.Context, req *telemetrygatewayv1.Record
|
||||
|
||||
// 🚨 SECURITY: Only known clients registered in SAMS can submit events
|
||||
// as a managed service.
|
||||
if err := samsm2m.CheckWriteEventsScope(ctx, logger, s.samsClient); err != nil {
|
||||
if err := samsm2m.CheckWriteEventsScope(ctx, logger, s.samsClient.Tokens()); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
@ -16,7 +16,6 @@ go_library(
|
||||
"//internal/grpc/defaults",
|
||||
"//internal/httpserver",
|
||||
"//internal/pubsub",
|
||||
"//internal/sams",
|
||||
"//internal/trace/policy",
|
||||
"//internal/version",
|
||||
"//lib/background",
|
||||
@ -25,8 +24,9 @@ go_library(
|
||||
"//lib/managedservicesplatform/runtime/contract",
|
||||
"//lib/telemetrygateway/v1:telemetrygateway",
|
||||
"@com_github_sourcegraph_log//:log",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//:sourcegraph-accounts-sdk-go",
|
||||
"@com_github_sourcegraph_sourcegraph_accounts_sdk_go//scopes",
|
||||
"@io_opentelemetry_go_otel//:otel",
|
||||
"@io_opentelemetry_go_otel_metric//:metric",
|
||||
"@org_golang_x_oauth2//clientcredentials",
|
||||
],
|
||||
)
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
sams "github.com/sourcegraph/sourcegraph-accounts-sdk-go"
|
||||
"github.com/sourcegraph/sourcegraph/lib/managedservicesplatform/runtime"
|
||||
)
|
||||
|
||||
@ -15,11 +16,7 @@ type Config struct {
|
||||
StreamPublishConcurrency int
|
||||
}
|
||||
|
||||
SAMS struct {
|
||||
ServerURL string
|
||||
ClientID string
|
||||
ClientSecret string
|
||||
}
|
||||
SAMS sams.ClientV1ConnConfig
|
||||
}
|
||||
|
||||
func (c *Config) Load(env *runtime.Env) {
|
||||
@ -32,8 +29,10 @@ func (c *Config) Load(env *runtime.Env) {
|
||||
c.Events.StreamPublishConcurrency = env.GetInt("TELEMETRY_GATEWAY_EVENTS_STREAM_PUBLISH_CONCURRENCY", "250",
|
||||
"Per-stream concurrent publishing limit.")
|
||||
|
||||
c.SAMS.ServerURL = env.Get("TELEMETRY_GATEWAY_SAMS_SERVER_URL", "https://accounts.sourcegraph.com",
|
||||
"Sourcegraph Accounts Management System URL")
|
||||
// Construct by hand instead of sams.NewClientV1ConnectionConfigFromEnv for
|
||||
// backwards compatibility.
|
||||
c.SAMS.ExternalURL = env.Get("SAMS_URL", "https://accounts.sourcegraph.com", "External URL of the connected SAMS instance")
|
||||
c.SAMS.APIURL = env.GetOptional("TELEMETRY_GATEWAY_SAMS_SERVER_URL", "Sourcegraph Accounts Management System URL")
|
||||
c.SAMS.ClientID = env.Get("TELEMETRY_GATEWAY_SAMS_CLIENT_ID", "",
|
||||
"Sourcegraph Accounts Management System client ID")
|
||||
c.SAMS.ClientSecret = env.Get("TELEMETRY_GATEWAY_SAMS_CLIENT_SECRET", "",
|
||||
|
||||
@ -10,14 +10,15 @@ import (
|
||||
"github.com/sourcegraph/log"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"golang.org/x/oauth2/clientcredentials"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph-accounts-sdk-go/scopes"
|
||||
|
||||
sams "github.com/sourcegraph/sourcegraph-accounts-sdk-go"
|
||||
"github.com/sourcegraph/sourcegraph/internal/debugserver"
|
||||
internalgrpc "github.com/sourcegraph/sourcegraph/internal/grpc"
|
||||
"github.com/sourcegraph/sourcegraph/internal/grpc/defaults"
|
||||
"github.com/sourcegraph/sourcegraph/internal/httpserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/pubsub"
|
||||
"github.com/sourcegraph/sourcegraph/internal/sams"
|
||||
"github.com/sourcegraph/sourcegraph/internal/trace/policy"
|
||||
"github.com/sourcegraph/sourcegraph/internal/version"
|
||||
|
||||
@ -66,14 +67,13 @@ func (Service) Initialize(ctx context.Context, logger log.Logger, contract runti
|
||||
|
||||
// Prepare SAMS client, so that we can enforce SAMS-based M2M authz/authn
|
||||
logger.Debug("using SAMS client",
|
||||
log.String("samsServer", config.SAMS.ServerURL),
|
||||
log.String("samsExternalURL", config.SAMS.ExternalURL),
|
||||
log.Stringp("samsAPIURL", config.SAMS.APIURL),
|
||||
log.String("clientID", config.SAMS.ClientID))
|
||||
samsClient := sams.NewClient(config.SAMS.ServerURL, clientcredentials.Config{
|
||||
ClientID: config.SAMS.ClientID,
|
||||
ClientSecret: config.SAMS.ClientSecret,
|
||||
TokenURL: fmt.Sprintf("%s/oauth/token", config.SAMS.ServerURL),
|
||||
Scopes: []string{"openid", "profile", "email"},
|
||||
})
|
||||
samsClient, err := sams.NewClientV1(config.SAMS, []scopes.Scope{"openid", "profile", "email"})
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "create Sourcegraph Accounts client")
|
||||
}
|
||||
|
||||
// Initialize our gRPC server
|
||||
grpcServer := defaults.NewPublicServer(logger)
|
||||
|
||||
111
deps.bzl
111
deps.bzl
@ -41,8 +41,15 @@ def go_dependencies():
|
||||
name = "com_connectrpc_connect",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "connectrpc.com/connect",
|
||||
sum = "h1:rdtfQjZ0OyFkWPTegBNcH7cwquGAN1WzyJy80oFNibg=",
|
||||
version = "v1.16.0",
|
||||
sum = "h1:rOdrK/RTI/7TVnn3JsVxt3n028MlTRwmK5Q4heSpjis=",
|
||||
version = "v1.16.1",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_connectrpc_otelconnect",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "connectrpc.com/otelconnect",
|
||||
sum = "h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=",
|
||||
version = "v0.7.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_99designs_gqlgen",
|
||||
@ -1313,6 +1320,13 @@ def go_dependencies():
|
||||
sum = "h1:koIcOUdrTIivZgSLhHQvKgqdWZq5d7KdMEWF1Ud6+5g=",
|
||||
version = "v1.2.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_decred_dcrd_dcrec_secp256k1_v4",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/decred/dcrd/dcrec/secp256k1/v4",
|
||||
sum = "h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=",
|
||||
version = "v4.2.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_dennwc_varint",
|
||||
build_file_proto_mode = "disable_global",
|
||||
@ -1780,8 +1794,8 @@ def go_dependencies():
|
||||
name = "com_github_getsentry_sentry_go",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/getsentry/sentry-go",
|
||||
sum = "h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI=",
|
||||
version = "v0.25.0",
|
||||
sum = "h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=",
|
||||
version = "v0.27.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_gfleury_go_bitbucket_v1",
|
||||
@ -2369,8 +2383,8 @@ def go_dependencies():
|
||||
name = "com_github_golang_jwt_jwt_v5",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/golang-jwt/jwt/v5",
|
||||
sum = "h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=",
|
||||
version = "v5.0.0",
|
||||
sum = "h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=",
|
||||
version = "v5.2.1",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_golang_lint",
|
||||
@ -3317,8 +3331,8 @@ def go_dependencies():
|
||||
name = "com_github_jackc_pgservicefile",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/jackc/pgservicefile",
|
||||
sum = "h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=",
|
||||
version = "v0.0.0-20221227161230-091c0ba34f0a",
|
||||
sum = "h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA=",
|
||||
version = "v0.0.0-20231201235250-de7065d80cb9",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_jackc_pgtype",
|
||||
@ -3803,6 +3817,48 @@ def go_dependencies():
|
||||
sum = "h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=",
|
||||
version = "v1.2.1",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_blackmagic",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/blackmagic",
|
||||
sum = "h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k=",
|
||||
version = "v1.0.2",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_httpcc",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/httpcc",
|
||||
sum = "h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=",
|
||||
version = "v1.0.1",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_httprc",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/httprc",
|
||||
sum = "h1:bsTfiH8xaKOJPrg1R+E3iE/AWZr/x0Phj9PBTG/OLUk=",
|
||||
version = "v1.0.5",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_iter",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/iter",
|
||||
sum = "h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=",
|
||||
version = "v1.0.2",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_jwx_v2",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/jwx/v2",
|
||||
sum = "h1:jAPKupy4uHgrHFEdjVjNkUgoBKtVDgrQPB/h55FHrR0=",
|
||||
version = "v2.0.21",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_lestrrat_go_option",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/lestrrat-go/option",
|
||||
sum = "h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=",
|
||||
version = "v1.0.1",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_letsencrypt_boulder",
|
||||
build_file_proto_mode = "disable_global",
|
||||
@ -4671,8 +4727,8 @@ def go_dependencies():
|
||||
name = "com_github_pquerna_cachecontrol",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/pquerna/cachecontrol",
|
||||
sum = "h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc=",
|
||||
version = "v0.1.0",
|
||||
sum = "h1:vBXSNuE5MYP9IJ5kjsdo8uq+w41jSPgvba2DEnkRx9k=",
|
||||
version = "v0.2.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_prashantv_gostub",
|
||||
@ -4921,8 +4977,8 @@ def go_dependencies():
|
||||
name = "com_github_rogpeppe_go_internal",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/rogpeppe/go-internal",
|
||||
sum = "h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=",
|
||||
version = "v1.11.0",
|
||||
sum = "h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=",
|
||||
version = "v1.12.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_rs_cors",
|
||||
@ -5044,6 +5100,13 @@ def go_dependencies():
|
||||
sum = "h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg=",
|
||||
version = "v0.7.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_segmentio_asm",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/segmentio/asm",
|
||||
sum = "h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=",
|
||||
version = "v1.2.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_segmentio_fasthash",
|
||||
build_file_proto_mode = "disable_global",
|
||||
@ -5420,8 +5483,8 @@ def go_dependencies():
|
||||
],
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "github.com/sourcegraph/sourcegraph-accounts-sdk-go",
|
||||
sum = "h1:p8AHEbZbqP3/LN/AT9W+Scn0tpp46X1A9qFhBHv1RRI=",
|
||||
version = "v0.0.0-20240401190202-87f6c282658b",
|
||||
sum = "h1:621jnJedYfjgES+dn5CAk4VVAwI84gnuzaDCkE83i9w=",
|
||||
version = "v0.0.0-20240409140445-b228ef93f415",
|
||||
)
|
||||
go_repository(
|
||||
name = "com_github_sourcegraph_zoekt",
|
||||
@ -7496,8 +7559,8 @@ def go_dependencies():
|
||||
],
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
|
||||
sum = "h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08=",
|
||||
version = "v0.47.0",
|
||||
sum = "h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=",
|
||||
version = "v0.49.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "io_opentelemetry_go_contrib_propagators_jaeger",
|
||||
@ -7738,8 +7801,8 @@ def go_dependencies():
|
||||
name = "org_golang_x_crypto",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "golang.org/x/crypto",
|
||||
sum = "h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=",
|
||||
version = "v0.21.0",
|
||||
sum = "h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=",
|
||||
version = "v0.22.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "org_golang_x_exp",
|
||||
@ -7787,8 +7850,8 @@ def go_dependencies():
|
||||
name = "org_golang_x_oauth2",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "golang.org/x/oauth2",
|
||||
sum = "h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=",
|
||||
version = "v0.18.0",
|
||||
sum = "h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=",
|
||||
version = "v0.19.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "org_golang_x_sync",
|
||||
@ -7801,8 +7864,8 @@ def go_dependencies():
|
||||
name = "org_golang_x_sys",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "golang.org/x/sys",
|
||||
sum = "h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=",
|
||||
version = "v0.18.0",
|
||||
sum = "h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=",
|
||||
version = "v0.19.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "org_golang_x_telemetry",
|
||||
@ -7815,8 +7878,8 @@ def go_dependencies():
|
||||
name = "org_golang_x_term",
|
||||
build_file_proto_mode = "disable_global",
|
||||
importpath = "golang.org/x/term",
|
||||
sum = "h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=",
|
||||
version = "v0.18.0",
|
||||
sum = "h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=",
|
||||
version = "v0.19.0",
|
||||
)
|
||||
go_repository(
|
||||
name = "org_golang_x_text",
|
||||
|
||||
28
go.mod
28
go.mod
@ -100,7 +100,7 @@ require (
|
||||
github.com/felixge/httpsnoop v1.0.4
|
||||
github.com/fsnotify/fsnotify v1.7.0
|
||||
github.com/gen2brain/beeep v0.0.0-20210529141713-5586760f0cc1
|
||||
github.com/getsentry/sentry-go v0.25.0
|
||||
github.com/getsentry/sentry-go v0.27.0
|
||||
github.com/ghodss/yaml v1.0.0
|
||||
github.com/gitchander/permutation v0.0.0-20210517125447-a5d73722e1b1
|
||||
github.com/go-enry/go-enry/v2 v2.8.4
|
||||
@ -202,7 +202,7 @@ require (
|
||||
go.opentelemetry.io/collector/receiver/otlpreceiver v0.92.0
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.24.0
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0
|
||||
go.opentelemetry.io/contrib/propagators/jaeger v1.24.0
|
||||
go.opentelemetry.io/contrib/propagators/ot v1.24.0
|
||||
go.opentelemetry.io/otel v1.24.0
|
||||
@ -220,11 +220,11 @@ require (
|
||||
go.uber.org/automaxprocs v1.5.2
|
||||
go.uber.org/ratelimit v0.2.0
|
||||
go.uber.org/zap v1.26.0
|
||||
golang.org/x/crypto v0.21.0
|
||||
golang.org/x/crypto v0.22.0
|
||||
golang.org/x/net v0.22.0
|
||||
golang.org/x/oauth2 v0.18.0
|
||||
golang.org/x/oauth2 v0.19.0
|
||||
golang.org/x/sync v0.6.0
|
||||
golang.org/x/sys v0.18.0
|
||||
golang.org/x/sys v0.19.0
|
||||
golang.org/x/time v0.5.0
|
||||
golang.org/x/tools v0.18.0
|
||||
gonum.org/v1/gonum v0.13.0
|
||||
@ -245,7 +245,7 @@ require (
|
||||
|
||||
require (
|
||||
chainguard.dev/apko v0.14.0
|
||||
connectrpc.com/connect v1.16.0
|
||||
connectrpc.com/connect v1.16.1
|
||||
github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai v0.5.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.2
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0
|
||||
@ -286,8 +286,8 @@ require (
|
||||
github.com/sourcegraph/managed-services-platform-cdktf/gen/slack v0.0.0-20240103014439-025608ddf849
|
||||
github.com/sourcegraph/managed-services-platform-cdktf/gen/tfe v0.0.0-20231218231056-4749baca142f
|
||||
github.com/sourcegraph/scip v0.3.3
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240401190202-87f6c282658b
|
||||
github.com/sourcegraph/sourcegraph/lib v0.0.0-20240315183013-b2b134e08ada
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240409140445-b228ef93f415
|
||||
github.com/sourcegraph/sourcegraph/lib v0.0.0-20240422195121-52350cd2e507
|
||||
github.com/sourcegraph/sourcegraph/lib/managedservicesplatform v0.0.0-00010101000000-000000000000
|
||||
github.com/sourcegraph/sourcegraph/monitoring v0.0.0-00010101000000-000000000000
|
||||
github.com/vektah/gqlparser/v2 v2.4.5
|
||||
@ -305,6 +305,7 @@ require (
|
||||
cloud.google.com/go/cloudsqlconn v1.5.1 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect
|
||||
cloud.google.com/go/trace v1.10.4 // indirect
|
||||
connectrpc.com/otelconnect v0.7.0 // indirect
|
||||
dario.cat/mergo v1.0.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect
|
||||
@ -347,7 +348,7 @@ require (
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/goccy/go-json v0.10.2 // indirect
|
||||
github.com/gofrs/uuid/v5 v5.0.0 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/google/flatbuffers v2.0.8+incompatible // indirect
|
||||
github.com/google/gnostic-models v0.6.8 // indirect
|
||||
@ -527,7 +528,7 @@ require (
|
||||
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
|
||||
github.com/jackc/pgio v1.0.0 // indirect
|
||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
|
||||
github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect
|
||||
github.com/jackc/pgtype v1.14.0
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||
github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 // indirect
|
||||
@ -574,14 +575,14 @@ require (
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pkg/profile v1.7.0 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/pquerna/cachecontrol v0.1.0 // indirect
|
||||
github.com/pquerna/cachecontrol v0.2.0 // indirect
|
||||
github.com/prometheus/client_model v0.6.0
|
||||
github.com/prometheus/common/sigv4 v0.1.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1
|
||||
github.com/pseudomuto/protokit v0.2.1 // indirect
|
||||
github.com/rivo/uniseg v0.4.6 // indirect
|
||||
github.com/rogpeppe/go-internal v1.11.0 // indirect
|
||||
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||
github.com/rs/cors v1.10.1 // indirect
|
||||
github.com/rs/xid v1.5.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
@ -614,10 +615,9 @@ require (
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d
|
||||
golang.org/x/mod v0.15.0
|
||||
golang.org/x/term v0.18.0 // indirect
|
||||
golang.org/x/term v0.19.0 // indirect
|
||||
golang.org/x/text v0.14.0
|
||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
||||
google.golang.org/appengine v1.6.8 // indirect
|
||||
google.golang.org/grpc v1.61.1
|
||||
gopkg.in/alexcesaro/statsd.v2 v2.0.0 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
|
||||
52
go.sum
52
go.sum
@ -73,8 +73,10 @@ cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/o
|
||||
cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E=
|
||||
cloud.google.com/go/trace v1.10.4 h1:2qOAuAzNezwW3QN+t41BtkDJOG42HywL73q8x/f6fnM=
|
||||
cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY=
|
||||
connectrpc.com/connect v1.16.0 h1:rdtfQjZ0OyFkWPTegBNcH7cwquGAN1WzyJy80oFNibg=
|
||||
connectrpc.com/connect v1.16.0/go.mod h1:XpZAduBQUySsb4/KO5JffORVkDI4B6/EYPi7N8xpNZw=
|
||||
connectrpc.com/connect v1.16.1 h1:rOdrK/RTI/7TVnn3JsVxt3n028MlTRwmK5Q4heSpjis=
|
||||
connectrpc.com/connect v1.16.1/go.mod h1:XpZAduBQUySsb4/KO5JffORVkDI4B6/EYPi7N8xpNZw=
|
||||
connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
|
||||
connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ=
|
||||
cuelang.org/go v0.4.3 h1:W3oBBjDTm7+IZfCKZAmC8uDG0eYfJL4Pp/xbbCMKaVo=
|
||||
@ -567,8 +569,8 @@ github.com/fullstorydev/grpcurl v1.8.7/go.mod h1:pVtM4qe3CMoLaIzYS8uvTuDj2jVYmXq
|
||||
github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
|
||||
github.com/gen2brain/beeep v0.0.0-20210529141713-5586760f0cc1 h1:Xh9mvwEmhbdXlRSsgn+N0zj/NqnKvpeqL08oKDHln2s=
|
||||
github.com/gen2brain/beeep v0.0.0-20210529141713-5586760f0cc1/go.mod h1:ElSskYZe3oM8kThaHGJ+kiN2yyUMVXMZ7WxF9QqLDS8=
|
||||
github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI=
|
||||
github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
|
||||
github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
|
||||
github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
|
||||
github.com/gitchander/permutation v0.0.0-20210517125447-a5d73722e1b1 h1:FUKJibWQu771xr/AwLn2/PbVp9AsgqfkObByTf8kJnI=
|
||||
@ -820,8 +822,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
|
||||
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
|
||||
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
|
||||
@ -1144,8 +1146,8 @@ github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwX
|
||||
github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
|
||||
github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||
github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||
github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
|
||||
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
|
||||
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
|
||||
@ -1516,8 +1518,8 @@ github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSg
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig=
|
||||
github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc=
|
||||
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
|
||||
github.com/pquerna/cachecontrol v0.2.0 h1:vBXSNuE5MYP9IJ5kjsdo8uq+w41jSPgvba2DEnkRx9k=
|
||||
github.com/pquerna/cachecontrol v0.2.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
|
||||
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
|
||||
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
|
||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
@ -1583,8 +1585,8 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
|
||||
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
|
||||
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
||||
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
|
||||
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM=
|
||||
github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo=
|
||||
github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
||||
@ -1701,8 +1703,8 @@ github.com/sourcegraph/run v0.12.0 h1:3A8w5e8HIYPfafHekvmdmmh42RHKGVhmiTZAPJclg7
|
||||
github.com/sourcegraph/run v0.12.0/go.mod h1:PwaP936BTnAJC1cqR5rSbG5kOs/EWStTK3lqvMX5GUA=
|
||||
github.com/sourcegraph/scip v0.3.3 h1:3EOkChYOntwHl0pPSAju7rj0oRuujh8owC4vjGDEr0s=
|
||||
github.com/sourcegraph/scip v0.3.3/go.mod h1:Q67VaoTpftINIy/CLrkYQOMwlsx67h8ys+ligmdUcqM=
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240401190202-87f6c282658b h1:p8AHEbZbqP3/LN/AT9W+Scn0tpp46X1A9qFhBHv1RRI=
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240401190202-87f6c282658b/go.mod h1:84opHsgiuXnmBcCTSemIHyHAbyRj8JDtGrOZypMEB/g=
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240409140445-b228ef93f415 h1:621jnJedYfjgES+dn5CAk4VVAwI84gnuzaDCkE83i9w=
|
||||
github.com/sourcegraph/sourcegraph-accounts-sdk-go v0.0.0-20240409140445-b228ef93f415/go.mod h1:BQ+bIwhTWmR6VFtLsCs9Ui4o7HJLAtVnjVdWCQRHXms=
|
||||
github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152 h1:z/MpntplPaW6QW95pzcAR/72Z5TWDyDnSo0EOcyij9o=
|
||||
github.com/sourcegraph/yaml v1.0.1-0.20200714132230-56936252f152/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
|
||||
github.com/sourcegraph/zoekt v0.0.0-20240417165306-43b92256ba71 h1:3DJmyiTtoczytYdvoBqwawkSRZEGZeZB9v0DjfQ6irY=
|
||||
@ -1950,8 +1952,8 @@ go.opentelemetry.io/contrib/detectors/gcp v1.24.0 h1:1Szzq5d735VbnwbEmwPUJ/FIpY9
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.24.0/go.mod h1:KAZHUFgklT30k9ZaYrDyg6v/T5EfBq6Eqg03H6ywN6Q=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||
go.opentelemetry.io/contrib/propagators/jaeger v1.24.0 h1:CKtIfwSgDvJmaWsZROcHzONZgmQdMYn9mVYWypOWT5o=
|
||||
go.opentelemetry.io/contrib/propagators/jaeger v1.24.0/go.mod h1:Q5JA/Cfdy/ta+5VeEhrMJRWGyS6UNRwFbl+yS3W1h5I=
|
||||
go.opentelemetry.io/contrib/propagators/ot v1.24.0 h1:6lf4HoYefKDOTUSCatwkpzliUYihAvlN0omfpOn5IDs=
|
||||
@ -2039,8 +2041,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
|
||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
|
||||
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
|
||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
|
||||
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@ -2173,8 +2175,8 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ
|
||||
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
|
||||
golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
|
||||
golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg=
|
||||
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
|
||||
golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@ -2297,8 +2299,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
@ -2309,8 +2311,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
|
||||
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
|
||||
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
||||
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
|
||||
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@ -2464,8 +2466,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk=
|
||||
google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
|
||||
Loading…
Reference in New Issue
Block a user