planetscale 0.2.0 → 0.3.3

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 (365) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/pipeline.yml +21 -0
  3. data/.github/workflows/ci.yml +9 -1
  4. data/.github/workflows/gem-push.yml +9 -2
  5. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  6. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +56 -3
  7. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +205 -172
  8. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  13. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  14. data/README.md +11 -8
  15. data/controller.go +24 -26
  16. data/go.mod +4 -3
  17. data/go.sum +42 -27
  18. data/lib/generators/planetscale/install_generator.rb +8 -6
  19. data/lib/planetscale/version.rb +1 -1
  20. data/lib/planetscale.rb +14 -15
  21. data/planetscale.gemspec +2 -2
  22. data/proxy/planetscale-darwin.h +1 -1
  23. data/proxy/planetscale-darwin.so +0 -0
  24. data/proxy/planetscale-linux.h +1 -1
  25. data/proxy/planetscale-linux.so +0 -0
  26. data/proxy.go +1 -5
  27. metadata +6 -342
  28. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  29. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  30. data/vendor/github.com/armon/circbuf/README.md +0 -28
  31. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  32. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  33. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  34. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  35. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  36. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  37. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  38. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  39. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  40. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  41. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  42. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  43. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  44. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  45. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  46. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  47. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  48. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  49. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  50. data/vendor/github.com/gorilla/mux/README.md +0 -805
  51. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  52. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  53. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  54. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  55. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  56. data/vendor/github.com/gorilla/mux/route.go +0 -736
  57. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  58. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  59. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  60. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  61. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  62. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  63. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  64. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  65. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  66. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  67. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  68. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  69. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  70. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  71. data/vendor/github.com/pkg/errors/Makefile +0 -44
  72. data/vendor/github.com/pkg/errors/README.md +0 -59
  73. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  74. data/vendor/github.com/pkg/errors/errors.go +0 -288
  75. data/vendor/github.com/pkg/errors/go113.go +0 -38
  76. data/vendor/github.com/pkg/errors/stack.go +0 -177
  77. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +0 -139
  78. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +0 -258
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -142
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -305
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -131
  82. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +0 -368
  83. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +0 -78
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  85. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -467
  86. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  87. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  88. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  89. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  90. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  91. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  92. data/vendor/go.uber.org/atomic/Makefile +0 -78
  93. data/vendor/go.uber.org/atomic/README.md +0 -63
  94. data/vendor/go.uber.org/atomic/bool.go +0 -81
  95. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  96. data/vendor/go.uber.org/atomic/doc.go +0 -23
  97. data/vendor/go.uber.org/atomic/duration.go +0 -82
  98. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  99. data/vendor/go.uber.org/atomic/error.go +0 -51
  100. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  101. data/vendor/go.uber.org/atomic/float64.go +0 -76
  102. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  103. data/vendor/go.uber.org/atomic/gen.go +0 -26
  104. data/vendor/go.uber.org/atomic/go.mod +0 -8
  105. data/vendor/go.uber.org/atomic/go.sum +0 -9
  106. data/vendor/go.uber.org/atomic/int32.go +0 -102
  107. data/vendor/go.uber.org/atomic/int64.go +0 -102
  108. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  109. data/vendor/go.uber.org/atomic/string.go +0 -54
  110. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  111. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  112. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  113. data/vendor/go.uber.org/atomic/value.go +0 -31
  114. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  115. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  116. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  117. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  118. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  119. data/vendor/go.uber.org/multierr/Makefile +0 -42
  120. data/vendor/go.uber.org/multierr/README.md +0 -23
  121. data/vendor/go.uber.org/multierr/error.go +0 -449
  122. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  123. data/vendor/go.uber.org/multierr/go.mod +0 -8
  124. data/vendor/go.uber.org/multierr/go.sum +0 -11
  125. data/vendor/go.uber.org/multierr/go113.go +0 -52
  126. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  127. data/vendor/go.uber.org/zap/.gitignore +0 -32
  128. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  129. data/vendor/go.uber.org/zap/.travis.yml +0 -23
  130. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -432
  131. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  132. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -81
  133. data/vendor/go.uber.org/zap/FAQ.md +0 -156
  134. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  135. data/vendor/go.uber.org/zap/Makefile +0 -63
  136. data/vendor/go.uber.org/zap/README.md +0 -134
  137. data/vendor/go.uber.org/zap/array.go +0 -320
  138. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -123
  139. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  140. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  141. data/vendor/go.uber.org/zap/config.go +0 -264
  142. data/vendor/go.uber.org/zap/doc.go +0 -113
  143. data/vendor/go.uber.org/zap/encoder.go +0 -79
  144. data/vendor/go.uber.org/zap/error.go +0 -80
  145. data/vendor/go.uber.org/zap/field.go +0 -539
  146. data/vendor/go.uber.org/zap/flag.go +0 -39
  147. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  148. data/vendor/go.uber.org/zap/global.go +0 -168
  149. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  150. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  151. data/vendor/go.uber.org/zap/go.mod +0 -13
  152. data/vendor/go.uber.org/zap/go.sum +0 -56
  153. data/vendor/go.uber.org/zap/http_handler.go +0 -81
  154. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  155. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  156. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  157. data/vendor/go.uber.org/zap/level.go +0 -132
  158. data/vendor/go.uber.org/zap/logger.go +0 -344
  159. data/vendor/go.uber.org/zap/options.go +0 -140
  160. data/vendor/go.uber.org/zap/sink.go +0 -161
  161. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  162. data/vendor/go.uber.org/zap/sugar.go +0 -304
  163. data/vendor/go.uber.org/zap/time.go +0 -27
  164. data/vendor/go.uber.org/zap/writer.go +0 -99
  165. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  166. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  167. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  168. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  169. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  170. data/vendor/go.uber.org/zap/zapcore/error.go +0 -115
  171. data/vendor/go.uber.org/zap/zapcore/field.go +0 -227
  172. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  173. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  174. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  175. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  176. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  177. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  178. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  179. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  180. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  181. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -123
  182. data/vendor/golang.org/x/net/AUTHORS +0 -3
  183. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  184. data/vendor/golang.org/x/net/LICENSE +0 -27
  185. data/vendor/golang.org/x/net/PATENTS +0 -22
  186. data/vendor/golang.org/x/net/context/context.go +0 -56
  187. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  188. data/vendor/golang.org/x/net/context/go17.go +0 -73
  189. data/vendor/golang.org/x/net/context/go19.go +0 -21
  190. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  191. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  192. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  193. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  194. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  195. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  196. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  197. data/vendor/golang.org/x/oauth2/README.md +0 -36
  198. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  199. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  200. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  201. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  202. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  203. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  204. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  205. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  206. data/vendor/golang.org/x/oauth2/token.go +0 -178
  207. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  208. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  209. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  210. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  211. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  212. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  213. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  214. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  215. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  216. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  217. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  218. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  219. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  220. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  221. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  222. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  223. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  224. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  225. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  226. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  227. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  228. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  229. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  230. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  231. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  232. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  233. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  234. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  235. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  236. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  237. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  238. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  239. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  240. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  241. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  242. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  243. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  244. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  245. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  246. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  247. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  248. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  249. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  250. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  251. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  252. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  256. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  257. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  258. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  259. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  260. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  261. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  266. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  267. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  268. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  269. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  270. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  271. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  272. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  273. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  274. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  275. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  276. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  277. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  278. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  279. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  281. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  282. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  283. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  284. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  285. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  286. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  287. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  288. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  289. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  298. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  299. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  300. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  301. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  302. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  303. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  304. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  305. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  306. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  307. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  310. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  312. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  313. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  314. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  315. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  316. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  317. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  318. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  319. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  320. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  321. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  322. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  323. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  324. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  325. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  326. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  327. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  328. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  329. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  330. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  331. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  332. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  333. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  334. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  335. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  336. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  337. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  338. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  339. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  340. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  341. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  343. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  344. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  345. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  346. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  347. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  350. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  351. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  352. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  359. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  360. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  361. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  362. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  363. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  364. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  365. data/vendor/modules.txt +0 -79
