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.
Files changed (378) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +24 -0
  3. data/.github/workflows/gem-push.yml +38 -0
  4. data/.github/workflows/licensed.yml +43 -0
  5. data/.gitignore +10 -0
  6. data/.licensed.yml +9 -0
  7. data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
  8. data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
  9. data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
  10. data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
  11. data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
  12. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
  13. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
  14. data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
  15. data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
  16. data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
  17. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
  18. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
  19. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
  20. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
  21. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
  22. data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
  23. data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
  24. data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
  25. data/.ruby_version +1 -0
  26. data/Gemfile +8 -0
  27. data/LICENSE +201 -0
  28. data/README.md +88 -0
  29. data/Rakefile +10 -0
  30. data/bin/console +15 -0
  31. data/bin/setup +17 -0
  32. data/controller.go +255 -0
  33. data/go.mod +16 -0
  34. data/go.sum +428 -0
  35. data/lib/generators/planetscale/install_generator.rb +58 -0
  36. data/lib/planetscale.rb +137 -0
  37. data/lib/planetscale/version.rb +5 -0
  38. data/planetscale.gemspec +44 -0
  39. data/proxy.go +128 -0
  40. data/vendor/github.com/armon/circbuf/.gitignore +22 -0
  41. data/vendor/github.com/armon/circbuf/LICENSE +20 -0
  42. data/vendor/github.com/armon/circbuf/README.md +28 -0
  43. data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
  44. data/vendor/github.com/armon/circbuf/go.mod +1 -0
  45. data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
  46. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
  47. data/vendor/github.com/golang/protobuf/LICENSE +28 -0
  48. data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
  49. data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
  50. data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
  51. data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
  52. data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
  53. data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
  54. data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
  55. data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
  56. data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
  57. data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
  58. data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
  59. data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
  60. data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
  61. data/vendor/github.com/gorilla/mux/LICENSE +27 -0
  62. data/vendor/github.com/gorilla/mux/README.md +805 -0
  63. data/vendor/github.com/gorilla/mux/doc.go +306 -0
  64. data/vendor/github.com/gorilla/mux/go.mod +3 -0
  65. data/vendor/github.com/gorilla/mux/middleware.go +74 -0
  66. data/vendor/github.com/gorilla/mux/mux.go +606 -0
  67. data/vendor/github.com/gorilla/mux/regexp.go +388 -0
  68. data/vendor/github.com/gorilla/mux/route.go +736 -0
  69. data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
  70. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
  71. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
  72. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
  73. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
  74. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
  75. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
  76. data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
  77. data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
  78. data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
  79. data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
  80. data/vendor/github.com/pkg/errors/.gitignore +24 -0
  81. data/vendor/github.com/pkg/errors/.travis.yml +10 -0
  82. data/vendor/github.com/pkg/errors/LICENSE +23 -0
  83. data/vendor/github.com/pkg/errors/Makefile +44 -0
  84. data/vendor/github.com/pkg/errors/README.md +59 -0
  85. data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
  86. data/vendor/github.com/pkg/errors/errors.go +288 -0
  87. data/vendor/github.com/pkg/errors/go113.go +38 -0
  88. data/vendor/github.com/pkg/errors/stack.go +177 -0
  89. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
  90. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
  91. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
  92. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
  93. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
  94. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
  95. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
  96. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
  97. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
  98. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
  99. data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
  100. data/vendor/go.uber.org/atomic/.gitignore +12 -0
  101. data/vendor/go.uber.org/atomic/.travis.yml +27 -0
  102. data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
  103. data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
  104. data/vendor/go.uber.org/atomic/Makefile +78 -0
  105. data/vendor/go.uber.org/atomic/README.md +63 -0
  106. data/vendor/go.uber.org/atomic/bool.go +81 -0
  107. data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
  108. data/vendor/go.uber.org/atomic/doc.go +23 -0
  109. data/vendor/go.uber.org/atomic/duration.go +82 -0
  110. data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
  111. data/vendor/go.uber.org/atomic/error.go +51 -0
  112. data/vendor/go.uber.org/atomic/error_ext.go +39 -0
  113. data/vendor/go.uber.org/atomic/float64.go +76 -0
  114. data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
  115. data/vendor/go.uber.org/atomic/gen.go +26 -0
  116. data/vendor/go.uber.org/atomic/go.mod +8 -0
  117. data/vendor/go.uber.org/atomic/go.sum +9 -0
  118. data/vendor/go.uber.org/atomic/int32.go +102 -0
  119. data/vendor/go.uber.org/atomic/int64.go +102 -0
  120. data/vendor/go.uber.org/atomic/nocmp.go +35 -0
  121. data/vendor/go.uber.org/atomic/string.go +54 -0
  122. data/vendor/go.uber.org/atomic/string_ext.go +43 -0
  123. data/vendor/go.uber.org/atomic/uint32.go +102 -0
  124. data/vendor/go.uber.org/atomic/uint64.go +102 -0
  125. data/vendor/go.uber.org/atomic/value.go +31 -0
  126. data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
  127. data/vendor/go.uber.org/multierr/.gitignore +4 -0
  128. data/vendor/go.uber.org/multierr/.travis.yml +23 -0
  129. data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
  130. data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
  131. data/vendor/go.uber.org/multierr/Makefile +42 -0
  132. data/vendor/go.uber.org/multierr/README.md +23 -0
  133. data/vendor/go.uber.org/multierr/error.go +449 -0
  134. data/vendor/go.uber.org/multierr/glide.yaml +8 -0
  135. data/vendor/go.uber.org/multierr/go.mod +8 -0
  136. data/vendor/go.uber.org/multierr/go.sum +11 -0
  137. data/vendor/go.uber.org/multierr/go113.go +52 -0
  138. data/vendor/go.uber.org/zap/.codecov.yml +17 -0
  139. data/vendor/go.uber.org/zap/.gitignore +32 -0
  140. data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
  141. data/vendor/go.uber.org/zap/.travis.yml +23 -0
  142. data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
  143. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
  144. data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
  145. data/vendor/go.uber.org/zap/FAQ.md +156 -0
  146. data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
  147. data/vendor/go.uber.org/zap/Makefile +63 -0
  148. data/vendor/go.uber.org/zap/README.md +134 -0
  149. data/vendor/go.uber.org/zap/array.go +320 -0
  150. data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
  151. data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
  152. data/vendor/go.uber.org/zap/checklicense.sh +17 -0
  153. data/vendor/go.uber.org/zap/config.go +264 -0
  154. data/vendor/go.uber.org/zap/doc.go +113 -0
  155. data/vendor/go.uber.org/zap/encoder.go +79 -0
  156. data/vendor/go.uber.org/zap/error.go +80 -0
  157. data/vendor/go.uber.org/zap/field.go +539 -0
  158. data/vendor/go.uber.org/zap/flag.go +39 -0
  159. data/vendor/go.uber.org/zap/glide.yaml +34 -0
  160. data/vendor/go.uber.org/zap/global.go +168 -0
  161. data/vendor/go.uber.org/zap/global_go112.go +26 -0
  162. data/vendor/go.uber.org/zap/global_prego112.go +26 -0
  163. data/vendor/go.uber.org/zap/go.mod +13 -0
  164. data/vendor/go.uber.org/zap/go.sum +56 -0
  165. data/vendor/go.uber.org/zap/http_handler.go +81 -0
  166. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
  167. data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
  168. data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
  169. data/vendor/go.uber.org/zap/level.go +132 -0
  170. data/vendor/go.uber.org/zap/logger.go +344 -0
  171. data/vendor/go.uber.org/zap/options.go +140 -0
  172. data/vendor/go.uber.org/zap/sink.go +161 -0
  173. data/vendor/go.uber.org/zap/stacktrace.go +85 -0
  174. data/vendor/go.uber.org/zap/sugar.go +304 -0
  175. data/vendor/go.uber.org/zap/time.go +27 -0
  176. data/vendor/go.uber.org/zap/writer.go +99 -0
  177. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
  178. data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
  179. data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
  180. data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
  181. data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
  182. data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
  183. data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
  184. data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
  185. data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
  186. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
  187. data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
  188. data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
  189. data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
  190. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
  191. data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
  192. data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
  193. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
  194. data/vendor/golang.org/x/net/AUTHORS +3 -0
  195. data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  196. data/vendor/golang.org/x/net/LICENSE +27 -0
  197. data/vendor/golang.org/x/net/PATENTS +22 -0
  198. data/vendor/golang.org/x/net/context/context.go +56 -0
  199. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
  200. data/vendor/golang.org/x/net/context/go17.go +73 -0
  201. data/vendor/golang.org/x/net/context/go19.go +21 -0
  202. data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
  203. data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
  204. data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
  205. data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
  206. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
  207. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
  208. data/vendor/golang.org/x/oauth2/LICENSE +27 -0
  209. data/vendor/golang.org/x/oauth2/README.md +36 -0
  210. data/vendor/golang.org/x/oauth2/go.mod +9 -0
  211. data/vendor/golang.org/x/oauth2/go.sum +361 -0
  212. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
  213. data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
  214. data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
  215. data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
  216. data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
  217. data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
  218. data/vendor/golang.org/x/oauth2/token.go +178 -0
  219. data/vendor/golang.org/x/oauth2/transport.go +89 -0
  220. data/vendor/google.golang.org/appengine/LICENSE +202 -0
  221. data/vendor/google.golang.org/appengine/internal/api.go +678 -0
  222. data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
  223. data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
  224. data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
  225. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
  226. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
  227. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
  228. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
  229. data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
  230. data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
  231. data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
  232. data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
  233. data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
  234. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
  235. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
  236. data/vendor/google.golang.org/appengine/internal/main.go +16 -0
  237. data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
  238. data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
  239. data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
  240. data/vendor/google.golang.org/appengine/internal/net.go +56 -0
  241. data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
  242. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
  243. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
  244. data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
  245. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
  246. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
  247. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
  248. data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
  249. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
  250. data/vendor/google.golang.org/protobuf/LICENSE +27 -0
  251. data/vendor/google.golang.org/protobuf/PATENTS +22 -0
  252. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
  253. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
  254. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
  255. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
  256. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
  257. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
  258. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
  259. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
  260. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
  261. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
  262. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
  263. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
  264. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
  265. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
  266. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
  267. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
  268. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
  269. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
  270. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
  271. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
  272. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
  273. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
  274. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
  275. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
  276. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
  277. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
  278. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
  279. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
  280. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
  281. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
  282. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
  283. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
  284. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
  285. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
  286. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
  287. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
  288. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
  289. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
  290. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
  291. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
  292. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
  293. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
  294. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
  295. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
  296. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
  297. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
  298. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
  299. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
  300. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
  301. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
  302. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
  303. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
  304. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
  305. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
  306. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
  307. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
  308. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
  309. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
  310. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
  311. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
  312. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
  313. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
  314. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
  315. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
  316. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
  317. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
  318. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
  319. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
  320. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
  321. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
  322. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
  323. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
  324. data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
  325. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
  326. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
  327. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
  328. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
  329. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
  330. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
  331. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
  332. data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
  333. data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
  334. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
  335. data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
  336. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
  337. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
  338. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
  339. data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
  340. data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
  341. data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
  342. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
  343. data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
  344. data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
  345. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
  346. data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
  347. data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
  348. data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
  349. data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
  350. data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
  351. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
  352. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
  353. data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
  354. data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
  355. data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
  356. data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
  357. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
  358. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
  359. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
  360. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
  361. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
  362. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
  363. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
  364. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
  365. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
  366. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
  367. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
  368. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
  369. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
  370. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
  371. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
  372. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
  373. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
  374. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
  375. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
  376. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
  377. data/vendor/modules.txt +79 -0
  378. 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
+ }