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