@@ -1,319 +0,0 @@
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/encoding/protowire"
9
- "google.golang.org/protobuf/internal/encoding/messageset"
10
- "google.golang.org/protobuf/internal/order"
11
- "google.golang.org/protobuf/internal/pragma"
12
- "google.golang.org/protobuf/reflect/protoreflect"
13
- "google.golang.org/protobuf/runtime/protoiface"
14
- )
15
-
16
- // MarshalOptions configures the marshaler.
17
- //
18
- // Example usage:
19
- // b, err := MarshalOptions{Deterministic: true}.Marshal(m)
20
- type MarshalOptions struct {
21
- pragma.NoUnkeyedLiterals
22
-
23
- // AllowPartial allows messages that have missing required fields to marshal
24
- // without returning an error. If AllowPartial is false (the default),
25
- // Marshal will return an error if there are any missing required fields.
26
- AllowPartial bool
27
-
28
- // Deterministic controls whether the same message will always be
29
- // serialized to the same bytes within the same binary.
30
- //
31
- // Setting this option guarantees that repeated serialization of
32
- // the same message will return the same bytes, and that different
33
- // processes of the same binary (which may be executing on different
34
- // machines) will serialize equal messages to the same bytes.
35
- // It has no effect on the resulting size of the encoded message compared
36
- // to a non-deterministic marshal.
37
- //
38
- // Note that the deterministic serialization is NOT canonical across
39
- // languages. It is not guaranteed to remain stable over time. It is
40
- // unstable across different builds with schema changes due to unknown
41
- // fields. Users who need canonical serialization (e.g., persistent
42
- // storage in a canonical form, fingerprinting, etc.) must define
43
- // their own canonicalization specification and implement their own
44
- // serializer rather than relying on this API.
45
- //
46
- // If deterministic serialization is requested, map entries will be
47
- // sorted by keys in lexographical order. This is an implementation
48
- // detail and subject to change.
49
- Deterministic bool
50
-
51
- // UseCachedSize indicates that the result of a previous Size call
52
- // may be reused.
53
- //
54
- // Setting this option asserts that:
55
- //
56
- // 1. Size has previously been called on this message with identical
57
- // options (except for UseCachedSize itself).
58
- //
59
- // 2. The message and all its submessages have not changed in any
60
- // way since the Size call.
61
- //
62
- // If either of these invariants is violated,
63
- // the results are undefined and may include panics or corrupted output.
64
- //
65
- // Implementations MAY take this option into account to provide
66
- // better performance, but there is no guarantee that they will do so.
67
- // There is absolutely no guarantee that Size followed by Marshal with
68
- // UseCachedSize set will perform equivalently to Marshal alone.
69
- UseCachedSize bool
70
- }
71
-
72
- // Marshal returns the wire-format encoding of m.
73
- func Marshal(m Message) ([]byte, error) {
74
- // Treat nil message interface as an empty message; nothing to output.
75
- if m == nil {
76
- return nil, nil
77
- }
78
-
79
- out, err := MarshalOptions{}.marshal(nil, m.ProtoReflect())
80
- if len(out.Buf) == 0 && err == nil {
81
- out.Buf = emptyBytesForMessage(m)
82
- }
83
- return out.Buf, err
84
- }
85
-
86
- // Marshal returns the wire-format encoding of m.
87
- func (o MarshalOptions) Marshal(m Message) ([]byte, error) {
88
- // Treat nil message interface as an empty message; nothing to output.
89
- if m == nil {
90
- return nil, nil
91
- }
92
-
93
- out, err := o.marshal(nil, m.ProtoReflect())
94
- if len(out.Buf) == 0 && err == nil {
95
- out.Buf = emptyBytesForMessage(m)
96
- }
97
- return out.Buf, err
98
- }
99
-
100
- // emptyBytesForMessage returns a nil buffer if and only if m is invalid,
101
- // otherwise it returns a non-nil empty buffer.
102
- //
103
- // This is to assist the edge-case where user-code does the following:
104
- // m1.OptionalBytes, _ = proto.Marshal(m2)
105
- // where they expect the proto2 "optional_bytes" field to be populated
106
- // if any only if m2 is a valid message.
107
- func emptyBytesForMessage(m Message) []byte {
108
- if m == nil || !m.ProtoReflect().IsValid() {
109
- return nil
110
- }
111
- return emptyBuf[:]
112
- }
113
-
114
- // MarshalAppend appends the wire-format encoding of m to b,
115
- // returning the result.
116
- func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) {
117
- // Treat nil message interface as an empty message; nothing to append.
118
- if m == nil {
119
- return b, nil
120
- }
121
-
122
- out, err := o.marshal(b, m.ProtoReflect())
123
- return out.Buf, err
124
- }
125
-
126
- // MarshalState returns the wire-format encoding of a message.
127
- //
128
- // This method permits fine-grained control over the marshaler.
129
- // Most users should use Marshal instead.
130
- func (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
131
- return o.marshal(in.Buf, in.Message)
132
- }
133
-
134
- // marshal is a centralized function that all marshal operations go through.
135
- // For profiling purposes, avoid changing the name of this function or
136
- // introducing other code paths for marshal that do not go through this.
137
- func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) {
138
- allowPartial := o.AllowPartial
139
- o.AllowPartial = true
140
- if methods := protoMethods(m); methods != nil && methods.Marshal != nil &&
141
- !(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) {
142
- in := protoiface.MarshalInput{
143
- Message: m,
144
- Buf: b,
145
- }
146
- if o.Deterministic {
147
- in.Flags |= protoiface.MarshalDeterministic
148
- }
149
- if o.UseCachedSize {
150
- in.Flags |= protoiface.MarshalUseCachedSize
151
- }
152
- if methods.Size != nil {
153
- sout := methods.Size(protoiface.SizeInput{
154
- Message: m,
155
- Flags: in.Flags,
156
- })
157
- if cap(b) < len(b)+sout.Size {
158
- in.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size))
159
- copy(in.Buf, b)
160
- }
161
- in.Flags |= protoiface.MarshalUseCachedSize
162
- }
163
- out, err = methods.Marshal(in)
164
- } else {
165
- out.Buf, err = o.marshalMessageSlow(b, m)
166
- }
167
- if err != nil {
168
- return out, err
169
- }
170
- if allowPartial {
171
- return out, nil
172
- }
173
- return out, checkInitialized(m)
174
- }
175
-
176
- func (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) {
177
- out, err := o.marshal(b, m)
178
- return out.Buf, err
179
- }
180
-
181
- // growcap scales up the capacity of a slice.
182
- //
183
- // Given a slice with a current capacity of oldcap and a desired
184
- // capacity of wantcap, growcap returns a new capacity >= wantcap.
185
- //
186
- // The algorithm is mostly identical to the one used by append as of Go 1.14.
187
- func growcap(oldcap, wantcap int) (newcap int) {
188
- if wantcap > oldcap*2 {
189
- newcap = wantcap
190
- } else if oldcap < 1024 {
191
- // The Go 1.14 runtime takes this case when len(s) < 1024,
192
- // not when cap(s) < 1024. The difference doesn't seem
193
- // significant here.
194
- newcap = oldcap * 2
195
- } else {
196
- newcap = oldcap
197
- for 0 < newcap && newcap < wantcap {
198
- newcap += newcap / 4
199
- }
200
- if newcap <= 0 {
201
- newcap = wantcap
202
- }
203
- }
204
- return newcap
205
- }
206
-
207
- func (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) {
208
- if messageset.IsMessageSet(m.Descriptor()) {
209
- return o.marshalMessageSet(b, m)
210
- }
211
- fieldOrder := order.AnyFieldOrder
212
- if o.Deterministic {
213
- // TODO: This should use a more natural ordering like NumberFieldOrder,
214
- // but doing so breaks golden tests that make invalid assumption about
215
- // output stability of this implementation.
216
- fieldOrder = order.LegacyFieldOrder
217
- }
218
- var err error
219
- order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
220
- b, err = o.marshalField(b, fd, v)
221
- return err == nil
222
- })
223
- if err != nil {
224
- return b, err
225
- }
226
- b = append(b, m.GetUnknown()...)
227
- return b, nil
228
- }
229
-
230
- func (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {
231
- switch {
232
- case fd.IsList():
233
- return o.marshalList(b, fd, value.List())
234
- case fd.IsMap():
235
- return o.marshalMap(b, fd, value.Map())
236
- default:
237
- b = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()])
238
- return o.marshalSingular(b, fd, value)
239
- }
240
- }
241
-
242
- func (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) {
243
- if fd.IsPacked() && list.Len() > 0 {
244
- b = protowire.AppendTag(b, fd.Number(), protowire.BytesType)
245
- b, pos := appendSpeculativeLength(b)
246
- for i, llen := 0, list.Len(); i < llen; i++ {
247
- var err error
248
- b, err = o.marshalSingular(b, fd, list.Get(i))
249
- if err != nil {
250
- return b, err
251
- }
252
- }
253
- b = finishSpeculativeLength(b, pos)
254
- return b, nil
255
- }
256
-
257
- kind := fd.Kind()
258
- for i, llen := 0, list.Len(); i < llen; i++ {
259
- var err error
260
- b = protowire.AppendTag(b, fd.Number(), wireTypes[kind])
261
- b, err = o.marshalSingular(b, fd, list.Get(i))
262
- if err != nil {
263
- return b, err
264
- }
265
- }
266
- return b, nil
267
- }
268
-
269
- func (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) {
270
- keyf := fd.MapKey()
271
- valf := fd.MapValue()
272
- keyOrder := order.AnyKeyOrder
273
- if o.Deterministic {
274
- keyOrder = order.GenericKeyOrder
275
- }
276
- var err error
277
- order.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool {
278
- b = protowire.AppendTag(b, fd.Number(), protowire.BytesType)
279
- var pos int
280
- b, pos = appendSpeculativeLength(b)
281
-
282
- b, err = o.marshalField(b, keyf, key.Value())
283
- if err != nil {
284
- return false
285
- }
286
- b, err = o.marshalField(b, valf, value)
287
- if err != nil {
288
- return false
289
- }
290
- b = finishSpeculativeLength(b, pos)
291
- return true
292
- })
293
- return b, err
294
- }
295
-
296
- // When encoding length-prefixed fields, we speculatively set aside some number of bytes
297
- // for the length, encode the data, and then encode the length (shifting the data if necessary
298
- // to make room).
299
- const speculativeLength = 1
300
-
301
- func appendSpeculativeLength(b []byte) ([]byte, int) {
302
- pos := len(b)
303
- b = append(b, "\x00\x00\x00\x00"[:speculativeLength]...)
304
- return b, pos
305
- }
306
-
307
- func finishSpeculativeLength(b []byte, pos int) []byte {
308
- mlen := len(b) - pos - speculativeLength
309
- msiz := protowire.SizeVarint(uint64(mlen))
310
- if msiz != speculativeLength {
311
- for i := 0; i < msiz-speculativeLength; i++ {
312
- b = append(b, 0)
313
- }
314
- copy(b[pos+msiz:], b[pos+speculativeLength:])
315
- b = b[:pos+msiz+mlen]
316
- }
317
- protowire.AppendVarint(b[:pos], uint64(mlen))
318
- return b
319
- }
@@ -1,97 +0,0 @@
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
- // Code generated by generate-types. DO NOT EDIT.
6
-
7
- package proto
8
-
9
- import (
10
- "math"
11
- "unicode/utf8"
12
-
13
- "google.golang.org/protobuf/encoding/protowire"
14
- "google.golang.org/protobuf/internal/errors"
15
- "google.golang.org/protobuf/internal/strs"
16
- "google.golang.org/protobuf/reflect/protoreflect"
17
- )
18
-
19
- var wireTypes = map[protoreflect.Kind]protowire.Type{
20
- protoreflect.BoolKind: protowire.VarintType,
21
- protoreflect.EnumKind: protowire.VarintType,
22
- protoreflect.Int32Kind: protowire.VarintType,
23
- protoreflect.Sint32Kind: protowire.VarintType,
24
- protoreflect.Uint32Kind: protowire.VarintType,
25
- protoreflect.Int64Kind: protowire.VarintType,
26
- protoreflect.Sint64Kind: protowire.VarintType,
27
- protoreflect.Uint64Kind: protowire.VarintType,
28
- protoreflect.Sfixed32Kind: protowire.Fixed32Type,
29
- protoreflect.Fixed32Kind: protowire.Fixed32Type,
30
- protoreflect.FloatKind: protowire.Fixed32Type,
31
- protoreflect.Sfixed64Kind: protowire.Fixed64Type,
32
- protoreflect.Fixed64Kind: protowire.Fixed64Type,
33
- protoreflect.DoubleKind: protowire.Fixed64Type,
34
- protoreflect.StringKind: protowire.BytesType,
35
- protoreflect.BytesKind: protowire.BytesType,
36
- protoreflect.MessageKind: protowire.BytesType,
37
- protoreflect.GroupKind: protowire.StartGroupType,
38
- }
39
-
40
- func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {
41
- switch fd.Kind() {
42
- case protoreflect.BoolKind:
43
- b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
44
- case protoreflect.EnumKind:
45
- b = protowire.AppendVarint(b, uint64(v.Enum()))
46
- case protoreflect.Int32Kind:
47
- b = protowire.AppendVarint(b, uint64(int32(v.Int())))
48
- case protoreflect.Sint32Kind:
49
- b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
50
- case protoreflect.Uint32Kind:
51
- b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
52
- case protoreflect.Int64Kind:
53
- b = protowire.AppendVarint(b, uint64(v.Int()))
54
- case protoreflect.Sint64Kind:
55
- b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
56
- case protoreflect.Uint64Kind:
57
- b = protowire.AppendVarint(b, v.Uint())
58
- case protoreflect.Sfixed32Kind:
59
- b = protowire.AppendFixed32(b, uint32(v.Int()))
60
- case protoreflect.Fixed32Kind:
61
- b = protowire.AppendFixed32(b, uint32(v.Uint()))
62
- case protoreflect.FloatKind:
63
- b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
64
- case protoreflect.Sfixed64Kind:
65
- b = protowire.AppendFixed64(b, uint64(v.Int()))
66
- case protoreflect.Fixed64Kind:
67
- b = protowire.AppendFixed64(b, v.Uint())
68
- case protoreflect.DoubleKind:
69
- b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
70
- case protoreflect.StringKind:
71
- if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {
72
- return b, errors.InvalidUTF8(string(fd.FullName()))
73
- }
74
- b = protowire.AppendString(b, v.String())
75
- case protoreflect.BytesKind:
76
- b = protowire.AppendBytes(b, v.Bytes())
77
- case protoreflect.MessageKind:
78
- var pos int
79
- var err error
80
- b, pos = appendSpeculativeLength(b)
81
- b, err = o.marshalMessage(b, v.Message())
82
- if err != nil {
83
- return b, err
84
- }
85
- b = finishSpeculativeLength(b, pos)
86
- case protoreflect.GroupKind:
87
- var err error
88
- b, err = o.marshalMessage(b, v.Message())
89
- if err != nil {
90
- return b, err
91
- }
92
- b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))
93
- default:
94
- return b, errors.New("invalid kind %v", fd.Kind())
95
- }
96
- return b, nil
97
- }
@@ -1,167 +0,0 @@
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
- "bytes"
9
- "math"
10
- "reflect"
11
-
12
- "google.golang.org/protobuf/encoding/protowire"
13
- pref "google.golang.org/protobuf/reflect/protoreflect"
14
- )
15
-
16
- // Equal reports whether two messages are equal.
17
- // If two messages marshal to the same bytes under deterministic serialization,
18
- // then Equal is guaranteed to report true.
19
- //
20
- // Two messages are equal if they belong to the same message descriptor,
21
- // have the same set of populated known and extension field values,
22
- // and the same set of unknown fields values. If either of the top-level
23
- // messages are invalid, then Equal reports true only if both are invalid.
24
- //
25
- // Scalar values are compared with the equivalent of the == operator in Go,
26
- // except bytes values which are compared using bytes.Equal and
27
- // floating point values which specially treat NaNs as equal.
28
- // Message values are compared by recursively calling Equal.
29
- // Lists are equal if each element value is also equal.
30
- // Maps are equal if they have the same set of keys, where the pair of values
31
- // for each key is also equal.
32
- func Equal(x, y Message) bool {
33
- if x == nil || y == nil {
34
- return x == nil && y == nil
35
- }
36
- mx := x.ProtoReflect()
37
- my := y.ProtoReflect()
38
- if mx.IsValid() != my.IsValid() {
39
- return false
40
- }
41
- return equalMessage(mx, my)
42
- }
43
-
44
- // equalMessage compares two messages.
45
- func equalMessage(mx, my pref.Message) bool {
46
- if mx.Descriptor() != my.Descriptor() {
47
- return false
48
- }
49
-
50
- nx := 0
51
- equal := true
52
- mx.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool {
53
- nx++
54
- vy := my.Get(fd)
55
- equal = my.Has(fd) && equalField(fd, vx, vy)
56
- return equal
57
- })
58
- if !equal {
59
- return false
60
- }
61
- ny := 0
62
- my.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool {
63
- ny++
64
- return true
65
- })
66
- if nx != ny {
67
- return false
68
- }
69
-
70
- return equalUnknown(mx.GetUnknown(), my.GetUnknown())
71
- }
72
-
73
- // equalField compares two fields.
74
- func equalField(fd pref.FieldDescriptor, x, y pref.Value) bool {
75
- switch {
76
- case fd.IsList():
77
- return equalList(fd, x.List(), y.List())
78
- case fd.IsMap():
79
- return equalMap(fd, x.Map(), y.Map())
80
- default:
81
- return equalValue(fd, x, y)
82
- }
83
- }
84
-
85
- // equalMap compares two maps.
86
- func equalMap(fd pref.FieldDescriptor, x, y pref.Map) bool {
87
- if x.Len() != y.Len() {
88
- return false
89
- }
90
- equal := true
91
- x.Range(func(k pref.MapKey, vx pref.Value) bool {
92
- vy := y.Get(k)
93
- equal = y.Has(k) && equalValue(fd.MapValue(), vx, vy)
94
- return equal
95
- })
96
- return equal
97
- }
98
-
99
- // equalList compares two lists.
100
- func equalList(fd pref.FieldDescriptor, x, y pref.List) bool {
101
- if x.Len() != y.Len() {
102
- return false
103
- }
104
- for i := x.Len() - 1; i >= 0; i-- {
105
- if !equalValue(fd, x.Get(i), y.Get(i)) {
106
- return false
107
- }
108
- }
109
- return true
110
- }
111
-
112
- // equalValue compares two singular values.
113
- func equalValue(fd pref.FieldDescriptor, x, y pref.Value) bool {
114
- switch fd.Kind() {
115
- case pref.BoolKind:
116
- return x.Bool() == y.Bool()
117
- case pref.EnumKind:
118
- return x.Enum() == y.Enum()
119
- case pref.Int32Kind, pref.Sint32Kind,
120
- pref.Int64Kind, pref.Sint64Kind,
121
- pref.Sfixed32Kind, pref.Sfixed64Kind:
122
- return x.Int() == y.Int()
123
- case pref.Uint32Kind, pref.Uint64Kind,
124
- pref.Fixed32Kind, pref.Fixed64Kind:
125
- return x.Uint() == y.Uint()
126
- case pref.FloatKind, pref.DoubleKind:
127
- fx := x.Float()
128
- fy := y.Float()
129
- if math.IsNaN(fx) || math.IsNaN(fy) {
130
- return math.IsNaN(fx) && math.IsNaN(fy)
131
- }
132
- return fx == fy
133
- case pref.StringKind:
134
- return x.String() == y.String()
135
- case pref.BytesKind:
136
- return bytes.Equal(x.Bytes(), y.Bytes())
137
- case pref.MessageKind, pref.GroupKind:
138
- return equalMessage(x.Message(), y.Message())
139
- default:
140
- return x.Interface() == y.Interface()
141
- }
142
- }
143
-
144
- // equalUnknown compares unknown fields by direct comparison on the raw bytes
145
- // of each individual field number.
146
- func equalUnknown(x, y pref.RawFields) bool {
147
- if len(x) != len(y) {
148
- return false
149
- }
150
- if bytes.Equal([]byte(x), []byte(y)) {
151
- return true
152
- }
153
-
154
- mx := make(map[pref.FieldNumber]pref.RawFields)
155
- my := make(map[pref.FieldNumber]pref.RawFields)
156
- for len(x) > 0 {
157
- fnum, _, n := protowire.ConsumeField(x)
158
- mx[fnum] = append(mx[fnum], x[:n]...)
159
- x = x[n:]
160
- }
161
- for len(y) > 0 {
162
- fnum, _, n := protowire.ConsumeField(y)
163
- my[fnum] = append(my[fnum], y[:n]...)
164
- y = y[n:]
165
- }
166
- return reflect.DeepEqual(mx, my)
167
- }
@@ -1,92 +0,0 @@
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/reflect/protoreflect"
9
- )
10
-
11
- // HasExtension reports whether an extension field is populated.
12
- // It returns false if m is invalid or if xt does not extend m.
13
- func HasExtension(m Message, xt protoreflect.ExtensionType) bool {
14
- // Treat nil message interface as an empty message; no populated fields.
15
- if m == nil {
16
- return false
17
- }
18
-
19
- // As a special-case, we reports invalid or mismatching descriptors
20
- // as always not being populated (since they aren't).
21
- if xt == nil || m.ProtoReflect().Descriptor() != xt.TypeDescriptor().ContainingMessage() {
22
- return false
23
- }
24
-
25
- return m.ProtoReflect().Has(xt.TypeDescriptor())
26
- }
27
-
28
- // ClearExtension clears an extension field such that subsequent
29
- // HasExtension calls return false.
30
- // It panics if m is invalid or if xt does not extend m.
31
- func ClearExtension(m Message, xt protoreflect.ExtensionType) {
32
- m.ProtoReflect().Clear(xt.TypeDescriptor())
33
- }
34
-
35
- // GetExtension retrieves the value for an extension field.
36
- // If the field is unpopulated, it returns the default value for
37
- // scalars and an immutable, empty value for lists or messages.
38
- // It panics if xt does not extend m.
39
- func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} {
40
- // Treat nil message interface as an empty message; return the default.
41
- if m == nil {
42
- return xt.InterfaceOf(xt.Zero())
43
- }
44
-
45
- return xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor()))
46
- }
47
-
48
- // SetExtension stores the value of an extension field.
49
- // It panics if m is invalid, xt does not extend m, or if type of v
50
- // is invalid for the specified extension field.
51
- func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) {
52
- xd := xt.TypeDescriptor()
53
- pv := xt.ValueOf(v)
54
-
55
- // Specially treat an invalid list, map, or message as clear.
56
- isValid := true
57
- switch {
58
- case xd.IsList():
59
- isValid = pv.List().IsValid()
60
- case xd.IsMap():
61
- isValid = pv.Map().IsValid()
62
- case xd.Message() != nil:
63
- isValid = pv.Message().IsValid()
64
- }
65
- if !isValid {
66
- m.ProtoReflect().Clear(xd)
67
- return
68
- }
69
-
70
- m.ProtoReflect().Set(xd, pv)
71
- }
72
-
73
- // RangeExtensions iterates over every populated extension field in m in an
74
- // undefined order, calling f for each extension type and value encountered.
75
- // It returns immediately if f returns false.
76
- // While iterating, mutating operations may only be performed
77
- // on the current extension field.
78
- func RangeExtensions(m Message, f func(protoreflect.ExtensionType, interface{}) bool) {
79
- // Treat nil message interface as an empty message; nothing to range over.
80
- if m == nil {
81
- return
82
- }
83
-
84
- m.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
85
- if fd.IsExtension() {
86
- xt := fd.(protoreflect.ExtensionTypeDescriptor).Type()
87
- vi := xt.InterfaceOf(v)
88
- return f(xt, vi)
89
- }
90
- return true
91
- })
92
- }