planetscale 0.1.0

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 (378) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +24 -0
  3. data/.github/workflows/gem-push.yml +38 -0
  4. data/.github/workflows/licensed.yml +43 -0
  5. data/.gitignore +10 -0
  6. data/.licensed.yml +9 -0
  7. data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
  8. data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
  9. data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
  10. data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
  11. data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
  12. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
  13. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
  14. data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
  15. data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
  16. data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
  17. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
  18. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
  19. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
  20. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
  21. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
  22. data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
  23. data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
  24. data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
  25. data/.ruby_version +1 -0
  26. data/Gemfile +8 -0
  27. data/LICENSE +201 -0
  28. data/README.md +88 -0
  29. data/Rakefile +10 -0
  30. data/bin/console +15 -0
  31. data/bin/setup +17 -0
  32. data/controller.go +255 -0
  33. data/go.mod +16 -0
  34. data/go.sum +428 -0
  35. data/lib/generators/planetscale/install_generator.rb +58 -0
  36. data/lib/planetscale.rb +137 -0
  37. data/lib/planetscale/version.rb +5 -0
  38. data/planetscale.gemspec +44 -0
  39. data/proxy.go +128 -0
  40. data/vendor/github.com/armon/circbuf/.gitignore +22 -0
  41. data/vendor/github.com/armon/circbuf/LICENSE +20 -0
  42. data/vendor/github.com/armon/circbuf/README.md +28 -0
  43. data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
  44. data/vendor/github.com/armon/circbuf/go.mod +1 -0
  45. data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
  46. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
  47. data/vendor/github.com/golang/protobuf/LICENSE +28 -0
  48. data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
  49. data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
  50. data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
  51. data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
  52. data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
  53. data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
  54. data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
  55. data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
  56. data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
  57. data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
  58. data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
  59. data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
  60. data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
  61. data/vendor/github.com/gorilla/mux/LICENSE +27 -0
  62. data/vendor/github.com/gorilla/mux/README.md +805 -0
  63. data/vendor/github.com/gorilla/mux/doc.go +306 -0
  64. data/vendor/github.com/gorilla/mux/go.mod +3 -0
  65. data/vendor/github.com/gorilla/mux/middleware.go +74 -0
  66. data/vendor/github.com/gorilla/mux/mux.go +606 -0
  67. data/vendor/github.com/gorilla/mux/regexp.go +388 -0
  68. data/vendor/github.com/gorilla/mux/route.go +736 -0
  69. data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
  70. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
  71. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
  72. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
  73. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
  74. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
  75. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
  76. data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
  77. data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
  78. data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
  79. data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
  80. data/vendor/github.com/pkg/errors/.gitignore +24 -0
  81. data/vendor/github.com/pkg/errors/.travis.yml +10 -0
  82. data/vendor/github.com/pkg/errors/LICENSE +23 -0
  83. data/vendor/github.com/pkg/errors/Makefile +44 -0
  84. data/vendor/github.com/pkg/errors/README.md +59 -0
  85. data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
  86. data/vendor/github.com/pkg/errors/errors.go +288 -0
  87. data/vendor/github.com/pkg/errors/go113.go +38 -0
  88. data/vendor/github.com/pkg/errors/stack.go +177 -0
  89. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
  90. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
  91. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
  92. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
  93. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
  94. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
  95. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
  96. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
  97. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
  98. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
  99. data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
  100. data/vendor/go.uber.org/atomic/.gitignore +12 -0
  101. data/vendor/go.uber.org/atomic/.travis.yml +27 -0
  102. data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
  103. data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
  104. data/vendor/go.uber.org/atomic/Makefile +78 -0
  105. data/vendor/go.uber.org/atomic/README.md +63 -0
  106. data/vendor/go.uber.org/atomic/bool.go +81 -0
  107. data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
  108. data/vendor/go.uber.org/atomic/doc.go +23 -0
  109. data/vendor/go.uber.org/atomic/duration.go +82 -0
  110. data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
  111. data/vendor/go.uber.org/atomic/error.go +51 -0
  112. data/vendor/go.uber.org/atomic/error_ext.go +39 -0
  113. data/vendor/go.uber.org/atomic/float64.go +76 -0
  114. data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
  115. data/vendor/go.uber.org/atomic/gen.go +26 -0
  116. data/vendor/go.uber.org/atomic/go.mod +8 -0
  117. data/vendor/go.uber.org/atomic/go.sum +9 -0
  118. data/vendor/go.uber.org/atomic/int32.go +102 -0
  119. data/vendor/go.uber.org/atomic/int64.go +102 -0
  120. data/vendor/go.uber.org/atomic/nocmp.go +35 -0
  121. data/vendor/go.uber.org/atomic/string.go +54 -0
  122. data/vendor/go.uber.org/atomic/string_ext.go +43 -0
  123. data/vendor/go.uber.org/atomic/uint32.go +102 -0
  124. data/vendor/go.uber.org/atomic/uint64.go +102 -0
  125. data/vendor/go.uber.org/atomic/value.go +31 -0
  126. data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
  127. data/vendor/go.uber.org/multierr/.gitignore +4 -0
  128. data/vendor/go.uber.org/multierr/.travis.yml +23 -0
  129. data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
  130. data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
  131. data/vendor/go.uber.org/multierr/Makefile +42 -0
  132. data/vendor/go.uber.org/multierr/README.md +23 -0
  133. data/vendor/go.uber.org/multierr/error.go +449 -0
  134. data/vendor/go.uber.org/multierr/glide.yaml +8 -0
  135. data/vendor/go.uber.org/multierr/go.mod +8 -0
  136. data/vendor/go.uber.org/multierr/go.sum +11 -0
  137. data/vendor/go.uber.org/multierr/go113.go +52 -0
  138. data/vendor/go.uber.org/zap/.codecov.yml +17 -0
  139. data/vendor/go.uber.org/zap/.gitignore +32 -0
  140. data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
  141. data/vendor/go.uber.org/zap/.travis.yml +23 -0
  142. data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
  143. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
  144. data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
  145. data/vendor/go.uber.org/zap/FAQ.md +156 -0
  146. data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
  147. data/vendor/go.uber.org/zap/Makefile +63 -0
  148. data/vendor/go.uber.org/zap/README.md +134 -0
  149. data/vendor/go.uber.org/zap/array.go +320 -0
  150. data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
  151. data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
  152. data/vendor/go.uber.org/zap/checklicense.sh +17 -0
  153. data/vendor/go.uber.org/zap/config.go +264 -0
  154. data/vendor/go.uber.org/zap/doc.go +113 -0
  155. data/vendor/go.uber.org/zap/encoder.go +79 -0
  156. data/vendor/go.uber.org/zap/error.go +80 -0
  157. data/vendor/go.uber.org/zap/field.go +539 -0
  158. data/vendor/go.uber.org/zap/flag.go +39 -0
  159. data/vendor/go.uber.org/zap/glide.yaml +34 -0
  160. data/vendor/go.uber.org/zap/global.go +168 -0
  161. data/vendor/go.uber.org/zap/global_go112.go +26 -0
  162. data/vendor/go.uber.org/zap/global_prego112.go +26 -0
  163. data/vendor/go.uber.org/zap/go.mod +13 -0
  164. data/vendor/go.uber.org/zap/go.sum +56 -0
  165. data/vendor/go.uber.org/zap/http_handler.go +81 -0
  166. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
  167. data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
  168. data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
  169. data/vendor/go.uber.org/zap/level.go +132 -0
  170. data/vendor/go.uber.org/zap/logger.go +344 -0
  171. data/vendor/go.uber.org/zap/options.go +140 -0
  172. data/vendor/go.uber.org/zap/sink.go +161 -0
  173. data/vendor/go.uber.org/zap/stacktrace.go +85 -0
  174. data/vendor/go.uber.org/zap/sugar.go +304 -0
  175. data/vendor/go.uber.org/zap/time.go +27 -0
  176. data/vendor/go.uber.org/zap/writer.go +99 -0
  177. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
  178. data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
  179. data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
  180. data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
  181. data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
  182. data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
  183. data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
  184. data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
  185. data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
  186. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
  187. data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
  188. data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
  189. data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
  190. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
  191. data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
  192. data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
  193. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
  194. data/vendor/golang.org/x/net/AUTHORS +3 -0
  195. data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  196. data/vendor/golang.org/x/net/LICENSE +27 -0
  197. data/vendor/golang.org/x/net/PATENTS +22 -0
  198. data/vendor/golang.org/x/net/context/context.go +56 -0
  199. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
  200. data/vendor/golang.org/x/net/context/go17.go +73 -0
  201. data/vendor/golang.org/x/net/context/go19.go +21 -0
  202. data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
  203. data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
  204. data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
  205. data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
  206. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
  207. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
  208. data/vendor/golang.org/x/oauth2/LICENSE +27 -0
  209. data/vendor/golang.org/x/oauth2/README.md +36 -0
  210. data/vendor/golang.org/x/oauth2/go.mod +9 -0
  211. data/vendor/golang.org/x/oauth2/go.sum +361 -0
  212. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
  213. data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
  214. data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
  215. data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
  216. data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
  217. data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
  218. data/vendor/golang.org/x/oauth2/token.go +178 -0
  219. data/vendor/golang.org/x/oauth2/transport.go +89 -0
  220. data/vendor/google.golang.org/appengine/LICENSE +202 -0
  221. data/vendor/google.golang.org/appengine/internal/api.go +678 -0
  222. data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
  223. data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
  224. data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
  225. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
  226. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
  227. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
  228. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
  229. data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
  230. data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
  231. data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
  232. data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
  233. data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
  234. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
  235. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
  236. data/vendor/google.golang.org/appengine/internal/main.go +16 -0
  237. data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
  238. data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
  239. data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
  240. data/vendor/google.golang.org/appengine/internal/net.go +56 -0
  241. data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
  242. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
  243. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
  244. data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
  245. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
  246. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
  247. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
  248. data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
  249. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
  250. data/vendor/google.golang.org/protobuf/LICENSE +27 -0
  251. data/vendor/google.golang.org/protobuf/PATENTS +22 -0
  252. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
  253. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
  254. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
  255. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
  256. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
  257. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
  258. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
  259. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
  260. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
  261. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
  262. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
  263. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
  264. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
  265. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
  266. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
  267. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
  268. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
  269. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
  270. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
  271. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
  272. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
  273. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
  274. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
  275. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
  276. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
  277. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
  278. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
  279. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
  280. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
  281. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
  282. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
  283. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
  284. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
  285. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
  286. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
  287. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
  288. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
  289. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
  290. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
  291. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
  292. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
  293. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
  294. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
  295. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
  296. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
  297. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
  298. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
  299. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
  300. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
  301. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
  302. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
  303. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
  304. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
  305. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
  306. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
  307. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
  308. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
  309. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
  310. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
  311. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
  312. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
  313. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
  314. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
  315. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
  316. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
  317. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
  318. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
  319. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
  320. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
  321. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
  322. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
  323. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
  324. data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
  325. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
  326. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
  327. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
  328. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
  329. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
  330. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
  331. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
  332. data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
  333. data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
  334. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
  335. data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
  336. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
  337. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
  338. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
  339. data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
  340. data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
  341. data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
  342. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
  343. data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
  344. data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
  345. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
  346. data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
  347. data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
  348. data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
  349. data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
  350. data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
  351. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
  352. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
  353. data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
  354. data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
  355. data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
  356. data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
  357. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
  358. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
  359. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
  360. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
  361. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
  362. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
  363. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
  364. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
  365. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
  366. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
  367. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
  368. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
  369. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
  370. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
  371. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
  372. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
  373. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
  374. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
  375. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
  376. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
  377. data/vendor/modules.txt +79 -0
  378. metadata +495 -0
