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,27 @@
1
+ // Copyright 2018 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
+ // +build purego appengine
6
+
7
+ package strs
8
+
9
+ import pref "google.golang.org/protobuf/reflect/protoreflect"
10
+
11
+ func UnsafeString(b []byte) string {
12
+ return string(b)
13
+ }
14
+
15
+ func UnsafeBytes(s string) []byte {
16
+ return []byte(s)
17
+ }
18
+
19
+ type Builder struct{}
20
+
21
+ func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {
22
+ return prefix.Append(name)
23
+ }
24
+
25
+ func (*Builder) MakeString(b []byte) string {
26
+ return string(b)
27
+ }
@@ -0,0 +1,94 @@
1
+ // Copyright 2018 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
+ // +build !purego,!appengine
6
+
7
+ package strs
8
+
9
+ import (
10
+ "unsafe"
11
+
12
+ pref "google.golang.org/protobuf/reflect/protoreflect"
13
+ )
14
+
15
+ type (
16
+ stringHeader struct {
17
+ Data unsafe.Pointer
18
+ Len int
19
+ }
20
+ sliceHeader struct {
21
+ Data unsafe.Pointer
22
+ Len int
23
+ Cap int
24
+ }
25
+ )
26
+
27
+ // UnsafeString returns an unsafe string reference of b.
28
+ // The caller must treat the input slice as immutable.
29
+ //
30
+ // WARNING: Use carefully. The returned result must not leak to the end user
31
+ // unless the input slice is provably immutable.
32
+ func UnsafeString(b []byte) (s string) {
33
+ src := (*sliceHeader)(unsafe.Pointer(&b))
34
+ dst := (*stringHeader)(unsafe.Pointer(&s))
35
+ dst.Data = src.Data
36
+ dst.Len = src.Len
37
+ return s
38
+ }
39
+
40
+ // UnsafeBytes returns an unsafe bytes slice reference of s.
41
+ // The caller must treat returned slice as immutable.
42
+ //
43
+ // WARNING: Use carefully. The returned result must not leak to the end user.
44
+ func UnsafeBytes(s string) (b []byte) {
45
+ src := (*stringHeader)(unsafe.Pointer(&s))
46
+ dst := (*sliceHeader)(unsafe.Pointer(&b))
47
+ dst.Data = src.Data
48
+ dst.Len = src.Len
49
+ dst.Cap = src.Len
50
+ return b
51
+ }
52
+
53
+ // Builder builds a set of strings with shared lifetime.
54
+ // This differs from strings.Builder, which is for building a single string.
55
+ type Builder struct {
56
+ buf []byte
57
+ }
58
+
59
+ // AppendFullName is equivalent to protoreflect.FullName.Append,
60
+ // but optimized for large batches where each name has a shared lifetime.
61
+ func (sb *Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {
62
+ n := len(prefix) + len(".") + len(name)
63
+ if len(prefix) == 0 {
64
+ n -= len(".")
65
+ }
66
+ sb.grow(n)
67
+ sb.buf = append(sb.buf, prefix...)
68
+ sb.buf = append(sb.buf, '.')
69
+ sb.buf = append(sb.buf, name...)
70
+ return pref.FullName(sb.last(n))
71
+ }
72
+
73
+ // MakeString is equivalent to string(b), but optimized for large batches
74
+ // with a shared lifetime.
75
+ func (sb *Builder) MakeString(b []byte) string {
76
+ sb.grow(len(b))
77
+ sb.buf = append(sb.buf, b...)
78
+ return sb.last(len(b))
79
+ }
80
+
81
+ func (sb *Builder) grow(n int) {
82
+ if cap(sb.buf)-len(sb.buf) >= n {
83
+ return
84
+ }
85
+
86
+ // Unlike strings.Builder, we do not need to copy over the contents
87
+ // of the old buffer since our builder provides no API for
88
+ // retrieving previously created strings.
89
+ sb.buf = make([]byte, 2*(cap(sb.buf)+n))
90
+ }
91
+
92
+ func (sb *Builder) last(n int) string {
93
+ return UnsafeString(sb.buf[len(sb.buf)-n:])
94
+ }
@@ -0,0 +1,79 @@
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 version records versioning information about this module.
6
+ package version
7
+
8
+ import (
9
+ "fmt"
10
+ "strings"
11
+ )
12
+
13
+ // These constants determine the current version of this module.
14
+ //
15
+ //
16
+ // For our release process, we enforce the following rules:
17
+ // * Tagged releases use a tag that is identical to String.
18
+ // * Tagged releases never reference a commit where the String
19
+ // contains "devel".
20
+ // * The set of all commits in this repository where String
21
+ // does not contain "devel" must have a unique String.
22
+ //
23
+ //
24
+ // Steps for tagging a new release:
25
+ // 1. Create a new CL.
26
+ //
27
+ // 2. Update Minor, Patch, and/or PreRelease as necessary.
28
+ // PreRelease must not contain the string "devel".
29
+ //
30
+ // 3. Since the last released minor version, have there been any changes to
31
+ // generator that relies on new functionality in the runtime?
32
+ // If yes, then increment RequiredGenerated.
33
+ //
34
+ // 4. Since the last released minor version, have there been any changes to
35
+ // the runtime that removes support for old .pb.go source code?
36
+ // If yes, then increment SupportMinimum.
37
+ //
38
+ // 5. Send out the CL for review and submit it.
39
+ // Note that the next CL in step 8 must be submitted after this CL
40
+ // without any other CLs in-between.
41
+ //
42
+ // 6. Tag a new version, where the tag is is the current String.
43
+ //
44
+ // 7. Write release notes for all notable changes
45
+ // between this release and the last release.
46
+ //
47
+ // 8. Create a new CL.
48
+ //
49
+ // 9. Update PreRelease to include the string "devel".
50
+ // For example: "" -> "devel" or "rc.1" -> "rc.1.devel"
51
+ //
52
+ // 10. Send out the CL for review and submit it.
53
+ const (
54
+ Major = 1
55
+ Minor = 26
56
+ Patch = 0
57
+ PreRelease = ""
58
+ )
59
+
60
+ // String formats the version string for this module in semver format.
61
+ //
62
+ // Examples:
63
+ // v1.20.1
64
+ // v1.21.0-rc.1
65
+ func String() string {
66
+ v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch)
67
+ if PreRelease != "" {
68
+ v += "-" + PreRelease
69
+
70
+ // TODO: Add metadata about the commit or build hash.
71
+ // See https://golang.org/issue/29814
72
+ // See https://golang.org/issue/33533
73
+ var metadata string
74
+ if strings.Contains(PreRelease, "devel") && metadata != "" {
75
+ v += "+" + metadata
76
+ }
77
+ }
78
+ return v
79
+ }
@@ -0,0 +1,71 @@
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 proto
6
+
7
+ import (
8
+ "google.golang.org/protobuf/internal/errors"
9
+ "google.golang.org/protobuf/reflect/protoreflect"
10
+ "google.golang.org/protobuf/runtime/protoiface"
11
+ )
12
+
13
+ // CheckInitialized returns an error if any required fields in m are not set.
14
+ func CheckInitialized(m Message) error {
15
+ // Treat a nil message interface as an "untyped" empty message,
16
+ // which we assume to have no required fields.
17
+ if m == nil {
18
+ return nil
19
+ }
20
+
21
+ return checkInitialized(m.ProtoReflect())
22
+ }
23
+
24
+ // CheckInitialized returns an error if any required fields in m are not set.
25
+ func checkInitialized(m protoreflect.Message) error {
26
+ if methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil {
27
+ _, err := methods.CheckInitialized(protoiface.CheckInitializedInput{
28
+ Message: m,
29
+ })
30
+ return err
31
+ }
32
+ return checkInitializedSlow(m)
33
+ }
34
+
35
+ func checkInitializedSlow(m protoreflect.Message) error {
36
+ md := m.Descriptor()
37
+ fds := md.Fields()
38
+ for i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ {
39
+ fd := fds.ByNumber(nums.Get(i))
40
+ if !m.Has(fd) {
41
+ return errors.RequiredNotSet(string(fd.FullName()))
42
+ }
43
+ }
44
+ var err error
45
+ m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
46
+ switch {
47
+ case fd.IsList():
48
+ if fd.Message() == nil {
49
+ return true
50
+ }
51
+ for i, list := 0, v.List(); i < list.Len() && err == nil; i++ {
52
+ err = checkInitialized(list.Get(i).Message())
53
+ }
54
+ case fd.IsMap():
55
+ if fd.MapValue().Message() == nil {
56
+ return true
57
+ }
58
+ v.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool {
59
+ err = checkInitialized(v.Message())
60
+ return err == nil
61
+ })
62
+ default:
63
+ if fd.Message() == nil {
64
+ return true
65
+ }
66
+ err = checkInitialized(v.Message())
67
+ }
68
+ return err == nil
69
+ })
70
+ return err
71
+ }
@@ -0,0 +1,278 @@
1
+ // Copyright 2018 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 proto
6
+
7
+ import (
8
+ "google.golang.org/protobuf/encoding/protowire"
9
+ "google.golang.org/protobuf/internal/encoding/messageset"
10
+ "google.golang.org/protobuf/internal/errors"
11
+ "google.golang.org/protobuf/internal/flags"
12
+ "google.golang.org/protobuf/internal/genid"
13
+ "google.golang.org/protobuf/internal/pragma"
14
+ "google.golang.org/protobuf/reflect/protoreflect"
15
+ "google.golang.org/protobuf/reflect/protoregistry"
16
+ "google.golang.org/protobuf/runtime/protoiface"
17
+ )
18
+
19
+ // UnmarshalOptions configures the unmarshaler.
20
+ //
21
+ // Example usage:
22
+ // err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m)
23
+ type UnmarshalOptions struct {
24
+ pragma.NoUnkeyedLiterals
25
+
26
+ // Merge merges the input into the destination message.
27
+ // The default behavior is to always reset the message before unmarshaling,
28
+ // unless Merge is specified.
29
+ Merge bool
30
+
31
+ // AllowPartial accepts input for messages that will result in missing
32
+ // required fields. If AllowPartial is false (the default), Unmarshal will
33
+ // return an error if there are any missing required fields.
34
+ AllowPartial bool
35
+
36
+ // If DiscardUnknown is set, unknown fields are ignored.
37
+ DiscardUnknown bool
38
+
39
+ // Resolver is used for looking up types when unmarshaling extension fields.
40
+ // If nil, this defaults to using protoregistry.GlobalTypes.
41
+ Resolver interface {
42
+ FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)
43
+ FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)
44
+ }
45
+ }
46
+
47
+ // Unmarshal parses the wire-format message in b and places the result in m.
48
+ // The provided message must be mutable (e.g., a non-nil pointer to a message).
49
+ func Unmarshal(b []byte, m Message) error {
50
+ _, err := UnmarshalOptions{}.unmarshal(b, m.ProtoReflect())
51
+ return err
52
+ }
53
+
54
+ // Unmarshal parses the wire-format message in b and places the result in m.
55
+ // The provided message must be mutable (e.g., a non-nil pointer to a message).
56
+ func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error {
57
+ _, err := o.unmarshal(b, m.ProtoReflect())
58
+ return err
59
+ }
60
+
61
+ // UnmarshalState parses a wire-format message and places the result in m.
62
+ //
63
+ // This method permits fine-grained control over the unmarshaler.
64
+ // Most users should use Unmarshal instead.
65
+ func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
66
+ return o.unmarshal(in.Buf, in.Message)
67
+ }
68
+
69
+ // unmarshal is a centralized function that all unmarshal operations go through.
70
+ // For profiling purposes, avoid changing the name of this function or
71
+ // introducing other code paths for unmarshal that do not go through this.
72
+ func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) {
73
+ if o.Resolver == nil {
74
+ o.Resolver = protoregistry.GlobalTypes
75
+ }
76
+ if !o.Merge {
77
+ Reset(m.Interface())
78
+ }
79
+ allowPartial := o.AllowPartial
80
+ o.Merge = true
81
+ o.AllowPartial = true
82
+ methods := protoMethods(m)
83
+ if methods != nil && methods.Unmarshal != nil &&
84
+ !(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) {
85
+ in := protoiface.UnmarshalInput{
86
+ Message: m,
87
+ Buf: b,
88
+ Resolver: o.Resolver,
89
+ }
90
+ if o.DiscardUnknown {
91
+ in.Flags |= protoiface.UnmarshalDiscardUnknown
92
+ }
93
+ out, err = methods.Unmarshal(in)
94
+ } else {
95
+ err = o.unmarshalMessageSlow(b, m)
96
+ }
97
+ if err != nil {
98
+ return out, err
99
+ }
100
+ if allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) {
101
+ return out, nil
102
+ }
103
+ return out, checkInitialized(m)
104
+ }
105
+
106
+ func (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error {
107
+ _, err := o.unmarshal(b, m)
108
+ return err
109
+ }
110
+
111
+ func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error {
112
+ md := m.Descriptor()
113
+ if messageset.IsMessageSet(md) {
114
+ return o.unmarshalMessageSet(b, m)
115
+ }
116
+ fields := md.Fields()
117
+ for len(b) > 0 {
118
+ // Parse the tag (field number and wire type).
119
+ num, wtyp, tagLen := protowire.ConsumeTag(b)
120
+ if tagLen < 0 {
121
+ return errDecode
122
+ }
123
+ if num > protowire.MaxValidNumber {
124
+ return errDecode
125
+ }
126
+
127
+ // Find the field descriptor for this field number.
128
+ fd := fields.ByNumber(num)
129
+ if fd == nil && md.ExtensionRanges().Has(num) {
130
+ extType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)
131
+ if err != nil && err != protoregistry.NotFound {
132
+ return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err)
133
+ }
134
+ if extType != nil {
135
+ fd = extType.TypeDescriptor()
136
+ }
137
+ }
138
+ var err error
139
+ if fd == nil {
140
+ err = errUnknown
141
+ } else if flags.ProtoLegacy {
142
+ if fd.IsWeak() && fd.Message().IsPlaceholder() {
143
+ err = errUnknown // weak referent is not linked in
144
+ }
145
+ }
146
+
147
+ // Parse the field value.
148
+ var valLen int
149
+ switch {
150
+ case err != nil:
151
+ case fd.IsList():
152
+ valLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd)
153
+ case fd.IsMap():
154
+ valLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd)
155
+ default:
156
+ valLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd)
157
+ }
158
+ if err != nil {
159
+ if err != errUnknown {
160
+ return err
161
+ }
162
+ valLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:])
163
+ if valLen < 0 {
164
+ return errDecode
165
+ }
166
+ if !o.DiscardUnknown {
167
+ m.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...))
168
+ }
169
+ }
170
+ b = b[tagLen+valLen:]
171
+ }
172
+ return nil
173
+ }
174
+
175
+ func (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) {
176
+ v, n, err := o.unmarshalScalar(b, wtyp, fd)
177
+ if err != nil {
178
+ return 0, err
179
+ }
180
+ switch fd.Kind() {
181
+ case protoreflect.GroupKind, protoreflect.MessageKind:
182
+ m2 := m.Mutable(fd).Message()
183
+ if err := o.unmarshalMessage(v.Bytes(), m2); err != nil {
184
+ return n, err
185
+ }
186
+ default:
187
+ // Non-message scalars replace the previous value.
188
+ m.Set(fd, v)
189
+ }
190
+ return n, nil
191
+ }
192
+
193
+ func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {
194
+ if wtyp != protowire.BytesType {
195
+ return 0, errUnknown
196
+ }
197
+ b, n = protowire.ConsumeBytes(b)
198
+ if n < 0 {
199
+ return 0, errDecode
200
+ }
201
+ var (
202
+ keyField = fd.MapKey()
203
+ valField = fd.MapValue()
204
+ key protoreflect.Value
205
+ val protoreflect.Value
206
+ haveKey bool
207
+ haveVal bool
208
+ )
209
+ switch valField.Kind() {
210
+ case protoreflect.GroupKind, protoreflect.MessageKind:
211
+ val = mapv.NewValue()
212
+ }
213
+ // Map entries are represented as a two-element message with fields
214
+ // containing the key and value.
215
+ for len(b) > 0 {
216
+ num, wtyp, n := protowire.ConsumeTag(b)
217
+ if n < 0 {
218
+ return 0, errDecode
219
+ }
220
+ if num > protowire.MaxValidNumber {
221
+ return 0, errDecode
222
+ }
223
+ b = b[n:]
224
+ err = errUnknown
225
+ switch num {
226
+ case genid.MapEntry_Key_field_number:
227
+ key, n, err = o.unmarshalScalar(b, wtyp, keyField)
228
+ if err != nil {
229
+ break
230
+ }
231
+ haveKey = true
232
+ case genid.MapEntry_Value_field_number:
233
+ var v protoreflect.Value
234
+ v, n, err = o.unmarshalScalar(b, wtyp, valField)
235
+ if err != nil {
236
+ break
237
+ }
238
+ switch valField.Kind() {
239
+ case protoreflect.GroupKind, protoreflect.MessageKind:
240
+ if err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil {
241
+ return 0, err
242
+ }
243
+ default:
244
+ val = v
245
+ }
246
+ haveVal = true
247
+ }
248
+ if err == errUnknown {
249
+ n = protowire.ConsumeFieldValue(num, wtyp, b)
250
+ if n < 0 {
251
+ return 0, errDecode
252
+ }
253
+ } else if err != nil {
254
+ return 0, err
255
+ }
256
+ b = b[n:]
257
+ }
258
+ // Every map entry should have entries for key and value, but this is not strictly required.
259
+ if !haveKey {
260
+ key = keyField.Default()
261
+ }
262
+ if !haveVal {
263
+ switch valField.Kind() {
264
+ case protoreflect.GroupKind, protoreflect.MessageKind:
265
+ default:
266
+ val = valField.Default()
267
+ }
268
+ }
269
+ mapv.Set(key.MapKey(), val)
270
+ return n, nil
271
+ }
272
+
273
+ // errUnknown is used internally to indicate fields which should be added
274
+ // to the unknown field set of a message. It is never returned from an exported
275
+ // function.
276
+ var errUnknown = errors.New("BUG: internal error (unknown)")
277
+
278
+ var errDecode = errors.New("cannot parse invalid wire-format data")