planetscale 0.2.0 → 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 (365) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/pipeline.yml +21 -0
  3. data/.github/workflows/ci.yml +9 -1
  4. data/.github/workflows/gem-push.yml +9 -2
  5. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  6. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +56 -3
  7. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +205 -172
  8. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  13. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  14. data/README.md +11 -8
  15. data/controller.go +24 -26
  16. data/go.mod +4 -3
  17. data/go.sum +42 -27
  18. data/lib/generators/planetscale/install_generator.rb +8 -6
  19. data/lib/planetscale/version.rb +1 -1
  20. data/lib/planetscale.rb +14 -15
  21. data/planetscale.gemspec +2 -2
  22. data/proxy/planetscale-darwin.h +1 -1
  23. data/proxy/planetscale-darwin.so +0 -0
  24. data/proxy/planetscale-linux.h +1 -1
  25. data/proxy/planetscale-linux.so +0 -0
  26. data/proxy.go +1 -5
  27. metadata +6 -342
  28. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  29. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  30. data/vendor/github.com/armon/circbuf/README.md +0 -28
  31. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  32. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  33. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  34. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  35. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  36. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  37. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  38. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  39. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  40. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  41. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  42. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  43. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  44. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  45. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  46. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  47. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  48. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  49. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  50. data/vendor/github.com/gorilla/mux/README.md +0 -805
  51. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  52. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  53. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  54. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  55. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  56. data/vendor/github.com/gorilla/mux/route.go +0 -736
  57. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  58. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  59. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  60. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  61. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  62. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  63. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  64. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  65. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  66. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  67. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  68. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  69. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  70. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  71. data/vendor/github.com/pkg/errors/Makefile +0 -44
  72. data/vendor/github.com/pkg/errors/README.md +0 -59
  73. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  74. data/vendor/github.com/pkg/errors/errors.go +0 -288
  75. data/vendor/github.com/pkg/errors/go113.go +0 -38
  76. data/vendor/github.com/pkg/errors/stack.go +0 -177
  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 -258
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -142
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -305
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -131
  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 -78
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  85. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -467
  86. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  87. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  88. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  89. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  90. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  91. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  92. data/vendor/go.uber.org/atomic/Makefile +0 -78
  93. data/vendor/go.uber.org/atomic/README.md +0 -63
  94. data/vendor/go.uber.org/atomic/bool.go +0 -81
  95. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  96. data/vendor/go.uber.org/atomic/doc.go +0 -23
  97. data/vendor/go.uber.org/atomic/duration.go +0 -82
  98. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  99. data/vendor/go.uber.org/atomic/error.go +0 -51
  100. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  101. data/vendor/go.uber.org/atomic/float64.go +0 -76
  102. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  103. data/vendor/go.uber.org/atomic/gen.go +0 -26
  104. data/vendor/go.uber.org/atomic/go.mod +0 -8
  105. data/vendor/go.uber.org/atomic/go.sum +0 -9
  106. data/vendor/go.uber.org/atomic/int32.go +0 -102
  107. data/vendor/go.uber.org/atomic/int64.go +0 -102
  108. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  109. data/vendor/go.uber.org/atomic/string.go +0 -54
  110. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  111. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  112. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  113. data/vendor/go.uber.org/atomic/value.go +0 -31
  114. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  115. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  116. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  117. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  118. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  119. data/vendor/go.uber.org/multierr/Makefile +0 -42
  120. data/vendor/go.uber.org/multierr/README.md +0 -23
  121. data/vendor/go.uber.org/multierr/error.go +0 -449
  122. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  123. data/vendor/go.uber.org/multierr/go.mod +0 -8
  124. data/vendor/go.uber.org/multierr/go.sum +0 -11
  125. data/vendor/go.uber.org/multierr/go113.go +0 -52
  126. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  127. data/vendor/go.uber.org/zap/.gitignore +0 -32
  128. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  129. data/vendor/go.uber.org/zap/.travis.yml +0 -23
  130. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -432
  131. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  132. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -81
  133. data/vendor/go.uber.org/zap/FAQ.md +0 -156
  134. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  135. data/vendor/go.uber.org/zap/Makefile +0 -63
  136. data/vendor/go.uber.org/zap/README.md +0 -134
  137. data/vendor/go.uber.org/zap/array.go +0 -320
  138. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -123
  139. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  140. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  141. data/vendor/go.uber.org/zap/config.go +0 -264
  142. data/vendor/go.uber.org/zap/doc.go +0 -113
  143. data/vendor/go.uber.org/zap/encoder.go +0 -79
  144. data/vendor/go.uber.org/zap/error.go +0 -80
  145. data/vendor/go.uber.org/zap/field.go +0 -539
  146. data/vendor/go.uber.org/zap/flag.go +0 -39
  147. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  148. data/vendor/go.uber.org/zap/global.go +0 -168
  149. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  150. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  151. data/vendor/go.uber.org/zap/go.mod +0 -13
  152. data/vendor/go.uber.org/zap/go.sum +0 -56
  153. data/vendor/go.uber.org/zap/http_handler.go +0 -81
  154. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  155. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  156. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  157. data/vendor/go.uber.org/zap/level.go +0 -132
  158. data/vendor/go.uber.org/zap/logger.go +0 -344
  159. data/vendor/go.uber.org/zap/options.go +0 -140
  160. data/vendor/go.uber.org/zap/sink.go +0 -161
  161. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  162. data/vendor/go.uber.org/zap/sugar.go +0 -304
  163. data/vendor/go.uber.org/zap/time.go +0 -27
  164. data/vendor/go.uber.org/zap/writer.go +0 -99
  165. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  166. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  167. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  168. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  169. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  170. data/vendor/go.uber.org/zap/zapcore/error.go +0 -115
  171. data/vendor/go.uber.org/zap/zapcore/field.go +0 -227
  172. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  173. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  174. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  175. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  176. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  177. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  178. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  179. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  180. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  181. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -123
  182. data/vendor/golang.org/x/net/AUTHORS +0 -3
  183. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  184. data/vendor/golang.org/x/net/LICENSE +0 -27
  185. data/vendor/golang.org/x/net/PATENTS +0 -22
  186. data/vendor/golang.org/x/net/context/context.go +0 -56
  187. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  188. data/vendor/golang.org/x/net/context/go17.go +0 -73
  189. data/vendor/golang.org/x/net/context/go19.go +0 -21
  190. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  191. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  192. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  193. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  194. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  195. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  196. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  197. data/vendor/golang.org/x/oauth2/README.md +0 -36
  198. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  199. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  200. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  201. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  202. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  203. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  204. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  205. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  206. data/vendor/golang.org/x/oauth2/token.go +0 -178
  207. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  208. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  209. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  210. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  211. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  212. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  213. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  214. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  215. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  216. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  217. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  218. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  219. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  220. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  221. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  222. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  223. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  224. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  225. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  226. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  227. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  228. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  229. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  230. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  231. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  232. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  233. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  234. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  235. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  236. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  237. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  238. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  239. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  240. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  241. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  242. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  243. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  244. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  245. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  246. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  247. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  248. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  249. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  250. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  251. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  252. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  256. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  257. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  258. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  259. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  260. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  261. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  266. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  267. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  268. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  269. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  270. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  271. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  272. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  273. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  274. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  275. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  276. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  277. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  278. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  279. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  281. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  282. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  283. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  284. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  285. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  286. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  287. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  288. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  289. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  298. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  299. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  300. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  301. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  302. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  303. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  304. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  305. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  306. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  307. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  310. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  312. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  313. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  314. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  315. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  316. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  317. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  318. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  319. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  320. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  321. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  322. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  323. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  324. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  325. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  326. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  327. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  328. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  329. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  330. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  331. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  332. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  333. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  334. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  335. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  336. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  337. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  338. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  339. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  340. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  341. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  343. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  344. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  345. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  346. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  347. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  350. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  351. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  352. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  359. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  360. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  361. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  362. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  363. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  364. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  365. data/vendor/modules.txt +0 -79
