gitextract_rshunaq6/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── config.yml │ │ ├── feature-request.md │ │ ├── proposal.md │ │ └── question.md │ ├── dependabot.yml │ ├── pull_request_template.md │ ├── semantic.yml │ ├── stable.yml │ └── workflows/ │ ├── codeql-analysis.yml │ ├── comment-check.yml │ ├── gitee-sync.yml │ ├── go.yml │ ├── issue-translator.yml │ └── lint.yml ├── .gitignore ├── .golangci.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── README_zh.md ├── ROADMAP.md ├── SECURITY.md ├── api/ │ ├── README.md │ └── metadata/ │ ├── metadata.pb.go │ ├── metadata.proto │ ├── metadata_grpc.pb.go │ ├── metadata_http.pb.go │ └── server.go ├── app.go ├── app_test.go ├── cmd/ │ ├── kratos/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── internal/ │ │ │ ├── base/ │ │ │ │ ├── install.go │ │ │ │ ├── mod.go │ │ │ │ ├── mod_test.go │ │ │ │ ├── path.go │ │ │ │ ├── repo.go │ │ │ │ ├── repo_test.go │ │ │ │ ├── vcs_url.go │ │ │ │ └── vcs_url_test.go │ │ │ ├── change/ │ │ │ │ ├── change.go │ │ │ │ ├── get.go │ │ │ │ └── get_test.go │ │ │ ├── project/ │ │ │ │ ├── add.go │ │ │ │ ├── new.go │ │ │ │ ├── project.go │ │ │ │ ├── project_linux_test.go │ │ │ │ ├── project_test.go │ │ │ │ └── project_windows_test.go │ │ │ ├── proto/ │ │ │ │ ├── add/ │ │ │ │ │ ├── add.go │ │ │ │ │ ├── add_test.go │ │ │ │ │ ├── proto.go │ │ │ │ │ └── template.go │ │ │ │ ├── client/ │ │ │ │ │ └── client.go │ │ │ │ ├── proto.go │ │ │ │ └── server/ │ │ │ │ ├── server.go │ │ │ │ ├── server_test.go │ │ │ │ └── template.go │ │ │ ├── run/ │ │ │ │ └── run.go │ │ │ └── upgrade/ │ │ │ └── upgrade.go │ │ ├── main.go │ │ └── version.go │ ├── protoc-gen-go-errors/ │ │ ├── buf.gen.yaml │ │ ├── buf.yaml │ │ ├── errors/ │ │ │ ├── errors.pb.go │ │ │ └── errors.proto │ │ ├── errors.go │ │ ├── errorsTemplate.tpl │ │ ├── errors_test.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── template.go │ │ └── version.go │ └── protoc-gen-go-http/ │ ├── go.mod │ ├── go.sum │ ├── http.go │ ├── httpTemplate.tpl │ ├── http_test.go │ ├── main.go │ ├── template.go │ └── version.go ├── codecov.yml ├── config/ │ ├── README.md │ ├── config.go │ ├── config_test.go │ ├── env/ │ │ ├── env.go │ │ ├── env_test.go │ │ ├── watcher.go │ │ └── watcher_test.go │ ├── file/ │ │ ├── file.go │ │ ├── file_test.go │ │ ├── format.go │ │ ├── format_test.go │ │ └── watcher.go │ ├── options.go │ ├── options_test.go │ ├── reader.go │ ├── reader_test.go │ ├── source.go │ ├── value.go │ └── value_test.go ├── contrib/ │ ├── config/ │ │ ├── apollo/ │ │ │ ├── README.md │ │ │ ├── apollo.go │ │ │ ├── apollo_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── parser.go │ │ │ ├── watcher.go │ │ │ └── watcher_test.go │ │ ├── consul/ │ │ │ ├── README.md │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── watcher.go │ │ ├── etcd/ │ │ │ ├── README.md │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── watcher.go │ │ ├── kubernetes/ │ │ │ ├── README.md │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── watcher.go │ │ │ └── watcher_test.go │ │ ├── nacos/ │ │ │ ├── README.md │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── watcher.go │ │ └── polaris/ │ │ ├── README.md │ │ ├── config.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── polaris.yaml │ │ └── watcher.go │ ├── encoding/ │ │ └── msgpack/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── msgpack.go │ │ └── msgpack_test.go │ ├── errortracker/ │ │ └── sentry/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── sentry.go │ │ └── sentry_test.go │ ├── log/ │ │ ├── aliyun/ │ │ │ ├── aliyun.go │ │ │ ├── aliyun_test.go │ │ │ ├── go.mod │ │ │ └── go.sum │ │ ├── fluent/ │ │ │ ├── fluent.go │ │ │ ├── fluent_test.go │ │ │ ├── go.mod │ │ │ └── go.sum │ │ ├── logrus/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── logrus.go │ │ │ └── logrus_test.go │ │ ├── tencent/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── tencent.go │ │ │ └── tencent_test.go │ │ ├── zap/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── zap.go │ │ │ └── zap_test.go │ │ └── zerolog/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── zerolog.go │ │ └── zerolog_test.go │ ├── middleware/ │ │ └── validate/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── internal/ │ │ │ └── testdata/ │ │ │ ├── generate.go │ │ │ ├── test.pb.go │ │ │ ├── test.pb.validate.go │ │ │ └── test.proto │ │ ├── validate.go │ │ └── validate_test.go │ ├── opensergo/ │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── opensergo.go │ │ └── opensergo_test.go │ ├── polaris/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── limiter.go │ │ ├── polaris.go │ │ ├── ratelimit.go │ │ ├── registry.go │ │ ├── registry_test.go │ │ ├── router.go │ │ └── router_test.go │ ├── registry/ │ │ ├── consul/ │ │ │ ├── client.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── registry.go │ │ │ ├── registry_test.go │ │ │ ├── service.go │ │ │ └── watcher.go │ │ ├── discovery/ │ │ │ ├── README.md │ │ │ ├── discovery.go │ │ │ ├── discovery_helper.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── impl_discover.go │ │ │ └── impl_registrar.go │ │ ├── etcd/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── registry.go │ │ │ ├── registry_test.go │ │ │ ├── service.go │ │ │ └── watcher.go │ │ ├── eureka/ │ │ │ ├── client.go │ │ │ ├── eureka.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── register.go │ │ │ ├── register_test.go │ │ │ └── watcher.go │ │ ├── kubernetes/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── registry.go │ │ │ └── registry_test.go │ │ ├── nacos/ │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── registry.go │ │ │ ├── registry_test.go │ │ │ └── watcher.go │ │ ├── polaris/ │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ └── registry.go │ │ ├── servicecomb/ │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── registry.go │ │ │ ├── registry_test.go │ │ │ └── watcher.go │ │ └── zookeeper/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── register.go │ │ ├── register_test.go │ │ ├── service.go │ │ └── watcher.go │ └── transport/ │ └── mcp/ │ ├── README.md │ ├── go.mod │ ├── go.sum │ ├── server.go │ └── server_test.go ├── docs/ │ ├── README.md │ └── design/ │ └── kratos-v2.md ├── encoding/ │ ├── README.md │ ├── encoding.go │ ├── encoding_test.go │ ├── form/ │ │ ├── form.go │ │ ├── form_test.go │ │ ├── proto_decode.go │ │ ├── proto_decode_test.go │ │ ├── proto_encode.go │ │ ├── proto_encode_test.go │ │ ├── well_known_types.go │ │ └── well_known_types_test.go │ ├── json/ │ │ ├── json.go │ │ └── json_test.go │ ├── proto/ │ │ ├── proto.go │ │ └── proto_test.go │ ├── xml/ │ │ ├── xml.go │ │ └── xml_test.go │ └── yaml/ │ ├── yaml.go │ └── yaml_test.go ├── errors/ │ ├── errors.go │ ├── errors.pb.go │ ├── errors.proto │ ├── errors_test.go │ ├── types.go │ ├── types_test.go │ ├── wrap.go │ └── wrap_test.go ├── go.mod ├── go.sum ├── hack/ │ ├── .lintcheck_failures │ ├── .test_ignored_files │ ├── resolve-modules.sh │ ├── tools.sh │ └── util.sh ├── internal/ │ ├── README.md │ ├── context/ │ │ ├── context.go │ │ └── context_test.go │ ├── endpoint/ │ │ ├── endpoint.go │ │ └── endpoint_test.go │ ├── group/ │ │ ├── example_test.go │ │ ├── group.go │ │ └── group_test.go │ ├── host/ │ │ ├── host.go │ │ └── host_test.go │ ├── httputil/ │ │ ├── http.go │ │ └── http_test.go │ ├── matcher/ │ │ ├── middleware.go │ │ └── middleware_test.go │ └── testdata/ │ ├── binding/ │ │ ├── generate.go │ │ ├── test.pb.go │ │ └── test.proto │ ├── complex/ │ │ ├── complex.pb.go │ │ ├── complex.proto │ │ └── generate.go │ ├── encoding/ │ │ ├── test.pb.go │ │ └── test.proto │ └── helloworld/ │ ├── generate.go │ ├── helloworld.pb.go │ ├── helloworld.proto │ ├── helloworld_grpc.pb.go │ └── helloworld_http.pb.go ├── log/ │ ├── README.md │ ├── filter.go │ ├── filter_test.go │ ├── global.go │ ├── global_test.go │ ├── helper.go │ ├── helper_test.go │ ├── helper_writer.go │ ├── helper_writer_test.go │ ├── level.go │ ├── level_test.go │ ├── log.go │ ├── log_test.go │ ├── std.go │ ├── std_test.go │ ├── value.go │ └── value_test.go ├── metadata/ │ ├── metadata.go │ └── metadata_test.go ├── middleware/ │ ├── auth/ │ │ └── jwt/ │ │ ├── jwt.go │ │ └── jwt_test.go │ ├── circuitbreaker/ │ │ ├── circuitbreaker.go │ │ └── circuitbreaker_test.go │ ├── logging/ │ │ ├── logging.go │ │ └── logging_test.go │ ├── metadata/ │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── metrics/ │ │ ├── metrics.go │ │ ├── metrics_test.go │ │ └── otel.go │ ├── middleware.go │ ├── middleware_test.go │ ├── ratelimit/ │ │ ├── ratelimit.go │ │ └── ratelimit_test.go │ ├── recovery/ │ │ ├── recovery.go │ │ └── recovery_test.go │ ├── selector/ │ │ ├── selector.go │ │ └── selector_test.go │ ├── tracing/ │ │ ├── metadata.go │ │ ├── metadata_test.go │ │ ├── span.go │ │ ├── span_test.go │ │ ├── statshandler.go │ │ ├── statshandler_test.go │ │ ├── tracer.go │ │ ├── tracer_test.go │ │ ├── tracing.go │ │ └── tracing_test.go │ └── validate/ │ ├── validate.go │ └── validate_test.go ├── options.go ├── options_test.go ├── registry/ │ ├── README.md │ └── registry.go ├── selector/ │ ├── balancer.go │ ├── default_node.go │ ├── default_selector.go │ ├── filter/ │ │ ├── version.go │ │ └── version_test.go │ ├── filter.go │ ├── global.go │ ├── node/ │ │ ├── direct/ │ │ │ ├── direct.go │ │ │ └── direct_test.go │ │ └── ewma/ │ │ ├── node.go │ │ └── node_test.go │ ├── options.go │ ├── p2c/ │ │ ├── p2c.go │ │ └── p2c_test.go │ ├── peer.go │ ├── peer_test.go │ ├── random/ │ │ ├── random.go │ │ └── random_test.go │ ├── selector.go │ ├── selector_test.go │ └── wrr/ │ ├── wrr.go │ └── wrr_test.go ├── third_party/ │ ├── README.md │ ├── buf/ │ │ └── validate/ │ │ ├── README.md │ │ └── validate.proto │ ├── buf.yaml │ ├── errors/ │ │ └── errors.proto │ ├── google/ │ │ ├── api/ │ │ │ ├── annotations.proto │ │ │ ├── client.proto │ │ │ ├── field_behavior.proto │ │ │ ├── http.proto │ │ │ └── httpbody.proto │ │ └── protobuf/ │ │ └── descriptor.proto │ └── validate/ │ ├── README.md │ └── validate.proto ├── transport/ │ ├── grpc/ │ │ ├── balancer.go │ │ ├── balancer_test.go │ │ ├── client.go │ │ ├── client_test.go │ │ ├── codec.go │ │ ├── codec_test.go │ │ ├── interceptor.go │ │ ├── resolver/ │ │ │ ├── direct/ │ │ │ │ ├── builder.go │ │ │ │ ├── builder_test.go │ │ │ │ ├── resolver.go │ │ │ │ └── resolver_test.go │ │ │ └── discovery/ │ │ │ ├── builder.go │ │ │ ├── builder_test.go │ │ │ ├── resolver.go │ │ │ └── resolver_test.go │ │ ├── server.go │ │ ├── server_test.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── http/ │ │ ├── binding/ │ │ │ ├── bind.go │ │ │ ├── bind_test.go │ │ │ ├── encode.go │ │ │ └── encode_test.go │ │ ├── calloption.go │ │ ├── calloption_test.go │ │ ├── client.go │ │ ├── client_test.go │ │ ├── codec.go │ │ ├── codec_go1.20.go │ │ ├── codec_test.go │ │ ├── context.go │ │ ├── context_test.go │ │ ├── filter.go │ │ ├── pprof/ │ │ │ └── pprof.go │ │ ├── redirect.go │ │ ├── redirect_test.go │ │ ├── resolver.go │ │ ├── resolver_test.go │ │ ├── router.go │ │ ├── router_test.go │ │ ├── server.go │ │ ├── server_test.go │ │ ├── status/ │ │ │ ├── status.go │ │ │ └── status_test.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── transport.go │ └── transport_test.go └── version.go