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,773 +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 prototext
6
-
7
- import (
8
- "fmt"
9
- "unicode/utf8"
10
-
11
- "google.golang.org/protobuf/internal/encoding/messageset"
12
- "google.golang.org/protobuf/internal/encoding/text"
13
- "google.golang.org/protobuf/internal/errors"
14
- "google.golang.org/protobuf/internal/flags"
15
- "google.golang.org/protobuf/internal/genid"
16
- "google.golang.org/protobuf/internal/pragma"
17
- "google.golang.org/protobuf/internal/set"
18
- "google.golang.org/protobuf/internal/strs"
19
- "google.golang.org/protobuf/proto"
20
- pref "google.golang.org/protobuf/reflect/protoreflect"
21
- "google.golang.org/protobuf/reflect/protoregistry"
22
- )
23
-
24
- // Unmarshal reads the given []byte into the given proto.Message.
25
- // The provided message must be mutable (e.g., a non-nil pointer to a message).
26
- func Unmarshal(b []byte, m proto.Message) error {
27
- return UnmarshalOptions{}.Unmarshal(b, m)
28
- }
29
-
30
- // UnmarshalOptions is a configurable textproto format unmarshaler.
31
- type UnmarshalOptions struct {
32
- pragma.NoUnkeyedLiterals
33
-
34
- // AllowPartial accepts input for messages that will result in missing
35
- // required fields. If AllowPartial is false (the default), Unmarshal will
36
- // return error if there are any missing required fields.
37
- AllowPartial bool
38
-
39
- // DiscardUnknown specifies whether to ignore unknown fields when parsing.
40
- // An unknown field is any field whose field name or field number does not
41
- // resolve to any known or extension field in the message.
42
- // By default, unmarshal rejects unknown fields as an error.
43
- DiscardUnknown bool
44
-
45
- // Resolver is used for looking up types when unmarshaling
46
- // google.protobuf.Any messages or extension fields.
47
- // If nil, this defaults to using protoregistry.GlobalTypes.
48
- Resolver interface {
49
- protoregistry.MessageTypeResolver
50
- protoregistry.ExtensionTypeResolver
51
- }
52
- }
53
-
54
- // Unmarshal reads the given []byte and populates the given proto.Message
55
- // using options in the UnmarshalOptions object.
56
- // The provided message must be mutable (e.g., a non-nil pointer to a message).
57
- func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {
58
- return o.unmarshal(b, m)
59
- }
60
-
61
- // unmarshal is a centralized function that all unmarshal operations go through.
62
- // For profiling purposes, avoid changing the name of this function or
63
- // introducing other code paths for unmarshal that do not go through this.
64
- func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {
65
- proto.Reset(m)
66
-
67
- if o.Resolver == nil {
68
- o.Resolver = protoregistry.GlobalTypes
69
- }
70
-
71
- dec := decoder{text.NewDecoder(b), o}
72
- if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {
73
- return err
74
- }
75
- if o.AllowPartial {
76
- return nil
77
- }
78
- return proto.CheckInitialized(m)
79
- }
80
-
81
- type decoder struct {
82
- *text.Decoder
83
- opts UnmarshalOptions
84
- }
85
-
86
- // newError returns an error object with position info.
87
- func (d decoder) newError(pos int, f string, x ...interface{}) error {
88
- line, column := d.Position(pos)
89
- head := fmt.Sprintf("(line %d:%d): ", line, column)
90
- return errors.New(head+f, x...)
91
- }
92
-
93
- // unexpectedTokenError returns a syntax error for the given unexpected token.
94
- func (d decoder) unexpectedTokenError(tok text.Token) error {
95
- return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString())
96
- }
97
-
98
- // syntaxError returns a syntax error for given position.
99
- func (d decoder) syntaxError(pos int, f string, x ...interface{}) error {
100
- line, column := d.Position(pos)
101
- head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
102
- return errors.New(head+f, x...)
103
- }
104
-
105
- // unmarshalMessage unmarshals into the given protoreflect.Message.
106
- func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error {
107
- messageDesc := m.Descriptor()
108
- if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
109
- return errors.New("no support for proto1 MessageSets")
110
- }
111
-
112
- if messageDesc.FullName() == genid.Any_message_fullname {
113
- return d.unmarshalAny(m, checkDelims)
114
- }
115
-
116
- if checkDelims {
117
- tok, err := d.Read()
118
- if err != nil {
119
- return err
120
- }
121
-
122
- if tok.Kind() != text.MessageOpen {
123
- return d.unexpectedTokenError(tok)
124
- }
125
- }
126
-
127
- var seenNums set.Ints
128
- var seenOneofs set.Ints
129
- fieldDescs := messageDesc.Fields()
130
-
131
- for {
132
- // Read field name.
133
- tok, err := d.Read()
134
- if err != nil {
135
- return err
136
- }
137
- switch typ := tok.Kind(); typ {
138
- case text.Name:
139
- // Continue below.
140
- case text.EOF:
141
- if checkDelims {
142
- return text.ErrUnexpectedEOF
143
- }
144
- return nil
145
- default:
146
- if checkDelims && typ == text.MessageClose {
147
- return nil
148
- }
149
- return d.unexpectedTokenError(tok)
150
- }
151
-
152
- // Resolve the field descriptor.
153
- var name pref.Name
154
- var fd pref.FieldDescriptor
155
- var xt pref.ExtensionType
156
- var xtErr error
157
- var isFieldNumberName bool
158
-
159
- switch tok.NameKind() {
160
- case text.IdentName:
161
- name = pref.Name(tok.IdentName())
162
- fd = fieldDescs.ByTextName(string(name))
163
-
164
- case text.TypeName:
165
- // Handle extensions only. This code path is not for Any.
166
- xt, xtErr = d.opts.Resolver.FindExtensionByName(pref.FullName(tok.TypeName()))
167
-
168
- case text.FieldNumber:
169
- isFieldNumberName = true
170
- num := pref.FieldNumber(tok.FieldNumber())
171
- if !num.IsValid() {
172
- return d.newError(tok.Pos(), "invalid field number: %d", num)
173
- }
174
- fd = fieldDescs.ByNumber(num)
175
- if fd == nil {
176
- xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)
177
- }
178
- }
179
-
180
- if xt != nil {
181
- fd = xt.TypeDescriptor()
182
- if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {
183
- return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName())
184
- }
185
- } else if xtErr != nil && xtErr != protoregistry.NotFound {
186
- return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr)
187
- }
188
- if flags.ProtoLegacy {
189
- if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
190
- fd = nil // reset since the weak reference is not linked in
191
- }
192
- }
193
-
194
- // Handle unknown fields.
195
- if fd == nil {
196
- if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {
197
- d.skipValue()
198
- continue
199
- }
200
- return d.newError(tok.Pos(), "unknown field: %v", tok.RawString())
201
- }
202
-
203
- // Handle fields identified by field number.
204
- if isFieldNumberName {
205
- // TODO: Add an option to permit parsing field numbers.
206
- //
207
- // This requires careful thought as the MarshalOptions.EmitUnknown
208
- // option allows formatting unknown fields as the field number and the
209
- // best-effort textual representation of the field value. In that case,
210
- // it may not be possible to unmarshal the value from a parser that does
211
- // have information about the unknown field.
212
- return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString())
213
- }
214
-
215
- switch {
216
- case fd.IsList():
217
- kind := fd.Kind()
218
- if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() {
219
- return d.syntaxError(tok.Pos(), "missing field separator :")
220
- }
221
-
222
- list := m.Mutable(fd).List()
223
- if err := d.unmarshalList(fd, list); err != nil {
224
- return err
225
- }
226
-
227
- case fd.IsMap():
228
- mmap := m.Mutable(fd).Map()
229
- if err := d.unmarshalMap(fd, mmap); err != nil {
230
- return err
231
- }
232
-
233
- default:
234
- kind := fd.Kind()
235
- if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() {
236
- return d.syntaxError(tok.Pos(), "missing field separator :")
237
- }
238
-
239
- // If field is a oneof, check if it has already been set.
240
- if od := fd.ContainingOneof(); od != nil {
241
- idx := uint64(od.Index())
242
- if seenOneofs.Has(idx) {
243
- return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName())
244
- }
245
- seenOneofs.Set(idx)
246
- }
247
-
248
- num := uint64(fd.Number())
249
- if seenNums.Has(num) {
250
- return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString())
251
- }
252
-
253
- if err := d.unmarshalSingular(fd, m); err != nil {
254
- return err
255
- }
256
- seenNums.Set(num)
257
- }
258
- }
259
-
260
- return nil
261
- }
262
-
263
- // unmarshalSingular unmarshals a non-repeated field value specified by the
264
- // given FieldDescriptor.
265
- func (d decoder) unmarshalSingular(fd pref.FieldDescriptor, m pref.Message) error {
266
- var val pref.Value
267
- var err error
268
- switch fd.Kind() {
269
- case pref.MessageKind, pref.GroupKind:
270
- val = m.NewField(fd)
271
- err = d.unmarshalMessage(val.Message(), true)
272
- default:
273
- val, err = d.unmarshalScalar(fd)
274
- }
275
- if err == nil {
276
- m.Set(fd, val)
277
- }
278
- return err
279
- }
280
-
281
- // unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the
282
- // given FieldDescriptor.
283
- func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) {
284
- tok, err := d.Read()
285
- if err != nil {
286
- return pref.Value{}, err
287
- }
288
-
289
- if tok.Kind() != text.Scalar {
290
- return pref.Value{}, d.unexpectedTokenError(tok)
291
- }
292
-
293
- kind := fd.Kind()
294
- switch kind {
295
- case pref.BoolKind:
296
- if b, ok := tok.Bool(); ok {
297
- return pref.ValueOfBool(b), nil
298
- }
299
-
300
- case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
301
- if n, ok := tok.Int32(); ok {
302
- return pref.ValueOfInt32(n), nil
303
- }
304
-
305
- case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
306
- if n, ok := tok.Int64(); ok {
307
- return pref.ValueOfInt64(n), nil
308
- }
309
-
310
- case pref.Uint32Kind, pref.Fixed32Kind:
311
- if n, ok := tok.Uint32(); ok {
312
- return pref.ValueOfUint32(n), nil
313
- }
314
-
315
- case pref.Uint64Kind, pref.Fixed64Kind:
316
- if n, ok := tok.Uint64(); ok {
317
- return pref.ValueOfUint64(n), nil
318
- }
319
-
320
- case pref.FloatKind:
321
- if n, ok := tok.Float32(); ok {
322
- return pref.ValueOfFloat32(n), nil
323
- }
324
-
325
- case pref.DoubleKind:
326
- if n, ok := tok.Float64(); ok {
327
- return pref.ValueOfFloat64(n), nil
328
- }
329
-
330
- case pref.StringKind:
331
- if s, ok := tok.String(); ok {
332
- if strs.EnforceUTF8(fd) && !utf8.ValidString(s) {
333
- return pref.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8")
334
- }
335
- return pref.ValueOfString(s), nil
336
- }
337
-
338
- case pref.BytesKind:
339
- if b, ok := tok.String(); ok {
340
- return pref.ValueOfBytes([]byte(b)), nil
341
- }
342
-
343
- case pref.EnumKind:
344
- if lit, ok := tok.Enum(); ok {
345
- // Lookup EnumNumber based on name.
346
- if enumVal := fd.Enum().Values().ByName(pref.Name(lit)); enumVal != nil {
347
- return pref.ValueOfEnum(enumVal.Number()), nil
348
- }
349
- }
350
- if num, ok := tok.Int32(); ok {
351
- return pref.ValueOfEnum(pref.EnumNumber(num)), nil
352
- }
353
-
354
- default:
355
- panic(fmt.Sprintf("invalid scalar kind %v", kind))
356
- }
357
-
358
- return pref.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString())
359
- }
360
-
361
- // unmarshalList unmarshals into given protoreflect.List. A list value can
362
- // either be in [] syntax or simply just a single scalar/message value.
363
- func (d decoder) unmarshalList(fd pref.FieldDescriptor, list pref.List) error {
364
- tok, err := d.Peek()
365
- if err != nil {
366
- return err
367
- }
368
-
369
- switch fd.Kind() {
370
- case pref.MessageKind, pref.GroupKind:
371
- switch tok.Kind() {
372
- case text.ListOpen:
373
- d.Read()
374
- for {
375
- tok, err := d.Peek()
376
- if err != nil {
377
- return err
378
- }
379
-
380
- switch tok.Kind() {
381
- case text.ListClose:
382
- d.Read()
383
- return nil
384
- case text.MessageOpen:
385
- pval := list.NewElement()
386
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
387
- return err
388
- }
389
- list.Append(pval)
390
- default:
391
- return d.unexpectedTokenError(tok)
392
- }
393
- }
394
-
395
- case text.MessageOpen:
396
- pval := list.NewElement()
397
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
398
- return err
399
- }
400
- list.Append(pval)
401
- return nil
402
- }
403
-
404
- default:
405
- switch tok.Kind() {
406
- case text.ListOpen:
407
- d.Read()
408
- for {
409
- tok, err := d.Peek()
410
- if err != nil {
411
- return err
412
- }
413
-
414
- switch tok.Kind() {
415
- case text.ListClose:
416
- d.Read()
417
- return nil
418
- case text.Scalar:
419
- pval, err := d.unmarshalScalar(fd)
420
- if err != nil {
421
- return err
422
- }
423
- list.Append(pval)
424
- default:
425
- return d.unexpectedTokenError(tok)
426
- }
427
- }
428
-
429
- case text.Scalar:
430
- pval, err := d.unmarshalScalar(fd)
431
- if err != nil {
432
- return err
433
- }
434
- list.Append(pval)
435
- return nil
436
- }
437
- }
438
-
439
- return d.unexpectedTokenError(tok)
440
- }
441
-
442
- // unmarshalMap unmarshals into given protoreflect.Map. A map value is a
443
- // textproto message containing {key: <kvalue>, value: <mvalue>}.
444
- func (d decoder) unmarshalMap(fd pref.FieldDescriptor, mmap pref.Map) error {
445
- // Determine ahead whether map entry is a scalar type or a message type in
446
- // order to call the appropriate unmarshalMapValue func inside
447
- // unmarshalMapEntry.
448
- var unmarshalMapValue func() (pref.Value, error)
449
- switch fd.MapValue().Kind() {
450
- case pref.MessageKind, pref.GroupKind:
451
- unmarshalMapValue = func() (pref.Value, error) {
452
- pval := mmap.NewValue()
453
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
454
- return pref.Value{}, err
455
- }
456
- return pval, nil
457
- }
458
- default:
459
- unmarshalMapValue = func() (pref.Value, error) {
460
- return d.unmarshalScalar(fd.MapValue())
461
- }
462
- }
463
-
464
- tok, err := d.Read()
465
- if err != nil {
466
- return err
467
- }
468
- switch tok.Kind() {
469
- case text.MessageOpen:
470
- return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)
471
-
472
- case text.ListOpen:
473
- for {
474
- tok, err := d.Read()
475
- if err != nil {
476
- return err
477
- }
478
- switch tok.Kind() {
479
- case text.ListClose:
480
- return nil
481
- case text.MessageOpen:
482
- if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {
483
- return err
484
- }
485
- default:
486
- return d.unexpectedTokenError(tok)
487
- }
488
- }
489
-
490
- default:
491
- return d.unexpectedTokenError(tok)
492
- }
493
- }
494
-
495
- // unmarshalMap unmarshals into given protoreflect.Map. A map value is a
496
- // textproto message containing {key: <kvalue>, value: <mvalue>}.
497
- func (d decoder) unmarshalMapEntry(fd pref.FieldDescriptor, mmap pref.Map, unmarshalMapValue func() (pref.Value, error)) error {
498
- var key pref.MapKey
499
- var pval pref.Value
500
- Loop:
501
- for {
502
- // Read field name.
503
- tok, err := d.Read()
504
- if err != nil {
505
- return err
506
- }
507
- switch tok.Kind() {
508
- case text.Name:
509
- if tok.NameKind() != text.IdentName {
510
- if !d.opts.DiscardUnknown {
511
- return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString())
512
- }
513
- d.skipValue()
514
- continue Loop
515
- }
516
- // Continue below.
517
- case text.MessageClose:
518
- break Loop
519
- default:
520
- return d.unexpectedTokenError(tok)
521
- }
522
-
523
- switch name := pref.Name(tok.IdentName()); name {
524
- case genid.MapEntry_Key_field_name:
525
- if !tok.HasSeparator() {
526
- return d.syntaxError(tok.Pos(), "missing field separator :")
527
- }
528
- if key.IsValid() {
529
- return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
530
- }
531
- val, err := d.unmarshalScalar(fd.MapKey())
532
- if err != nil {
533
- return err
534
- }
535
- key = val.MapKey()
536
-
537
- case genid.MapEntry_Value_field_name:
538
- if kind := fd.MapValue().Kind(); (kind != pref.MessageKind) && (kind != pref.GroupKind) {
539
- if !tok.HasSeparator() {
540
- return d.syntaxError(tok.Pos(), "missing field separator :")
541
- }
542
- }
543
- if pval.IsValid() {
544
- return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
545
- }
546
- pval, err = unmarshalMapValue()
547
- if err != nil {
548
- return err
549
- }
550
-
551
- default:
552
- if !d.opts.DiscardUnknown {
553
- return d.newError(tok.Pos(), "unknown map entry field %q", name)
554
- }
555
- d.skipValue()
556
- }
557
- }
558
-
559
- if !key.IsValid() {
560
- key = fd.MapKey().Default().MapKey()
561
- }
562
- if !pval.IsValid() {
563
- switch fd.MapValue().Kind() {
564
- case pref.MessageKind, pref.GroupKind:
565
- // If value field is not set for message/group types, construct an
566
- // empty one as default.
567
- pval = mmap.NewValue()
568
- default:
569
- pval = fd.MapValue().Default()
570
- }
571
- }
572
- mmap.Set(key, pval)
573
- return nil
574
- }
575
-
576
- // unmarshalAny unmarshals an Any textproto. It can either be in expanded form
577
- // or non-expanded form.
578
- func (d decoder) unmarshalAny(m pref.Message, checkDelims bool) error {
579
- var typeURL string
580
- var bValue []byte
581
- var seenTypeUrl bool
582
- var seenValue bool
583
- var isExpanded bool
584
-
585
- if checkDelims {
586
- tok, err := d.Read()
587
- if err != nil {
588
- return err
589
- }
590
-
591
- if tok.Kind() != text.MessageOpen {
592
- return d.unexpectedTokenError(tok)
593
- }
594
- }
595
-
596
- Loop:
597
- for {
598
- // Read field name. Can only have 3 possible field names, i.e. type_url,
599
- // value and type URL name inside [].
600
- tok, err := d.Read()
601
- if err != nil {
602
- return err
603
- }
604
- if typ := tok.Kind(); typ != text.Name {
605
- if checkDelims {
606
- if typ == text.MessageClose {
607
- break Loop
608
- }
609
- } else if typ == text.EOF {
610
- break Loop
611
- }
612
- return d.unexpectedTokenError(tok)
613
- }
614
-
615
- switch tok.NameKind() {
616
- case text.IdentName:
617
- // Both type_url and value fields require field separator :.
618
- if !tok.HasSeparator() {
619
- return d.syntaxError(tok.Pos(), "missing field separator :")
620
- }
621
-
622
- switch name := pref.Name(tok.IdentName()); name {
623
- case genid.Any_TypeUrl_field_name:
624
- if seenTypeUrl {
625
- return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname)
626
- }
627
- if isExpanded {
628
- return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
629
- }
630
- tok, err := d.Read()
631
- if err != nil {
632
- return err
633
- }
634
- var ok bool
635
- typeURL, ok = tok.String()
636
- if !ok {
637
- return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString())
638
- }
639
- seenTypeUrl = true
640
-
641
- case genid.Any_Value_field_name:
642
- if seenValue {
643
- return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname)
644
- }
645
- if isExpanded {
646
- return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
647
- }
648
- tok, err := d.Read()
649
- if err != nil {
650
- return err
651
- }
652
- s, ok := tok.String()
653
- if !ok {
654
- return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString())
655
- }
656
- bValue = []byte(s)
657
- seenValue = true
658
-
659
- default:
660
- if !d.opts.DiscardUnknown {
661
- return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
662
- }
663
- }
664
-
665
- case text.TypeName:
666
- if isExpanded {
667
- return d.newError(tok.Pos(), "cannot have more than one type")
668
- }
669
- if seenTypeUrl {
670
- return d.newError(tok.Pos(), "conflict with type_url field")
671
- }
672
- typeURL = tok.TypeName()
673
- var err error
674
- bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())
675
- if err != nil {
676
- return err
677
- }
678
- isExpanded = true
679
-
680
- default:
681
- if !d.opts.DiscardUnknown {
682
- return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
683
- }
684
- }
685
- }
686
-
687
- fds := m.Descriptor().Fields()
688
- if len(typeURL) > 0 {
689
- m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), pref.ValueOfString(typeURL))
690
- }
691
- if len(bValue) > 0 {
692
- m.Set(fds.ByNumber(genid.Any_Value_field_number), pref.ValueOfBytes(bValue))
693
- }
694
- return nil
695
- }
696
-
697
- func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {
698
- mt, err := d.opts.Resolver.FindMessageByURL(typeURL)
699
- if err != nil {
700
- return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err)
701
- }
702
- // Create new message for the embedded message type and unmarshal the value
703
- // field into it.
704
- m := mt.New()
705
- if err := d.unmarshalMessage(m, true); err != nil {
706
- return nil, err
707
- }
708
- // Serialize the embedded message and return the resulting bytes.
709
- b, err := proto.MarshalOptions{
710
- AllowPartial: true, // Never check required fields inside an Any.
711
- Deterministic: true,
712
- }.Marshal(m.Interface())
713
- if err != nil {
714
- return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err)
715
- }
716
- return b, nil
717
- }
718
-
719
- // skipValue makes the decoder parse a field value in order to advance the read
720
- // to the next field. It relies on Read returning an error if the types are not
721
- // in valid sequence.
722
- func (d decoder) skipValue() error {
723
- tok, err := d.Read()
724
- if err != nil {
725
- return err
726
- }
727
- // Only need to continue reading for messages and lists.
728
- switch tok.Kind() {
729
- case text.MessageOpen:
730
- return d.skipMessageValue()
731
-
732
- case text.ListOpen:
733
- for {
734
- tok, err := d.Read()
735
- if err != nil {
736
- return err
737
- }
738
- switch tok.Kind() {
739
- case text.ListClose:
740
- return nil
741
- case text.MessageOpen:
742
- return d.skipMessageValue()
743
- default:
744
- // Skip items. This will not validate whether skipped values are
745
- // of the same type or not, same behavior as C++
746
- // TextFormat::Parser::AllowUnknownField(true) version 3.8.0.
747
- if err := d.skipValue(); err != nil {
748
- return err
749
- }
750
- }
751
- }
752
- }
753
- return nil
754
- }
755
-
756
- // skipMessageValue makes the decoder parse and skip over all fields in a
757
- // message. It assumes that the previous read type is MessageOpen.
758
- func (d decoder) skipMessageValue() error {
759
- for {
760
- tok, err := d.Read()
761
- if err != nil {
762
- return err
763
- }
764
- switch tok.Kind() {
765
- case text.MessageClose:
766
- return nil
767
- case text.Name:
768
- if err := d.skipValue(); err != nil {
769
- return err
770
- }
771
- }
772
- }
773
- }