@@ -1,801 +0,0 @@
1
- // Copyright 2010 The Go Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style
3
- // license that can be found in the LICENSE file.
4
-
5
- package proto
6
-
7
- import (
8
- "encoding"
9
- "errors"
10
- "fmt"
11
- "reflect"
12
- "strconv"
13
- "strings"
14
- "unicode/utf8"
15
-
16
- "google.golang.org/protobuf/encoding/prototext"
17
- protoV2 "google.golang.org/protobuf/proto"
18
- "google.golang.org/protobuf/reflect/protoreflect"
19
- "google.golang.org/protobuf/reflect/protoregistry"
20
- )
21
-
22
- const wrapTextUnmarshalV2 = false
23
-
24
- // ParseError is returned by UnmarshalText.
25
- type ParseError struct {
26
- Message string
27
-
28
- // Deprecated: Do not use.
29
- Line, Offset int
30
- }
31
-
32
- func (e *ParseError) Error() string {
33
- if wrapTextUnmarshalV2 {
34
- return e.Message
35
- }
36
- if e.Line == 1 {
37
- return fmt.Sprintf("line 1.%d: %v", e.Offset, e.Message)
38
- }
39
- return fmt.Sprintf("line %d: %v", e.Line, e.Message)
40
- }
41
-
42
- // UnmarshalText parses a proto text formatted string into m.
43
- func UnmarshalText(s string, m Message) error {
44
- if u, ok := m.(encoding.TextUnmarshaler); ok {
45
- return u.UnmarshalText([]byte(s))
46
- }
47
-
48
- m.Reset()
49
- mi := MessageV2(m)
50
-
51
- if wrapTextUnmarshalV2 {
52
- err := prototext.UnmarshalOptions{
53
- AllowPartial: true,
54
- }.Unmarshal([]byte(s), mi)
55
- if err != nil {
56
- return &ParseError{Message: err.Error()}
57
- }
58
- return checkRequiredNotSet(mi)
59
- } else {
60
- if err := newTextParser(s).unmarshalMessage(mi.ProtoReflect(), ""); err != nil {
61
- return err
62
- }
63
- return checkRequiredNotSet(mi)
64
- }
65
- }
66
-
67
- type textParser struct {
68
- s string // remaining input
69
- done bool // whether the parsing is finished (success or error)
70
- backed bool // whether back() was called
71
- offset, line int
72
- cur token
73
- }
74
-
75
- type token struct {
76
- value string
77
- err *ParseError
78
- line int // line number
79
- offset int // byte number from start of input, not start of line
80
- unquoted string // the unquoted version of value, if it was a quoted string
81
- }
82
-
83
- func newTextParser(s string) *textParser {
84
- p := new(textParser)
85
- p.s = s
86
- p.line = 1
87
- p.cur.line = 1
88
- return p
89
- }
90
-
91
- func (p *textParser) unmarshalMessage(m protoreflect.Message, terminator string) (err error) {
92
- md := m.Descriptor()
93
- fds := md.Fields()
94
-
95
- // A struct is a sequence of "name: value", terminated by one of
96
- // '>' or '}', or the end of the input. A name may also be
97
- // "[extension]" or "[type/url]".
98
- //
99
- // The whole struct can also be an expanded Any message, like:
100
- // [type/url] < ... struct contents ... >
101
- seen := make(map[protoreflect.FieldNumber]bool)
102
- for {
103
- tok := p.next()
104
- if tok.err != nil {
105
- return tok.err
106
- }
107
- if tok.value == terminator {
108
- break
109
- }
110
- if tok.value == "[" {
111
- if err := p.unmarshalExtensionOrAny(m, seen); err != nil {
112
- return err
113
- }
114
- continue
115
- }
116
-
117
- // This is a normal, non-extension field.
118
- name := protoreflect.Name(tok.value)
119
- fd := fds.ByName(name)
120
- switch {
121
- case fd == nil:
122
- gd := fds.ByName(protoreflect.Name(strings.ToLower(string(name))))
123
- if gd != nil && gd.Kind() == protoreflect.GroupKind && gd.Message().Name() == name {
124
- fd = gd
125
- }
126
- case fd.Kind() == protoreflect.GroupKind && fd.Message().Name() != name:
127
- fd = nil
128
- case fd.IsWeak() && fd.Message().IsPlaceholder():
129
- fd = nil
130
- }
131
- if fd == nil {
132
- typeName := string(md.FullName())
133
- if m, ok := m.Interface().(Message); ok {
134
- t := reflect.TypeOf(m)
135
- if t.Kind() == reflect.Ptr {
136
- typeName = t.Elem().String()
137
- }
138
- }
139
- return p.errorf("unknown field name %q in %v", name, typeName)
140
- }
141
- if od := fd.ContainingOneof(); od != nil && m.WhichOneof(od) != nil {
142
- return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, od.Name())
143
- }
144
- if fd.Cardinality() != protoreflect.Repeated && seen[fd.Number()] {
145
- return p.errorf("non-repeated field %q was repeated", fd.Name())
146
- }
147
- seen[fd.Number()] = true
148
-
149
- // Consume any colon.
150
- if err := p.checkForColon(fd); err != nil {
151
- return err
152
- }
153
-
154
- // Parse into the field.
155
- v := m.Get(fd)
156
- if !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {
157
- v = m.Mutable(fd)
158
- }
159
- if v, err = p.unmarshalValue(v, fd); err != nil {
160
- return err
161
- }
162
- m.Set(fd, v)
163
-
164
- if err := p.consumeOptionalSeparator(); err != nil {
165
- return err
166
- }
167
- }
168
- return nil
169
- }
170
-
171
- func (p *textParser) unmarshalExtensionOrAny(m protoreflect.Message, seen map[protoreflect.FieldNumber]bool) error {
172
- name, err := p.consumeExtensionOrAnyName()
173
- if err != nil {
174
- return err
175
- }
176
-
177
- // If it contains a slash, it's an Any type URL.
178
- if slashIdx := strings.LastIndex(name, "/"); slashIdx >= 0 {
179
- tok := p.next()
180
- if tok.err != nil {
181
- return tok.err
182
- }
183
- // consume an optional colon
184
- if tok.value == ":" {
185
- tok = p.next()
186
- if tok.err != nil {
187
- return tok.err
188
- }
189
- }
190
-
191
- var terminator string
192
- switch tok.value {
193
- case "<":
194
- terminator = ">"
195
- case "{":
196
- terminator = "}"
197
- default:
198
- return p.errorf("expected '{' or '<', found %q", tok.value)
199
- }
200
-
201
- mt, err := protoregistry.GlobalTypes.FindMessageByURL(name)
202
- if err != nil {
203
- return p.errorf("unrecognized message %q in google.protobuf.Any", name[slashIdx+len("/"):])
204
- }
205
- m2 := mt.New()
206
- if err := p.unmarshalMessage(m2, terminator); err != nil {
207
- return err
208
- }
209
- b, err := protoV2.Marshal(m2.Interface())
210
- if err != nil {
211
- return p.errorf("failed to marshal message of type %q: %v", name[slashIdx+len("/"):], err)
212
- }
213
-
214
- urlFD := m.Descriptor().Fields().ByName("type_url")
215
- valFD := m.Descriptor().Fields().ByName("value")
216
- if seen[urlFD.Number()] {
217
- return p.errorf("Any message unpacked multiple times, or %q already set", urlFD.Name())
218
- }
219
- if seen[valFD.Number()] {
220
- return p.errorf("Any message unpacked multiple times, or %q already set", valFD.Name())
221
- }
222
- m.Set(urlFD, protoreflect.ValueOfString(name))
223
- m.Set(valFD, protoreflect.ValueOfBytes(b))
224
- seen[urlFD.Number()] = true
225
- seen[valFD.Number()] = true
226
- return nil
227
- }
228
-
229
- xname := protoreflect.FullName(name)
230
- xt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname)
231
- if xt == nil && isMessageSet(m.Descriptor()) {
232
- xt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append("message_set_extension"))
233
- }
234
- if xt == nil {
235
- return p.errorf("unrecognized extension %q", name)
236
- }
237
- fd := xt.TypeDescriptor()
238
- if fd.ContainingMessage().FullName() != m.Descriptor().FullName() {
239
- return p.errorf("extension field %q does not extend message %q", name, m.Descriptor().FullName())
240
- }
241
-
242
- if err := p.checkForColon(fd); err != nil {
243
- return err
244
- }
245
-
246
- v := m.Get(fd)
247
- if !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) {
248
- v = m.Mutable(fd)
249
- }
250
- v, err = p.unmarshalValue(v, fd)
251
- if err != nil {
252
- return err
253
- }
254
- m.Set(fd, v)
255
- return p.consumeOptionalSeparator()
256
- }
257
-
258
- func (p *textParser) unmarshalValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {
259
- tok := p.next()
260
- if tok.err != nil {
261
- return v, tok.err
262
- }
263
- if tok.value == "" {
264
- return v, p.errorf("unexpected EOF")
265
- }
266
-
267
- switch {
268
- case fd.IsList():
269
- lv := v.List()
270
- var err error
271
- if tok.value == "[" {
272
- // Repeated field with list notation, like [1,2,3].
273
- for {
274
- vv := lv.NewElement()
275
- vv, err = p.unmarshalSingularValue(vv, fd)
276
- if err != nil {
277
- return v, err
278
- }
279
- lv.Append(vv)
280
-
281
- tok := p.next()
282
- if tok.err != nil {
283
- return v, tok.err
284
- }
285
- if tok.value == "]" {
286
- break
287
- }
288
- if tok.value != "," {
289
- return v, p.errorf("Expected ']' or ',' found %q", tok.value)
290
- }
291
- }
292
- return v, nil
293
- }
294
-
295
- // One value of the repeated field.
296
- p.back()
297
- vv := lv.NewElement()
298
- vv, err = p.unmarshalSingularValue(vv, fd)
299
- if err != nil {
300
- return v, err
301
- }
302
- lv.Append(vv)
303
- return v, nil
304
- case fd.IsMap():
305
- // The map entry should be this sequence of tokens:
306
- // < key : KEY value : VALUE >
307
- // However, implementations may omit key or value, and technically
308
- // we should support them in any order.
309
- var terminator string
310
- switch tok.value {
311
- case "<":
312
- terminator = ">"
313
- case "{":
314
- terminator = "}"
315
- default:
316
- return v, p.errorf("expected '{' or '<', found %q", tok.value)
317
- }
318
-
319
- keyFD := fd.MapKey()
320
- valFD := fd.MapValue()
321
-
322
- mv := v.Map()
323
- kv := keyFD.Default()
324
- vv := mv.NewValue()
325
- for {
326
- tok := p.next()
327
- if tok.err != nil {
328
- return v, tok.err
329
- }
330
- if tok.value == terminator {
331
- break
332
- }
333
- var err error
334
- switch tok.value {
335
- case "key":
336
- if err := p.consumeToken(":"); err != nil {
337
- return v, err
338
- }
339
- if kv, err = p.unmarshalSingularValue(kv, keyFD); err != nil {
340
- return v, err
341
- }
342
- if err := p.consumeOptionalSeparator(); err != nil {
343
- return v, err
344
- }
345
- case "value":
346
- if err := p.checkForColon(valFD); err != nil {
347
- return v, err
348
- }
349
- if vv, err = p.unmarshalSingularValue(vv, valFD); err != nil {
350
- return v, err
351
- }
352
- if err := p.consumeOptionalSeparator(); err != nil {
353
- return v, err
354
- }
355
- default:
356
- p.back()
357
- return v, p.errorf(`expected "key", "value", or %q, found %q`, terminator, tok.value)
358
- }
359
- }
360
- mv.Set(kv.MapKey(), vv)
361
- return v, nil
362
- default:
363
- p.back()
364
- return p.unmarshalSingularValue(v, fd)
365
- }
366
- }
367
-
368
- func (p *textParser) unmarshalSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {
369
- tok := p.next()
370
- if tok.err != nil {
371
- return v, tok.err
372
- }
373
- if tok.value == "" {
374
- return v, p.errorf("unexpected EOF")
375
- }
376
-
377
- switch fd.Kind() {
378
- case protoreflect.BoolKind:
379
- switch tok.value {
380
- case "true", "1", "t", "True":
381
- return protoreflect.ValueOfBool(true), nil
382
- case "false", "0", "f", "False":
383
- return protoreflect.ValueOfBool(false), nil
384
- }
385
- case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
386
- if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {
387
- return protoreflect.ValueOfInt32(int32(x)), nil
388
- }
389
-
390
- // The C++ parser accepts large positive hex numbers that uses
391
- // two's complement arithmetic to represent negative numbers.
392
- // This feature is here for backwards compatibility with C++.
393
- if strings.HasPrefix(tok.value, "0x") {
394
- if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
395
- return protoreflect.ValueOfInt32(int32(-(int64(^x) + 1))), nil
396
- }
397
- }
398
- case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
399
- if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {
400
- return protoreflect.ValueOfInt64(int64(x)), nil
401
- }
402
-
403
- // The C++ parser accepts large positive hex numbers that uses
404
- // two's complement arithmetic to represent negative numbers.
405
- // This feature is here for backwards compatibility with C++.
406
- if strings.HasPrefix(tok.value, "0x") {
407
- if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {
408
- return protoreflect.ValueOfInt64(int64(-(int64(^x) + 1))), nil
409
- }
410
- }
411
- case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
412
- if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
413
- return protoreflect.ValueOfUint32(uint32(x)), nil
414
- }
415
- case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
416
- if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {
417
- return protoreflect.ValueOfUint64(uint64(x)), nil
418
- }
419
- case protoreflect.FloatKind:
420
- // Ignore 'f' for compatibility with output generated by C++,
421
- // but don't remove 'f' when the value is "-inf" or "inf".
422
- v := tok.value
423
- if strings.HasSuffix(v, "f") && v != "-inf" && v != "inf" {
424
- v = v[:len(v)-len("f")]
425
- }
426
- if x, err := strconv.ParseFloat(v, 32); err == nil {
427
- return protoreflect.ValueOfFloat32(float32(x)), nil
428
- }
429
- case protoreflect.DoubleKind:
430
- // Ignore 'f' for compatibility with output generated by C++,
431
- // but don't remove 'f' when the value is "-inf" or "inf".
432
- v := tok.value
433
- if strings.HasSuffix(v, "f") && v != "-inf" && v != "inf" {
434
- v = v[:len(v)-len("f")]
435
- }
436
- if x, err := strconv.ParseFloat(v, 64); err == nil {
437
- return protoreflect.ValueOfFloat64(float64(x)), nil
438
- }
439
- case protoreflect.StringKind:
440
- if isQuote(tok.value[0]) {
441
- return protoreflect.ValueOfString(tok.unquoted), nil
442
- }
443
- case protoreflect.BytesKind:
444
- if isQuote(tok.value[0]) {
445
- return protoreflect.ValueOfBytes([]byte(tok.unquoted)), nil
446
- }
447
- case protoreflect.EnumKind:
448
- if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {
449
- return protoreflect.ValueOfEnum(protoreflect.EnumNumber(x)), nil
450
- }
451
- vd := fd.Enum().Values().ByName(protoreflect.Name(tok.value))
452
- if vd != nil {
453
- return protoreflect.ValueOfEnum(vd.Number()), nil
454
- }
455
- case protoreflect.MessageKind, protoreflect.GroupKind:
456
- var terminator string
457
- switch tok.value {
458
- case "{":
459
- terminator = "}"
460
- case "<":
461
- terminator = ">"
462
- default:
463
- return v, p.errorf("expected '{' or '<', found %q", tok.value)
464
- }
465
- err := p.unmarshalMessage(v.Message(), terminator)
466
- return v, err
467
- default:
468
- panic(fmt.Sprintf("invalid kind %v", fd.Kind()))
469
- }
470
- return v, p.errorf("invalid %v: %v", fd.Kind(), tok.value)
471
- }
472
-
473
- // Consume a ':' from the input stream (if the next token is a colon),
474
- // returning an error if a colon is needed but not present.
475
- func (p *textParser) checkForColon(fd protoreflect.FieldDescriptor) *ParseError {
476
- tok := p.next()
477
- if tok.err != nil {
478
- return tok.err
479
- }
480
- if tok.value != ":" {
481
- if fd.Message() == nil {
482
- return p.errorf("expected ':', found %q", tok.value)
483
- }
484
- p.back()
485
- }
486
- return nil
487
- }
488
-
489
- // consumeExtensionOrAnyName consumes an extension name or an Any type URL and
490
- // the following ']'. It returns the name or URL consumed.
491
- func (p *textParser) consumeExtensionOrAnyName() (string, error) {
492
- tok := p.next()
493
- if tok.err != nil {
494
- return "", tok.err
495
- }
496
-
497
- // If extension name or type url is quoted, it's a single token.
498
- if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {
499
- name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))
500
- if err != nil {
501
- return "", err
502
- }
503
- return name, p.consumeToken("]")
504
- }
505
-
506
- // Consume everything up to "]"
507
- var parts []string
508
- for tok.value != "]" {
509
- parts = append(parts, tok.value)
510
- tok = p.next()
511
- if tok.err != nil {
512
- return "", p.errorf("unrecognized type_url or extension name: %s", tok.err)
513
- }
514
- if p.done && tok.value != "]" {
515
- return "", p.errorf("unclosed type_url or extension name")
516
- }
517
- }
518
- return strings.Join(parts, ""), nil
519
- }
520
-
521
- // consumeOptionalSeparator consumes an optional semicolon or comma.
522
- // It is used in unmarshalMessage to provide backward compatibility.
523
- func (p *textParser) consumeOptionalSeparator() error {
524
- tok := p.next()
525
- if tok.err != nil {
526
- return tok.err
527
- }
528
- if tok.value != ";" && tok.value != "," {
529
- p.back()
530
- }
531
- return nil
532
- }
533
-
534
- func (p *textParser) errorf(format string, a ...interface{}) *ParseError {
535
- pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}
536
- p.cur.err = pe
537
- p.done = true
538
- return pe
539
- }
540
-
541
- func (p *textParser) skipWhitespace() {
542
- i := 0
543
- for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {
544
- if p.s[i] == '#' {
545
- // comment; skip to end of line or input
546
- for i < len(p.s) && p.s[i] != '\n' {
547
- i++
548
- }
549
- if i == len(p.s) {
550
- break
551
- }
552
- }
553
- if p.s[i] == '\n' {
554
- p.line++
555
- }
556
- i++
557
- }
558
- p.offset += i
559
- p.s = p.s[i:len(p.s)]
560
- if len(p.s) == 0 {
561
- p.done = true
562
- }
563
- }
564
-
565
- func (p *textParser) advance() {
566
- // Skip whitespace
567
- p.skipWhitespace()
568
- if p.done {
569
- return
570
- }
571
-
572
- // Start of non-whitespace
573
- p.cur.err = nil
574
- p.cur.offset, p.cur.line = p.offset, p.line
575
- p.cur.unquoted = ""
576
- switch p.s[0] {
577
- case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':
578
- // Single symbol
579
- p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]
580
- case '"', '\'':
581
- // Quoted string
582
- i := 1
583
- for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' {
584
- if p.s[i] == '\\' && i+1 < len(p.s) {
585
- // skip escaped char
586
- i++
587
- }
588
- i++
589
- }
590
- if i >= len(p.s) || p.s[i] != p.s[0] {
591
- p.errorf("unmatched quote")
592
- return
593
- }
594
- unq, err := unquoteC(p.s[1:i], rune(p.s[0]))
595
- if err != nil {
596
- p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err)
597
- return
598
- }
599
- p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]
600
- p.cur.unquoted = unq
601
- default:
602
- i := 0
603
- for i < len(p.s) && isIdentOrNumberChar(p.s[i]) {
604
- i++
605
- }
606
- if i == 0 {
607
- p.errorf("unexpected byte %#x", p.s[0])
608
- return
609
- }
610
- p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]
611
- }
612
- p.offset += len(p.cur.value)
613
- }
614
-
615
- // Back off the parser by one token. Can only be done between calls to next().
616
- // It makes the next advance() a no-op.
617
- func (p *textParser) back() { p.backed = true }
618
-
619
- // Advances the parser and returns the new current token.
620
- func (p *textParser) next() *token {
621
- if p.backed || p.done {
622
- p.backed = false
623
- return &p.cur
624
- }
625
- p.advance()
626
- if p.done {
627
- p.cur.value = ""
628
- } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {
629
- // Look for multiple quoted strings separated by whitespace,
630
- // and concatenate them.
631
- cat := p.cur
632
- for {
633
- p.skipWhitespace()
634
- if p.done || !isQuote(p.s[0]) {
635
- break
636
- }
637
- p.advance()
638
- if p.cur.err != nil {
639
- return &p.cur
640
- }
641
- cat.value += " " + p.cur.value
642
- cat.unquoted += p.cur.unquoted
643
- }
644
- p.done = false // parser may have seen EOF, but we want to return cat
645
- p.cur = cat
646
- }
647
- return &p.cur
648
- }
649
-
650
- func (p *textParser) consumeToken(s string) error {
651
- tok := p.next()
652
- if tok.err != nil {
653
- return tok.err
654
- }
655
- if tok.value != s {
656
- p.back()
657
- return p.errorf("expected %q, found %q", s, tok.value)
658
- }
659
- return nil
660
- }
661
-
662
- var errBadUTF8 = errors.New("proto: bad UTF-8")
663
-
664
- func unquoteC(s string, quote rune) (string, error) {
665
- // This is based on C++'s tokenizer.cc.
666
- // Despite its name, this is *not* parsing C syntax.
667
- // For instance, "\0" is an invalid quoted string.
668
-
669
- // Avoid allocation in trivial cases.
670
- simple := true
671
- for _, r := range s {
672
- if r == '\\' || r == quote {
673
- simple = false
674
- break
675
- }
676
- }
677
- if simple {
678
- return s, nil
679
- }
680
-
681
- buf := make([]byte, 0, 3*len(s)/2)
682
- for len(s) > 0 {
683
- r, n := utf8.DecodeRuneInString(s)
684
- if r == utf8.RuneError && n == 1 {
685
- return "", errBadUTF8
686
- }
687
- s = s[n:]
688
- if r != '\\' {
689
- if r < utf8.RuneSelf {
690
- buf = append(buf, byte(r))
691
- } else {
692
- buf = append(buf, string(r)...)
693
- }
694
- continue
695
- }
696
-
697
- ch, tail, err := unescape(s)
698
- if err != nil {
699
- return "", err
700
- }
701
- buf = append(buf, ch...)
702
- s = tail
703
- }
704
- return string(buf), nil
705
- }
706
-
707
- func unescape(s string) (ch string, tail string, err error) {
708
- r, n := utf8.DecodeRuneInString(s)
709
- if r == utf8.RuneError && n == 1 {
710
- return "", "", errBadUTF8
711
- }
712
- s = s[n:]
713
- switch r {
714
- case 'a':
715
- return "\a", s, nil
716
- case 'b':
717
- return "\b", s, nil
718
- case 'f':
719
- return "\f", s, nil
720
- case 'n':
721
- return "\n", s, nil
722
- case 'r':
723
- return "\r", s, nil
724
- case 't':
725
- return "\t", s, nil
726
- case 'v':
727
- return "\v", s, nil
728
- case '?':
729
- return "?", s, nil // trigraph workaround
730
- case '\'', '"', '\\':
731
- return string(r), s, nil
732
- case '0', '1', '2', '3', '4', '5', '6', '7':
733
- if len(s) < 2 {
734
- return "", "", fmt.Errorf(`\%c requires 2 following digits`, r)
735
- }
736
- ss := string(r) + s[:2]
737
- s = s[2:]
738
- i, err := strconv.ParseUint(ss, 8, 8)
739
- if err != nil {
740
- return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss)
741
- }
742
- return string([]byte{byte(i)}), s, nil
743
- case 'x', 'X', 'u', 'U':
744
- var n int
745
- switch r {
746
- case 'x', 'X':
747
- n = 2
748
- case 'u':
749
- n = 4
750
- case 'U':
751
- n = 8
752
- }
753
- if len(s) < n {
754
- return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n)
755
- }
756
- ss := s[:n]
757
- s = s[n:]
758
- i, err := strconv.ParseUint(ss, 16, 64)
759
- if err != nil {
760
- return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss)
761
- }
762
- if r == 'x' || r == 'X' {
763
- return string([]byte{byte(i)}), s, nil
764
- }
765
- if i > utf8.MaxRune {
766
- return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
767
- }
768
- return string(rune(i)), s, nil
769
- }
770
- return "", "", fmt.Errorf(`unknown escape \%c`, r)
771
- }
772
-
773
- func isIdentOrNumberChar(c byte) bool {
774
- switch {
775
- case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':
776
- return true
777
- case '0' <= c && c <= '9':
778
- return true
779
- }
780
- switch c {
781
- case '-', '+', '.', '_':
782
- return true
783
- }
784
- return false
785
- }
786
-
787
- func isWhitespace(c byte) bool {
788
- switch c {
789
- case ' ', '\t', '\n', '\r':
790
- return true
791
- }
792
- return false
793
- }
794
-
795
- func isQuote(c byte) bool {
796
- switch c {
797
- case '"', '\'':
798
- return true
799
- }
800
- return false
801
- }