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,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
+ }