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,286 +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 protodesc
6
-
7
- import (
8
- "google.golang.org/protobuf/internal/encoding/defval"
9
- "google.golang.org/protobuf/internal/errors"
10
- "google.golang.org/protobuf/internal/filedesc"
11
- "google.golang.org/protobuf/reflect/protoreflect"
12
- "google.golang.org/protobuf/reflect/protoregistry"
13
-
14
- "google.golang.org/protobuf/types/descriptorpb"
15
- )
16
-
17
- // resolver is a wrapper around a local registry of declarations within the file
18
- // and the remote resolver. The remote resolver is restricted to only return
19
- // descriptors that have been imported.
20
- type resolver struct {
21
- local descsByName
22
- remote Resolver
23
- imports importSet
24
-
25
- allowUnresolvable bool
26
- }
27
-
28
- func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {
29
- for i, md := range mds {
30
- m := &ms[i]
31
- for j, fd := range md.GetField() {
32
- f := &m.L2.Fields.List[j]
33
- if f.L1.Cardinality == protoreflect.Required {
34
- m.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)
35
- }
36
- if fd.OneofIndex != nil {
37
- k := int(fd.GetOneofIndex())
38
- if !(0 <= k && k < len(md.GetOneofDecl())) {
39
- return errors.New("message field %q has an invalid oneof index: %d", f.FullName(), k)
40
- }
41
- o := &m.L2.Oneofs.List[k]
42
- f.L1.ContainingOneof = o
43
- o.L1.Fields.List = append(o.L1.Fields.List, f)
44
- }
45
-
46
- if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil {
47
- return errors.New("message field %q cannot resolve type: %v", f.FullName(), err)
48
- }
49
- if fd.DefaultValue != nil {
50
- v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)
51
- if err != nil {
52
- return errors.New("message field %q has invalid default: %v", f.FullName(), err)
53
- }
54
- f.L1.Default = filedesc.DefaultValue(v, ev)
55
- }
56
- }
57
-
58
- if err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {
59
- return err
60
- }
61
- if err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {
62
- return err
63
- }
64
- }
65
- return nil
66
- }
67
-
68
- func (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {
69
- for i, xd := range xds {
70
- x := &xs[i]
71
- if x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee()), false); err != nil {
72
- return errors.New("extension field %q cannot resolve extendee: %v", x.FullName(), err)
73
- }
74
- if x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName()), false); err != nil {
75
- return errors.New("extension field %q cannot resolve type: %v", x.FullName(), err)
76
- }
77
- if xd.DefaultValue != nil {
78
- v, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)
79
- if err != nil {
80
- return errors.New("extension field %q has invalid default: %v", x.FullName(), err)
81
- }
82
- x.L2.Default = filedesc.DefaultValue(v, ev)
83
- }
84
- }
85
- return nil
86
- }
87
-
88
- func (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {
89
- for i, sd := range sds {
90
- s := &ss[i]
91
- for j, md := range sd.GetMethod() {
92
- m := &s.L2.Methods.List[j]
93
- m.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()), false)
94
- if err != nil {
95
- return errors.New("service method %q cannot resolve input: %v", m.FullName(), err)
96
- }
97
- m.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()), false)
98
- if err != nil {
99
- return errors.New("service method %q cannot resolve output: %v", m.FullName(), err)
100
- }
101
- }
102
- }
103
- return nil
104
- }
105
-
106
- // findTarget finds an enum or message descriptor if k is an enum, message,
107
- // group, or unknown. If unknown, and the name could be resolved, the kind
108
- // returned kind is set based on the type of the resolved descriptor.
109
- func (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {
110
- switch k {
111
- case protoreflect.EnumKind:
112
- ed, err := r.findEnumDescriptor(scope, ref, isWeak)
113
- if err != nil {
114
- return 0, nil, nil, err
115
- }
116
- return k, ed, nil, nil
117
- case protoreflect.MessageKind, protoreflect.GroupKind:
118
- md, err := r.findMessageDescriptor(scope, ref, isWeak)
119
- if err != nil {
120
- return 0, nil, nil, err
121
- }
122
- return k, nil, md, nil
123
- case 0:
124
- // Handle unspecified kinds (possible with parsers that operate
125
- // on a per-file basis without knowledge of dependencies).
126
- d, err := r.findDescriptor(scope, ref)
127
- if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
128
- return k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil
129
- } else if err == protoregistry.NotFound {
130
- return 0, nil, nil, errors.New("%q not found", ref.FullName())
131
- } else if err != nil {
132
- return 0, nil, nil, err
133
- }
134
- switch d := d.(type) {
135
- case protoreflect.EnumDescriptor:
136
- return protoreflect.EnumKind, d, nil, nil
137
- case protoreflect.MessageDescriptor:
138
- return protoreflect.MessageKind, nil, d, nil
139
- default:
140
- return 0, nil, nil, errors.New("unknown kind")
141
- }
142
- default:
143
- if ref != "" {
144
- return 0, nil, nil, errors.New("target name cannot be specified for %v", k)
145
- }
146
- if !k.IsValid() {
147
- return 0, nil, nil, errors.New("invalid kind: %d", k)
148
- }
149
- return k, nil, nil, nil
150
- }
151
- }
152
-
153
- // findDescriptor finds the descriptor by name,
154
- // which may be a relative name within some scope.
155
- //
156
- // Suppose the scope was "fizz.buzz" and the reference was "Foo.Bar",
157
- // then the following full names are searched:
158
- // * fizz.buzz.Foo.Bar
159
- // * fizz.Foo.Bar
160
- // * Foo.Bar
161
- func (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {
162
- if !ref.IsValid() {
163
- return nil, errors.New("invalid name reference: %q", ref)
164
- }
165
- if ref.IsFull() {
166
- scope, ref = "", ref[1:]
167
- }
168
- var foundButNotImported protoreflect.Descriptor
169
- for {
170
- // Derive the full name to search.
171
- s := protoreflect.FullName(ref)
172
- if scope != "" {
173
- s = scope + "." + s
174
- }
175
-
176
- // Check the current file for the descriptor.
177
- if d, ok := r.local[s]; ok {
178
- return d, nil
179
- }
180
-
181
- // Check the remote registry for the descriptor.
182
- d, err := r.remote.FindDescriptorByName(s)
183
- if err == nil {
184
- // Only allow descriptors covered by one of the imports.
185
- if r.imports[d.ParentFile().Path()] {
186
- return d, nil
187
- }
188
- foundButNotImported = d
189
- } else if err != protoregistry.NotFound {
190
- return nil, errors.Wrap(err, "%q", s)
191
- }
192
-
193
- // Continue on at a higher level of scoping.
194
- if scope == "" {
195
- if d := foundButNotImported; d != nil {
196
- return nil, errors.New("resolved %q, but %q is not imported", d.FullName(), d.ParentFile().Path())
197
- }
198
- return nil, protoregistry.NotFound
199
- }
200
- scope = scope.Parent()
201
- }
202
- }
203
-
204
- func (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.EnumDescriptor, error) {
205
- d, err := r.findDescriptor(scope, ref)
206
- if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
207
- return filedesc.PlaceholderEnum(ref.FullName()), nil
208
- } else if err == protoregistry.NotFound {
209
- return nil, errors.New("%q not found", ref.FullName())
210
- } else if err != nil {
211
- return nil, err
212
- }
213
- ed, ok := d.(protoreflect.EnumDescriptor)
214
- if !ok {
215
- return nil, errors.New("resolved %q, but it is not an enum", d.FullName())
216
- }
217
- return ed, nil
218
- }
219
-
220
- func (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.MessageDescriptor, error) {
221
- d, err := r.findDescriptor(scope, ref)
222
- if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
223
- return filedesc.PlaceholderMessage(ref.FullName()), nil
224
- } else if err == protoregistry.NotFound {
225
- return nil, errors.New("%q not found", ref.FullName())
226
- } else if err != nil {
227
- return nil, err
228
- }
229
- md, ok := d.(protoreflect.MessageDescriptor)
230
- if !ok {
231
- return nil, errors.New("resolved %q, but it is not an message", d.FullName())
232
- }
233
- return md, nil
234
- }
235
-
236
- // partialName is the partial name. A leading dot means that the name is full,
237
- // otherwise the name is relative to some current scope.
238
- // See google.protobuf.FieldDescriptorProto.type_name.
239
- type partialName string
240
-
241
- func (s partialName) IsFull() bool {
242
- return len(s) > 0 && s[0] == '.'
243
- }
244
-
245
- func (s partialName) IsValid() bool {
246
- if s.IsFull() {
247
- return protoreflect.FullName(s[1:]).IsValid()
248
- }
249
- return protoreflect.FullName(s).IsValid()
250
- }
251
-
252
- const unknownPrefix = "*."
253
-
254
- // FullName converts the partial name to a full name on a best-effort basis.
255
- // If relative, it creates an invalid full name, using a "*." prefix
256
- // to indicate that the start of the full name is unknown.
257
- func (s partialName) FullName() protoreflect.FullName {
258
- if s.IsFull() {
259
- return protoreflect.FullName(s[1:])
260
- }
261
- return protoreflect.FullName(unknownPrefix + s)
262
- }
263
-
264
- func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {
265
- var evs protoreflect.EnumValueDescriptors
266
- if fd.Enum() != nil {
267
- evs = fd.Enum().Values()
268
- }
269
- v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)
270
- if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {
271
- v = protoreflect.ValueOfEnum(0)
272
- if evs.Len() > 0 {
273
- v = protoreflect.ValueOfEnum(evs.Get(0).Number())
274
- }
275
- ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))
276
- } else if err != nil {
277
- return v, ev, err
278
- }
279
- if fd.Syntax() == protoreflect.Proto3 {
280
- return v, ev, errors.New("cannot be specified under proto3 semantics")
281
- }
282
- if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {
283
- return v, ev, errors.New("cannot be specified on composite types")
284
- }
285
- return v, ev, nil
286
- }
@@ -1,374 +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 protodesc
6
-
7
- import (
8
- "strings"
9
- "unicode"
10
-
11
- "google.golang.org/protobuf/encoding/protowire"
12
- "google.golang.org/protobuf/internal/errors"
13
- "google.golang.org/protobuf/internal/filedesc"
14
- "google.golang.org/protobuf/internal/flags"
15
- "google.golang.org/protobuf/internal/genid"
16
- "google.golang.org/protobuf/internal/strs"
17
- "google.golang.org/protobuf/reflect/protoreflect"
18
-
19
- "google.golang.org/protobuf/types/descriptorpb"
20
- )
21
-
22
- func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error {
23
- for i, ed := range eds {
24
- e := &es[i]
25
- if err := e.L2.ReservedNames.CheckValid(); err != nil {
26
- return errors.New("enum %q reserved names has %v", e.FullName(), err)
27
- }
28
- if err := e.L2.ReservedRanges.CheckValid(); err != nil {
29
- return errors.New("enum %q reserved ranges has %v", e.FullName(), err)
30
- }
31
- if len(ed.GetValue()) == 0 {
32
- return errors.New("enum %q must contain at least one value declaration", e.FullName())
33
- }
34
- allowAlias := ed.GetOptions().GetAllowAlias()
35
- foundAlias := false
36
- for i := 0; i < e.Values().Len(); i++ {
37
- v1 := e.Values().Get(i)
38
- if v2 := e.Values().ByNumber(v1.Number()); v1 != v2 {
39
- foundAlias = true
40
- if !allowAlias {
41
- return errors.New("enum %q has conflicting non-aliased values on number %d: %q with %q", e.FullName(), v1.Number(), v1.Name(), v2.Name())
42
- }
43
- }
44
- }
45
- if allowAlias && !foundAlias {
46
- return errors.New("enum %q allows aliases, but none were found", e.FullName())
47
- }
48
- if e.Syntax() == protoreflect.Proto3 {
49
- if v := e.Values().Get(0); v.Number() != 0 {
50
- return errors.New("enum %q using proto3 semantics must have zero number for the first value", v.FullName())
51
- }
52
- // Verify that value names in proto3 do not conflict if the
53
- // case-insensitive prefix is removed.
54
- // See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055
55
- names := map[string]protoreflect.EnumValueDescriptor{}
56
- prefix := strings.Replace(strings.ToLower(string(e.Name())), "_", "", -1)
57
- for i := 0; i < e.Values().Len(); i++ {
58
- v1 := e.Values().Get(i)
59
- s := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix))
60
- if v2, ok := names[s]; ok && v1.Number() != v2.Number() {
61
- return errors.New("enum %q using proto3 semantics has conflict: %q with %q", e.FullName(), v1.Name(), v2.Name())
62
- }
63
- names[s] = v1
64
- }
65
- }
66
-
67
- for j, vd := range ed.GetValue() {
68
- v := &e.L2.Values.List[j]
69
- if vd.Number == nil {
70
- return errors.New("enum value %q must have a specified number", v.FullName())
71
- }
72
- if e.L2.ReservedNames.Has(v.Name()) {
73
- return errors.New("enum value %q must not use reserved name", v.FullName())
74
- }
75
- if e.L2.ReservedRanges.Has(v.Number()) {
76
- return errors.New("enum value %q must not use reserved number %d", v.FullName(), v.Number())
77
- }
78
- }
79
- }
80
- return nil
81
- }
82
-
83
- func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error {
84
- for i, md := range mds {
85
- m := &ms[i]
86
-
87
- // Handle the message descriptor itself.
88
- isMessageSet := md.GetOptions().GetMessageSetWireFormat()
89
- if err := m.L2.ReservedNames.CheckValid(); err != nil {
90
- return errors.New("message %q reserved names has %v", m.FullName(), err)
91
- }
92
- if err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil {
93
- return errors.New("message %q reserved ranges has %v", m.FullName(), err)
94
- }
95
- if err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil {
96
- return errors.New("message %q extension ranges has %v", m.FullName(), err)
97
- }
98
- if err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil {
99
- return errors.New("message %q reserved and extension ranges has %v", m.FullName(), err)
100
- }
101
- for i := 0; i < m.Fields().Len(); i++ {
102
- f1 := m.Fields().Get(i)
103
- if f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 {
104
- return errors.New("message %q has conflicting fields: %q with %q", m.FullName(), f1.Name(), f2.Name())
105
- }
106
- }
107
- if isMessageSet && !flags.ProtoLegacy {
108
- return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName())
109
- }
110
- if isMessageSet && (m.Syntax() != protoreflect.Proto2 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {
111
- return errors.New("message %q is an invalid proto1 MessageSet", m.FullName())
112
- }
113
- if m.Syntax() == protoreflect.Proto3 {
114
- if m.ExtensionRanges().Len() > 0 {
115
- return errors.New("message %q using proto3 semantics cannot have extension ranges", m.FullName())
116
- }
117
- // Verify that field names in proto3 do not conflict if lowercased
118
- // with all underscores removed.
119
- // See protoc v3.8.0: src/google/protobuf/descriptor.cc:5830-5847
120
- names := map[string]protoreflect.FieldDescriptor{}
121
- for i := 0; i < m.Fields().Len(); i++ {
122
- f1 := m.Fields().Get(i)
123
- s := strings.Replace(strings.ToLower(string(f1.Name())), "_", "", -1)
124
- if f2, ok := names[s]; ok {
125
- return errors.New("message %q using proto3 semantics has conflict: %q with %q", m.FullName(), f1.Name(), f2.Name())
126
- }
127
- names[s] = f1
128
- }
129
- }
130
-
131
- for j, fd := range md.GetField() {
132
- f := &m.L2.Fields.List[j]
133
- if m.L2.ReservedNames.Has(f.Name()) {
134
- return errors.New("message field %q must not use reserved name", f.FullName())
135
- }
136
- if !f.Number().IsValid() {
137
- return errors.New("message field %q has an invalid number: %d", f.FullName(), f.Number())
138
- }
139
- if !f.Cardinality().IsValid() {
140
- return errors.New("message field %q has an invalid cardinality: %d", f.FullName(), f.Cardinality())
141
- }
142
- if m.L2.ReservedRanges.Has(f.Number()) {
143
- return errors.New("message field %q must not use reserved number %d", f.FullName(), f.Number())
144
- }
145
- if m.L2.ExtensionRanges.Has(f.Number()) {
146
- return errors.New("message field %q with number %d in extension range", f.FullName(), f.Number())
147
- }
148
- if fd.Extendee != nil {
149
- return errors.New("message field %q may not have extendee: %q", f.FullName(), fd.GetExtendee())
150
- }
151
- if f.L1.IsProto3Optional {
152
- if f.Syntax() != protoreflect.Proto3 {
153
- return errors.New("message field %q under proto3 optional semantics must be specified in the proto3 syntax", f.FullName())
154
- }
155
- if f.Cardinality() != protoreflect.Optional {
156
- return errors.New("message field %q under proto3 optional semantics must have optional cardinality", f.FullName())
157
- }
158
- if f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 {
159
- return errors.New("message field %q under proto3 optional semantics must be within a single element oneof", f.FullName())
160
- }
161
- }
162
- if f.IsWeak() && !flags.ProtoLegacy {
163
- return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName())
164
- }
165
- if f.IsWeak() && (f.Syntax() != protoreflect.Proto2 || !isOptionalMessage(f) || f.ContainingOneof() != nil) {
166
- return errors.New("message field %q may only be weak for an optional message", f.FullName())
167
- }
168
- if f.IsPacked() && !isPackable(f) {
169
- return errors.New("message field %q is not packable", f.FullName())
170
- }
171
- if err := checkValidGroup(f); err != nil {
172
- return errors.New("message field %q is an invalid group: %v", f.FullName(), err)
173
- }
174
- if err := checkValidMap(f); err != nil {
175
- return errors.New("message field %q is an invalid map: %v", f.FullName(), err)
176
- }
177
- if f.Syntax() == protoreflect.Proto3 {
178
- if f.Cardinality() == protoreflect.Required {
179
- return errors.New("message field %q using proto3 semantics cannot be required", f.FullName())
180
- }
181
- if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().Syntax() != protoreflect.Proto3 {
182
- return errors.New("message field %q using proto3 semantics may only depend on a proto3 enum", f.FullName())
183
- }
184
- }
185
- }
186
- seenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs
187
- for j := range md.GetOneofDecl() {
188
- o := &m.L2.Oneofs.List[j]
189
- if o.Fields().Len() == 0 {
190
- return errors.New("message oneof %q must contain at least one field declaration", o.FullName())
191
- }
192
- if n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) {
193
- return errors.New("message oneof %q must have consecutively declared fields", o.FullName())
194
- }
195
-
196
- if o.IsSynthetic() {
197
- seenSynthetic = true
198
- continue
199
- }
200
- if !o.IsSynthetic() && seenSynthetic {
201
- return errors.New("message oneof %q must be declared before synthetic oneofs", o.FullName())
202
- }
203
-
204
- for i := 0; i < o.Fields().Len(); i++ {
205
- f := o.Fields().Get(i)
206
- if f.Cardinality() != protoreflect.Optional {
207
- return errors.New("message field %q belongs in a oneof and must be optional", f.FullName())
208
- }
209
- if f.IsWeak() {
210
- return errors.New("message field %q belongs in a oneof and must not be a weak reference", f.FullName())
211
- }
212
- }
213
- }
214
-
215
- if err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil {
216
- return err
217
- }
218
- if err := validateMessageDeclarations(m.L1.Messages.List, md.GetNestedType()); err != nil {
219
- return err
220
- }
221
- if err := validateExtensionDeclarations(m.L1.Extensions.List, md.GetExtension()); err != nil {
222
- return err
223
- }
224
- }
225
- return nil
226
- }
227
-
228
- func validateExtensionDeclarations(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error {
229
- for i, xd := range xds {
230
- x := &xs[i]
231
- // NOTE: Avoid using the IsValid method since extensions to MessageSet
232
- // may have a field number higher than normal. This check only verifies
233
- // that the number is not negative or reserved. We check again later
234
- // if we know that the extendee is definitely not a MessageSet.
235
- if n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) {
236
- return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number())
237
- }
238
- if !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required {
239
- return errors.New("extension field %q has an invalid cardinality: %d", x.FullName(), x.Cardinality())
240
- }
241
- if xd.JsonName != nil {
242
- // A bug in older versions of protoc would always populate the
243
- // "json_name" option for extensions when it is meaningless.
244
- // When it did so, it would always use the camel-cased field name.
245
- if xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) {
246
- return errors.New("extension field %q may not have an explicitly set JSON name: %q", x.FullName(), xd.GetJsonName())
247
- }
248
- }
249
- if xd.OneofIndex != nil {
250
- return errors.New("extension field %q may not be part of a oneof", x.FullName())
251
- }
252
- if md := x.ContainingMessage(); !md.IsPlaceholder() {
253
- if !md.ExtensionRanges().Has(x.Number()) {
254
- return errors.New("extension field %q extends %q with non-extension field number: %d", x.FullName(), md.FullName(), x.Number())
255
- }
256
- isMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat()
257
- if isMessageSet && !isOptionalMessage(x) {
258
- return errors.New("extension field %q extends MessageSet and must be an optional message", x.FullName())
259
- }
260
- if !isMessageSet && !x.Number().IsValid() {
261
- return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number())
262
- }
263
- }
264
- if xd.GetOptions().GetWeak() {
265
- return errors.New("extension field %q cannot be a weak reference", x.FullName())
266
- }
267
- if x.IsPacked() && !isPackable(x) {
268
- return errors.New("extension field %q is not packable", x.FullName())
269
- }
270
- if err := checkValidGroup(x); err != nil {
271
- return errors.New("extension field %q is an invalid group: %v", x.FullName(), err)
272
- }
273
- if md := x.Message(); md != nil && md.IsMapEntry() {
274
- return errors.New("extension field %q cannot be a map entry", x.FullName())
275
- }
276
- if x.Syntax() == protoreflect.Proto3 {
277
- switch x.ContainingMessage().FullName() {
278
- case (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName():
279
- case (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName():
280
- case (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName():
281
- case (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName():
282
- case (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName():
283
- case (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName():
284
- case (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName():
285
- case (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName():
286
- case (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName():
287
- default:
288
- return errors.New("extension field %q cannot be declared in proto3 unless extended descriptor options", x.FullName())
289
- }
290
- }
291
- }
292
- return nil
293
- }
294
-
295
- // isOptionalMessage reports whether this is an optional message.
296
- // If the kind is unknown, it is assumed to be a message.
297
- func isOptionalMessage(fd protoreflect.FieldDescriptor) bool {
298
- return (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional
299
- }
300
-
301
- // isPackable checks whether the pack option can be specified.
302
- func isPackable(fd protoreflect.FieldDescriptor) bool {
303
- switch fd.Kind() {
304
- case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:
305
- return false
306
- }
307
- return fd.IsList()
308
- }
309
-
310
- // checkValidGroup reports whether fd is a valid group according to the same
311
- // rules that protoc imposes.
312
- func checkValidGroup(fd protoreflect.FieldDescriptor) error {
313
- md := fd.Message()
314
- switch {
315
- case fd.Kind() != protoreflect.GroupKind:
316
- return nil
317
- case fd.Syntax() != protoreflect.Proto2:
318
- return errors.New("invalid under proto2 semantics")
319
- case md == nil || md.IsPlaceholder():
320
- return errors.New("message must be resolvable")
321
- case fd.FullName().Parent() != md.FullName().Parent():
322
- return errors.New("message and field must be declared in the same scope")
323
- case !unicode.IsUpper(rune(md.Name()[0])):
324
- return errors.New("message name must start with an uppercase")
325
- case fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))):
326
- return errors.New("field name must be lowercased form of the message name")
327
- }
328
- return nil
329
- }
330
-
331
- // checkValidMap checks whether the field is a valid map according to the same
332
- // rules that protoc imposes.
333
- // See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115
334
- func checkValidMap(fd protoreflect.FieldDescriptor) error {
335
- md := fd.Message()
336
- switch {
337
- case md == nil || !md.IsMapEntry():
338
- return nil
339
- case fd.FullName().Parent() != md.FullName().Parent():
340
- return errors.New("message and field must be declared in the same scope")
341
- case md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))):
342
- return errors.New("incorrect implicit map entry name")
343
- case fd.Cardinality() != protoreflect.Repeated:
344
- return errors.New("field must be repeated")
345
- case md.Fields().Len() != 2:
346
- return errors.New("message must have exactly two fields")
347
- case md.ExtensionRanges().Len() > 0:
348
- return errors.New("message must not have any extension ranges")
349
- case md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0:
350
- return errors.New("message must not have any nested declarations")
351
- }
352
- kf := md.Fields().Get(0)
353
- vf := md.Fields().Get(1)
354
- switch {
355
- case kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault():
356
- return errors.New("invalid key field")
357
- case vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault():
358
- return errors.New("invalid value field")
359
- }
360
- switch kf.Kind() {
361
- case protoreflect.BoolKind: // bool
362
- case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32
363
- case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64
364
- case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32
365
- case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64
366
- case protoreflect.StringKind: // string
367
- default:
368
- return errors.New("invalid key kind: %v", kf.Kind())
369
- }
370
- if e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 {
371
- return errors.New("map enum value must have zero number for the first value")
372
- }
373
- return nil
374
- }