planetscale 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,631 @@
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 filedesc
6
+
7
+ import (
8
+ "bytes"
9
+ "fmt"
10
+ "sync"
11
+ "sync/atomic"
12
+
13
+ "google.golang.org/protobuf/internal/descfmt"
14
+ "google.golang.org/protobuf/internal/descopts"
15
+ "google.golang.org/protobuf/internal/encoding/defval"
16
+ "google.golang.org/protobuf/internal/encoding/messageset"
17
+ "google.golang.org/protobuf/internal/genid"
18
+ "google.golang.org/protobuf/internal/pragma"
19
+ "google.golang.org/protobuf/internal/strs"
20
+ pref "google.golang.org/protobuf/reflect/protoreflect"
21
+ "google.golang.org/protobuf/reflect/protoregistry"
22
+ )
23
+
24
+ // The types in this file may have a suffix:
25
+ // • L0: Contains fields common to all descriptors (except File) and
26
+ // must be initialized up front.
27
+ // • L1: Contains fields specific to a descriptor and
28
+ // must be initialized up front.
29
+ // • L2: Contains fields that are lazily initialized when constructing
30
+ // from the raw file descriptor. When constructing as a literal, the L2
31
+ // fields must be initialized up front.
32
+ //
33
+ // The types are exported so that packages like reflect/protodesc can
34
+ // directly construct descriptors.
35
+
36
+ type (
37
+ File struct {
38
+ fileRaw
39
+ L1 FileL1
40
+
41
+ once uint32 // atomically set if L2 is valid
42
+ mu sync.Mutex // protects L2
43
+ L2 *FileL2
44
+ }
45
+ FileL1 struct {
46
+ Syntax pref.Syntax
47
+ Path string
48
+ Package pref.FullName
49
+
50
+ Enums Enums
51
+ Messages Messages
52
+ Extensions Extensions
53
+ Services Services
54
+ }
55
+ FileL2 struct {
56
+ Options func() pref.ProtoMessage
57
+ Imports FileImports
58
+ Locations SourceLocations
59
+ }
60
+ )
61
+
62
+ func (fd *File) ParentFile() pref.FileDescriptor { return fd }
63
+ func (fd *File) Parent() pref.Descriptor { return nil }
64
+ func (fd *File) Index() int { return 0 }
65
+ func (fd *File) Syntax() pref.Syntax { return fd.L1.Syntax }
66
+ func (fd *File) Name() pref.Name { return fd.L1.Package.Name() }
67
+ func (fd *File) FullName() pref.FullName { return fd.L1.Package }
68
+ func (fd *File) IsPlaceholder() bool { return false }
69
+ func (fd *File) Options() pref.ProtoMessage {
70
+ if f := fd.lazyInit().Options; f != nil {
71
+ return f()
72
+ }
73
+ return descopts.File
74
+ }
75
+ func (fd *File) Path() string { return fd.L1.Path }
76
+ func (fd *File) Package() pref.FullName { return fd.L1.Package }
77
+ func (fd *File) Imports() pref.FileImports { return &fd.lazyInit().Imports }
78
+ func (fd *File) Enums() pref.EnumDescriptors { return &fd.L1.Enums }
79
+ func (fd *File) Messages() pref.MessageDescriptors { return &fd.L1.Messages }
80
+ func (fd *File) Extensions() pref.ExtensionDescriptors { return &fd.L1.Extensions }
81
+ func (fd *File) Services() pref.ServiceDescriptors { return &fd.L1.Services }
82
+ func (fd *File) SourceLocations() pref.SourceLocations { return &fd.lazyInit().Locations }
83
+ func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) }
84
+ func (fd *File) ProtoType(pref.FileDescriptor) {}
85
+ func (fd *File) ProtoInternal(pragma.DoNotImplement) {}
86
+
87
+ func (fd *File) lazyInit() *FileL2 {
88
+ if atomic.LoadUint32(&fd.once) == 0 {
89
+ fd.lazyInitOnce()
90
+ }
91
+ return fd.L2
92
+ }
93
+
94
+ func (fd *File) lazyInitOnce() {
95
+ fd.mu.Lock()
96
+ if fd.L2 == nil {
97
+ fd.lazyRawInit() // recursively initializes all L2 structures
98
+ }
99
+ atomic.StoreUint32(&fd.once, 1)
100
+ fd.mu.Unlock()
101
+ }
102
+
103
+ // GoPackagePath is a pseudo-internal API for determining the Go package path
104
+ // that this file descriptor is declared in.
105
+ //
106
+ // WARNING: This method is exempt from the compatibility promise and may be
107
+ // removed in the future without warning.
108
+ func (fd *File) GoPackagePath() string {
109
+ return fd.builder.GoPackagePath
110
+ }
111
+
112
+ type (
113
+ Enum struct {
114
+ Base
115
+ L1 EnumL1
116
+ L2 *EnumL2 // protected by fileDesc.once
117
+ }
118
+ EnumL1 struct {
119
+ eagerValues bool // controls whether EnumL2.Values is already populated
120
+ }
121
+ EnumL2 struct {
122
+ Options func() pref.ProtoMessage
123
+ Values EnumValues
124
+ ReservedNames Names
125
+ ReservedRanges EnumRanges
126
+ }
127
+
128
+ EnumValue struct {
129
+ Base
130
+ L1 EnumValueL1
131
+ }
132
+ EnumValueL1 struct {
133
+ Options func() pref.ProtoMessage
134
+ Number pref.EnumNumber
135
+ }
136
+ )
137
+
138
+ func (ed *Enum) Options() pref.ProtoMessage {
139
+ if f := ed.lazyInit().Options; f != nil {
140
+ return f()
141
+ }
142
+ return descopts.Enum
143
+ }
144
+ func (ed *Enum) Values() pref.EnumValueDescriptors {
145
+ if ed.L1.eagerValues {
146
+ return &ed.L2.Values
147
+ }
148
+ return &ed.lazyInit().Values
149
+ }
150
+ func (ed *Enum) ReservedNames() pref.Names { return &ed.lazyInit().ReservedNames }
151
+ func (ed *Enum) ReservedRanges() pref.EnumRanges { return &ed.lazyInit().ReservedRanges }
152
+ func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) }
153
+ func (ed *Enum) ProtoType(pref.EnumDescriptor) {}
154
+ func (ed *Enum) lazyInit() *EnumL2 {
155
+ ed.L0.ParentFile.lazyInit() // implicitly initializes L2
156
+ return ed.L2
157
+ }
158
+
159
+ func (ed *EnumValue) Options() pref.ProtoMessage {
160
+ if f := ed.L1.Options; f != nil {
161
+ return f()
162
+ }
163
+ return descopts.EnumValue
164
+ }
165
+ func (ed *EnumValue) Number() pref.EnumNumber { return ed.L1.Number }
166
+ func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) }
167
+ func (ed *EnumValue) ProtoType(pref.EnumValueDescriptor) {}
168
+
169
+ type (
170
+ Message struct {
171
+ Base
172
+ L1 MessageL1
173
+ L2 *MessageL2 // protected by fileDesc.once
174
+ }
175
+ MessageL1 struct {
176
+ Enums Enums
177
+ Messages Messages
178
+ Extensions Extensions
179
+ IsMapEntry bool // promoted from google.protobuf.MessageOptions
180
+ IsMessageSet bool // promoted from google.protobuf.MessageOptions
181
+ }
182
+ MessageL2 struct {
183
+ Options func() pref.ProtoMessage
184
+ Fields Fields
185
+ Oneofs Oneofs
186
+ ReservedNames Names
187
+ ReservedRanges FieldRanges
188
+ RequiredNumbers FieldNumbers // must be consistent with Fields.Cardinality
189
+ ExtensionRanges FieldRanges
190
+ ExtensionRangeOptions []func() pref.ProtoMessage // must be same length as ExtensionRanges
191
+ }
192
+
193
+ Field struct {
194
+ Base
195
+ L1 FieldL1
196
+ }
197
+ FieldL1 struct {
198
+ Options func() pref.ProtoMessage
199
+ Number pref.FieldNumber
200
+ Cardinality pref.Cardinality // must be consistent with Message.RequiredNumbers
201
+ Kind pref.Kind
202
+ StringName stringName
203
+ IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto
204
+ IsWeak bool // promoted from google.protobuf.FieldOptions
205
+ HasPacked bool // promoted from google.protobuf.FieldOptions
206
+ IsPacked bool // promoted from google.protobuf.FieldOptions
207
+ HasEnforceUTF8 bool // promoted from google.protobuf.FieldOptions
208
+ EnforceUTF8 bool // promoted from google.protobuf.FieldOptions
209
+ Default defaultValue
210
+ ContainingOneof pref.OneofDescriptor // must be consistent with Message.Oneofs.Fields
211
+ Enum pref.EnumDescriptor
212
+ Message pref.MessageDescriptor
213
+ }
214
+
215
+ Oneof struct {
216
+ Base
217
+ L1 OneofL1
218
+ }
219
+ OneofL1 struct {
220
+ Options func() pref.ProtoMessage
221
+ Fields OneofFields // must be consistent with Message.Fields.ContainingOneof
222
+ }
223
+ )
224
+
225
+ func (md *Message) Options() pref.ProtoMessage {
226
+ if f := md.lazyInit().Options; f != nil {
227
+ return f()
228
+ }
229
+ return descopts.Message
230
+ }
231
+ func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry }
232
+ func (md *Message) Fields() pref.FieldDescriptors { return &md.lazyInit().Fields }
233
+ func (md *Message) Oneofs() pref.OneofDescriptors { return &md.lazyInit().Oneofs }
234
+ func (md *Message) ReservedNames() pref.Names { return &md.lazyInit().ReservedNames }
235
+ func (md *Message) ReservedRanges() pref.FieldRanges { return &md.lazyInit().ReservedRanges }
236
+ func (md *Message) RequiredNumbers() pref.FieldNumbers { return &md.lazyInit().RequiredNumbers }
237
+ func (md *Message) ExtensionRanges() pref.FieldRanges { return &md.lazyInit().ExtensionRanges }
238
+ func (md *Message) ExtensionRangeOptions(i int) pref.ProtoMessage {
239
+ if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil {
240
+ return f()
241
+ }
242
+ return descopts.ExtensionRange
243
+ }
244
+ func (md *Message) Enums() pref.EnumDescriptors { return &md.L1.Enums }
245
+ func (md *Message) Messages() pref.MessageDescriptors { return &md.L1.Messages }
246
+ func (md *Message) Extensions() pref.ExtensionDescriptors { return &md.L1.Extensions }
247
+ func (md *Message) ProtoType(pref.MessageDescriptor) {}
248
+ func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) }
249
+ func (md *Message) lazyInit() *MessageL2 {
250
+ md.L0.ParentFile.lazyInit() // implicitly initializes L2
251
+ return md.L2
252
+ }
253
+
254
+ // IsMessageSet is a pseudo-internal API for checking whether a message
255
+ // should serialize in the proto1 message format.
256
+ //
257
+ // WARNING: This method is exempt from the compatibility promise and may be
258
+ // removed in the future without warning.
259
+ func (md *Message) IsMessageSet() bool {
260
+ return md.L1.IsMessageSet
261
+ }
262
+
263
+ func (fd *Field) Options() pref.ProtoMessage {
264
+ if f := fd.L1.Options; f != nil {
265
+ return f()
266
+ }
267
+ return descopts.Field
268
+ }
269
+ func (fd *Field) Number() pref.FieldNumber { return fd.L1.Number }
270
+ func (fd *Field) Cardinality() pref.Cardinality { return fd.L1.Cardinality }
271
+ func (fd *Field) Kind() pref.Kind { return fd.L1.Kind }
272
+ func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON }
273
+ func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) }
274
+ func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) }
275
+ func (fd *Field) HasPresence() bool {
276
+ return fd.L1.Cardinality != pref.Repeated && (fd.L0.ParentFile.L1.Syntax == pref.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil)
277
+ }
278
+ func (fd *Field) HasOptionalKeyword() bool {
279
+ return (fd.L0.ParentFile.L1.Syntax == pref.Proto2 && fd.L1.Cardinality == pref.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional
280
+ }
281
+ func (fd *Field) IsPacked() bool {
282
+ if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != pref.Proto2 && fd.L1.Cardinality == pref.Repeated {
283
+ switch fd.L1.Kind {
284
+ case pref.StringKind, pref.BytesKind, pref.MessageKind, pref.GroupKind:
285
+ default:
286
+ return true
287
+ }
288
+ }
289
+ return fd.L1.IsPacked
290
+ }
291
+ func (fd *Field) IsExtension() bool { return false }
292
+ func (fd *Field) IsWeak() bool { return fd.L1.IsWeak }
293
+ func (fd *Field) IsList() bool { return fd.Cardinality() == pref.Repeated && !fd.IsMap() }
294
+ func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() }
295
+ func (fd *Field) MapKey() pref.FieldDescriptor {
296
+ if !fd.IsMap() {
297
+ return nil
298
+ }
299
+ return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number)
300
+ }
301
+ func (fd *Field) MapValue() pref.FieldDescriptor {
302
+ if !fd.IsMap() {
303
+ return nil
304
+ }
305
+ return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number)
306
+ }
307
+ func (fd *Field) HasDefault() bool { return fd.L1.Default.has }
308
+ func (fd *Field) Default() pref.Value { return fd.L1.Default.get(fd) }
309
+ func (fd *Field) DefaultEnumValue() pref.EnumValueDescriptor { return fd.L1.Default.enum }
310
+ func (fd *Field) ContainingOneof() pref.OneofDescriptor { return fd.L1.ContainingOneof }
311
+ func (fd *Field) ContainingMessage() pref.MessageDescriptor {
312
+ return fd.L0.Parent.(pref.MessageDescriptor)
313
+ }
314
+ func (fd *Field) Enum() pref.EnumDescriptor {
315
+ return fd.L1.Enum
316
+ }
317
+ func (fd *Field) Message() pref.MessageDescriptor {
318
+ if fd.L1.IsWeak {
319
+ if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil {
320
+ return d.(pref.MessageDescriptor)
321
+ }
322
+ }
323
+ return fd.L1.Message
324
+ }
325
+ func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) }
326
+ func (fd *Field) ProtoType(pref.FieldDescriptor) {}
327
+
328
+ // EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8
329
+ // validation for the string field. This exists for Google-internal use only
330
+ // since proto3 did not enforce UTF-8 validity prior to the open-source release.
331
+ // If this method does not exist, the default is to enforce valid UTF-8.
332
+ //
333
+ // WARNING: This method is exempt from the compatibility promise and may be
334
+ // removed in the future without warning.
335
+ func (fd *Field) EnforceUTF8() bool {
336
+ if fd.L1.HasEnforceUTF8 {
337
+ return fd.L1.EnforceUTF8
338
+ }
339
+ return fd.L0.ParentFile.L1.Syntax == pref.Proto3
340
+ }
341
+
342
+ func (od *Oneof) IsSynthetic() bool {
343
+ return od.L0.ParentFile.L1.Syntax == pref.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword()
344
+ }
345
+ func (od *Oneof) Options() pref.ProtoMessage {
346
+ if f := od.L1.Options; f != nil {
347
+ return f()
348
+ }
349
+ return descopts.Oneof
350
+ }
351
+ func (od *Oneof) Fields() pref.FieldDescriptors { return &od.L1.Fields }
352
+ func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) }
353
+ func (od *Oneof) ProtoType(pref.OneofDescriptor) {}
354
+
355
+ type (
356
+ Extension struct {
357
+ Base
358
+ L1 ExtensionL1
359
+ L2 *ExtensionL2 // protected by fileDesc.once
360
+ }
361
+ ExtensionL1 struct {
362
+ Number pref.FieldNumber
363
+ Extendee pref.MessageDescriptor
364
+ Cardinality pref.Cardinality
365
+ Kind pref.Kind
366
+ }
367
+ ExtensionL2 struct {
368
+ Options func() pref.ProtoMessage
369
+ StringName stringName
370
+ IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto
371
+ IsPacked bool // promoted from google.protobuf.FieldOptions
372
+ Default defaultValue
373
+ Enum pref.EnumDescriptor
374
+ Message pref.MessageDescriptor
375
+ }
376
+ )
377
+
378
+ func (xd *Extension) Options() pref.ProtoMessage {
379
+ if f := xd.lazyInit().Options; f != nil {
380
+ return f()
381
+ }
382
+ return descopts.Field
383
+ }
384
+ func (xd *Extension) Number() pref.FieldNumber { return xd.L1.Number }
385
+ func (xd *Extension) Cardinality() pref.Cardinality { return xd.L1.Cardinality }
386
+ func (xd *Extension) Kind() pref.Kind { return xd.L1.Kind }
387
+ func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON }
388
+ func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) }
389
+ func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) }
390
+ func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != pref.Repeated }
391
+ func (xd *Extension) HasOptionalKeyword() bool {
392
+ return (xd.L0.ParentFile.L1.Syntax == pref.Proto2 && xd.L1.Cardinality == pref.Optional) || xd.lazyInit().IsProto3Optional
393
+ }
394
+ func (xd *Extension) IsPacked() bool { return xd.lazyInit().IsPacked }
395
+ func (xd *Extension) IsExtension() bool { return true }
396
+ func (xd *Extension) IsWeak() bool { return false }
397
+ func (xd *Extension) IsList() bool { return xd.Cardinality() == pref.Repeated }
398
+ func (xd *Extension) IsMap() bool { return false }
399
+ func (xd *Extension) MapKey() pref.FieldDescriptor { return nil }
400
+ func (xd *Extension) MapValue() pref.FieldDescriptor { return nil }
401
+ func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has }
402
+ func (xd *Extension) Default() pref.Value { return xd.lazyInit().Default.get(xd) }
403
+ func (xd *Extension) DefaultEnumValue() pref.EnumValueDescriptor { return xd.lazyInit().Default.enum }
404
+ func (xd *Extension) ContainingOneof() pref.OneofDescriptor { return nil }
405
+ func (xd *Extension) ContainingMessage() pref.MessageDescriptor { return xd.L1.Extendee }
406
+ func (xd *Extension) Enum() pref.EnumDescriptor { return xd.lazyInit().Enum }
407
+ func (xd *Extension) Message() pref.MessageDescriptor { return xd.lazyInit().Message }
408
+ func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) }
409
+ func (xd *Extension) ProtoType(pref.FieldDescriptor) {}
410
+ func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {}
411
+ func (xd *Extension) lazyInit() *ExtensionL2 {
412
+ xd.L0.ParentFile.lazyInit() // implicitly initializes L2
413
+ return xd.L2
414
+ }
415
+
416
+ type (
417
+ Service struct {
418
+ Base
419
+ L1 ServiceL1
420
+ L2 *ServiceL2 // protected by fileDesc.once
421
+ }
422
+ ServiceL1 struct{}
423
+ ServiceL2 struct {
424
+ Options func() pref.ProtoMessage
425
+ Methods Methods
426
+ }
427
+
428
+ Method struct {
429
+ Base
430
+ L1 MethodL1
431
+ }
432
+ MethodL1 struct {
433
+ Options func() pref.ProtoMessage
434
+ Input pref.MessageDescriptor
435
+ Output pref.MessageDescriptor
436
+ IsStreamingClient bool
437
+ IsStreamingServer bool
438
+ }
439
+ )
440
+
441
+ func (sd *Service) Options() pref.ProtoMessage {
442
+ if f := sd.lazyInit().Options; f != nil {
443
+ return f()
444
+ }
445
+ return descopts.Service
446
+ }
447
+ func (sd *Service) Methods() pref.MethodDescriptors { return &sd.lazyInit().Methods }
448
+ func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) }
449
+ func (sd *Service) ProtoType(pref.ServiceDescriptor) {}
450
+ func (sd *Service) ProtoInternal(pragma.DoNotImplement) {}
451
+ func (sd *Service) lazyInit() *ServiceL2 {
452
+ sd.L0.ParentFile.lazyInit() // implicitly initializes L2
453
+ return sd.L2
454
+ }
455
+
456
+ func (md *Method) Options() pref.ProtoMessage {
457
+ if f := md.L1.Options; f != nil {
458
+ return f()
459
+ }
460
+ return descopts.Method
461
+ }
462
+ func (md *Method) Input() pref.MessageDescriptor { return md.L1.Input }
463
+ func (md *Method) Output() pref.MessageDescriptor { return md.L1.Output }
464
+ func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient }
465
+ func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer }
466
+ func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) }
467
+ func (md *Method) ProtoType(pref.MethodDescriptor) {}
468
+ func (md *Method) ProtoInternal(pragma.DoNotImplement) {}
469
+
470
+ // Surrogate files are can be used to create standalone descriptors
471
+ // where the syntax is only information derived from the parent file.
472
+ var (
473
+ SurrogateProto2 = &File{L1: FileL1{Syntax: pref.Proto2}, L2: &FileL2{}}
474
+ SurrogateProto3 = &File{L1: FileL1{Syntax: pref.Proto3}, L2: &FileL2{}}
475
+ )
476
+
477
+ type (
478
+ Base struct {
479
+ L0 BaseL0
480
+ }
481
+ BaseL0 struct {
482
+ FullName pref.FullName // must be populated
483
+ ParentFile *File // must be populated
484
+ Parent pref.Descriptor
485
+ Index int
486
+ }
487
+ )
488
+
489
+ func (d *Base) Name() pref.Name { return d.L0.FullName.Name() }
490
+ func (d *Base) FullName() pref.FullName { return d.L0.FullName }
491
+ func (d *Base) ParentFile() pref.FileDescriptor {
492
+ if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 {
493
+ return nil // surrogate files are not real parents
494
+ }
495
+ return d.L0.ParentFile
496
+ }
497
+ func (d *Base) Parent() pref.Descriptor { return d.L0.Parent }
498
+ func (d *Base) Index() int { return d.L0.Index }
499
+ func (d *Base) Syntax() pref.Syntax { return d.L0.ParentFile.Syntax() }
500
+ func (d *Base) IsPlaceholder() bool { return false }
501
+ func (d *Base) ProtoInternal(pragma.DoNotImplement) {}
502
+
503
+ type stringName struct {
504
+ hasJSON bool
505
+ once sync.Once
506
+ nameJSON string
507
+ nameText string
508
+ }
509
+
510
+ // InitJSON initializes the name. It is exported for use by other internal packages.
511
+ func (s *stringName) InitJSON(name string) {
512
+ s.hasJSON = true
513
+ s.nameJSON = name
514
+ }
515
+
516
+ func (s *stringName) lazyInit(fd pref.FieldDescriptor) *stringName {
517
+ s.once.Do(func() {
518
+ if fd.IsExtension() {
519
+ // For extensions, JSON and text are formatted the same way.
520
+ var name string
521
+ if messageset.IsMessageSetExtension(fd) {
522
+ name = string("[" + fd.FullName().Parent() + "]")
523
+ } else {
524
+ name = string("[" + fd.FullName() + "]")
525
+ }
526
+ s.nameJSON = name
527
+ s.nameText = name
528
+ } else {
529
+ // Format the JSON name.
530
+ if !s.hasJSON {
531
+ s.nameJSON = strs.JSONCamelCase(string(fd.Name()))
532
+ }
533
+
534
+ // Format the text name.
535
+ s.nameText = string(fd.Name())
536
+ if fd.Kind() == pref.GroupKind {
537
+ s.nameText = string(fd.Message().Name())
538
+ }
539
+ }
540
+ })
541
+ return s
542
+ }
543
+
544
+ func (s *stringName) getJSON(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameJSON }
545
+ func (s *stringName) getText(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameText }
546
+
547
+ func DefaultValue(v pref.Value, ev pref.EnumValueDescriptor) defaultValue {
548
+ dv := defaultValue{has: v.IsValid(), val: v, enum: ev}
549
+ if b, ok := v.Interface().([]byte); ok {
550
+ // Store a copy of the default bytes, so that we can detect
551
+ // accidental mutations of the original value.
552
+ dv.bytes = append([]byte(nil), b...)
553
+ }
554
+ return dv
555
+ }
556
+
557
+ func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) defaultValue {
558
+ var evs pref.EnumValueDescriptors
559
+ if k == pref.EnumKind {
560
+ // If the enum is declared within the same file, be careful not to
561
+ // blindly call the Values method, lest we bind ourselves in a deadlock.
562
+ if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf {
563
+ evs = &e.L2.Values
564
+ } else {
565
+ evs = ed.Values()
566
+ }
567
+
568
+ // If we are unable to resolve the enum dependency, use a placeholder
569
+ // enum value since we will not be able to parse the default value.
570
+ if ed.IsPlaceholder() && pref.Name(b).IsValid() {
571
+ v := pref.ValueOfEnum(0)
572
+ ev := PlaceholderEnumValue(ed.FullName().Parent().Append(pref.Name(b)))
573
+ return DefaultValue(v, ev)
574
+ }
575
+ }
576
+
577
+ v, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor)
578
+ if err != nil {
579
+ panic(err)
580
+ }
581
+ return DefaultValue(v, ev)
582
+ }
583
+
584
+ type defaultValue struct {
585
+ has bool
586
+ val pref.Value
587
+ enum pref.EnumValueDescriptor
588
+ bytes []byte
589
+ }
590
+
591
+ func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value {
592
+ // Return the zero value as the default if unpopulated.
593
+ if !dv.has {
594
+ if fd.Cardinality() == pref.Repeated {
595
+ return pref.Value{}
596
+ }
597
+ switch fd.Kind() {
598
+ case pref.BoolKind:
599
+ return pref.ValueOfBool(false)
600
+ case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
601
+ return pref.ValueOfInt32(0)
602
+ case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
603
+ return pref.ValueOfInt64(0)
604
+ case pref.Uint32Kind, pref.Fixed32Kind:
605
+ return pref.ValueOfUint32(0)
606
+ case pref.Uint64Kind, pref.Fixed64Kind:
607
+ return pref.ValueOfUint64(0)
608
+ case pref.FloatKind:
609
+ return pref.ValueOfFloat32(0)
610
+ case pref.DoubleKind:
611
+ return pref.ValueOfFloat64(0)
612
+ case pref.StringKind:
613
+ return pref.ValueOfString("")
614
+ case pref.BytesKind:
615
+ return pref.ValueOfBytes(nil)
616
+ case pref.EnumKind:
617
+ if evs := fd.Enum().Values(); evs.Len() > 0 {
618
+ return pref.ValueOfEnum(evs.Get(0).Number())
619
+ }
620
+ return pref.ValueOfEnum(0)
621
+ }
622
+ }
623
+
624
+ if len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) {
625
+ // TODO: Avoid panic if we're running with the race detector
626
+ // and instead spawn a goroutine that periodically resets
627
+ // this value back to the original to induce a race.
628
+ panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName()))
629
+ }
630
+ return dv.val
631
+ }