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,665 +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 text
6
-
7
- import (
8
- "bytes"
9
- "fmt"
10
- "io"
11
- "regexp"
12
- "strconv"
13
- "unicode/utf8"
14
-
15
- "google.golang.org/protobuf/internal/errors"
16
- )
17
-
18
- // Decoder is a token-based textproto decoder.
19
- type Decoder struct {
20
- // lastCall is last method called, either readCall or peekCall.
21
- // Initial value is readCall.
22
- lastCall call
23
-
24
- // lastToken contains the last read token.
25
- lastToken Token
26
-
27
- // lastErr contains the last read error.
28
- lastErr error
29
-
30
- // openStack is a stack containing the byte characters for MessageOpen and
31
- // ListOpen kinds. The top of stack represents the message or the list that
32
- // the current token is nested in. An empty stack means the current token is
33
- // at the top level message. The characters '{' and '<' both represent the
34
- // MessageOpen kind.
35
- openStack []byte
36
-
37
- // orig is used in reporting line and column.
38
- orig []byte
39
- // in contains the unconsumed input.
40
- in []byte
41
- }
42
-
43
- // NewDecoder returns a Decoder to read the given []byte.
44
- func NewDecoder(b []byte) *Decoder {
45
- return &Decoder{orig: b, in: b}
46
- }
47
-
48
- // ErrUnexpectedEOF means that EOF was encountered in the middle of the input.
49
- var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF)
50
-
51
- // call specifies which Decoder method was invoked.
52
- type call uint8
53
-
54
- const (
55
- readCall call = iota
56
- peekCall
57
- )
58
-
59
- // Peek looks ahead and returns the next token and error without advancing a read.
60
- func (d *Decoder) Peek() (Token, error) {
61
- defer func() { d.lastCall = peekCall }()
62
- if d.lastCall == readCall {
63
- d.lastToken, d.lastErr = d.Read()
64
- }
65
- return d.lastToken, d.lastErr
66
- }
67
-
68
- // Read returns the next token.
69
- // It will return an error if there is no valid token.
70
- func (d *Decoder) Read() (Token, error) {
71
- defer func() { d.lastCall = readCall }()
72
- if d.lastCall == peekCall {
73
- return d.lastToken, d.lastErr
74
- }
75
-
76
- tok, err := d.parseNext(d.lastToken.kind)
77
- if err != nil {
78
- return Token{}, err
79
- }
80
-
81
- switch tok.kind {
82
- case comma, semicolon:
83
- tok, err = d.parseNext(tok.kind)
84
- if err != nil {
85
- return Token{}, err
86
- }
87
- }
88
- d.lastToken = tok
89
- return tok, nil
90
- }
91
-
92
- const (
93
- mismatchedFmt = "mismatched close character %q"
94
- unexpectedFmt = "unexpected character %q"
95
- )
96
-
97
- // parseNext parses the next Token based on given last kind.
98
- func (d *Decoder) parseNext(lastKind Kind) (Token, error) {
99
- // Trim leading spaces.
100
- d.consume(0)
101
- isEOF := false
102
- if len(d.in) == 0 {
103
- isEOF = true
104
- }
105
-
106
- switch lastKind {
107
- case EOF:
108
- return d.consumeToken(EOF, 0, 0), nil
109
-
110
- case bof:
111
- // Start of top level message. Next token can be EOF or Name.
112
- if isEOF {
113
- return d.consumeToken(EOF, 0, 0), nil
114
- }
115
- return d.parseFieldName()
116
-
117
- case Name:
118
- // Next token can be MessageOpen, ListOpen or Scalar.
119
- if isEOF {
120
- return Token{}, ErrUnexpectedEOF
121
- }
122
- switch ch := d.in[0]; ch {
123
- case '{', '<':
124
- d.pushOpenStack(ch)
125
- return d.consumeToken(MessageOpen, 1, 0), nil
126
- case '[':
127
- d.pushOpenStack(ch)
128
- return d.consumeToken(ListOpen, 1, 0), nil
129
- default:
130
- return d.parseScalar()
131
- }
132
-
133
- case Scalar:
134
- openKind, closeCh := d.currentOpenKind()
135
- switch openKind {
136
- case bof:
137
- // Top level message.
138
- // Next token can be EOF, comma, semicolon or Name.
139
- if isEOF {
140
- return d.consumeToken(EOF, 0, 0), nil
141
- }
142
- switch d.in[0] {
143
- case ',':
144
- return d.consumeToken(comma, 1, 0), nil
145
- case ';':
146
- return d.consumeToken(semicolon, 1, 0), nil
147
- default:
148
- return d.parseFieldName()
149
- }
150
-
151
- case MessageOpen:
152
- // Next token can be MessageClose, comma, semicolon or Name.
153
- if isEOF {
154
- return Token{}, ErrUnexpectedEOF
155
- }
156
- switch ch := d.in[0]; ch {
157
- case closeCh:
158
- d.popOpenStack()
159
- return d.consumeToken(MessageClose, 1, 0), nil
160
- case otherCloseChar[closeCh]:
161
- return Token{}, d.newSyntaxError(mismatchedFmt, ch)
162
- case ',':
163
- return d.consumeToken(comma, 1, 0), nil
164
- case ';':
165
- return d.consumeToken(semicolon, 1, 0), nil
166
- default:
167
- return d.parseFieldName()
168
- }
169
-
170
- case ListOpen:
171
- // Next token can be ListClose or comma.
172
- if isEOF {
173
- return Token{}, ErrUnexpectedEOF
174
- }
175
- switch ch := d.in[0]; ch {
176
- case ']':
177
- d.popOpenStack()
178
- return d.consumeToken(ListClose, 1, 0), nil
179
- case ',':
180
- return d.consumeToken(comma, 1, 0), nil
181
- default:
182
- return Token{}, d.newSyntaxError(unexpectedFmt, ch)
183
- }
184
- }
185
-
186
- case MessageOpen:
187
- // Next token can be MessageClose or Name.
188
- if isEOF {
189
- return Token{}, ErrUnexpectedEOF
190
- }
191
- _, closeCh := d.currentOpenKind()
192
- switch ch := d.in[0]; ch {
193
- case closeCh:
194
- d.popOpenStack()
195
- return d.consumeToken(MessageClose, 1, 0), nil
196
- case otherCloseChar[closeCh]:
197
- return Token{}, d.newSyntaxError(mismatchedFmt, ch)
198
- default:
199
- return d.parseFieldName()
200
- }
201
-
202
- case MessageClose:
203
- openKind, closeCh := d.currentOpenKind()
204
- switch openKind {
205
- case bof:
206
- // Top level message.
207
- // Next token can be EOF, comma, semicolon or Name.
208
- if isEOF {
209
- return d.consumeToken(EOF, 0, 0), nil
210
- }
211
- switch ch := d.in[0]; ch {
212
- case ',':
213
- return d.consumeToken(comma, 1, 0), nil
214
- case ';':
215
- return d.consumeToken(semicolon, 1, 0), nil
216
- default:
217
- return d.parseFieldName()
218
- }
219
-
220
- case MessageOpen:
221
- // Next token can be MessageClose, comma, semicolon or Name.
222
- if isEOF {
223
- return Token{}, ErrUnexpectedEOF
224
- }
225
- switch ch := d.in[0]; ch {
226
- case closeCh:
227
- d.popOpenStack()
228
- return d.consumeToken(MessageClose, 1, 0), nil
229
- case otherCloseChar[closeCh]:
230
- return Token{}, d.newSyntaxError(mismatchedFmt, ch)
231
- case ',':
232
- return d.consumeToken(comma, 1, 0), nil
233
- case ';':
234
- return d.consumeToken(semicolon, 1, 0), nil
235
- default:
236
- return d.parseFieldName()
237
- }
238
-
239
- case ListOpen:
240
- // Next token can be ListClose or comma
241
- if isEOF {
242
- return Token{}, ErrUnexpectedEOF
243
- }
244
- switch ch := d.in[0]; ch {
245
- case closeCh:
246
- d.popOpenStack()
247
- return d.consumeToken(ListClose, 1, 0), nil
248
- case ',':
249
- return d.consumeToken(comma, 1, 0), nil
250
- default:
251
- return Token{}, d.newSyntaxError(unexpectedFmt, ch)
252
- }
253
- }
254
-
255
- case ListOpen:
256
- // Next token can be ListClose, MessageStart or Scalar.
257
- if isEOF {
258
- return Token{}, ErrUnexpectedEOF
259
- }
260
- switch ch := d.in[0]; ch {
261
- case ']':
262
- d.popOpenStack()
263
- return d.consumeToken(ListClose, 1, 0), nil
264
- case '{', '<':
265
- d.pushOpenStack(ch)
266
- return d.consumeToken(MessageOpen, 1, 0), nil
267
- default:
268
- return d.parseScalar()
269
- }
270
-
271
- case ListClose:
272
- openKind, closeCh := d.currentOpenKind()
273
- switch openKind {
274
- case bof:
275
- // Top level message.
276
- // Next token can be EOF, comma, semicolon or Name.
277
- if isEOF {
278
- return d.consumeToken(EOF, 0, 0), nil
279
- }
280
- switch ch := d.in[0]; ch {
281
- case ',':
282
- return d.consumeToken(comma, 1, 0), nil
283
- case ';':
284
- return d.consumeToken(semicolon, 1, 0), nil
285
- default:
286
- return d.parseFieldName()
287
- }
288
-
289
- case MessageOpen:
290
- // Next token can be MessageClose, comma, semicolon or Name.
291
- if isEOF {
292
- return Token{}, ErrUnexpectedEOF
293
- }
294
- switch ch := d.in[0]; ch {
295
- case closeCh:
296
- d.popOpenStack()
297
- return d.consumeToken(MessageClose, 1, 0), nil
298
- case otherCloseChar[closeCh]:
299
- return Token{}, d.newSyntaxError(mismatchedFmt, ch)
300
- case ',':
301
- return d.consumeToken(comma, 1, 0), nil
302
- case ';':
303
- return d.consumeToken(semicolon, 1, 0), nil
304
- default:
305
- return d.parseFieldName()
306
- }
307
-
308
- default:
309
- // It is not possible to have this case. Let it panic below.
310
- }
311
-
312
- case comma, semicolon:
313
- openKind, closeCh := d.currentOpenKind()
314
- switch openKind {
315
- case bof:
316
- // Top level message. Next token can be EOF or Name.
317
- if isEOF {
318
- return d.consumeToken(EOF, 0, 0), nil
319
- }
320
- return d.parseFieldName()
321
-
322
- case MessageOpen:
323
- // Next token can be MessageClose or Name.
324
- if isEOF {
325
- return Token{}, ErrUnexpectedEOF
326
- }
327
- switch ch := d.in[0]; ch {
328
- case closeCh:
329
- d.popOpenStack()
330
- return d.consumeToken(MessageClose, 1, 0), nil
331
- case otherCloseChar[closeCh]:
332
- return Token{}, d.newSyntaxError(mismatchedFmt, ch)
333
- default:
334
- return d.parseFieldName()
335
- }
336
-
337
- case ListOpen:
338
- if lastKind == semicolon {
339
- // It is not be possible to have this case as logic here
340
- // should not have produced a semicolon Token when inside a
341
- // list. Let it panic below.
342
- break
343
- }
344
- // Next token can be MessageOpen or Scalar.
345
- if isEOF {
346
- return Token{}, ErrUnexpectedEOF
347
- }
348
- switch ch := d.in[0]; ch {
349
- case '{', '<':
350
- d.pushOpenStack(ch)
351
- return d.consumeToken(MessageOpen, 1, 0), nil
352
- default:
353
- return d.parseScalar()
354
- }
355
- }
356
- }
357
-
358
- line, column := d.Position(len(d.orig) - len(d.in))
359
- panic(fmt.Sprintf("Decoder.parseNext: bug at handling line %d:%d with lastKind=%v", line, column, lastKind))
360
- }
361
-
362
- var otherCloseChar = map[byte]byte{
363
- '}': '>',
364
- '>': '}',
365
- }
366
-
367
- // currentOpenKind indicates whether current position is inside a message, list
368
- // or top-level message by returning MessageOpen, ListOpen or bof respectively.
369
- // If the returned kind is either a MessageOpen or ListOpen, it also returns the
370
- // corresponding closing character.
371
- func (d *Decoder) currentOpenKind() (Kind, byte) {
372
- if len(d.openStack) == 0 {
373
- return bof, 0
374
- }
375
- openCh := d.openStack[len(d.openStack)-1]
376
- switch openCh {
377
- case '{':
378
- return MessageOpen, '}'
379
- case '<':
380
- return MessageOpen, '>'
381
- case '[':
382
- return ListOpen, ']'
383
- }
384
- panic(fmt.Sprintf("Decoder: openStack contains invalid byte %s", string(openCh)))
385
- }
386
-
387
- func (d *Decoder) pushOpenStack(ch byte) {
388
- d.openStack = append(d.openStack, ch)
389
- }
390
-
391
- func (d *Decoder) popOpenStack() {
392
- d.openStack = d.openStack[:len(d.openStack)-1]
393
- }
394
-
395
- // parseFieldName parses field name and separator.
396
- func (d *Decoder) parseFieldName() (tok Token, err error) {
397
- defer func() {
398
- if err == nil && d.tryConsumeChar(':') {
399
- tok.attrs |= hasSeparator
400
- }
401
- }()
402
-
403
- // Extension or Any type URL.
404
- if d.in[0] == '[' {
405
- return d.parseTypeName()
406
- }
407
-
408
- // Identifier.
409
- if size := parseIdent(d.in, false); size > 0 {
410
- return d.consumeToken(Name, size, uint8(IdentName)), nil
411
- }
412
-
413
- // Field number. Identify if input is a valid number that is not negative
414
- // and is decimal integer within 32-bit range.
415
- if num := parseNumber(d.in); num.size > 0 {
416
- if !num.neg && num.kind == numDec {
417
- if _, err := strconv.ParseInt(string(d.in[:num.size]), 10, 32); err == nil {
418
- return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil
419
- }
420
- }
421
- return Token{}, d.newSyntaxError("invalid field number: %s", d.in[:num.size])
422
- }
423
-
424
- return Token{}, d.newSyntaxError("invalid field name: %s", errRegexp.Find(d.in))
425
- }
426
-
427
- // parseTypeName parses Any type URL or extension field name. The name is
428
- // enclosed in [ and ] characters. The C++ parser does not handle many legal URL
429
- // strings. This implementation is more liberal and allows for the pattern
430
- // ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed
431
- // in between [ ], '.', '/' and the sub names.
432
- func (d *Decoder) parseTypeName() (Token, error) {
433
- startPos := len(d.orig) - len(d.in)
434
- // Use alias s to advance first in order to use d.in for error handling.
435
- // Caller already checks for [ as first character.
436
- s := consume(d.in[1:], 0)
437
- if len(s) == 0 {
438
- return Token{}, ErrUnexpectedEOF
439
- }
440
-
441
- var name []byte
442
- for len(s) > 0 && isTypeNameChar(s[0]) {
443
- name = append(name, s[0])
444
- s = s[1:]
445
- }
446
- s = consume(s, 0)
447
-
448
- var closed bool
449
- for len(s) > 0 && !closed {
450
- switch {
451
- case s[0] == ']':
452
- s = s[1:]
453
- closed = true
454
-
455
- case s[0] == '/', s[0] == '.':
456
- if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {
457
- return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
458
- d.orig[startPos:len(d.orig)-len(s)+1])
459
- }
460
- name = append(name, s[0])
461
- s = s[1:]
462
- s = consume(s, 0)
463
- for len(s) > 0 && isTypeNameChar(s[0]) {
464
- name = append(name, s[0])
465
- s = s[1:]
466
- }
467
- s = consume(s, 0)
468
-
469
- default:
470
- return Token{}, d.newSyntaxError(
471
- "invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1])
472
- }
473
- }
474
-
475
- if !closed {
476
- return Token{}, ErrUnexpectedEOF
477
- }
478
-
479
- // First character cannot be '.'. Last character cannot be '.' or '/'.
480
- size := len(name)
481
- if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {
482
- return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
483
- d.orig[startPos:len(d.orig)-len(s)])
484
- }
485
-
486
- d.in = s
487
- endPos := len(d.orig) - len(d.in)
488
- d.consume(0)
489
-
490
- return Token{
491
- kind: Name,
492
- attrs: uint8(TypeName),
493
- pos: startPos,
494
- raw: d.orig[startPos:endPos],
495
- str: string(name),
496
- }, nil
497
- }
498
-
499
- func isTypeNameChar(b byte) bool {
500
- return (b == '-' || b == '_' ||
501
- ('0' <= b && b <= '9') ||
502
- ('a' <= b && b <= 'z') ||
503
- ('A' <= b && b <= 'Z'))
504
- }
505
-
506
- func isWhiteSpace(b byte) bool {
507
- switch b {
508
- case ' ', '\n', '\r', '\t':
509
- return true
510
- default:
511
- return false
512
- }
513
- }
514
-
515
- // parseIdent parses an unquoted proto identifier and returns size.
516
- // If allowNeg is true, it allows '-' to be the first character in the
517
- // identifier. This is used when parsing literal values like -infinity, etc.
518
- // Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*`
519
- func parseIdent(input []byte, allowNeg bool) int {
520
- var size int
521
-
522
- s := input
523
- if len(s) == 0 {
524
- return 0
525
- }
526
-
527
- if allowNeg && s[0] == '-' {
528
- s = s[1:]
529
- size++
530
- if len(s) == 0 {
531
- return 0
532
- }
533
- }
534
-
535
- switch {
536
- case s[0] == '_',
537
- 'a' <= s[0] && s[0] <= 'z',
538
- 'A' <= s[0] && s[0] <= 'Z':
539
- s = s[1:]
540
- size++
541
- default:
542
- return 0
543
- }
544
-
545
- for len(s) > 0 && (s[0] == '_' ||
546
- 'a' <= s[0] && s[0] <= 'z' ||
547
- 'A' <= s[0] && s[0] <= 'Z' ||
548
- '0' <= s[0] && s[0] <= '9') {
549
- s = s[1:]
550
- size++
551
- }
552
-
553
- if len(s) > 0 && !isDelim(s[0]) {
554
- return 0
555
- }
556
-
557
- return size
558
- }
559
-
560
- // parseScalar parses for a string, literal or number value.
561
- func (d *Decoder) parseScalar() (Token, error) {
562
- if d.in[0] == '"' || d.in[0] == '\'' {
563
- return d.parseStringValue()
564
- }
565
-
566
- if tok, ok := d.parseLiteralValue(); ok {
567
- return tok, nil
568
- }
569
-
570
- if tok, ok := d.parseNumberValue(); ok {
571
- return tok, nil
572
- }
573
-
574
- return Token{}, d.newSyntaxError("invalid scalar value: %s", errRegexp.Find(d.in))
575
- }
576
-
577
- // parseLiteralValue parses a literal value. A literal value is used for
578
- // bools, special floats and enums. This function simply identifies that the
579
- // field value is a literal.
580
- func (d *Decoder) parseLiteralValue() (Token, bool) {
581
- size := parseIdent(d.in, true)
582
- if size == 0 {
583
- return Token{}, false
584
- }
585
- return d.consumeToken(Scalar, size, literalValue), true
586
- }
587
-
588
- // consumeToken constructs a Token for given Kind from d.in and consumes given
589
- // size-length from it.
590
- func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {
591
- // Important to compute raw and pos before consuming.
592
- tok := Token{
593
- kind: kind,
594
- attrs: attrs,
595
- pos: len(d.orig) - len(d.in),
596
- raw: d.in[:size],
597
- }
598
- d.consume(size)
599
- return tok
600
- }
601
-
602
- // newSyntaxError returns a syntax error with line and column information for
603
- // current position.
604
- func (d *Decoder) newSyntaxError(f string, x ...interface{}) error {
605
- e := errors.New(f, x...)
606
- line, column := d.Position(len(d.orig) - len(d.in))
607
- return errors.New("syntax error (line %d:%d): %v", line, column, e)
608
- }
609
-
610
- // Position returns line and column number of given index of the original input.
611
- // It will panic if index is out of range.
612
- func (d *Decoder) Position(idx int) (line int, column int) {
613
- b := d.orig[:idx]
614
- line = bytes.Count(b, []byte("\n")) + 1
615
- if i := bytes.LastIndexByte(b, '\n'); i >= 0 {
616
- b = b[i+1:]
617
- }
618
- column = utf8.RuneCount(b) + 1 // ignore multi-rune characters
619
- return line, column
620
- }
621
-
622
- func (d *Decoder) tryConsumeChar(c byte) bool {
623
- if len(d.in) > 0 && d.in[0] == c {
624
- d.consume(1)
625
- return true
626
- }
627
- return false
628
- }
629
-
630
- // consume consumes n bytes of input and any subsequent whitespace or comments.
631
- func (d *Decoder) consume(n int) {
632
- d.in = consume(d.in, n)
633
- return
634
- }
635
-
636
- // consume consumes n bytes of input and any subsequent whitespace or comments.
637
- func consume(b []byte, n int) []byte {
638
- b = b[n:]
639
- for len(b) > 0 {
640
- switch b[0] {
641
- case ' ', '\n', '\r', '\t':
642
- b = b[1:]
643
- case '#':
644
- if i := bytes.IndexByte(b, '\n'); i >= 0 {
645
- b = b[i+len("\n"):]
646
- } else {
647
- b = nil
648
- }
649
- default:
650
- return b
651
- }
652
- }
653
- return b
654
- }
655
-
656
- // Any sequence that looks like a non-delimiter (for error reporting).
657
- var errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9\/]+|.)`)
658
-
659
- // isDelim returns true if given byte is a delimiter character.
660
- func isDelim(c byte) bool {
661
- return !(c == '-' || c == '+' || c == '.' || c == '_' ||
662
- ('a' <= c && c <= 'z') ||
663
- ('A' <= c && c <= 'Z') ||
664
- ('0' <= c && c <= '9'))
665
- }