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,576 +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 impl
6
-
7
- import (
8
- "fmt"
9
- "math"
10
- "math/bits"
11
- "reflect"
12
- "unicode/utf8"
13
-
14
- "google.golang.org/protobuf/encoding/protowire"
15
- "google.golang.org/protobuf/internal/encoding/messageset"
16
- "google.golang.org/protobuf/internal/flags"
17
- "google.golang.org/protobuf/internal/genid"
18
- "google.golang.org/protobuf/internal/strs"
19
- pref "google.golang.org/protobuf/reflect/protoreflect"
20
- preg "google.golang.org/protobuf/reflect/protoregistry"
21
- piface "google.golang.org/protobuf/runtime/protoiface"
22
- )
23
-
24
- // ValidationStatus is the result of validating the wire-format encoding of a message.
25
- type ValidationStatus int
26
-
27
- const (
28
- // ValidationUnknown indicates that unmarshaling the message might succeed or fail.
29
- // The validator was unable to render a judgement.
30
- //
31
- // The only causes of this status are an aberrant message type appearing somewhere
32
- // in the message or a failure in the extension resolver.
33
- ValidationUnknown ValidationStatus = iota + 1
34
-
35
- // ValidationInvalid indicates that unmarshaling the message will fail.
36
- ValidationInvalid
37
-
38
- // ValidationValid indicates that unmarshaling the message will succeed.
39
- ValidationValid
40
- )
41
-
42
- func (v ValidationStatus) String() string {
43
- switch v {
44
- case ValidationUnknown:
45
- return "ValidationUnknown"
46
- case ValidationInvalid:
47
- return "ValidationInvalid"
48
- case ValidationValid:
49
- return "ValidationValid"
50
- default:
51
- return fmt.Sprintf("ValidationStatus(%d)", int(v))
52
- }
53
- }
54
-
55
- // Validate determines whether the contents of the buffer are a valid wire encoding
56
- // of the message type.
57
- //
58
- // This function is exposed for testing.
59
- func Validate(mt pref.MessageType, in piface.UnmarshalInput) (out piface.UnmarshalOutput, _ ValidationStatus) {
60
- mi, ok := mt.(*MessageInfo)
61
- if !ok {
62
- return out, ValidationUnknown
63
- }
64
- if in.Resolver == nil {
65
- in.Resolver = preg.GlobalTypes
66
- }
67
- o, st := mi.validate(in.Buf, 0, unmarshalOptions{
68
- flags: in.Flags,
69
- resolver: in.Resolver,
70
- })
71
- if o.initialized {
72
- out.Flags |= piface.UnmarshalInitialized
73
- }
74
- return out, st
75
- }
76
-
77
- type validationInfo struct {
78
- mi *MessageInfo
79
- typ validationType
80
- keyType, valType validationType
81
-
82
- // For non-required fields, requiredBit is 0.
83
- //
84
- // For required fields, requiredBit's nth bit is set, where n is a
85
- // unique index in the range [0, MessageInfo.numRequiredFields).
86
- //
87
- // If there are more than 64 required fields, requiredBit is 0.
88
- requiredBit uint64
89
- }
90
-
91
- type validationType uint8
92
-
93
- const (
94
- validationTypeOther validationType = iota
95
- validationTypeMessage
96
- validationTypeGroup
97
- validationTypeMap
98
- validationTypeRepeatedVarint
99
- validationTypeRepeatedFixed32
100
- validationTypeRepeatedFixed64
101
- validationTypeVarint
102
- validationTypeFixed32
103
- validationTypeFixed64
104
- validationTypeBytes
105
- validationTypeUTF8String
106
- validationTypeMessageSetItem
107
- )
108
-
109
- func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd pref.FieldDescriptor, ft reflect.Type) validationInfo {
110
- var vi validationInfo
111
- switch {
112
- case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
113
- switch fd.Kind() {
114
- case pref.MessageKind:
115
- vi.typ = validationTypeMessage
116
- if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {
117
- vi.mi = getMessageInfo(ot.Field(0).Type)
118
- }
119
- case pref.GroupKind:
120
- vi.typ = validationTypeGroup
121
- if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {
122
- vi.mi = getMessageInfo(ot.Field(0).Type)
123
- }
124
- case pref.StringKind:
125
- if strs.EnforceUTF8(fd) {
126
- vi.typ = validationTypeUTF8String
127
- }
128
- }
129
- default:
130
- vi = newValidationInfo(fd, ft)
131
- }
132
- if fd.Cardinality() == pref.Required {
133
- // Avoid overflow. The required field check is done with a 64-bit mask, with
134
- // any message containing more than 64 required fields always reported as
135
- // potentially uninitialized, so it is not important to get a precise count
136
- // of the required fields past 64.
137
- if mi.numRequiredFields < math.MaxUint8 {
138
- mi.numRequiredFields++
139
- vi.requiredBit = 1 << (mi.numRequiredFields - 1)
140
- }
141
- }
142
- return vi
143
- }
144
-
145
- func newValidationInfo(fd pref.FieldDescriptor, ft reflect.Type) validationInfo {
146
- var vi validationInfo
147
- switch {
148
- case fd.IsList():
149
- switch fd.Kind() {
150
- case pref.MessageKind:
151
- vi.typ = validationTypeMessage
152
- if ft.Kind() == reflect.Slice {
153
- vi.mi = getMessageInfo(ft.Elem())
154
- }
155
- case pref.GroupKind:
156
- vi.typ = validationTypeGroup
157
- if ft.Kind() == reflect.Slice {
158
- vi.mi = getMessageInfo(ft.Elem())
159
- }
160
- case pref.StringKind:
161
- vi.typ = validationTypeBytes
162
- if strs.EnforceUTF8(fd) {
163
- vi.typ = validationTypeUTF8String
164
- }
165
- default:
166
- switch wireTypes[fd.Kind()] {
167
- case protowire.VarintType:
168
- vi.typ = validationTypeRepeatedVarint
169
- case protowire.Fixed32Type:
170
- vi.typ = validationTypeRepeatedFixed32
171
- case protowire.Fixed64Type:
172
- vi.typ = validationTypeRepeatedFixed64
173
- }
174
- }
175
- case fd.IsMap():
176
- vi.typ = validationTypeMap
177
- switch fd.MapKey().Kind() {
178
- case pref.StringKind:
179
- if strs.EnforceUTF8(fd) {
180
- vi.keyType = validationTypeUTF8String
181
- }
182
- }
183
- switch fd.MapValue().Kind() {
184
- case pref.MessageKind:
185
- vi.valType = validationTypeMessage
186
- if ft.Kind() == reflect.Map {
187
- vi.mi = getMessageInfo(ft.Elem())
188
- }
189
- case pref.StringKind:
190
- if strs.EnforceUTF8(fd) {
191
- vi.valType = validationTypeUTF8String
192
- }
193
- }
194
- default:
195
- switch fd.Kind() {
196
- case pref.MessageKind:
197
- vi.typ = validationTypeMessage
198
- if !fd.IsWeak() {
199
- vi.mi = getMessageInfo(ft)
200
- }
201
- case pref.GroupKind:
202
- vi.typ = validationTypeGroup
203
- vi.mi = getMessageInfo(ft)
204
- case pref.StringKind:
205
- vi.typ = validationTypeBytes
206
- if strs.EnforceUTF8(fd) {
207
- vi.typ = validationTypeUTF8String
208
- }
209
- default:
210
- switch wireTypes[fd.Kind()] {
211
- case protowire.VarintType:
212
- vi.typ = validationTypeVarint
213
- case protowire.Fixed32Type:
214
- vi.typ = validationTypeFixed32
215
- case protowire.Fixed64Type:
216
- vi.typ = validationTypeFixed64
217
- case protowire.BytesType:
218
- vi.typ = validationTypeBytes
219
- }
220
- }
221
- }
222
- return vi
223
- }
224
-
225
- func (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) {
226
- mi.init()
227
- type validationState struct {
228
- typ validationType
229
- keyType, valType validationType
230
- endGroup protowire.Number
231
- mi *MessageInfo
232
- tail []byte
233
- requiredMask uint64
234
- }
235
-
236
- // Pre-allocate some slots to avoid repeated slice reallocation.
237
- states := make([]validationState, 0, 16)
238
- states = append(states, validationState{
239
- typ: validationTypeMessage,
240
- mi: mi,
241
- })
242
- if groupTag > 0 {
243
- states[0].typ = validationTypeGroup
244
- states[0].endGroup = groupTag
245
- }
246
- initialized := true
247
- start := len(b)
248
- State:
249
- for len(states) > 0 {
250
- st := &states[len(states)-1]
251
- for len(b) > 0 {
252
- // Parse the tag (field number and wire type).
253
- var tag uint64
254
- if b[0] < 0x80 {
255
- tag = uint64(b[0])
256
- b = b[1:]
257
- } else if len(b) >= 2 && b[1] < 128 {
258
- tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
259
- b = b[2:]
260
- } else {
261
- var n int
262
- tag, n = protowire.ConsumeVarint(b)
263
- if n < 0 {
264
- return out, ValidationInvalid
265
- }
266
- b = b[n:]
267
- }
268
- var num protowire.Number
269
- if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
270
- return out, ValidationInvalid
271
- } else {
272
- num = protowire.Number(n)
273
- }
274
- wtyp := protowire.Type(tag & 7)
275
-
276
- if wtyp == protowire.EndGroupType {
277
- if st.endGroup == num {
278
- goto PopState
279
- }
280
- return out, ValidationInvalid
281
- }
282
- var vi validationInfo
283
- switch {
284
- case st.typ == validationTypeMap:
285
- switch num {
286
- case genid.MapEntry_Key_field_number:
287
- vi.typ = st.keyType
288
- case genid.MapEntry_Value_field_number:
289
- vi.typ = st.valType
290
- vi.mi = st.mi
291
- vi.requiredBit = 1
292
- }
293
- case flags.ProtoLegacy && st.mi.isMessageSet:
294
- switch num {
295
- case messageset.FieldItem:
296
- vi.typ = validationTypeMessageSetItem
297
- }
298
- default:
299
- var f *coderFieldInfo
300
- if int(num) < len(st.mi.denseCoderFields) {
301
- f = st.mi.denseCoderFields[num]
302
- } else {
303
- f = st.mi.coderFields[num]
304
- }
305
- if f != nil {
306
- vi = f.validation
307
- if vi.typ == validationTypeMessage && vi.mi == nil {
308
- // Probable weak field.
309
- //
310
- // TODO: Consider storing the results of this lookup somewhere
311
- // rather than recomputing it on every validation.
312
- fd := st.mi.Desc.Fields().ByNumber(num)
313
- if fd == nil || !fd.IsWeak() {
314
- break
315
- }
316
- messageName := fd.Message().FullName()
317
- messageType, err := preg.GlobalTypes.FindMessageByName(messageName)
318
- switch err {
319
- case nil:
320
- vi.mi, _ = messageType.(*MessageInfo)
321
- case preg.NotFound:
322
- vi.typ = validationTypeBytes
323
- default:
324
- return out, ValidationUnknown
325
- }
326
- }
327
- break
328
- }
329
- // Possible extension field.
330
- //
331
- // TODO: We should return ValidationUnknown when:
332
- // 1. The resolver is not frozen. (More extensions may be added to it.)
333
- // 2. The resolver returns preg.NotFound.
334
- // In this case, a type added to the resolver in the future could cause
335
- // unmarshaling to begin failing. Supporting this requires some way to
336
- // determine if the resolver is frozen.
337
- xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num)
338
- if err != nil && err != preg.NotFound {
339
- return out, ValidationUnknown
340
- }
341
- if err == nil {
342
- vi = getExtensionFieldInfo(xt).validation
343
- }
344
- }
345
- if vi.requiredBit != 0 {
346
- // Check that the field has a compatible wire type.
347
- // We only need to consider non-repeated field types,
348
- // since repeated fields (and maps) can never be required.
349
- ok := false
350
- switch vi.typ {
351
- case validationTypeVarint:
352
- ok = wtyp == protowire.VarintType
353
- case validationTypeFixed32:
354
- ok = wtyp == protowire.Fixed32Type
355
- case validationTypeFixed64:
356
- ok = wtyp == protowire.Fixed64Type
357
- case validationTypeBytes, validationTypeUTF8String, validationTypeMessage:
358
- ok = wtyp == protowire.BytesType
359
- case validationTypeGroup:
360
- ok = wtyp == protowire.StartGroupType
361
- }
362
- if ok {
363
- st.requiredMask |= vi.requiredBit
364
- }
365
- }
366
-
367
- switch wtyp {
368
- case protowire.VarintType:
369
- if len(b) >= 10 {
370
- switch {
371
- case b[0] < 0x80:
372
- b = b[1:]
373
- case b[1] < 0x80:
374
- b = b[2:]
375
- case b[2] < 0x80:
376
- b = b[3:]
377
- case b[3] < 0x80:
378
- b = b[4:]
379
- case b[4] < 0x80:
380
- b = b[5:]
381
- case b[5] < 0x80:
382
- b = b[6:]
383
- case b[6] < 0x80:
384
- b = b[7:]
385
- case b[7] < 0x80:
386
- b = b[8:]
387
- case b[8] < 0x80:
388
- b = b[9:]
389
- case b[9] < 0x80 && b[9] < 2:
390
- b = b[10:]
391
- default:
392
- return out, ValidationInvalid
393
- }
394
- } else {
395
- switch {
396
- case len(b) > 0 && b[0] < 0x80:
397
- b = b[1:]
398
- case len(b) > 1 && b[1] < 0x80:
399
- b = b[2:]
400
- case len(b) > 2 && b[2] < 0x80:
401
- b = b[3:]
402
- case len(b) > 3 && b[3] < 0x80:
403
- b = b[4:]
404
- case len(b) > 4 && b[4] < 0x80:
405
- b = b[5:]
406
- case len(b) > 5 && b[5] < 0x80:
407
- b = b[6:]
408
- case len(b) > 6 && b[6] < 0x80:
409
- b = b[7:]
410
- case len(b) > 7 && b[7] < 0x80:
411
- b = b[8:]
412
- case len(b) > 8 && b[8] < 0x80:
413
- b = b[9:]
414
- case len(b) > 9 && b[9] < 2:
415
- b = b[10:]
416
- default:
417
- return out, ValidationInvalid
418
- }
419
- }
420
- continue State
421
- case protowire.BytesType:
422
- var size uint64
423
- if len(b) >= 1 && b[0] < 0x80 {
424
- size = uint64(b[0])
425
- b = b[1:]
426
- } else if len(b) >= 2 && b[1] < 128 {
427
- size = uint64(b[0]&0x7f) + uint64(b[1])<<7
428
- b = b[2:]
429
- } else {
430
- var n int
431
- size, n = protowire.ConsumeVarint(b)
432
- if n < 0 {
433
- return out, ValidationInvalid
434
- }
435
- b = b[n:]
436
- }
437
- if size > uint64(len(b)) {
438
- return out, ValidationInvalid
439
- }
440
- v := b[:size]
441
- b = b[size:]
442
- switch vi.typ {
443
- case validationTypeMessage:
444
- if vi.mi == nil {
445
- return out, ValidationUnknown
446
- }
447
- vi.mi.init()
448
- fallthrough
449
- case validationTypeMap:
450
- if vi.mi != nil {
451
- vi.mi.init()
452
- }
453
- states = append(states, validationState{
454
- typ: vi.typ,
455
- keyType: vi.keyType,
456
- valType: vi.valType,
457
- mi: vi.mi,
458
- tail: b,
459
- })
460
- b = v
461
- continue State
462
- case validationTypeRepeatedVarint:
463
- // Packed field.
464
- for len(v) > 0 {
465
- _, n := protowire.ConsumeVarint(v)
466
- if n < 0 {
467
- return out, ValidationInvalid
468
- }
469
- v = v[n:]
470
- }
471
- case validationTypeRepeatedFixed32:
472
- // Packed field.
473
- if len(v)%4 != 0 {
474
- return out, ValidationInvalid
475
- }
476
- case validationTypeRepeatedFixed64:
477
- // Packed field.
478
- if len(v)%8 != 0 {
479
- return out, ValidationInvalid
480
- }
481
- case validationTypeUTF8String:
482
- if !utf8.Valid(v) {
483
- return out, ValidationInvalid
484
- }
485
- }
486
- case protowire.Fixed32Type:
487
- if len(b) < 4 {
488
- return out, ValidationInvalid
489
- }
490
- b = b[4:]
491
- case protowire.Fixed64Type:
492
- if len(b) < 8 {
493
- return out, ValidationInvalid
494
- }
495
- b = b[8:]
496
- case protowire.StartGroupType:
497
- switch {
498
- case vi.typ == validationTypeGroup:
499
- if vi.mi == nil {
500
- return out, ValidationUnknown
501
- }
502
- vi.mi.init()
503
- states = append(states, validationState{
504
- typ: validationTypeGroup,
505
- mi: vi.mi,
506
- endGroup: num,
507
- })
508
- continue State
509
- case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:
510
- typeid, v, n, err := messageset.ConsumeFieldValue(b, false)
511
- if err != nil {
512
- return out, ValidationInvalid
513
- }
514
- xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid)
515
- switch {
516
- case err == preg.NotFound:
517
- b = b[n:]
518
- case err != nil:
519
- return out, ValidationUnknown
520
- default:
521
- xvi := getExtensionFieldInfo(xt).validation
522
- if xvi.mi != nil {
523
- xvi.mi.init()
524
- }
525
- states = append(states, validationState{
526
- typ: xvi.typ,
527
- mi: xvi.mi,
528
- tail: b[n:],
529
- })
530
- b = v
531
- continue State
532
- }
533
- default:
534
- n := protowire.ConsumeFieldValue(num, wtyp, b)
535
- if n < 0 {
536
- return out, ValidationInvalid
537
- }
538
- b = b[n:]
539
- }
540
- default:
541
- return out, ValidationInvalid
542
- }
543
- }
544
- if st.endGroup != 0 {
545
- return out, ValidationInvalid
546
- }
547
- if len(b) != 0 {
548
- return out, ValidationInvalid
549
- }
550
- b = st.tail
551
- PopState:
552
- numRequiredFields := 0
553
- switch st.typ {
554
- case validationTypeMessage, validationTypeGroup:
555
- numRequiredFields = int(st.mi.numRequiredFields)
556
- case validationTypeMap:
557
- // If this is a map field with a message value that contains
558
- // required fields, require that the value be present.
559
- if st.mi != nil && st.mi.numRequiredFields > 0 {
560
- numRequiredFields = 1
561
- }
562
- }
563
- // If there are more than 64 required fields, this check will
564
- // always fail and we will report that the message is potentially
565
- // uninitialized.
566
- if numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields {
567
- initialized = false
568
- }
569
- states = states[:len(states)-1]
570
- }
571
- out.n = start - len(b)
572
- if initialized {
573
- out.initialized = true
574
- }
575
- return out, ValidationValid
576
- }
@@ -1,74 +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 impl
6
-
7
- import (
8
- "fmt"
9
-
10
- pref "google.golang.org/protobuf/reflect/protoreflect"
11
- "google.golang.org/protobuf/reflect/protoregistry"
12
- )
13
-
14
- // weakFields adds methods to the exported WeakFields type for internal use.
15
- //
16
- // The exported type is an alias to an unnamed type, so methods can't be
17
- // defined directly on it.
18
- type weakFields WeakFields
19
-
20
- func (w weakFields) get(num pref.FieldNumber) (pref.ProtoMessage, bool) {
21
- m, ok := w[int32(num)]
22
- return m, ok
23
- }
24
-
25
- func (w *weakFields) set(num pref.FieldNumber, m pref.ProtoMessage) {
26
- if *w == nil {
27
- *w = make(weakFields)
28
- }
29
- (*w)[int32(num)] = m
30
- }
31
-
32
- func (w *weakFields) clear(num pref.FieldNumber) {
33
- delete(*w, int32(num))
34
- }
35
-
36
- func (Export) HasWeak(w WeakFields, num pref.FieldNumber) bool {
37
- _, ok := w[int32(num)]
38
- return ok
39
- }
40
-
41
- func (Export) ClearWeak(w *WeakFields, num pref.FieldNumber) {
42
- delete(*w, int32(num))
43
- }
44
-
45
- func (Export) GetWeak(w WeakFields, num pref.FieldNumber, name pref.FullName) pref.ProtoMessage {
46
- if m, ok := w[int32(num)]; ok {
47
- return m
48
- }
49
- mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
50
- if mt == nil {
51
- panic(fmt.Sprintf("message %v for weak field is not linked in", name))
52
- }
53
- return mt.Zero().Interface()
54
- }
55
-
56
- func (Export) SetWeak(w *WeakFields, num pref.FieldNumber, name pref.FullName, m pref.ProtoMessage) {
57
- if m != nil {
58
- mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
59
- if mt == nil {
60
- panic(fmt.Sprintf("message %v for weak field is not linked in", name))
61
- }
62
- if mt != m.ProtoReflect().Type() {
63
- panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface()))
64
- }
65
- }
66
- if m == nil || !m.ProtoReflect().IsValid() {
67
- delete(*w, int32(num))
68
- return
69
- }
70
- if *w == nil {
71
- *w = make(weakFields)
72
- }
73
- (*w)[int32(num)] = m
74
- }