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,81 +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
- package impl
6
-
7
- import (
8
- "bytes"
9
- "compress/gzip"
10
- "io/ioutil"
11
- "sync"
12
-
13
- "google.golang.org/protobuf/internal/filedesc"
14
- "google.golang.org/protobuf/reflect/protoreflect"
15
- "google.golang.org/protobuf/reflect/protoregistry"
16
- )
17
-
18
- // Every enum and message type generated by protoc-gen-go since commit 2fc053c5
19
- // on February 25th, 2016 has had a method to get the raw descriptor.
20
- // Types that were not generated by protoc-gen-go or were generated prior
21
- // to that version are not supported.
22
- //
23
- // The []byte returned is the encoded form of a FileDescriptorProto message
24
- // compressed using GZIP. The []int is the path from the top-level file
25
- // to the specific message or enum declaration.
26
- type (
27
- enumV1 interface {
28
- EnumDescriptor() ([]byte, []int)
29
- }
30
- messageV1 interface {
31
- Descriptor() ([]byte, []int)
32
- }
33
- )
34
-
35
- var legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor
36
-
37
- // legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message.
38
- //
39
- // This assumes that b is immutable and that b does not refer to part of a
40
- // concatenated series of GZIP files (which would require shenanigans that
41
- // rely on the concatenation properties of both protobufs and GZIP).
42
- // File descriptors generated by protoc-gen-go do not rely on that property.
43
- func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor {
44
- // Fast-path: check whether we already have a cached file descriptor.
45
- if fd, ok := legacyFileDescCache.Load(&b[0]); ok {
46
- return fd.(protoreflect.FileDescriptor)
47
- }
48
-
49
- // Slow-path: decompress and unmarshal the file descriptor proto.
50
- zr, err := gzip.NewReader(bytes.NewReader(b))
51
- if err != nil {
52
- panic(err)
53
- }
54
- b2, err := ioutil.ReadAll(zr)
55
- if err != nil {
56
- panic(err)
57
- }
58
-
59
- fd := filedesc.Builder{
60
- RawDescriptor: b2,
61
- FileRegistry: resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry
62
- }.Build().File
63
- if fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok {
64
- return fd.(protoreflect.FileDescriptor)
65
- }
66
- return fd
67
- }
68
-
69
- type resolverOnly struct {
70
- reg *protoregistry.Files
71
- }
72
-
73
- func (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {
74
- return r.reg.FindFileByPath(path)
75
- }
76
- func (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {
77
- return r.reg.FindDescriptorByName(name)
78
- }
79
- func (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error {
80
- return nil
81
- }
@@ -1,558 +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
- package impl
6
-
7
- import (
8
- "fmt"
9
- "reflect"
10
- "strings"
11
- "sync"
12
-
13
- "google.golang.org/protobuf/internal/descopts"
14
- ptag "google.golang.org/protobuf/internal/encoding/tag"
15
- "google.golang.org/protobuf/internal/errors"
16
- "google.golang.org/protobuf/internal/filedesc"
17
- "google.golang.org/protobuf/internal/strs"
18
- "google.golang.org/protobuf/reflect/protoreflect"
19
- pref "google.golang.org/protobuf/reflect/protoreflect"
20
- "google.golang.org/protobuf/runtime/protoiface"
21
- piface "google.golang.org/protobuf/runtime/protoiface"
22
- )
23
-
24
- // legacyWrapMessage wraps v as a protoreflect.Message,
25
- // where v must be a *struct kind and not implement the v2 API already.
26
- func legacyWrapMessage(v reflect.Value) pref.Message {
27
- t := v.Type()
28
- if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
29
- return aberrantMessage{v: v}
30
- }
31
- mt := legacyLoadMessageInfo(t, "")
32
- return mt.MessageOf(v.Interface())
33
- }
34
-
35
- // legacyLoadMessageType dynamically loads a protoreflect.Type for t,
36
- // where t must be not implement the v2 API already.
37
- // The provided name is used if it cannot be determined from the message.
38
- func legacyLoadMessageType(t reflect.Type, name pref.FullName) protoreflect.MessageType {
39
- if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
40
- return aberrantMessageType{t}
41
- }
42
- return legacyLoadMessageInfo(t, name)
43
- }
44
-
45
- var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo
46
-
47
- // legacyLoadMessageInfo dynamically loads a *MessageInfo for t,
48
- // where t must be a *struct kind and not implement the v2 API already.
49
- // The provided name is used if it cannot be determined from the message.
50
- func legacyLoadMessageInfo(t reflect.Type, name pref.FullName) *MessageInfo {
51
- // Fast-path: check if a MessageInfo is cached for this concrete type.
52
- if mt, ok := legacyMessageTypeCache.Load(t); ok {
53
- return mt.(*MessageInfo)
54
- }
55
-
56
- // Slow-path: derive message descriptor and initialize MessageInfo.
57
- mi := &MessageInfo{
58
- Desc: legacyLoadMessageDesc(t, name),
59
- GoReflectType: t,
60
- }
61
-
62
- var hasMarshal, hasUnmarshal bool
63
- v := reflect.Zero(t).Interface()
64
- if _, hasMarshal = v.(legacyMarshaler); hasMarshal {
65
- mi.methods.Marshal = legacyMarshal
66
-
67
- // We have no way to tell whether the type's Marshal method
68
- // supports deterministic serialization or not, but this
69
- // preserves the v1 implementation's behavior of always
70
- // calling Marshal methods when present.
71
- mi.methods.Flags |= piface.SupportMarshalDeterministic
72
- }
73
- if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal {
74
- mi.methods.Unmarshal = legacyUnmarshal
75
- }
76
- if _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) {
77
- mi.methods.Merge = legacyMerge
78
- }
79
-
80
- if mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok {
81
- return mi.(*MessageInfo)
82
- }
83
- return mi
84
- }
85
-
86
- var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor
87
-
88
- // LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type,
89
- // which should be a *struct kind and must not implement the v2 API already.
90
- //
91
- // This is exported for testing purposes.
92
- func LegacyLoadMessageDesc(t reflect.Type) pref.MessageDescriptor {
93
- return legacyLoadMessageDesc(t, "")
94
- }
95
- func legacyLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
96
- // Fast-path: check if a MessageDescriptor is cached for this concrete type.
97
- if mi, ok := legacyMessageDescCache.Load(t); ok {
98
- return mi.(pref.MessageDescriptor)
99
- }
100
-
101
- // Slow-path: initialize MessageDescriptor from the raw descriptor.
102
- mv := reflect.Zero(t).Interface()
103
- if _, ok := mv.(pref.ProtoMessage); ok {
104
- panic(fmt.Sprintf("%v already implements proto.Message", t))
105
- }
106
- mdV1, ok := mv.(messageV1)
107
- if !ok {
108
- return aberrantLoadMessageDesc(t, name)
109
- }
110
-
111
- // If this is a dynamic message type where there isn't a 1-1 mapping between
112
- // Go and protobuf types, calling the Descriptor method on the zero value of
113
- // the message type isn't likely to work. If it panics, swallow the panic and
114
- // continue as if the Descriptor method wasn't present.
115
- b, idxs := func() ([]byte, []int) {
116
- defer func() {
117
- recover()
118
- }()
119
- return mdV1.Descriptor()
120
- }()
121
- if b == nil {
122
- return aberrantLoadMessageDesc(t, name)
123
- }
124
-
125
- // If the Go type has no fields, then this might be a proto3 empty message
126
- // from before the size cache was added. If there are any fields, check to
127
- // see that at least one of them looks like something we generated.
128
- if t.Elem().Kind() == reflect.Struct {
129
- if nfield := t.Elem().NumField(); nfield > 0 {
130
- hasProtoField := false
131
- for i := 0; i < nfield; i++ {
132
- f := t.Elem().Field(i)
133
- if f.Tag.Get("protobuf") != "" || f.Tag.Get("protobuf_oneof") != "" || strings.HasPrefix(f.Name, "XXX_") {
134
- hasProtoField = true
135
- break
136
- }
137
- }
138
- if !hasProtoField {
139
- return aberrantLoadMessageDesc(t, name)
140
- }
141
- }
142
- }
143
-
144
- md := legacyLoadFileDesc(b).Messages().Get(idxs[0])
145
- for _, i := range idxs[1:] {
146
- md = md.Messages().Get(i)
147
- }
148
- if name != "" && md.FullName() != name {
149
- panic(fmt.Sprintf("mismatching message name: got %v, want %v", md.FullName(), name))
150
- }
151
- if md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok {
152
- return md.(protoreflect.MessageDescriptor)
153
- }
154
- return md
155
- }
156
-
157
- var (
158
- aberrantMessageDescLock sync.Mutex
159
- aberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor
160
- )
161
-
162
- // aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type,
163
- // which must not implement protoreflect.ProtoMessage or messageV1.
164
- //
165
- // This is a best-effort derivation of the message descriptor using the protobuf
166
- // tags on the struct fields.
167
- func aberrantLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
168
- aberrantMessageDescLock.Lock()
169
- defer aberrantMessageDescLock.Unlock()
170
- if aberrantMessageDescCache == nil {
171
- aberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor)
172
- }
173
- return aberrantLoadMessageDescReentrant(t, name)
174
- }
175
- func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
176
- // Fast-path: check if an MessageDescriptor is cached for this concrete type.
177
- if md, ok := aberrantMessageDescCache[t]; ok {
178
- return md
179
- }
180
-
181
- // Slow-path: construct a descriptor from the Go struct type (best-effort).
182
- // Cache the MessageDescriptor early on so that we can resolve internal
183
- // cyclic references.
184
- md := &filedesc.Message{L2: new(filedesc.MessageL2)}
185
- md.L0.FullName = aberrantDeriveMessageName(t, name)
186
- md.L0.ParentFile = filedesc.SurrogateProto2
187
- aberrantMessageDescCache[t] = md
188
-
189
- if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
190
- return md
191
- }
192
-
193
- // Try to determine if the message is using proto3 by checking scalars.
194
- for i := 0; i < t.Elem().NumField(); i++ {
195
- f := t.Elem().Field(i)
196
- if tag := f.Tag.Get("protobuf"); tag != "" {
197
- switch f.Type.Kind() {
198
- case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
199
- md.L0.ParentFile = filedesc.SurrogateProto3
200
- }
201
- for _, s := range strings.Split(tag, ",") {
202
- if s == "proto3" {
203
- md.L0.ParentFile = filedesc.SurrogateProto3
204
- }
205
- }
206
- }
207
- }
208
-
209
- // Obtain a list of oneof wrapper types.
210
- var oneofWrappers []reflect.Type
211
- for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} {
212
- if fn, ok := t.MethodByName(method); ok {
213
- for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
214
- if vs, ok := v.Interface().([]interface{}); ok {
215
- for _, v := range vs {
216
- oneofWrappers = append(oneofWrappers, reflect.TypeOf(v))
217
- }
218
- }
219
- }
220
- }
221
- }
222
-
223
- // Obtain a list of the extension ranges.
224
- if fn, ok := t.MethodByName("ExtensionRangeArray"); ok {
225
- vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0]
226
- for i := 0; i < vs.Len(); i++ {
227
- v := vs.Index(i)
228
- md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]pref.FieldNumber{
229
- pref.FieldNumber(v.FieldByName("Start").Int()),
230
- pref.FieldNumber(v.FieldByName("End").Int() + 1),
231
- })
232
- md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil)
233
- }
234
- }
235
-
236
- // Derive the message fields by inspecting the struct fields.
237
- for i := 0; i < t.Elem().NumField(); i++ {
238
- f := t.Elem().Field(i)
239
- if tag := f.Tag.Get("protobuf"); tag != "" {
240
- tagKey := f.Tag.Get("protobuf_key")
241
- tagVal := f.Tag.Get("protobuf_val")
242
- aberrantAppendField(md, f.Type, tag, tagKey, tagVal)
243
- }
244
- if tag := f.Tag.Get("protobuf_oneof"); tag != "" {
245
- n := len(md.L2.Oneofs.List)
246
- md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{})
247
- od := &md.L2.Oneofs.List[n]
248
- od.L0.FullName = md.FullName().Append(pref.Name(tag))
249
- od.L0.ParentFile = md.L0.ParentFile
250
- od.L0.Parent = md
251
- od.L0.Index = n
252
-
253
- for _, t := range oneofWrappers {
254
- if t.Implements(f.Type) {
255
- f := t.Elem().Field(0)
256
- if tag := f.Tag.Get("protobuf"); tag != "" {
257
- aberrantAppendField(md, f.Type, tag, "", "")
258
- fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1]
259
- fd.L1.ContainingOneof = od
260
- od.L1.Fields.List = append(od.L1.Fields.List, fd)
261
- }
262
- }
263
- }
264
- }
265
- }
266
-
267
- return md
268
- }
269
-
270
- func aberrantDeriveMessageName(t reflect.Type, name pref.FullName) pref.FullName {
271
- if name.IsValid() {
272
- return name
273
- }
274
- func() {
275
- defer func() { recover() }() // swallow possible nil panics
276
- if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok {
277
- name = pref.FullName(m.XXX_MessageName())
278
- }
279
- }()
280
- if name.IsValid() {
281
- return name
282
- }
283
- if t.Kind() == reflect.Ptr {
284
- t = t.Elem()
285
- }
286
- return AberrantDeriveFullName(t)
287
- }
288
-
289
- func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) {
290
- t := goType
291
- isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct
292
- isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
293
- if isOptional || isRepeated {
294
- t = t.Elem()
295
- }
296
- fd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field)
297
-
298
- // Append field descriptor to the message.
299
- n := len(md.L2.Fields.List)
300
- md.L2.Fields.List = append(md.L2.Fields.List, *fd)
301
- fd = &md.L2.Fields.List[n]
302
- fd.L0.FullName = md.FullName().Append(fd.Name())
303
- fd.L0.ParentFile = md.L0.ParentFile
304
- fd.L0.Parent = md
305
- fd.L0.Index = n
306
-
307
- if fd.L1.IsWeak || fd.L1.HasPacked {
308
- fd.L1.Options = func() pref.ProtoMessage {
309
- opts := descopts.Field.ProtoReflect().New()
310
- if fd.L1.IsWeak {
311
- opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true))
312
- }
313
- if fd.L1.HasPacked {
314
- opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.IsPacked))
315
- }
316
- return opts.Interface()
317
- }
318
- }
319
-
320
- // Populate Enum and Message.
321
- if fd.Enum() == nil && fd.Kind() == pref.EnumKind {
322
- switch v := reflect.Zero(t).Interface().(type) {
323
- case pref.Enum:
324
- fd.L1.Enum = v.Descriptor()
325
- default:
326
- fd.L1.Enum = LegacyLoadEnumDesc(t)
327
- }
328
- }
329
- if fd.Message() == nil && (fd.Kind() == pref.MessageKind || fd.Kind() == pref.GroupKind) {
330
- switch v := reflect.Zero(t).Interface().(type) {
331
- case pref.ProtoMessage:
332
- fd.L1.Message = v.ProtoReflect().Descriptor()
333
- case messageV1:
334
- fd.L1.Message = LegacyLoadMessageDesc(t)
335
- default:
336
- if t.Kind() == reflect.Map {
337
- n := len(md.L1.Messages.List)
338
- md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)})
339
- md2 := &md.L1.Messages.List[n]
340
- md2.L0.FullName = md.FullName().Append(pref.Name(strs.MapEntryName(string(fd.Name()))))
341
- md2.L0.ParentFile = md.L0.ParentFile
342
- md2.L0.Parent = md
343
- md2.L0.Index = n
344
-
345
- md2.L1.IsMapEntry = true
346
- md2.L2.Options = func() pref.ProtoMessage {
347
- opts := descopts.Message.ProtoReflect().New()
348
- opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true))
349
- return opts.Interface()
350
- }
351
-
352
- aberrantAppendField(md2, t.Key(), tagKey, "", "")
353
- aberrantAppendField(md2, t.Elem(), tagVal, "", "")
354
-
355
- fd.L1.Message = md2
356
- break
357
- }
358
- fd.L1.Message = aberrantLoadMessageDescReentrant(t, "")
359
- }
360
- }
361
- }
362
-
363
- type placeholderEnumValues struct {
364
- protoreflect.EnumValueDescriptors
365
- }
366
-
367
- func (placeholderEnumValues) ByNumber(n pref.EnumNumber) pref.EnumValueDescriptor {
368
- return filedesc.PlaceholderEnumValue(pref.FullName(fmt.Sprintf("UNKNOWN_%d", n)))
369
- }
370
-
371
- // legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder.
372
- type legacyMarshaler interface {
373
- Marshal() ([]byte, error)
374
- }
375
-
376
- // legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder.
377
- type legacyUnmarshaler interface {
378
- Unmarshal([]byte) error
379
- }
380
-
381
- // legacyMerger is the proto.Merger interface superseded by protoiface.Methoder.
382
- type legacyMerger interface {
383
- Merge(protoiface.MessageV1)
384
- }
385
-
386
- var aberrantProtoMethods = &piface.Methods{
387
- Marshal: legacyMarshal,
388
- Unmarshal: legacyUnmarshal,
389
- Merge: legacyMerge,
390
-
391
- // We have no way to tell whether the type's Marshal method
392
- // supports deterministic serialization or not, but this
393
- // preserves the v1 implementation's behavior of always
394
- // calling Marshal methods when present.
395
- Flags: piface.SupportMarshalDeterministic,
396
- }
397
-
398
- func legacyMarshal(in piface.MarshalInput) (piface.MarshalOutput, error) {
399
- v := in.Message.(unwrapper).protoUnwrap()
400
- marshaler, ok := v.(legacyMarshaler)
401
- if !ok {
402
- return piface.MarshalOutput{}, errors.New("%T does not implement Marshal", v)
403
- }
404
- out, err := marshaler.Marshal()
405
- if in.Buf != nil {
406
- out = append(in.Buf, out...)
407
- }
408
- return piface.MarshalOutput{
409
- Buf: out,
410
- }, err
411
- }
412
-
413
- func legacyUnmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutput, error) {
414
- v := in.Message.(unwrapper).protoUnwrap()
415
- unmarshaler, ok := v.(legacyUnmarshaler)
416
- if !ok {
417
- return piface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v)
418
- }
419
- return piface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf)
420
- }
421
-
422
- func legacyMerge(in piface.MergeInput) piface.MergeOutput {
423
- // Check whether this supports the legacy merger.
424
- dstv := in.Destination.(unwrapper).protoUnwrap()
425
- merger, ok := dstv.(legacyMerger)
426
- if ok {
427
- merger.Merge(Export{}.ProtoMessageV1Of(in.Source))
428
- return piface.MergeOutput{Flags: piface.MergeComplete}
429
- }
430
-
431
- // If legacy merger is unavailable, implement merge in terms of
432
- // a marshal and unmarshal operation.
433
- srcv := in.Source.(unwrapper).protoUnwrap()
434
- marshaler, ok := srcv.(legacyMarshaler)
435
- if !ok {
436
- return piface.MergeOutput{}
437
- }
438
- dstv = in.Destination.(unwrapper).protoUnwrap()
439
- unmarshaler, ok := dstv.(legacyUnmarshaler)
440
- if !ok {
441
- return piface.MergeOutput{}
442
- }
443
- b, err := marshaler.Marshal()
444
- if err != nil {
445
- return piface.MergeOutput{}
446
- }
447
- err = unmarshaler.Unmarshal(b)
448
- if err != nil {
449
- return piface.MergeOutput{}
450
- }
451
- return piface.MergeOutput{Flags: piface.MergeComplete}
452
- }
453
-
454
- // aberrantMessageType implements MessageType for all types other than pointer-to-struct.
455
- type aberrantMessageType struct {
456
- t reflect.Type
457
- }
458
-
459
- func (mt aberrantMessageType) New() pref.Message {
460
- if mt.t.Kind() == reflect.Ptr {
461
- return aberrantMessage{reflect.New(mt.t.Elem())}
462
- }
463
- return aberrantMessage{reflect.Zero(mt.t)}
464
- }
465
- func (mt aberrantMessageType) Zero() pref.Message {
466
- return aberrantMessage{reflect.Zero(mt.t)}
467
- }
468
- func (mt aberrantMessageType) GoType() reflect.Type {
469
- return mt.t
470
- }
471
- func (mt aberrantMessageType) Descriptor() pref.MessageDescriptor {
472
- return LegacyLoadMessageDesc(mt.t)
473
- }
474
-
475
- // aberrantMessage implements Message for all types other than pointer-to-struct.
476
- //
477
- // When the underlying type implements legacyMarshaler or legacyUnmarshaler,
478
- // the aberrant Message can be marshaled or unmarshaled. Otherwise, there is
479
- // not much that can be done with values of this type.
480
- type aberrantMessage struct {
481
- v reflect.Value
482
- }
483
-
484
- // Reset implements the v1 proto.Message.Reset method.
485
- func (m aberrantMessage) Reset() {
486
- if mr, ok := m.v.Interface().(interface{ Reset() }); ok {
487
- mr.Reset()
488
- return
489
- }
490
- if m.v.Kind() == reflect.Ptr && !m.v.IsNil() {
491
- m.v.Elem().Set(reflect.Zero(m.v.Type().Elem()))
492
- }
493
- }
494
-
495
- func (m aberrantMessage) ProtoReflect() pref.Message {
496
- return m
497
- }
498
-
499
- func (m aberrantMessage) Descriptor() pref.MessageDescriptor {
500
- return LegacyLoadMessageDesc(m.v.Type())
501
- }
502
- func (m aberrantMessage) Type() pref.MessageType {
503
- return aberrantMessageType{m.v.Type()}
504
- }
505
- func (m aberrantMessage) New() pref.Message {
506
- if m.v.Type().Kind() == reflect.Ptr {
507
- return aberrantMessage{reflect.New(m.v.Type().Elem())}
508
- }
509
- return aberrantMessage{reflect.Zero(m.v.Type())}
510
- }
511
- func (m aberrantMessage) Interface() pref.ProtoMessage {
512
- return m
513
- }
514
- func (m aberrantMessage) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
515
- return
516
- }
517
- func (m aberrantMessage) Has(pref.FieldDescriptor) bool {
518
- return false
519
- }
520
- func (m aberrantMessage) Clear(pref.FieldDescriptor) {
521
- panic("invalid Message.Clear on " + string(m.Descriptor().FullName()))
522
- }
523
- func (m aberrantMessage) Get(fd pref.FieldDescriptor) pref.Value {
524
- if fd.Default().IsValid() {
525
- return fd.Default()
526
- }
527
- panic("invalid Message.Get on " + string(m.Descriptor().FullName()))
528
- }
529
- func (m aberrantMessage) Set(pref.FieldDescriptor, pref.Value) {
530
- panic("invalid Message.Set on " + string(m.Descriptor().FullName()))
531
- }
532
- func (m aberrantMessage) Mutable(pref.FieldDescriptor) pref.Value {
533
- panic("invalid Message.Mutable on " + string(m.Descriptor().FullName()))
534
- }
535
- func (m aberrantMessage) NewField(pref.FieldDescriptor) pref.Value {
536
- panic("invalid Message.NewField on " + string(m.Descriptor().FullName()))
537
- }
538
- func (m aberrantMessage) WhichOneof(pref.OneofDescriptor) pref.FieldDescriptor {
539
- panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName()))
540
- }
541
- func (m aberrantMessage) GetUnknown() pref.RawFields {
542
- return nil
543
- }
544
- func (m aberrantMessage) SetUnknown(pref.RawFields) {
545
- // SetUnknown discards its input on messages which don't support unknown field storage.
546
- }
547
- func (m aberrantMessage) IsValid() bool {
548
- if m.v.Kind() == reflect.Ptr {
549
- return !m.v.IsNil()
550
- }
551
- return false
552
- }
553
- func (m aberrantMessage) ProtoMethods() *piface.Methods {
554
- return aberrantProtoMethods
555
- }
556
- func (m aberrantMessage) protoUnwrap() interface{} {
557
- return m.v.Interface()
558
- }