@@ -0,0 +1,74 @@
1
+ // Copyright 2019 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package impl
6
+
7
+ import (
8
+ "fmt"
9
+
10
+ pref "google.golang.org/protobuf/reflect/protoreflect"
11
+ "google.golang.org/protobuf/reflect/protoregistry"
12
+ )
13
+
14
+ // weakFields adds methods to the exported WeakFields type for internal use.
15
+ //
16
+ // The exported type is an alias to an unnamed type, so methods can't be
17
+ // defined directly on it.
18
+ type weakFields WeakFields
19
+
20
+ func (w weakFields) get(num pref.FieldNumber) (pref.ProtoMessage, bool) {
21
+ m, ok := w[int32(num)]
22
+ return m, ok
23
+ }
24
+
25
+ func (w *weakFields) set(num pref.FieldNumber, m pref.ProtoMessage) {
26
+ if *w == nil {
27
+ *w = make(weakFields)
28
+ }
29
+ (*w)[int32(num)] = m
30
+ }
31
+
32
+ func (w *weakFields) clear(num pref.FieldNumber) {
33
+ delete(*w, int32(num))
34
+ }
35
+
36
+ func (Export) HasWeak(w WeakFields, num pref.FieldNumber) bool {
37
+ _, ok := w[int32(num)]
38
+ return ok
39
+ }
40
+
41
+ func (Export) ClearWeak(w *WeakFields, num pref.FieldNumber) {
42
+ delete(*w, int32(num))
43
+ }
44
+
45
+ func (Export) GetWeak(w WeakFields, num pref.FieldNumber, name pref.FullName) pref.ProtoMessage {
46
+ if m, ok := w[int32(num)]; ok {
47
+ return m
48
+ }
49
+ mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
50
+ if mt == nil {
51
+ panic(fmt.Sprintf("message %v for weak field is not linked in", name))
52
+ }
53
+ return mt.Zero().Interface()
54
+ }
55
+
56
+ func (Export) SetWeak(w *WeakFields, num pref.FieldNumber, name pref.FullName, m pref.ProtoMessage) {
57
+ if m != nil {
58
+ mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
59
+ if mt == nil {
60
+ panic(fmt.Sprintf("message %v for weak field is not linked in", name))
61
+ }
62
+ if mt != m.ProtoReflect().Type() {
63
+ panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface()))
64
+ }
65
+ }
66
+ if m == nil || !m.ProtoReflect().IsValid() {
67
+ delete(*w, int32(num))
68
+ return
69
+ }
70
+ if *w == nil {
71
+ *w = make(weakFields)
72
+ }
73
+ (*w)[int32(num)] = m
74
+ }
@@ -0,0 +1,89 @@
1
+ // Copyright 2020 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 order
6
+
7
+ import (
8
+ pref "google.golang.org/protobuf/reflect/protoreflect"
9
+ )
10
+
11
+ // FieldOrder specifies the ordering to visit message fields.
12
+ // It is a function that reports whether x is ordered before y.
13
+ type FieldOrder func(x, y pref.FieldDescriptor) bool
14
+
15
+ var (
16
+ // AnyFieldOrder specifies no specific field ordering.
17
+ AnyFieldOrder FieldOrder = nil
18
+
19
+ // LegacyFieldOrder sorts fields in the same ordering as emitted by
20
+ // wire serialization in the github.com/golang/protobuf implementation.
21
+ LegacyFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
22
+ ox, oy := x.ContainingOneof(), y.ContainingOneof()
23
+ inOneof := func(od pref.OneofDescriptor) bool {
24
+ return od != nil && !od.IsSynthetic()
25
+ }
26
+
27
+ // Extension fields sort before non-extension fields.
28
+ if x.IsExtension() != y.IsExtension() {
29
+ return x.IsExtension() && !y.IsExtension()
30
+ }
31
+ // Fields not within a oneof sort before those within a oneof.
32
+ if inOneof(ox) != inOneof(oy) {
33
+ return !inOneof(ox) && inOneof(oy)
34
+ }
35
+ // Fields in disjoint oneof sets are sorted by declaration index.
36
+ if ox != nil && oy != nil && ox != oy {
37
+ return ox.Index() < oy.Index()
38
+ }
39
+ // Fields sorted by field number.
40
+ return x.Number() < y.Number()
41
+ }
42
+
43
+ // NumberFieldOrder sorts fields by their field number.
44
+ NumberFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
45
+ return x.Number() < y.Number()
46
+ }
47
+
48
+ // IndexNameFieldOrder sorts non-extension fields before extension fields.
49
+ // Non-extensions are sorted according to their declaration index.
50
+ // Extensions are sorted according to their full name.
51
+ IndexNameFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
52
+ // Non-extension fields sort before extension fields.
53
+ if x.IsExtension() != y.IsExtension() {
54
+ return !x.IsExtension() && y.IsExtension()
55
+ }
56
+ // Extensions sorted by fullname.
57
+ if x.IsExtension() && y.IsExtension() {
58
+ return x.FullName() < y.FullName()
59
+ }
60
+ // Non-extensions sorted by declaration index.
61
+ return x.Index() < y.Index()
62
+ }
63
+ )
64
+
65
+ // KeyOrder specifies the ordering to visit map entries.
66
+ // It is a function that reports whether x is ordered before y.
67
+ type KeyOrder func(x, y pref.MapKey) bool
68
+
69
+ var (
70
+ // AnyKeyOrder specifies no specific key ordering.
71
+ AnyKeyOrder KeyOrder = nil
72
+
73
+ // GenericKeyOrder sorts false before true, numeric keys in ascending order,
74
+ // and strings in lexicographical ordering according to UTF-8 codepoints.
75
+ GenericKeyOrder KeyOrder = func(x, y pref.MapKey) bool {
76
+ switch x.Interface().(type) {
77
+ case bool:
78
+ return !x.Bool() && y.Bool()
79
+ case int32, int64:
80
+ return x.Int() < y.Int()
81
+ case uint32, uint64:
82
+ return x.Uint() < y.Uint()
83
+ case string:
84
+ return x.String() < y.String()
85
+ default:
86
+ panic("invalid map key type")
87
+ }
88
+ }
89
+ )
@@ -0,0 +1,115 @@
1
+ // Copyright 2020 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 order provides ordered access to messages and maps.
6
+ package order
7
+
8
+ import (
9
+ "sort"
10
+ "sync"
11
+
12
+ pref "google.golang.org/protobuf/reflect/protoreflect"
13
+ )
14
+
15
+ type messageField struct {
16
+ fd pref.FieldDescriptor
17
+ v pref.Value
18
+ }
19
+
20
+ var messageFieldPool = sync.Pool{
21
+ New: func() interface{} { return new([]messageField) },
22
+ }
23
+
24
+ type (
25
+ // FieldRnger is an interface for visiting all fields in a message.
26
+ // The protoreflect.Message type implements this interface.
27
+ FieldRanger interface{ Range(VisitField) }
28
+ // VisitField is called everytime a message field is visited.
29
+ VisitField = func(pref.FieldDescriptor, pref.Value) bool
30
+ )
31
+
32
+ // RangeFields iterates over the fields of fs according to the specified order.
33
+ func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {
34
+ if less == nil {
35
+ fs.Range(fn)
36
+ return
37
+ }
38
+
39
+ // Obtain a pre-allocated scratch buffer.
40
+ p := messageFieldPool.Get().(*[]messageField)
41
+ fields := (*p)[:0]
42
+ defer func() {
43
+ if cap(fields) < 1024 {
44
+ *p = fields
45
+ messageFieldPool.Put(p)
46
+ }
47
+ }()
48
+
49
+ // Collect all fields in the message and sort them.
50
+ fs.Range(func(fd pref.FieldDescriptor, v pref.Value) bool {
51
+ fields = append(fields, messageField{fd, v})
52
+ return true
53
+ })
54
+ sort.Slice(fields, func(i, j int) bool {
55
+ return less(fields[i].fd, fields[j].fd)
56
+ })
57
+
58
+ // Visit the fields in the specified ordering.
59
+ for _, f := range fields {
60
+ if !fn(f.fd, f.v) {
61
+ return
62
+ }
63
+ }
64
+ }
65
+
66
+ type mapEntry struct {
67
+ k pref.MapKey
68
+ v pref.Value
69
+ }
70
+
71
+ var mapEntryPool = sync.Pool{
72
+ New: func() interface{} { return new([]mapEntry) },
73
+ }
74
+
75
+ type (
76
+ // EntryRanger is an interface for visiting all fields in a message.
77
+ // The protoreflect.Map type implements this interface.
78
+ EntryRanger interface{ Range(VisitEntry) }
79
+ // VisitEntry is called everytime a map entry is visited.
80
+ VisitEntry = func(pref.MapKey, pref.Value) bool
81
+ )
82
+
83
+ // RangeEntries iterates over the entries of es according to the specified order.
84
+ func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {
85
+ if less == nil {
86
+ es.Range(fn)
87
+ return
88
+ }
89
+
90
+ // Obtain a pre-allocated scratch buffer.
91
+ p := mapEntryPool.Get().(*[]mapEntry)
92
+ entries := (*p)[:0]
93
+ defer func() {
94
+ if cap(entries) < 1024 {
95
+ *p = entries
96
+ mapEntryPool.Put(p)
97
+ }
98
+ }()
99
+
100
+ // Collect all entries in the map and sort them.
101
+ es.Range(func(k pref.MapKey, v pref.Value) bool {
102
+ entries = append(entries, mapEntry{k, v})
103
+ return true
104
+ })
105
+ sort.Slice(entries, func(i, j int) bool {
106
+ return less(entries[i].k, entries[j].k)
107
+ })
108
+
109
+ // Visit the entries in the specified ordering.
110
+ for _, e := range entries {
111
+ if !fn(e.k, e.v) {
112
+ return
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,29 @@
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 pragma provides types that can be embedded into a struct to
6
+ // statically enforce or prevent certain language properties.
7
+ package pragma
8
+
9
+ import "sync"
10
+
11
+ // NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals.
12
+ type NoUnkeyedLiterals struct{}
13
+
14
+ // DoNotImplement can be embedded in an interface to prevent trivial
15
+ // implementations of the interface.
16
+ //
17
+ // This is useful to prevent unauthorized implementations of an interface
18
+ // so that it can be extended in the future for any protobuf language changes.
19
+ type DoNotImplement interface{ ProtoInternal(DoNotImplement) }
20
+
21
+ // DoNotCompare can be embedded in a struct to prevent comparability.
22
+ type DoNotCompare [0]func()
23
+
24
+ // DoNotCopy can be embedded in a struct to help prevent shallow copies.
25
+ // This does not rely on a Go language feature, but rather a special case
26
+ // within the vet checker.
27
+ //
28
+ // See https://golang.org/issues/8005.
29
+ type DoNotCopy [0]sync.Mutex
@@ -0,0 +1,58 @@
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 set provides simple set data structures for uint64s.
6
+ package set
7
+
8
+ import "math/bits"
9
+
10
+ // int64s represents a set of integers within the range of 0..63.
11
+ type int64s uint64
12
+
13
+ func (bs *int64s) Len() int {
14
+ return bits.OnesCount64(uint64(*bs))
15
+ }
16
+ func (bs *int64s) Has(n uint64) bool {
17
+ return uint64(*bs)&(uint64(1)<<n) > 0
18
+ }
19
+ func (bs *int64s) Set(n uint64) {
20
+ *(*uint64)(bs) |= uint64(1) << n
21
+ }
22
+ func (bs *int64s) Clear(n uint64) {
23
+ *(*uint64)(bs) &^= uint64(1) << n
24
+ }
25
+
26
+ // Ints represents a set of integers within the range of 0..math.MaxUint64.
27
+ type Ints struct {
28
+ lo int64s
29
+ hi map[uint64]struct{}
30
+ }
31
+
32
+ func (bs *Ints) Len() int {
33
+ return bs.lo.Len() + len(bs.hi)
34
+ }
35
+ func (bs *Ints) Has(n uint64) bool {
36
+ if n < 64 {
37
+ return bs.lo.Has(n)
38
+ }
39
+ _, ok := bs.hi[n]
40
+ return ok
41
+ }
42
+ func (bs *Ints) Set(n uint64) {
43
+ if n < 64 {
44
+ bs.lo.Set(n)
45
+ return
46
+ }
47
+ if bs.hi == nil {
48
+ bs.hi = make(map[uint64]struct{})
49
+ }
50
+ bs.hi[n] = struct{}{}
51
+ }
52
+ func (bs *Ints) Clear(n uint64) {
53
+ if n < 64 {
54
+ bs.lo.Clear(n)
55
+ return
56
+ }
57
+ delete(bs.hi, n)
58
+ }
@@ -0,0 +1,196 @@
1
+ // Copyright 2019 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // Package strs provides string manipulation functionality specific to protobuf.
6
+ package strs
7
+
8
+ import (
9
+ "go/token"
10
+ "strings"
11
+ "unicode"
12
+ "unicode/utf8"
13
+
14
+ "google.golang.org/protobuf/internal/flags"
15
+ "google.golang.org/protobuf/reflect/protoreflect"
16
+ )
17
+
18
+ // EnforceUTF8 reports whether to enforce strict UTF-8 validation.
19
+ func EnforceUTF8(fd protoreflect.FieldDescriptor) bool {
20
+ if flags.ProtoLegacy {
21
+ if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {
22
+ return fd.EnforceUTF8()
23
+ }
24
+ }
25
+ return fd.Syntax() == protoreflect.Proto3
26
+ }
27
+
28
+ // GoCamelCase camel-cases a protobuf name for use as a Go identifier.
29
+ //
30
+ // If there is an interior underscore followed by a lower case letter,
31
+ // drop the underscore and convert the letter to upper case.
32
+ func GoCamelCase(s string) string {
33
+ // Invariant: if the next letter is lower case, it must be converted
34
+ // to upper case.
35
+ // That is, we process a word at a time, where words are marked by _ or
36
+ // upper case letter. Digits are treated as words.
37
+ var b []byte
38
+ for i := 0; i < len(s); i++ {
39
+ c := s[i]
40
+ switch {
41
+ case c == '.' && i+1 < len(s) && isASCIILower(s[i+1]):
42
+ // Skip over '.' in ".{{lowercase}}".
43
+ case c == '.':
44
+ b = append(b, '_') // convert '.' to '_'
45
+ case c == '_' && (i == 0 || s[i-1] == '.'):
46
+ // Convert initial '_' to ensure we start with a capital letter.
47
+ // Do the same for '_' after '.' to match historic behavior.
48
+ b = append(b, 'X') // convert '_' to 'X'
49
+ case c == '_' && i+1 < len(s) && isASCIILower(s[i+1]):
50
+ // Skip over '_' in "_{{lowercase}}".
51
+ case isASCIIDigit(c):
52
+ b = append(b, c)
53
+ default:
54
+ // Assume we have a letter now - if not, it's a bogus identifier.
55
+ // The next word is a sequence of characters that must start upper case.
56
+ if isASCIILower(c) {
57
+ c -= 'a' - 'A' // convert lowercase to uppercase
58
+ }
59
+ b = append(b, c)
60
+
61
+ // Accept lower case sequence that follows.
62
+ for ; i+1 < len(s) && isASCIILower(s[i+1]); i++ {
63
+ b = append(b, s[i+1])
64
+ }
65
+ }
66
+ }
67
+ return string(b)
68
+ }
69
+
70
+ // GoSanitized converts a string to a valid Go identifier.
71
+ func GoSanitized(s string) string {
72
+ // Sanitize the input to the set of valid characters,
73
+ // which must be '_' or be in the Unicode L or N categories.
74
+ s = strings.Map(func(r rune) rune {
75
+ if unicode.IsLetter(r) || unicode.IsDigit(r) {
76
+ return r
77
+ }
78
+ return '_'
79
+ }, s)
80
+
81
+ // Prepend '_' in the event of a Go keyword conflict or if
82
+ // the identifier is invalid (does not start in the Unicode L category).
83
+ r, _ := utf8.DecodeRuneInString(s)
84
+ if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {
85
+ return "_" + s
86
+ }
87
+ return s
88
+ }
89
+
90
+ // JSONCamelCase converts a snake_case identifier to a camelCase identifier,
91
+ // according to the protobuf JSON specification.
92
+ func JSONCamelCase(s string) string {
93
+ var b []byte
94
+ var wasUnderscore bool
95
+ for i := 0; i < len(s); i++ { // proto identifiers are always ASCII
96
+ c := s[i]
97
+ if c != '_' {
98
+ if wasUnderscore && isASCIILower(c) {
99
+ c -= 'a' - 'A' // convert to uppercase
100
+ }
101
+ b = append(b, c)
102
+ }
103
+ wasUnderscore = c == '_'
104
+ }
105
+ return string(b)
106
+ }
107
+
108
+ // JSONSnakeCase converts a camelCase identifier to a snake_case identifier,
109
+ // according to the protobuf JSON specification.
110
+ func JSONSnakeCase(s string) string {
111
+ var b []byte
112
+ for i := 0; i < len(s); i++ { // proto identifiers are always ASCII
113
+ c := s[i]
114
+ if isASCIIUpper(c) {
115
+ b = append(b, '_')
116
+ c += 'a' - 'A' // convert to lowercase
117
+ }
118
+ b = append(b, c)
119
+ }
120
+ return string(b)
121
+ }
122
+
123
+ // MapEntryName derives the name of the map entry message given the field name.
124
+ // See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057
125
+ func MapEntryName(s string) string {
126
+ var b []byte
127
+ upperNext := true
128
+ for _, c := range s {
129
+ switch {
130
+ case c == '_':
131
+ upperNext = true
132
+ case upperNext:
133
+ b = append(b, byte(unicode.ToUpper(c)))
134
+ upperNext = false
135
+ default:
136
+ b = append(b, byte(c))
137
+ }
138
+ }
139
+ b = append(b, "Entry"...)
140
+ return string(b)
141
+ }
142
+
143
+ // EnumValueName derives the camel-cased enum value name.
144
+ // See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313
145
+ func EnumValueName(s string) string {
146
+ var b []byte
147
+ upperNext := true
148
+ for _, c := range s {
149
+ switch {
150
+ case c == '_':
151
+ upperNext = true
152
+ case upperNext:
153
+ b = append(b, byte(unicode.ToUpper(c)))
154
+ upperNext = false
155
+ default:
156
+ b = append(b, byte(unicode.ToLower(c)))
157
+ upperNext = false
158
+ }
159
+ }
160
+ return string(b)
161
+ }
162
+
163
+ // TrimEnumPrefix trims the enum name prefix from an enum value name,
164
+ // where the prefix is all lowercase without underscores.
165
+ // See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375
166
+ func TrimEnumPrefix(s, prefix string) string {
167
+ s0 := s // original input
168
+ for len(s) > 0 && len(prefix) > 0 {
169
+ if s[0] == '_' {
170
+ s = s[1:]
171
+ continue
172
+ }
173
+ if unicode.ToLower(rune(s[0])) != rune(prefix[0]) {
174
+ return s0 // no prefix match
175
+ }
176
+ s, prefix = s[1:], prefix[1:]
177
+ }
178
+ if len(prefix) > 0 {
179
+ return s0 // no prefix match
180
+ }
181
+ s = strings.TrimLeft(s, "_")
182
+ if len(s) == 0 {
183
+ return s0 // avoid returning empty string
184
+ }
185
+ return s
186
+ }
187
+
188
+ func isASCIILower(c byte) bool {
189
+ return 'a' <= c && c <= 'z'
190
+ }
191
+ func isASCIIUpper(c byte) bool {
192
+ return 'A' <= c && c <= 'Z'
193
+ }
194
+ func isASCIIDigit(c byte) bool {
195
+ return '0' <= c && c <= '9'
196
+ }