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,123 @@
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 impl
6
+
7
+ import (
8
+ "sort"
9
+
10
+ "google.golang.org/protobuf/encoding/protowire"
11
+ "google.golang.org/protobuf/internal/encoding/messageset"
12
+ "google.golang.org/protobuf/internal/errors"
13
+ "google.golang.org/protobuf/internal/flags"
14
+ )
15
+
16
+ func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) {
17
+ if !flags.ProtoLegacy {
18
+ return 0
19
+ }
20
+
21
+ ext := *p.Apply(mi.extensionOffset).Extensions()
22
+ for _, x := range ext {
23
+ xi := getExtensionFieldInfo(x.Type())
24
+ if xi.funcs.size == nil {
25
+ continue
26
+ }
27
+ num, _ := protowire.DecodeTag(xi.wiretag)
28
+ size += messageset.SizeField(num)
29
+ size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)
30
+ }
31
+
32
+ if u := mi.getUnknownBytes(p); u != nil {
33
+ size += messageset.SizeUnknown(*u)
34
+ }
35
+
36
+ return size
37
+ }
38
+
39
+ func marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) {
40
+ if !flags.ProtoLegacy {
41
+ return b, errors.New("no support for message_set_wire_format")
42
+ }
43
+
44
+ ext := *p.Apply(mi.extensionOffset).Extensions()
45
+ switch len(ext) {
46
+ case 0:
47
+ case 1:
48
+ // Fast-path for one extension: Don't bother sorting the keys.
49
+ for _, x := range ext {
50
+ var err error
51
+ b, err = marshalMessageSetField(mi, b, x, opts)
52
+ if err != nil {
53
+ return b, err
54
+ }
55
+ }
56
+ default:
57
+ // Sort the keys to provide a deterministic encoding.
58
+ // Not sure this is required, but the old code does it.
59
+ keys := make([]int, 0, len(ext))
60
+ for k := range ext {
61
+ keys = append(keys, int(k))
62
+ }
63
+ sort.Ints(keys)
64
+ for _, k := range keys {
65
+ var err error
66
+ b, err = marshalMessageSetField(mi, b, ext[int32(k)], opts)
67
+ if err != nil {
68
+ return b, err
69
+ }
70
+ }
71
+ }
72
+
73
+ if u := mi.getUnknownBytes(p); u != nil {
74
+ var err error
75
+ b, err = messageset.AppendUnknown(b, *u)
76
+ if err != nil {
77
+ return b, err
78
+ }
79
+ }
80
+
81
+ return b, nil
82
+ }
83
+
84
+ func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {
85
+ xi := getExtensionFieldInfo(x.Type())
86
+ num, _ := protowire.DecodeTag(xi.wiretag)
87
+ b = messageset.AppendFieldStart(b, num)
88
+ b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)
89
+ if err != nil {
90
+ return b, err
91
+ }
92
+ b = messageset.AppendFieldEnd(b)
93
+ return b, nil
94
+ }
95
+
96
+ func unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) {
97
+ if !flags.ProtoLegacy {
98
+ return out, errors.New("no support for message_set_wire_format")
99
+ }
100
+
101
+ ep := p.Apply(mi.extensionOffset).Extensions()
102
+ if *ep == nil {
103
+ *ep = make(map[int32]ExtensionField)
104
+ }
105
+ ext := *ep
106
+ initialized := true
107
+ err = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error {
108
+ o, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts)
109
+ if err == errUnknown {
110
+ u := mi.mutableUnknownBytes(p)
111
+ *u = protowire.AppendTag(*u, num, protowire.BytesType)
112
+ *u = append(*u, v...)
113
+ return nil
114
+ }
115
+ if !o.initialized {
116
+ initialized = false
117
+ }
118
+ return err
119
+ })
120
+ out.n = len(b)
121
+ out.initialized = initialized
122
+ return out, err
123
+ }
@@ -0,0 +1,209 @@
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
+ // +build purego appengine
6
+
7
+ package impl
8
+
9
+ import (
10
+ "reflect"
11
+
12
+ "google.golang.org/protobuf/encoding/protowire"
13
+ )
14
+
15
+ func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
16
+ v := p.v.Elem().Int()
17
+ return f.tagsize + protowire.SizeVarint(uint64(v))
18
+ }
19
+
20
+ func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
21
+ v := p.v.Elem().Int()
22
+ b = protowire.AppendVarint(b, f.wiretag)
23
+ b = protowire.AppendVarint(b, uint64(v))
24
+ return b, nil
25
+ }
26
+
27
+ func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
28
+ if wtyp != protowire.VarintType {
29
+ return out, errUnknown
30
+ }
31
+ v, n := protowire.ConsumeVarint(b)
32
+ if n < 0 {
33
+ return out, errDecode
34
+ }
35
+ p.v.Elem().SetInt(int64(v))
36
+ out.n = n
37
+ return out, nil
38
+ }
39
+
40
+ func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
41
+ dst.v.Elem().Set(src.v.Elem())
42
+ }
43
+
44
+ var coderEnum = pointerCoderFuncs{
45
+ size: sizeEnum,
46
+ marshal: appendEnum,
47
+ unmarshal: consumeEnum,
48
+ merge: mergeEnum,
49
+ }
50
+
51
+ func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
52
+ if p.v.Elem().Int() == 0 {
53
+ return 0
54
+ }
55
+ return sizeEnum(p, f, opts)
56
+ }
57
+
58
+ func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
59
+ if p.v.Elem().Int() == 0 {
60
+ return b, nil
61
+ }
62
+ return appendEnum(b, p, f, opts)
63
+ }
64
+
65
+ func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
66
+ if src.v.Elem().Int() != 0 {
67
+ dst.v.Elem().Set(src.v.Elem())
68
+ }
69
+ }
70
+
71
+ var coderEnumNoZero = pointerCoderFuncs{
72
+ size: sizeEnumNoZero,
73
+ marshal: appendEnumNoZero,
74
+ unmarshal: consumeEnum,
75
+ merge: mergeEnumNoZero,
76
+ }
77
+
78
+ func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
79
+ return sizeEnum(pointer{p.v.Elem()}, f, opts)
80
+ }
81
+
82
+ func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
83
+ return appendEnum(b, pointer{p.v.Elem()}, f, opts)
84
+ }
85
+
86
+ func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
87
+ if wtyp != protowire.VarintType {
88
+ return out, errUnknown
89
+ }
90
+ if p.v.Elem().IsNil() {
91
+ p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem()))
92
+ }
93
+ return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts)
94
+ }
95
+
96
+ func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
97
+ if !src.v.Elem().IsNil() {
98
+ v := reflect.New(dst.v.Type().Elem().Elem())
99
+ v.Elem().Set(src.v.Elem().Elem())
100
+ dst.v.Elem().Set(v)
101
+ }
102
+ }
103
+
104
+ var coderEnumPtr = pointerCoderFuncs{
105
+ size: sizeEnumPtr,
106
+ marshal: appendEnumPtr,
107
+ unmarshal: consumeEnumPtr,
108
+ merge: mergeEnumPtr,
109
+ }
110
+
111
+ func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
112
+ s := p.v.Elem()
113
+ for i, llen := 0, s.Len(); i < llen; i++ {
114
+ size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize
115
+ }
116
+ return size
117
+ }
118
+
119
+ func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
120
+ s := p.v.Elem()
121
+ for i, llen := 0, s.Len(); i < llen; i++ {
122
+ b = protowire.AppendVarint(b, f.wiretag)
123
+ b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
124
+ }
125
+ return b, nil
126
+ }
127
+
128
+ func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
129
+ s := p.v.Elem()
130
+ if wtyp == protowire.BytesType {
131
+ b, n := protowire.ConsumeBytes(b)
132
+ if n < 0 {
133
+ return out, errDecode
134
+ }
135
+ for len(b) > 0 {
136
+ v, n := protowire.ConsumeVarint(b)
137
+ if n < 0 {
138
+ return out, errDecode
139
+ }
140
+ rv := reflect.New(s.Type().Elem()).Elem()
141
+ rv.SetInt(int64(v))
142
+ s.Set(reflect.Append(s, rv))
143
+ b = b[n:]
144
+ }
145
+ out.n = n
146
+ return out, nil
147
+ }
148
+ if wtyp != protowire.VarintType {
149
+ return out, errUnknown
150
+ }
151
+ v, n := protowire.ConsumeVarint(b)
152
+ if n < 0 {
153
+ return out, errDecode
154
+ }
155
+ rv := reflect.New(s.Type().Elem()).Elem()
156
+ rv.SetInt(int64(v))
157
+ s.Set(reflect.Append(s, rv))
158
+ out.n = n
159
+ return out, nil
160
+ }
161
+
162
+ func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
163
+ dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem()))
164
+ }
165
+
166
+ var coderEnumSlice = pointerCoderFuncs{
167
+ size: sizeEnumSlice,
168
+ marshal: appendEnumSlice,
169
+ unmarshal: consumeEnumSlice,
170
+ merge: mergeEnumSlice,
171
+ }
172
+
173
+ func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
174
+ s := p.v.Elem()
175
+ llen := s.Len()
176
+ if llen == 0 {
177
+ return 0
178
+ }
179
+ n := 0
180
+ for i := 0; i < llen; i++ {
181
+ n += protowire.SizeVarint(uint64(s.Index(i).Int()))
182
+ }
183
+ return f.tagsize + protowire.SizeBytes(n)
184
+ }
185
+
186
+ func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
187
+ s := p.v.Elem()
188
+ llen := s.Len()
189
+ if llen == 0 {
190
+ return b, nil
191
+ }
192
+ b = protowire.AppendVarint(b, f.wiretag)
193
+ n := 0
194
+ for i := 0; i < llen; i++ {
195
+ n += protowire.SizeVarint(uint64(s.Index(i).Int()))
196
+ }
197
+ b = protowire.AppendVarint(b, uint64(n))
198
+ for i := 0; i < llen; i++ {
199
+ b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
200
+ }
201
+ return b, nil
202
+ }
203
+
204
+ var coderEnumPackedSlice = pointerCoderFuncs{
205
+ size: sizeEnumPackedSlice,
206
+ marshal: appendEnumPackedSlice,
207
+ unmarshal: consumeEnumSlice,
208
+ merge: mergeEnumSlice,
209
+ }
@@ -0,0 +1,557 @@
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 impl
6
+
7
+ import (
8
+ "fmt"
9
+ "reflect"
10
+
11
+ "google.golang.org/protobuf/encoding/protowire"
12
+ "google.golang.org/protobuf/internal/strs"
13
+ pref "google.golang.org/protobuf/reflect/protoreflect"
14
+ )
15
+
16
+ // pointerCoderFuncs is a set of pointer encoding functions.
17
+ type pointerCoderFuncs struct {
18
+ mi *MessageInfo
19
+ size func(p pointer, f *coderFieldInfo, opts marshalOptions) int
20
+ marshal func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error)
21
+ unmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error)
22
+ isInit func(p pointer, f *coderFieldInfo) error
23
+ merge func(dst, src pointer, f *coderFieldInfo, opts mergeOptions)
24
+ }
25
+
26
+ // valueCoderFuncs is a set of protoreflect.Value encoding functions.
27
+ type valueCoderFuncs struct {
28
+ size func(v pref.Value, tagsize int, opts marshalOptions) int
29
+ marshal func(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error)
30
+ unmarshal func(b []byte, v pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error)
31
+ isInit func(v pref.Value) error
32
+ merge func(dst, src pref.Value, opts mergeOptions) pref.Value
33
+ }
34
+
35
+ // fieldCoder returns pointer functions for a field, used for operating on
36
+ // struct fields.
37
+ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
38
+ switch {
39
+ case fd.IsMap():
40
+ return encoderFuncsForMap(fd, ft)
41
+ case fd.Cardinality() == pref.Repeated && !fd.IsPacked():
42
+ // Repeated fields (not packed).
43
+ if ft.Kind() != reflect.Slice {
44
+ break
45
+ }
46
+ ft := ft.Elem()
47
+ switch fd.Kind() {
48
+ case pref.BoolKind:
49
+ if ft.Kind() == reflect.Bool {
50
+ return nil, coderBoolSlice
51
+ }
52
+ case pref.EnumKind:
53
+ if ft.Kind() == reflect.Int32 {
54
+ return nil, coderEnumSlice
55
+ }
56
+ case pref.Int32Kind:
57
+ if ft.Kind() == reflect.Int32 {
58
+ return nil, coderInt32Slice
59
+ }
60
+ case pref.Sint32Kind:
61
+ if ft.Kind() == reflect.Int32 {
62
+ return nil, coderSint32Slice
63
+ }
64
+ case pref.Uint32Kind:
65
+ if ft.Kind() == reflect.Uint32 {
66
+ return nil, coderUint32Slice
67
+ }
68
+ case pref.Int64Kind:
69
+ if ft.Kind() == reflect.Int64 {
70
+ return nil, coderInt64Slice
71
+ }
72
+ case pref.Sint64Kind:
73
+ if ft.Kind() == reflect.Int64 {
74
+ return nil, coderSint64Slice
75
+ }
76
+ case pref.Uint64Kind:
77
+ if ft.Kind() == reflect.Uint64 {
78
+ return nil, coderUint64Slice
79
+ }
80
+ case pref.Sfixed32Kind:
81
+ if ft.Kind() == reflect.Int32 {
82
+ return nil, coderSfixed32Slice
83
+ }
84
+ case pref.Fixed32Kind:
85
+ if ft.Kind() == reflect.Uint32 {
86
+ return nil, coderFixed32Slice
87
+ }
88
+ case pref.FloatKind:
89
+ if ft.Kind() == reflect.Float32 {
90
+ return nil, coderFloatSlice
91
+ }
92
+ case pref.Sfixed64Kind:
93
+ if ft.Kind() == reflect.Int64 {
94
+ return nil, coderSfixed64Slice
95
+ }
96
+ case pref.Fixed64Kind:
97
+ if ft.Kind() == reflect.Uint64 {
98
+ return nil, coderFixed64Slice
99
+ }
100
+ case pref.DoubleKind:
101
+ if ft.Kind() == reflect.Float64 {
102
+ return nil, coderDoubleSlice
103
+ }
104
+ case pref.StringKind:
105
+ if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
106
+ return nil, coderStringSliceValidateUTF8
107
+ }
108
+ if ft.Kind() == reflect.String {
109
+ return nil, coderStringSlice
110
+ }
111
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
112
+ return nil, coderBytesSliceValidateUTF8
113
+ }
114
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
115
+ return nil, coderBytesSlice
116
+ }
117
+ case pref.BytesKind:
118
+ if ft.Kind() == reflect.String {
119
+ return nil, coderStringSlice
120
+ }
121
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
122
+ return nil, coderBytesSlice
123
+ }
124
+ case pref.MessageKind:
125
+ return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft)
126
+ case pref.GroupKind:
127
+ return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft)
128
+ }
129
+ case fd.Cardinality() == pref.Repeated && fd.IsPacked():
130
+ // Packed repeated fields.
131
+ //
132
+ // Only repeated fields of primitive numeric types
133
+ // (Varint, Fixed32, or Fixed64 wire type) can be packed.
134
+ if ft.Kind() != reflect.Slice {
135
+ break
136
+ }
137
+ ft := ft.Elem()
138
+ switch fd.Kind() {
139
+ case pref.BoolKind:
140
+ if ft.Kind() == reflect.Bool {
141
+ return nil, coderBoolPackedSlice
142
+ }
143
+ case pref.EnumKind:
144
+ if ft.Kind() == reflect.Int32 {
145
+ return nil, coderEnumPackedSlice
146
+ }
147
+ case pref.Int32Kind:
148
+ if ft.Kind() == reflect.Int32 {
149
+ return nil, coderInt32PackedSlice
150
+ }
151
+ case pref.Sint32Kind:
152
+ if ft.Kind() == reflect.Int32 {
153
+ return nil, coderSint32PackedSlice
154
+ }
155
+ case pref.Uint32Kind:
156
+ if ft.Kind() == reflect.Uint32 {
157
+ return nil, coderUint32PackedSlice
158
+ }
159
+ case pref.Int64Kind:
160
+ if ft.Kind() == reflect.Int64 {
161
+ return nil, coderInt64PackedSlice
162
+ }
163
+ case pref.Sint64Kind:
164
+ if ft.Kind() == reflect.Int64 {
165
+ return nil, coderSint64PackedSlice
166
+ }
167
+ case pref.Uint64Kind:
168
+ if ft.Kind() == reflect.Uint64 {
169
+ return nil, coderUint64PackedSlice
170
+ }
171
+ case pref.Sfixed32Kind:
172
+ if ft.Kind() == reflect.Int32 {
173
+ return nil, coderSfixed32PackedSlice
174
+ }
175
+ case pref.Fixed32Kind:
176
+ if ft.Kind() == reflect.Uint32 {
177
+ return nil, coderFixed32PackedSlice
178
+ }
179
+ case pref.FloatKind:
180
+ if ft.Kind() == reflect.Float32 {
181
+ return nil, coderFloatPackedSlice
182
+ }
183
+ case pref.Sfixed64Kind:
184
+ if ft.Kind() == reflect.Int64 {
185
+ return nil, coderSfixed64PackedSlice
186
+ }
187
+ case pref.Fixed64Kind:
188
+ if ft.Kind() == reflect.Uint64 {
189
+ return nil, coderFixed64PackedSlice
190
+ }
191
+ case pref.DoubleKind:
192
+ if ft.Kind() == reflect.Float64 {
193
+ return nil, coderDoublePackedSlice
194
+ }
195
+ }
196
+ case fd.Kind() == pref.MessageKind:
197
+ return getMessageInfo(ft), makeMessageFieldCoder(fd, ft)
198
+ case fd.Kind() == pref.GroupKind:
199
+ return getMessageInfo(ft), makeGroupFieldCoder(fd, ft)
200
+ case fd.Syntax() == pref.Proto3 && fd.ContainingOneof() == nil:
201
+ // Populated oneof fields always encode even if set to the zero value,
202
+ // which normally are not encoded in proto3.
203
+ switch fd.Kind() {
204
+ case pref.BoolKind:
205
+ if ft.Kind() == reflect.Bool {
206
+ return nil, coderBoolNoZero
207
+ }
208
+ case pref.EnumKind:
209
+ if ft.Kind() == reflect.Int32 {
210
+ return nil, coderEnumNoZero
211
+ }
212
+ case pref.Int32Kind:
213
+ if ft.Kind() == reflect.Int32 {
214
+ return nil, coderInt32NoZero
215
+ }
216
+ case pref.Sint32Kind:
217
+ if ft.Kind() == reflect.Int32 {
218
+ return nil, coderSint32NoZero
219
+ }
220
+ case pref.Uint32Kind:
221
+ if ft.Kind() == reflect.Uint32 {
222
+ return nil, coderUint32NoZero
223
+ }
224
+ case pref.Int64Kind:
225
+ if ft.Kind() == reflect.Int64 {
226
+ return nil, coderInt64NoZero
227
+ }
228
+ case pref.Sint64Kind:
229
+ if ft.Kind() == reflect.Int64 {
230
+ return nil, coderSint64NoZero
231
+ }
232
+ case pref.Uint64Kind:
233
+ if ft.Kind() == reflect.Uint64 {
234
+ return nil, coderUint64NoZero
235
+ }
236
+ case pref.Sfixed32Kind:
237
+ if ft.Kind() == reflect.Int32 {
238
+ return nil, coderSfixed32NoZero
239
+ }
240
+ case pref.Fixed32Kind:
241
+ if ft.Kind() == reflect.Uint32 {
242
+ return nil, coderFixed32NoZero
243
+ }
244
+ case pref.FloatKind:
245
+ if ft.Kind() == reflect.Float32 {
246
+ return nil, coderFloatNoZero
247
+ }
248
+ case pref.Sfixed64Kind:
249
+ if ft.Kind() == reflect.Int64 {
250
+ return nil, coderSfixed64NoZero
251
+ }
252
+ case pref.Fixed64Kind:
253
+ if ft.Kind() == reflect.Uint64 {
254
+ return nil, coderFixed64NoZero
255
+ }
256
+ case pref.DoubleKind:
257
+ if ft.Kind() == reflect.Float64 {
258
+ return nil, coderDoubleNoZero
259
+ }
260
+ case pref.StringKind:
261
+ if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
262
+ return nil, coderStringNoZeroValidateUTF8
263
+ }
264
+ if ft.Kind() == reflect.String {
265
+ return nil, coderStringNoZero
266
+ }
267
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
268
+ return nil, coderBytesNoZeroValidateUTF8
269
+ }
270
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
271
+ return nil, coderBytesNoZero
272
+ }
273
+ case pref.BytesKind:
274
+ if ft.Kind() == reflect.String {
275
+ return nil, coderStringNoZero
276
+ }
277
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
278
+ return nil, coderBytesNoZero
279
+ }
280
+ }
281
+ case ft.Kind() == reflect.Ptr:
282
+ ft := ft.Elem()
283
+ switch fd.Kind() {
284
+ case pref.BoolKind:
285
+ if ft.Kind() == reflect.Bool {
286
+ return nil, coderBoolPtr
287
+ }
288
+ case pref.EnumKind:
289
+ if ft.Kind() == reflect.Int32 {
290
+ return nil, coderEnumPtr
291
+ }
292
+ case pref.Int32Kind:
293
+ if ft.Kind() == reflect.Int32 {
294
+ return nil, coderInt32Ptr
295
+ }
296
+ case pref.Sint32Kind:
297
+ if ft.Kind() == reflect.Int32 {
298
+ return nil, coderSint32Ptr
299
+ }
300
+ case pref.Uint32Kind:
301
+ if ft.Kind() == reflect.Uint32 {
302
+ return nil, coderUint32Ptr
303
+ }
304
+ case pref.Int64Kind:
305
+ if ft.Kind() == reflect.Int64 {
306
+ return nil, coderInt64Ptr
307
+ }
308
+ case pref.Sint64Kind:
309
+ if ft.Kind() == reflect.Int64 {
310
+ return nil, coderSint64Ptr
311
+ }
312
+ case pref.Uint64Kind:
313
+ if ft.Kind() == reflect.Uint64 {
314
+ return nil, coderUint64Ptr
315
+ }
316
+ case pref.Sfixed32Kind:
317
+ if ft.Kind() == reflect.Int32 {
318
+ return nil, coderSfixed32Ptr
319
+ }
320
+ case pref.Fixed32Kind:
321
+ if ft.Kind() == reflect.Uint32 {
322
+ return nil, coderFixed32Ptr
323
+ }
324
+ case pref.FloatKind:
325
+ if ft.Kind() == reflect.Float32 {
326
+ return nil, coderFloatPtr
327
+ }
328
+ case pref.Sfixed64Kind:
329
+ if ft.Kind() == reflect.Int64 {
330
+ return nil, coderSfixed64Ptr
331
+ }
332
+ case pref.Fixed64Kind:
333
+ if ft.Kind() == reflect.Uint64 {
334
+ return nil, coderFixed64Ptr
335
+ }
336
+ case pref.DoubleKind:
337
+ if ft.Kind() == reflect.Float64 {
338
+ return nil, coderDoublePtr
339
+ }
340
+ case pref.StringKind:
341
+ if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
342
+ return nil, coderStringPtrValidateUTF8
343
+ }
344
+ if ft.Kind() == reflect.String {
345
+ return nil, coderStringPtr
346
+ }
347
+ case pref.BytesKind:
348
+ if ft.Kind() == reflect.String {
349
+ return nil, coderStringPtr
350
+ }
351
+ }
352
+ default:
353
+ switch fd.Kind() {
354
+ case pref.BoolKind:
355
+ if ft.Kind() == reflect.Bool {
356
+ return nil, coderBool
357
+ }
358
+ case pref.EnumKind:
359
+ if ft.Kind() == reflect.Int32 {
360
+ return nil, coderEnum
361
+ }
362
+ case pref.Int32Kind:
363
+ if ft.Kind() == reflect.Int32 {
364
+ return nil, coderInt32
365
+ }
366
+ case pref.Sint32Kind:
367
+ if ft.Kind() == reflect.Int32 {
368
+ return nil, coderSint32
369
+ }
370
+ case pref.Uint32Kind:
371
+ if ft.Kind() == reflect.Uint32 {
372
+ return nil, coderUint32
373
+ }
374
+ case pref.Int64Kind:
375
+ if ft.Kind() == reflect.Int64 {
376
+ return nil, coderInt64
377
+ }
378
+ case pref.Sint64Kind:
379
+ if ft.Kind() == reflect.Int64 {
380
+ return nil, coderSint64
381
+ }
382
+ case pref.Uint64Kind:
383
+ if ft.Kind() == reflect.Uint64 {
384
+ return nil, coderUint64
385
+ }
386
+ case pref.Sfixed32Kind:
387
+ if ft.Kind() == reflect.Int32 {
388
+ return nil, coderSfixed32
389
+ }
390
+ case pref.Fixed32Kind:
391
+ if ft.Kind() == reflect.Uint32 {
392
+ return nil, coderFixed32
393
+ }
394
+ case pref.FloatKind:
395
+ if ft.Kind() == reflect.Float32 {
396
+ return nil, coderFloat
397
+ }
398
+ case pref.Sfixed64Kind:
399
+ if ft.Kind() == reflect.Int64 {
400
+ return nil, coderSfixed64
401
+ }
402
+ case pref.Fixed64Kind:
403
+ if ft.Kind() == reflect.Uint64 {
404
+ return nil, coderFixed64
405
+ }
406
+ case pref.DoubleKind:
407
+ if ft.Kind() == reflect.Float64 {
408
+ return nil, coderDouble
409
+ }
410
+ case pref.StringKind:
411
+ if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
412
+ return nil, coderStringValidateUTF8
413
+ }
414
+ if ft.Kind() == reflect.String {
415
+ return nil, coderString
416
+ }
417
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
418
+ return nil, coderBytesValidateUTF8
419
+ }
420
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
421
+ return nil, coderBytes
422
+ }
423
+ case pref.BytesKind:
424
+ if ft.Kind() == reflect.String {
425
+ return nil, coderString
426
+ }
427
+ if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
428
+ return nil, coderBytes
429
+ }
430
+ }
431
+ }
432
+ panic(fmt.Sprintf("invalid type: no encoder for %v %v %v/%v", fd.FullName(), fd.Cardinality(), fd.Kind(), ft))
433
+ }
434
+
435
+ // encoderFuncsForValue returns value functions for a field, used for
436
+ // extension values and map encoding.
437
+ func encoderFuncsForValue(fd pref.FieldDescriptor) valueCoderFuncs {
438
+ switch {
439
+ case fd.Cardinality() == pref.Repeated && !fd.IsPacked():
440
+ switch fd.Kind() {
441
+ case pref.BoolKind:
442
+ return coderBoolSliceValue
443
+ case pref.EnumKind:
444
+ return coderEnumSliceValue
445
+ case pref.Int32Kind:
446
+ return coderInt32SliceValue
447
+ case pref.Sint32Kind:
448
+ return coderSint32SliceValue
449
+ case pref.Uint32Kind:
450
+ return coderUint32SliceValue
451
+ case pref.Int64Kind:
452
+ return coderInt64SliceValue
453
+ case pref.Sint64Kind:
454
+ return coderSint64SliceValue
455
+ case pref.Uint64Kind:
456
+ return coderUint64SliceValue
457
+ case pref.Sfixed32Kind:
458
+ return coderSfixed32SliceValue
459
+ case pref.Fixed32Kind:
460
+ return coderFixed32SliceValue
461
+ case pref.FloatKind:
462
+ return coderFloatSliceValue
463
+ case pref.Sfixed64Kind:
464
+ return coderSfixed64SliceValue
465
+ case pref.Fixed64Kind:
466
+ return coderFixed64SliceValue
467
+ case pref.DoubleKind:
468
+ return coderDoubleSliceValue
469
+ case pref.StringKind:
470
+ // We don't have a UTF-8 validating coder for repeated string fields.
471
+ // Value coders are used for extensions and maps.
472
+ // Extensions are never proto3, and maps never contain lists.
473
+ return coderStringSliceValue
474
+ case pref.BytesKind:
475
+ return coderBytesSliceValue
476
+ case pref.MessageKind:
477
+ return coderMessageSliceValue
478
+ case pref.GroupKind:
479
+ return coderGroupSliceValue
480
+ }
481
+ case fd.Cardinality() == pref.Repeated && fd.IsPacked():
482
+ switch fd.Kind() {
483
+ case pref.BoolKind:
484
+ return coderBoolPackedSliceValue
485
+ case pref.EnumKind:
486
+ return coderEnumPackedSliceValue
487
+ case pref.Int32Kind:
488
+ return coderInt32PackedSliceValue
489
+ case pref.Sint32Kind:
490
+ return coderSint32PackedSliceValue
491
+ case pref.Uint32Kind:
492
+ return coderUint32PackedSliceValue
493
+ case pref.Int64Kind:
494
+ return coderInt64PackedSliceValue
495
+ case pref.Sint64Kind:
496
+ return coderSint64PackedSliceValue
497
+ case pref.Uint64Kind:
498
+ return coderUint64PackedSliceValue
499
+ case pref.Sfixed32Kind:
500
+ return coderSfixed32PackedSliceValue
501
+ case pref.Fixed32Kind:
502
+ return coderFixed32PackedSliceValue
503
+ case pref.FloatKind:
504
+ return coderFloatPackedSliceValue
505
+ case pref.Sfixed64Kind:
506
+ return coderSfixed64PackedSliceValue
507
+ case pref.Fixed64Kind:
508
+ return coderFixed64PackedSliceValue
509
+ case pref.DoubleKind:
510
+ return coderDoublePackedSliceValue
511
+ }
512
+ default:
513
+ switch fd.Kind() {
514
+ default:
515
+ case pref.BoolKind:
516
+ return coderBoolValue
517
+ case pref.EnumKind:
518
+ return coderEnumValue
519
+ case pref.Int32Kind:
520
+ return coderInt32Value
521
+ case pref.Sint32Kind:
522
+ return coderSint32Value
523
+ case pref.Uint32Kind:
524
+ return coderUint32Value
525
+ case pref.Int64Kind:
526
+ return coderInt64Value
527
+ case pref.Sint64Kind:
528
+ return coderSint64Value
529
+ case pref.Uint64Kind:
530
+ return coderUint64Value
531
+ case pref.Sfixed32Kind:
532
+ return coderSfixed32Value
533
+ case pref.Fixed32Kind:
534
+ return coderFixed32Value
535
+ case pref.FloatKind:
536
+ return coderFloatValue
537
+ case pref.Sfixed64Kind:
538
+ return coderSfixed64Value
539
+ case pref.Fixed64Kind:
540
+ return coderFixed64Value
541
+ case pref.DoubleKind:
542
+ return coderDoubleValue
543
+ case pref.StringKind:
544
+ if strs.EnforceUTF8(fd) {
545
+ return coderStringValueValidateUTF8
546
+ }
547
+ return coderStringValue
548
+ case pref.BytesKind:
549
+ return coderBytesValue
550
+ case pref.MessageKind:
551
+ return coderMessageValue
552
+ case pref.GroupKind:
553
+ return coderGroupValue
554
+ }
555
+ }
556
+ panic(fmt.Sprintf("invalid field: no encoder for %v %v %v", fd.FullName(), fd.Cardinality(), fd.Kind()))
557
+ }