planetscale 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/ci.yml +24 -0
- data/.github/workflows/gem-push.yml +38 -0
- data/.github/workflows/licensed.yml +43 -0
- data/.gitignore +10 -0
- data/.licensed.yml +9 -0
- data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
- data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
- data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
- data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
- data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
- data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
- data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
- data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
- data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
- data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
- data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
- data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
- data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
- data/.ruby_version +1 -0
- data/Gemfile +8 -0
- data/LICENSE +201 -0
- data/README.md +88 -0
- data/Rakefile +10 -0
- data/bin/console +15 -0
- data/bin/setup +17 -0
- data/controller.go +255 -0
- data/go.mod +16 -0
- data/go.sum +428 -0
- data/lib/generators/planetscale/install_generator.rb +58 -0
- data/lib/planetscale.rb +137 -0
- data/lib/planetscale/version.rb +5 -0
- data/planetscale.gemspec +44 -0
- data/proxy.go +128 -0
- data/vendor/github.com/armon/circbuf/.gitignore +22 -0
- data/vendor/github.com/armon/circbuf/LICENSE +20 -0
- data/vendor/github.com/armon/circbuf/README.md +28 -0
- data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
- data/vendor/github.com/armon/circbuf/go.mod +1 -0
- data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
- data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
- data/vendor/github.com/golang/protobuf/LICENSE +28 -0
- data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
- data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
- data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
- data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
- data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
- data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
- data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
- data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
- data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
- data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
- data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
- data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
- data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
- data/vendor/github.com/gorilla/mux/LICENSE +27 -0
- data/vendor/github.com/gorilla/mux/README.md +805 -0
- data/vendor/github.com/gorilla/mux/doc.go +306 -0
- data/vendor/github.com/gorilla/mux/go.mod +3 -0
- data/vendor/github.com/gorilla/mux/middleware.go +74 -0
- data/vendor/github.com/gorilla/mux/mux.go +606 -0
- data/vendor/github.com/gorilla/mux/regexp.go +388 -0
- data/vendor/github.com/gorilla/mux/route.go +736 -0
- data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
- data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
- data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
- data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
- data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
- data/vendor/github.com/pkg/errors/.gitignore +24 -0
- data/vendor/github.com/pkg/errors/.travis.yml +10 -0
- data/vendor/github.com/pkg/errors/LICENSE +23 -0
- data/vendor/github.com/pkg/errors/Makefile +44 -0
- data/vendor/github.com/pkg/errors/README.md +59 -0
- data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
- data/vendor/github.com/pkg/errors/errors.go +288 -0
- data/vendor/github.com/pkg/errors/go113.go +38 -0
- data/vendor/github.com/pkg/errors/stack.go +177 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
- data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
- data/vendor/go.uber.org/atomic/.gitignore +12 -0
- data/vendor/go.uber.org/atomic/.travis.yml +27 -0
- data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
- data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
- data/vendor/go.uber.org/atomic/Makefile +78 -0
- data/vendor/go.uber.org/atomic/README.md +63 -0
- data/vendor/go.uber.org/atomic/bool.go +81 -0
- data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
- data/vendor/go.uber.org/atomic/doc.go +23 -0
- data/vendor/go.uber.org/atomic/duration.go +82 -0
- data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
- data/vendor/go.uber.org/atomic/error.go +51 -0
- data/vendor/go.uber.org/atomic/error_ext.go +39 -0
- data/vendor/go.uber.org/atomic/float64.go +76 -0
- data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
- data/vendor/go.uber.org/atomic/gen.go +26 -0
- data/vendor/go.uber.org/atomic/go.mod +8 -0
- data/vendor/go.uber.org/atomic/go.sum +9 -0
- data/vendor/go.uber.org/atomic/int32.go +102 -0
- data/vendor/go.uber.org/atomic/int64.go +102 -0
- data/vendor/go.uber.org/atomic/nocmp.go +35 -0
- data/vendor/go.uber.org/atomic/string.go +54 -0
- data/vendor/go.uber.org/atomic/string_ext.go +43 -0
- data/vendor/go.uber.org/atomic/uint32.go +102 -0
- data/vendor/go.uber.org/atomic/uint64.go +102 -0
- data/vendor/go.uber.org/atomic/value.go +31 -0
- data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
- data/vendor/go.uber.org/multierr/.gitignore +4 -0
- data/vendor/go.uber.org/multierr/.travis.yml +23 -0
- data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
- data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
- data/vendor/go.uber.org/multierr/Makefile +42 -0
- data/vendor/go.uber.org/multierr/README.md +23 -0
- data/vendor/go.uber.org/multierr/error.go +449 -0
- data/vendor/go.uber.org/multierr/glide.yaml +8 -0
- data/vendor/go.uber.org/multierr/go.mod +8 -0
- data/vendor/go.uber.org/multierr/go.sum +11 -0
- data/vendor/go.uber.org/multierr/go113.go +52 -0
- data/vendor/go.uber.org/zap/.codecov.yml +17 -0
- data/vendor/go.uber.org/zap/.gitignore +32 -0
- data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
- data/vendor/go.uber.org/zap/.travis.yml +23 -0
- data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
- data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
- data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
- data/vendor/go.uber.org/zap/FAQ.md +156 -0
- data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
- data/vendor/go.uber.org/zap/Makefile +63 -0
- data/vendor/go.uber.org/zap/README.md +134 -0
- data/vendor/go.uber.org/zap/array.go +320 -0
- data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
- data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
- data/vendor/go.uber.org/zap/checklicense.sh +17 -0
- data/vendor/go.uber.org/zap/config.go +264 -0
- data/vendor/go.uber.org/zap/doc.go +113 -0
- data/vendor/go.uber.org/zap/encoder.go +79 -0
- data/vendor/go.uber.org/zap/error.go +80 -0
- data/vendor/go.uber.org/zap/field.go +539 -0
- data/vendor/go.uber.org/zap/flag.go +39 -0
- data/vendor/go.uber.org/zap/glide.yaml +34 -0
- data/vendor/go.uber.org/zap/global.go +168 -0
- data/vendor/go.uber.org/zap/global_go112.go +26 -0
- data/vendor/go.uber.org/zap/global_prego112.go +26 -0
- data/vendor/go.uber.org/zap/go.mod +13 -0
- data/vendor/go.uber.org/zap/go.sum +56 -0
- data/vendor/go.uber.org/zap/http_handler.go +81 -0
- data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
- data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
- data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
- data/vendor/go.uber.org/zap/level.go +132 -0
- data/vendor/go.uber.org/zap/logger.go +344 -0
- data/vendor/go.uber.org/zap/options.go +140 -0
- data/vendor/go.uber.org/zap/sink.go +161 -0
- data/vendor/go.uber.org/zap/stacktrace.go +85 -0
- data/vendor/go.uber.org/zap/sugar.go +304 -0
- data/vendor/go.uber.org/zap/time.go +27 -0
- data/vendor/go.uber.org/zap/writer.go +99 -0
- data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
- data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
- data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
- data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
- data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
- data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
- data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
- data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
- data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
- data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
- data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
- data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
- data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
- data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
- data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
- data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
- data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
- data/vendor/golang.org/x/net/AUTHORS +3 -0
- data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/net/LICENSE +27 -0
- data/vendor/golang.org/x/net/PATENTS +22 -0
- data/vendor/golang.org/x/net/context/context.go +56 -0
- data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
- data/vendor/golang.org/x/net/context/go17.go +73 -0
- data/vendor/golang.org/x/net/context/go19.go +21 -0
- data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
- data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
- data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
- data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/oauth2/LICENSE +27 -0
- data/vendor/golang.org/x/oauth2/README.md +36 -0
- data/vendor/golang.org/x/oauth2/go.mod +9 -0
- data/vendor/golang.org/x/oauth2/go.sum +361 -0
- data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
- data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
- data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
- data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
- data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
- data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
- data/vendor/golang.org/x/oauth2/token.go +178 -0
- data/vendor/golang.org/x/oauth2/transport.go +89 -0
- data/vendor/google.golang.org/appengine/LICENSE +202 -0
- data/vendor/google.golang.org/appengine/internal/api.go +678 -0
- data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
- data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
- data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
- data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
- data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
- data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
- data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
- data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
- data/vendor/google.golang.org/appengine/internal/main.go +16 -0
- data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
- data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
- data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
- data/vendor/google.golang.org/appengine/internal/net.go +56 -0
- data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
- data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
- data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
- data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
- data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
- data/vendor/google.golang.org/protobuf/LICENSE +27 -0
- data/vendor/google.golang.org/protobuf/PATENTS +22 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
- data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
- data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
- data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
- data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
- data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
- data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
- data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
- data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
- data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
- data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
- data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
- data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
- data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
- data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
- data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
- data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
- data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
- data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
- data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
- data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
- data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
- data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
- data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
- data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
- data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
- data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
- data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
- data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
- data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
- data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
- data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
- data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
- data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
- data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
- data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
- data/vendor/modules.txt +79 -0
- metadata +495 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package protodesc
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"google.golang.org/protobuf/internal/errors"
|
|
9
|
+
"google.golang.org/protobuf/internal/filedesc"
|
|
10
|
+
"google.golang.org/protobuf/internal/strs"
|
|
11
|
+
"google.golang.org/protobuf/proto"
|
|
12
|
+
"google.golang.org/protobuf/reflect/protoreflect"
|
|
13
|
+
|
|
14
|
+
"google.golang.org/protobuf/types/descriptorpb"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
type descsByName map[protoreflect.FullName]protoreflect.Descriptor
|
|
18
|
+
|
|
19
|
+
func (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) {
|
|
20
|
+
es = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers
|
|
21
|
+
for i, ed := range eds {
|
|
22
|
+
e := &es[i]
|
|
23
|
+
e.L2 = new(filedesc.EnumL2)
|
|
24
|
+
if e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil {
|
|
25
|
+
return nil, err
|
|
26
|
+
}
|
|
27
|
+
if opts := ed.GetOptions(); opts != nil {
|
|
28
|
+
opts = proto.Clone(opts).(*descriptorpb.EnumOptions)
|
|
29
|
+
e.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
|
30
|
+
}
|
|
31
|
+
for _, s := range ed.GetReservedName() {
|
|
32
|
+
e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))
|
|
33
|
+
}
|
|
34
|
+
for _, rr := range ed.GetReservedRange() {
|
|
35
|
+
e.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{
|
|
36
|
+
protoreflect.EnumNumber(rr.GetStart()),
|
|
37
|
+
protoreflect.EnumNumber(rr.GetEnd()),
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
if e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil {
|
|
41
|
+
return nil, err
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return es, nil
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) {
|
|
48
|
+
vs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers
|
|
49
|
+
for i, vd := range vds {
|
|
50
|
+
v := &vs[i]
|
|
51
|
+
if v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil {
|
|
52
|
+
return nil, err
|
|
53
|
+
}
|
|
54
|
+
if opts := vd.GetOptions(); opts != nil {
|
|
55
|
+
opts = proto.Clone(opts).(*descriptorpb.EnumValueOptions)
|
|
56
|
+
v.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
|
57
|
+
}
|
|
58
|
+
v.L1.Number = protoreflect.EnumNumber(vd.GetNumber())
|
|
59
|
+
}
|
|
60
|
+
return vs, nil
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) {
|
|
64
|
+
ms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers
|
|
65
|
+
for i, md := range mds {
|
|
66
|
+
m := &ms[i]
|
|
67
|
+
m.L2 = new(filedesc.MessageL2)
|
|
68
|
+
if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
|
|
69
|
+
return nil, err
|
|
70
|
+
}
|
|
71
|
+
if opts := md.GetOptions(); opts != nil {
|
|
72
|
+
opts = proto.Clone(opts).(*descriptorpb.MessageOptions)
|
|
73
|
+
m.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
|
74
|
+
m.L1.IsMapEntry = opts.GetMapEntry()
|
|
75
|
+
m.L1.IsMessageSet = opts.GetMessageSetWireFormat()
|
|
76
|
+
}
|
|
77
|
+
for _, s := range md.GetReservedName() {
|
|
78
|
+
m.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s))
|
|
79
|
+
}
|
|
80
|
+
for _, rr := range md.GetReservedRange() {
|
|
81
|
+
m.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{
|
|
82
|
+
protoreflect.FieldNumber(rr.GetStart()),
|
|
83
|
+
protoreflect.FieldNumber(rr.GetEnd()),
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
for _, xr := range md.GetExtensionRange() {
|
|
87
|
+
m.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{
|
|
88
|
+
protoreflect.FieldNumber(xr.GetStart()),
|
|
89
|
+
protoreflect.FieldNumber(xr.GetEnd()),
|
|
90
|
+
})
|
|
91
|
+
var optsFunc func() protoreflect.ProtoMessage
|
|
92
|
+
if opts := xr.GetOptions(); opts != nil {
|
|
93
|
+
opts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions)
|
|
94
|
+
optsFunc = func() protoreflect.ProtoMessage { return opts }
|
|
95
|
+
}
|
|
96
|
+
m.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc)
|
|
97
|
+
}
|
|
98
|
+
if m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil {
|
|
99
|
+
return nil, err
|
|
100
|
+
}
|
|
101
|
+
if m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil {
|
|
102
|
+
return nil, err
|
|
103
|
+
}
|
|
104
|
+
if m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil {
|
|
105
|
+
return nil, err
|
|
106
|
+
}
|
|
107
|
+
if m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil {
|
|
108
|
+
return nil, err
|
|
109
|
+
}
|
|
110
|
+
if m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil {
|
|
111
|
+
return nil, err
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return ms, nil
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {
|
|
118
|
+
fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers
|
|
119
|
+
for i, fd := range fds {
|
|
120
|
+
f := &fs[i]
|
|
121
|
+
if f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil {
|
|
122
|
+
return nil, err
|
|
123
|
+
}
|
|
124
|
+
f.L1.IsProto3Optional = fd.GetProto3Optional()
|
|
125
|
+
if opts := fd.GetOptions(); opts != nil {
|
|
126
|
+
opts = proto.Clone(opts).(*descriptorpb.FieldOptions)
|
|
127
|
+
f.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
|
128
|
+
f.L1.IsWeak = opts.GetWeak()
|
|
129
|
+
f.L1.HasPacked = opts.Packed != nil
|
|
130
|
+
f.L1.IsPacked = opts.GetPacked()
|
|
131
|
+
}
|
|
132
|
+
f.L1.Number = protoreflect.FieldNumber(fd.GetNumber())
|
|
133
|
+
f.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel())
|
|
134
|
+
if fd.Type != nil {
|
|
135
|
+
f.L1.Kind = protoreflect.Kind(fd.GetType())
|
|
136
|
+
}
|
|
137
|
+
if fd.JsonName != nil {
|
|
138
|
+
f.L1.StringName.InitJSON(fd.GetJsonName())
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return fs, nil
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) {
|
|
145
|
+
os = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers
|
|
146
|
+
for i, od := range ods {
|
|
147
|
+
o := &os[i]
|
|
148
|
+
if o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil {
|
|
149
|
+
return nil, err
|
|
150
|
+
}
|
|
151
|
+
if opts := od.GetOptions(); opts != nil {
|
|
152
|
+
opts = proto.Clone(opts).(*descriptorpb.OneofOptions)
|
|
153
|
+
o.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return os, nil
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) {
|
|
160
|
+
xs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers
|
|
161
|
+
for i, xd := range xds {
|
|
162
|
+
x := &xs[i]
|
|
163
|
+
x.L2 = new(filedesc.ExtensionL2)
|
|
164
|
+
if x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil {
|
|
165
|
+
return nil, err
|
|
166
|
+
}
|
|
167
|
+
if opts := xd.GetOptions(); opts != nil {
|
|
168
|
+
opts = proto.Clone(opts).(*descriptorpb.FieldOptions)
|
|
169
|
+
x.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
|
170
|
+
x.L2.IsPacked = opts.GetPacked()
|
|
171
|
+
}
|
|
172
|
+
x.L1.Number = protoreflect.FieldNumber(xd.GetNumber())
|
|
173
|
+
x.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel())
|
|
174
|
+
if xd.Type != nil {
|
|
175
|
+
x.L1.Kind = protoreflect.Kind(xd.GetType())
|
|
176
|
+
}
|
|
177
|
+
if xd.JsonName != nil {
|
|
178
|
+
x.L2.StringName.InitJSON(xd.GetJsonName())
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return xs, nil
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
func (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) {
|
|
185
|
+
ss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers
|
|
186
|
+
for i, sd := range sds {
|
|
187
|
+
s := &ss[i]
|
|
188
|
+
s.L2 = new(filedesc.ServiceL2)
|
|
189
|
+
if s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil {
|
|
190
|
+
return nil, err
|
|
191
|
+
}
|
|
192
|
+
if opts := sd.GetOptions(); opts != nil {
|
|
193
|
+
opts = proto.Clone(opts).(*descriptorpb.ServiceOptions)
|
|
194
|
+
s.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
|
195
|
+
}
|
|
196
|
+
if s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil {
|
|
197
|
+
return nil, err
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return ss, nil
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
func (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) {
|
|
204
|
+
ms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers
|
|
205
|
+
for i, md := range mds {
|
|
206
|
+
m := &ms[i]
|
|
207
|
+
if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
|
|
208
|
+
return nil, err
|
|
209
|
+
}
|
|
210
|
+
if opts := md.GetOptions(); opts != nil {
|
|
211
|
+
opts = proto.Clone(opts).(*descriptorpb.MethodOptions)
|
|
212
|
+
m.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
|
213
|
+
}
|
|
214
|
+
m.L1.IsStreamingClient = md.GetClientStreaming()
|
|
215
|
+
m.L1.IsStreamingServer = md.GetServerStreaming()
|
|
216
|
+
}
|
|
217
|
+
return ms, nil
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
func (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) {
|
|
221
|
+
if !protoreflect.Name(name).IsValid() {
|
|
222
|
+
return filedesc.BaseL0{}, errors.New("descriptor %q has an invalid nested name: %q", parent.FullName(), name)
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Derive the full name of the child.
|
|
226
|
+
// Note that enum values are a sibling to the enum parent in the namespace.
|
|
227
|
+
var fullName protoreflect.FullName
|
|
228
|
+
if _, ok := parent.(protoreflect.EnumDescriptor); ok {
|
|
229
|
+
fullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name))
|
|
230
|
+
} else {
|
|
231
|
+
fullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name))
|
|
232
|
+
}
|
|
233
|
+
if _, ok := r[fullName]; ok {
|
|
234
|
+
return filedesc.BaseL0{}, errors.New("descriptor %q already declared", fullName)
|
|
235
|
+
}
|
|
236
|
+
r[fullName] = child
|
|
237
|
+
|
|
238
|
+
// TODO: Verify that the full name does not already exist in the resolver?
|
|
239
|
+
// This is not as critical since most usages of NewFile will register
|
|
240
|
+
// the created file back into the registry, which will perform this check.
|
|
241
|
+
|
|
242
|
+
return filedesc.BaseL0{
|
|
243
|
+
FullName: fullName,
|
|
244
|
+
ParentFile: parent.ParentFile().(*filedesc.File),
|
|
245
|
+
Parent: parent,
|
|
246
|
+
Index: idx,
|
|
247
|
+
}, nil
|
|
248
|
+
}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package protodesc
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"google.golang.org/protobuf/internal/encoding/defval"
|
|
9
|
+
"google.golang.org/protobuf/internal/errors"
|
|
10
|
+
"google.golang.org/protobuf/internal/filedesc"
|
|
11
|
+
"google.golang.org/protobuf/reflect/protoreflect"
|
|
12
|
+
"google.golang.org/protobuf/reflect/protoregistry"
|
|
13
|
+
|
|
14
|
+
"google.golang.org/protobuf/types/descriptorpb"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// resolver is a wrapper around a local registry of declarations within the file
|
|
18
|
+
// and the remote resolver. The remote resolver is restricted to only return
|
|
19
|
+
// descriptors that have been imported.
|
|
20
|
+
type resolver struct {
|
|
21
|
+
local descsByName
|
|
22
|
+
remote Resolver
|
|
23
|
+
imports importSet
|
|
24
|
+
|
|
25
|
+
allowUnresolvable bool
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {
|
|
29
|
+
for i, md := range mds {
|
|
30
|
+
m := &ms[i]
|
|
31
|
+
for j, fd := range md.GetField() {
|
|
32
|
+
f := &m.L2.Fields.List[j]
|
|
33
|
+
if f.L1.Cardinality == protoreflect.Required {
|
|
34
|
+
m.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)
|
|
35
|
+
}
|
|
36
|
+
if fd.OneofIndex != nil {
|
|
37
|
+
k := int(fd.GetOneofIndex())
|
|
38
|
+
if !(0 <= k && k < len(md.GetOneofDecl())) {
|
|
39
|
+
return errors.New("message field %q has an invalid oneof index: %d", f.FullName(), k)
|
|
40
|
+
}
|
|
41
|
+
o := &m.L2.Oneofs.List[k]
|
|
42
|
+
f.L1.ContainingOneof = o
|
|
43
|
+
o.L1.Fields.List = append(o.L1.Fields.List, f)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil {
|
|
47
|
+
return errors.New("message field %q cannot resolve type: %v", f.FullName(), err)
|
|
48
|
+
}
|
|
49
|
+
if fd.DefaultValue != nil {
|
|
50
|
+
v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)
|
|
51
|
+
if err != nil {
|
|
52
|
+
return errors.New("message field %q has invalid default: %v", f.FullName(), err)
|
|
53
|
+
}
|
|
54
|
+
f.L1.Default = filedesc.DefaultValue(v, ev)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {
|
|
59
|
+
return err
|
|
60
|
+
}
|
|
61
|
+
if err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {
|
|
62
|
+
return err
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return nil
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
func (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {
|
|
69
|
+
for i, xd := range xds {
|
|
70
|
+
x := &xs[i]
|
|
71
|
+
if x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee()), false); err != nil {
|
|
72
|
+
return errors.New("extension field %q cannot resolve extendee: %v", x.FullName(), err)
|
|
73
|
+
}
|
|
74
|
+
if x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName()), false); err != nil {
|
|
75
|
+
return errors.New("extension field %q cannot resolve type: %v", x.FullName(), err)
|
|
76
|
+
}
|
|
77
|
+
if xd.DefaultValue != nil {
|
|
78
|
+
v, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)
|
|
79
|
+
if err != nil {
|
|
80
|
+
return errors.New("extension field %q has invalid default: %v", x.FullName(), err)
|
|
81
|
+
}
|
|
82
|
+
x.L2.Default = filedesc.DefaultValue(v, ev)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return nil
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
func (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {
|
|
89
|
+
for i, sd := range sds {
|
|
90
|
+
s := &ss[i]
|
|
91
|
+
for j, md := range sd.GetMethod() {
|
|
92
|
+
m := &s.L2.Methods.List[j]
|
|
93
|
+
m.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()), false)
|
|
94
|
+
if err != nil {
|
|
95
|
+
return errors.New("service method %q cannot resolve input: %v", m.FullName(), err)
|
|
96
|
+
}
|
|
97
|
+
m.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()), false)
|
|
98
|
+
if err != nil {
|
|
99
|
+
return errors.New("service method %q cannot resolve output: %v", m.FullName(), err)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return nil
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// findTarget finds an enum or message descriptor if k is an enum, message,
|
|
107
|
+
// group, or unknown. If unknown, and the name could be resolved, the kind
|
|
108
|
+
// returned kind is set based on the type of the resolved descriptor.
|
|
109
|
+
func (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {
|
|
110
|
+
switch k {
|
|
111
|
+
case protoreflect.EnumKind:
|
|
112
|
+
ed, err := r.findEnumDescriptor(scope, ref, isWeak)
|
|
113
|
+
if err != nil {
|
|
114
|
+
return 0, nil, nil, err
|
|
115
|
+
}
|
|
116
|
+
return k, ed, nil, nil
|
|
117
|
+
case protoreflect.MessageKind, protoreflect.GroupKind:
|
|
118
|
+
md, err := r.findMessageDescriptor(scope, ref, isWeak)
|
|
119
|
+
if err != nil {
|
|
120
|
+
return 0, nil, nil, err
|
|
121
|
+
}
|
|
122
|
+
return k, nil, md, nil
|
|
123
|
+
case 0:
|
|
124
|
+
// Handle unspecified kinds (possible with parsers that operate
|
|
125
|
+
// on a per-file basis without knowledge of dependencies).
|
|
126
|
+
d, err := r.findDescriptor(scope, ref)
|
|
127
|
+
if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
|
|
128
|
+
return k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil
|
|
129
|
+
} else if err == protoregistry.NotFound {
|
|
130
|
+
return 0, nil, nil, errors.New("%q not found", ref.FullName())
|
|
131
|
+
} else if err != nil {
|
|
132
|
+
return 0, nil, nil, err
|
|
133
|
+
}
|
|
134
|
+
switch d := d.(type) {
|
|
135
|
+
case protoreflect.EnumDescriptor:
|
|
136
|
+
return protoreflect.EnumKind, d, nil, nil
|
|
137
|
+
case protoreflect.MessageDescriptor:
|
|
138
|
+
return protoreflect.MessageKind, nil, d, nil
|
|
139
|
+
default:
|
|
140
|
+
return 0, nil, nil, errors.New("unknown kind")
|
|
141
|
+
}
|
|
142
|
+
default:
|
|
143
|
+
if ref != "" {
|
|
144
|
+
return 0, nil, nil, errors.New("target name cannot be specified for %v", k)
|
|
145
|
+
}
|
|
146
|
+
if !k.IsValid() {
|
|
147
|
+
return 0, nil, nil, errors.New("invalid kind: %d", k)
|
|
148
|
+
}
|
|
149
|
+
return k, nil, nil, nil
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// findDescriptor finds the descriptor by name,
|
|
154
|
+
// which may be a relative name within some scope.
|
|
155
|
+
//
|
|
156
|
+
// Suppose the scope was "fizz.buzz" and the reference was "Foo.Bar",
|
|
157
|
+
// then the following full names are searched:
|
|
158
|
+
// * fizz.buzz.Foo.Bar
|
|
159
|
+
// * fizz.Foo.Bar
|
|
160
|
+
// * Foo.Bar
|
|
161
|
+
func (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {
|
|
162
|
+
if !ref.IsValid() {
|
|
163
|
+
return nil, errors.New("invalid name reference: %q", ref)
|
|
164
|
+
}
|
|
165
|
+
if ref.IsFull() {
|
|
166
|
+
scope, ref = "", ref[1:]
|
|
167
|
+
}
|
|
168
|
+
var foundButNotImported protoreflect.Descriptor
|
|
169
|
+
for {
|
|
170
|
+
// Derive the full name to search.
|
|
171
|
+
s := protoreflect.FullName(ref)
|
|
172
|
+
if scope != "" {
|
|
173
|
+
s = scope + "." + s
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Check the current file for the descriptor.
|
|
177
|
+
if d, ok := r.local[s]; ok {
|
|
178
|
+
return d, nil
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Check the remote registry for the descriptor.
|
|
182
|
+
d, err := r.remote.FindDescriptorByName(s)
|
|
183
|
+
if err == nil {
|
|
184
|
+
// Only allow descriptors covered by one of the imports.
|
|
185
|
+
if r.imports[d.ParentFile().Path()] {
|
|
186
|
+
return d, nil
|
|
187
|
+
}
|
|
188
|
+
foundButNotImported = d
|
|
189
|
+
} else if err != protoregistry.NotFound {
|
|
190
|
+
return nil, errors.Wrap(err, "%q", s)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Continue on at a higher level of scoping.
|
|
194
|
+
if scope == "" {
|
|
195
|
+
if d := foundButNotImported; d != nil {
|
|
196
|
+
return nil, errors.New("resolved %q, but %q is not imported", d.FullName(), d.ParentFile().Path())
|
|
197
|
+
}
|
|
198
|
+
return nil, protoregistry.NotFound
|
|
199
|
+
}
|
|
200
|
+
scope = scope.Parent()
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
func (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.EnumDescriptor, error) {
|
|
205
|
+
d, err := r.findDescriptor(scope, ref)
|
|
206
|
+
if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
|
|
207
|
+
return filedesc.PlaceholderEnum(ref.FullName()), nil
|
|
208
|
+
} else if err == protoregistry.NotFound {
|
|
209
|
+
return nil, errors.New("%q not found", ref.FullName())
|
|
210
|
+
} else if err != nil {
|
|
211
|
+
return nil, err
|
|
212
|
+
}
|
|
213
|
+
ed, ok := d.(protoreflect.EnumDescriptor)
|
|
214
|
+
if !ok {
|
|
215
|
+
return nil, errors.New("resolved %q, but it is not an enum", d.FullName())
|
|
216
|
+
}
|
|
217
|
+
return ed, nil
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
func (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.MessageDescriptor, error) {
|
|
221
|
+
d, err := r.findDescriptor(scope, ref)
|
|
222
|
+
if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
|
|
223
|
+
return filedesc.PlaceholderMessage(ref.FullName()), nil
|
|
224
|
+
} else if err == protoregistry.NotFound {
|
|
225
|
+
return nil, errors.New("%q not found", ref.FullName())
|
|
226
|
+
} else if err != nil {
|
|
227
|
+
return nil, err
|
|
228
|
+
}
|
|
229
|
+
md, ok := d.(protoreflect.MessageDescriptor)
|
|
230
|
+
if !ok {
|
|
231
|
+
return nil, errors.New("resolved %q, but it is not an message", d.FullName())
|
|
232
|
+
}
|
|
233
|
+
return md, nil
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// partialName is the partial name. A leading dot means that the name is full,
|
|
237
|
+
// otherwise the name is relative to some current scope.
|
|
238
|
+
// See google.protobuf.FieldDescriptorProto.type_name.
|
|
239
|
+
type partialName string
|
|
240
|
+
|
|
241
|
+
func (s partialName) IsFull() bool {
|
|
242
|
+
return len(s) > 0 && s[0] == '.'
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
func (s partialName) IsValid() bool {
|
|
246
|
+
if s.IsFull() {
|
|
247
|
+
return protoreflect.FullName(s[1:]).IsValid()
|
|
248
|
+
}
|
|
249
|
+
return protoreflect.FullName(s).IsValid()
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const unknownPrefix = "*."
|
|
253
|
+
|
|
254
|
+
// FullName converts the partial name to a full name on a best-effort basis.
|
|
255
|
+
// If relative, it creates an invalid full name, using a "*." prefix
|
|
256
|
+
// to indicate that the start of the full name is unknown.
|
|
257
|
+
func (s partialName) FullName() protoreflect.FullName {
|
|
258
|
+
if s.IsFull() {
|
|
259
|
+
return protoreflect.FullName(s[1:])
|
|
260
|
+
}
|
|
261
|
+
return protoreflect.FullName(unknownPrefix + s)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {
|
|
265
|
+
var evs protoreflect.EnumValueDescriptors
|
|
266
|
+
if fd.Enum() != nil {
|
|
267
|
+
evs = fd.Enum().Values()
|
|
268
|
+
}
|
|
269
|
+
v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)
|
|
270
|
+
if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {
|
|
271
|
+
v = protoreflect.ValueOfEnum(0)
|
|
272
|
+
if evs.Len() > 0 {
|
|
273
|
+
v = protoreflect.ValueOfEnum(evs.Get(0).Number())
|
|
274
|
+
}
|
|
275
|
+
ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))
|
|
276
|
+
} else if err != nil {
|
|
277
|
+
return v, ev, err
|
|
278
|
+
}
|
|
279
|
+
if fd.Syntax() == protoreflect.Proto3 {
|
|
280
|
+
return v, ev, errors.New("cannot be specified under proto3 semantics")
|
|
281
|
+
}
|
|
282
|
+
if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {
|
|
283
|
+
return v, ev, errors.New("cannot be specified on composite types")
|
|
284
|
+
}
|
|
285
|
+
return v, ev, nil
|
|
286
|
+
}
|