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,29 @@
1
+ // Copyright 2018 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // Package text implements the text format for protocol buffers.
6
+ // This package has no semantic understanding for protocol buffers and is only
7
+ // a parser and composer for the format.
8
+ //
9
+ // There is no formal specification for the protobuf text format, as such the
10
+ // C++ implementation (see google::protobuf::TextFormat) is the reference
11
+ // implementation of the text format.
12
+ //
13
+ // This package is neither a superset nor a subset of the C++ implementation.
14
+ // This implementation permits a more liberal grammar in some cases to be
15
+ // backwards compatible with the historical Go implementation.
16
+ // Future parsings unique to Go should not be added.
17
+ // Some grammars allowed by the C++ implementation are deliberately
18
+ // not implemented here because they are considered a bug by the protobuf team
19
+ // and should not be replicated.
20
+ //
21
+ // The Go implementation should implement a sufficient amount of the C++
22
+ // grammar such that the default text serialization by C++ can be parsed by Go.
23
+ // However, just because the C++ parser accepts some input does not mean that
24
+ // the Go implementation should as well.
25
+ //
26
+ // The text format is almost a superset of JSON except:
27
+ // * message keys are not quoted strings, but identifiers
28
+ // * the top-level value must be a message without the delimiters
29
+ package text
@@ -0,0 +1,265 @@
1
+ // Copyright 2018 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package text
6
+
7
+ import (
8
+ "math"
9
+ "math/bits"
10
+ "strconv"
11
+ "strings"
12
+ "unicode/utf8"
13
+
14
+ "google.golang.org/protobuf/internal/detrand"
15
+ "google.golang.org/protobuf/internal/errors"
16
+ )
17
+
18
+ // encType represents an encoding type.
19
+ type encType uint8
20
+
21
+ const (
22
+ _ encType = (1 << iota) / 2
23
+ name
24
+ scalar
25
+ messageOpen
26
+ messageClose
27
+ )
28
+
29
+ // Encoder provides methods to write out textproto constructs and values. The user is
30
+ // responsible for producing valid sequences of constructs and values.
31
+ type Encoder struct {
32
+ encoderState
33
+
34
+ indent string
35
+ delims [2]byte
36
+ outputASCII bool
37
+ }
38
+
39
+ type encoderState struct {
40
+ lastType encType
41
+ indents []byte
42
+ out []byte
43
+ }
44
+
45
+ // NewEncoder returns an Encoder.
46
+ //
47
+ // If indent is a non-empty string, it causes every entry in a List or Message
48
+ // to be preceded by the indent and trailed by a newline.
49
+ //
50
+ // If delims is not the zero value, it controls the delimiter characters used
51
+ // for messages (e.g., "{}" vs "<>").
52
+ //
53
+ // If outputASCII is true, strings will be serialized in such a way that
54
+ // multi-byte UTF-8 sequences are escaped. This property ensures that the
55
+ // overall output is ASCII (as opposed to UTF-8).
56
+ func NewEncoder(indent string, delims [2]byte, outputASCII bool) (*Encoder, error) {
57
+ e := &Encoder{}
58
+ if len(indent) > 0 {
59
+ if strings.Trim(indent, " \t") != "" {
60
+ return nil, errors.New("indent may only be composed of space and tab characters")
61
+ }
62
+ e.indent = indent
63
+ }
64
+ switch delims {
65
+ case [2]byte{0, 0}:
66
+ e.delims = [2]byte{'{', '}'}
67
+ case [2]byte{'{', '}'}, [2]byte{'<', '>'}:
68
+ e.delims = delims
69
+ default:
70
+ return nil, errors.New("delimiters may only be \"{}\" or \"<>\"")
71
+ }
72
+ e.outputASCII = outputASCII
73
+
74
+ return e, nil
75
+ }
76
+
77
+ // Bytes returns the content of the written bytes.
78
+ func (e *Encoder) Bytes() []byte {
79
+ return e.out
80
+ }
81
+
82
+ // StartMessage writes out the '{' or '<' symbol.
83
+ func (e *Encoder) StartMessage() {
84
+ e.prepareNext(messageOpen)
85
+ e.out = append(e.out, e.delims[0])
86
+ }
87
+
88
+ // EndMessage writes out the '}' or '>' symbol.
89
+ func (e *Encoder) EndMessage() {
90
+ e.prepareNext(messageClose)
91
+ e.out = append(e.out, e.delims[1])
92
+ }
93
+
94
+ // WriteName writes out the field name and the separator ':'.
95
+ func (e *Encoder) WriteName(s string) {
96
+ e.prepareNext(name)
97
+ e.out = append(e.out, s...)
98
+ e.out = append(e.out, ':')
99
+ }
100
+
101
+ // WriteBool writes out the given boolean value.
102
+ func (e *Encoder) WriteBool(b bool) {
103
+ if b {
104
+ e.WriteLiteral("true")
105
+ } else {
106
+ e.WriteLiteral("false")
107
+ }
108
+ }
109
+
110
+ // WriteString writes out the given string value.
111
+ func (e *Encoder) WriteString(s string) {
112
+ e.prepareNext(scalar)
113
+ e.out = appendString(e.out, s, e.outputASCII)
114
+ }
115
+
116
+ func appendString(out []byte, in string, outputASCII bool) []byte {
117
+ out = append(out, '"')
118
+ i := indexNeedEscapeInString(in)
119
+ in, out = in[i:], append(out, in[:i]...)
120
+ for len(in) > 0 {
121
+ switch r, n := utf8.DecodeRuneInString(in); {
122
+ case r == utf8.RuneError && n == 1:
123
+ // We do not report invalid UTF-8 because strings in the text format
124
+ // are used to represent both the proto string and bytes type.
125
+ r = rune(in[0])
126
+ fallthrough
127
+ case r < ' ' || r == '"' || r == '\\' || r == 0x7f:
128
+ out = append(out, '\\')
129
+ switch r {
130
+ case '"', '\\':
131
+ out = append(out, byte(r))
132
+ case '\n':
133
+ out = append(out, 'n')
134
+ case '\r':
135
+ out = append(out, 'r')
136
+ case '\t':
137
+ out = append(out, 't')
138
+ default:
139
+ out = append(out, 'x')
140
+ out = append(out, "00"[1+(bits.Len32(uint32(r))-1)/4:]...)
141
+ out = strconv.AppendUint(out, uint64(r), 16)
142
+ }
143
+ in = in[n:]
144
+ case r >= utf8.RuneSelf && (outputASCII || r <= 0x009f):
145
+ out = append(out, '\\')
146
+ if r <= math.MaxUint16 {
147
+ out = append(out, 'u')
148
+ out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...)
149
+ out = strconv.AppendUint(out, uint64(r), 16)
150
+ } else {
151
+ out = append(out, 'U')
152
+ out = append(out, "00000000"[1+(bits.Len32(uint32(r))-1)/4:]...)
153
+ out = strconv.AppendUint(out, uint64(r), 16)
154
+ }
155
+ in = in[n:]
156
+ default:
157
+ i := indexNeedEscapeInString(in[n:])
158
+ in, out = in[n+i:], append(out, in[:n+i]...)
159
+ }
160
+ }
161
+ out = append(out, '"')
162
+ return out
163
+ }
164
+
165
+ // indexNeedEscapeInString returns the index of the character that needs
166
+ // escaping. If no characters need escaping, this returns the input length.
167
+ func indexNeedEscapeInString(s string) int {
168
+ for i := 0; i < len(s); i++ {
169
+ if c := s[i]; c < ' ' || c == '"' || c == '\'' || c == '\\' || c >= 0x7f {
170
+ return i
171
+ }
172
+ }
173
+ return len(s)
174
+ }
175
+
176
+ // WriteFloat writes out the given float value for given bitSize.
177
+ func (e *Encoder) WriteFloat(n float64, bitSize int) {
178
+ e.prepareNext(scalar)
179
+ e.out = appendFloat(e.out, n, bitSize)
180
+ }
181
+
182
+ func appendFloat(out []byte, n float64, bitSize int) []byte {
183
+ switch {
184
+ case math.IsNaN(n):
185
+ return append(out, "nan"...)
186
+ case math.IsInf(n, +1):
187
+ return append(out, "inf"...)
188
+ case math.IsInf(n, -1):
189
+ return append(out, "-inf"...)
190
+ default:
191
+ return strconv.AppendFloat(out, n, 'g', -1, bitSize)
192
+ }
193
+ }
194
+
195
+ // WriteInt writes out the given signed integer value.
196
+ func (e *Encoder) WriteInt(n int64) {
197
+ e.prepareNext(scalar)
198
+ e.out = append(e.out, strconv.FormatInt(n, 10)...)
199
+ }
200
+
201
+ // WriteUint writes out the given unsigned integer value.
202
+ func (e *Encoder) WriteUint(n uint64) {
203
+ e.prepareNext(scalar)
204
+ e.out = append(e.out, strconv.FormatUint(n, 10)...)
205
+ }
206
+
207
+ // WriteLiteral writes out the given string as a literal value without quotes.
208
+ // This is used for writing enum literal strings.
209
+ func (e *Encoder) WriteLiteral(s string) {
210
+ e.prepareNext(scalar)
211
+ e.out = append(e.out, s...)
212
+ }
213
+
214
+ // prepareNext adds possible space and indentation for the next value based
215
+ // on last encType and indent option. It also updates e.lastType to next.
216
+ func (e *Encoder) prepareNext(next encType) {
217
+ defer func() {
218
+ e.lastType = next
219
+ }()
220
+
221
+ // Single line.
222
+ if len(e.indent) == 0 {
223
+ // Add space after each field before the next one.
224
+ if e.lastType&(scalar|messageClose) != 0 && next == name {
225
+ e.out = append(e.out, ' ')
226
+ // Add a random extra space to make output unstable.
227
+ if detrand.Bool() {
228
+ e.out = append(e.out, ' ')
229
+ }
230
+ }
231
+ return
232
+ }
233
+
234
+ // Multi-line.
235
+ switch {
236
+ case e.lastType == name:
237
+ e.out = append(e.out, ' ')
238
+ // Add a random extra space after name: to make output unstable.
239
+ if detrand.Bool() {
240
+ e.out = append(e.out, ' ')
241
+ }
242
+
243
+ case e.lastType == messageOpen && next != messageClose:
244
+ e.indents = append(e.indents, e.indent...)
245
+ e.out = append(e.out, '\n')
246
+ e.out = append(e.out, e.indents...)
247
+
248
+ case e.lastType&(scalar|messageClose) != 0:
249
+ if next == messageClose {
250
+ e.indents = e.indents[:len(e.indents)-len(e.indent)]
251
+ }
252
+ e.out = append(e.out, '\n')
253
+ e.out = append(e.out, e.indents...)
254
+ }
255
+ }
256
+
257
+ // Snapshot returns the current snapshot for use in Reset.
258
+ func (e *Encoder) Snapshot() encoderState {
259
+ return e.encoderState
260
+ }
261
+
262
+ // Reset resets the Encoder to the given encoderState from a Snapshot.
263
+ func (e *Encoder) Reset(es encoderState) {
264
+ e.encoderState = es
265
+ }
@@ -0,0 +1,89 @@
1
+ // Copyright 2018 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // Package errors implements functions to manipulate errors.
6
+ package errors
7
+
8
+ import (
9
+ "errors"
10
+ "fmt"
11
+
12
+ "google.golang.org/protobuf/internal/detrand"
13
+ )
14
+
15
+ // Error is a sentinel matching all errors produced by this package.
16
+ var Error = errors.New("protobuf error")
17
+
18
+ // New formats a string according to the format specifier and arguments and
19
+ // returns an error that has a "proto" prefix.
20
+ func New(f string, x ...interface{}) error {
21
+ return &prefixError{s: format(f, x...)}
22
+ }
23
+
24
+ type prefixError struct{ s string }
25
+
26
+ var prefix = func() string {
27
+ // Deliberately introduce instability into the error message string to
28
+ // discourage users from performing error string comparisons.
29
+ if detrand.Bool() {
30
+ return "proto: " // use non-breaking spaces (U+00a0)
31
+ } else {
32
+ return "proto: " // use regular spaces (U+0020)
33
+ }
34
+ }()
35
+
36
+ func (e *prefixError) Error() string {
37
+ return prefix + e.s
38
+ }
39
+
40
+ func (e *prefixError) Unwrap() error {
41
+ return Error
42
+ }
43
+
44
+ // Wrap returns an error that has a "proto" prefix, the formatted string described
45
+ // by the format specifier and arguments, and a suffix of err. The error wraps err.
46
+ func Wrap(err error, f string, x ...interface{}) error {
47
+ return &wrapError{
48
+ s: format(f, x...),
49
+ err: err,
50
+ }
51
+ }
52
+
53
+ type wrapError struct {
54
+ s string
55
+ err error
56
+ }
57
+
58
+ func (e *wrapError) Error() string {
59
+ return format("%v%v: %v", prefix, e.s, e.err)
60
+ }
61
+
62
+ func (e *wrapError) Unwrap() error {
63
+ return e.err
64
+ }
65
+
66
+ func (e *wrapError) Is(target error) bool {
67
+ return target == Error
68
+ }
69
+
70
+ func format(f string, x ...interface{}) string {
71
+ // avoid "proto: " prefix when chaining
72
+ for i := 0; i < len(x); i++ {
73
+ switch e := x[i].(type) {
74
+ case *prefixError:
75
+ x[i] = e.s
76
+ case *wrapError:
77
+ x[i] = format("%v: %v", e.s, e.err)
78
+ }
79
+ }
80
+ return fmt.Sprintf(f, x...)
81
+ }
82
+
83
+ func InvalidUTF8(name string) error {
84
+ return New("field %v contains invalid UTF-8", name)
85
+ }
86
+
87
+ func RequiredNotSet(name string) error {
88
+ return New("required field %v not set", name)
89
+ }
@@ -0,0 +1,39 @@
1
+ // Copyright 2020 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // +build !go1.13
6
+
7
+ package errors
8
+
9
+ import "reflect"
10
+
11
+ // Is is a copy of Go 1.13's errors.Is for use with older Go versions.
12
+ func Is(err, target error) bool {
13
+ if target == nil {
14
+ return err == target
15
+ }
16
+
17
+ isComparable := reflect.TypeOf(target).Comparable()
18
+ for {
19
+ if isComparable && err == target {
20
+ return true
21
+ }
22
+ if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {
23
+ return true
24
+ }
25
+ if err = unwrap(err); err == nil {
26
+ return false
27
+ }
28
+ }
29
+ }
30
+
31
+ func unwrap(err error) error {
32
+ u, ok := err.(interface {
33
+ Unwrap() error
34
+ })
35
+ if !ok {
36
+ return nil
37
+ }
38
+ return u.Unwrap()
39
+ }
@@ -0,0 +1,12 @@
1
+ // Copyright 2020 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // +build go1.13
6
+
7
+ package errors
8
+
9
+ import "errors"
10
+
11
+ // Is is errors.Is.
12
+ func Is(err, target error) bool { return errors.Is(err, target) }
@@ -0,0 +1,158 @@
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 provides functionality for constructing descriptors.
6
+ //
7
+ // The types in this package implement interfaces in the protoreflect package
8
+ // related to protobuf descripriptors.
9
+ package filedesc
10
+
11
+ import (
12
+ "google.golang.org/protobuf/encoding/protowire"
13
+ "google.golang.org/protobuf/internal/genid"
14
+ "google.golang.org/protobuf/reflect/protoreflect"
15
+ pref "google.golang.org/protobuf/reflect/protoreflect"
16
+ preg "google.golang.org/protobuf/reflect/protoregistry"
17
+ )
18
+
19
+ // Builder construct a protoreflect.FileDescriptor from the raw descriptor.
20
+ type Builder struct {
21
+ // GoPackagePath is the Go package path that is invoking this builder.
22
+ GoPackagePath string
23
+
24
+ // RawDescriptor is the wire-encoded bytes of FileDescriptorProto
25
+ // and must be populated.
26
+ RawDescriptor []byte
27
+
28
+ // NumEnums is the total number of enums declared in the file.
29
+ NumEnums int32
30
+ // NumMessages is the total number of messages declared in the file.
31
+ // It includes the implicit message declarations for map entries.
32
+ NumMessages int32
33
+ // NumExtensions is the total number of extensions declared in the file.
34
+ NumExtensions int32
35
+ // NumServices is the total number of services declared in the file.
36
+ NumServices int32
37
+
38
+ // TypeResolver resolves extension field types for descriptor options.
39
+ // If nil, it uses protoregistry.GlobalTypes.
40
+ TypeResolver interface {
41
+ preg.ExtensionTypeResolver
42
+ }
43
+
44
+ // FileRegistry is use to lookup file, enum, and message dependencies.
45
+ // Once constructed, the file descriptor is registered here.
46
+ // If nil, it uses protoregistry.GlobalFiles.
47
+ FileRegistry interface {
48
+ FindFileByPath(string) (protoreflect.FileDescriptor, error)
49
+ FindDescriptorByName(pref.FullName) (pref.Descriptor, error)
50
+ RegisterFile(pref.FileDescriptor) error
51
+ }
52
+ }
53
+
54
+ // resolverByIndex is an interface Builder.FileRegistry may implement.
55
+ // If so, it permits looking up an enum or message dependency based on the
56
+ // sub-list and element index into filetype.Builder.DependencyIndexes.
57
+ type resolverByIndex interface {
58
+ FindEnumByIndex(int32, int32, []Enum, []Message) pref.EnumDescriptor
59
+ FindMessageByIndex(int32, int32, []Enum, []Message) pref.MessageDescriptor
60
+ }
61
+
62
+ // Indexes of each sub-list in filetype.Builder.DependencyIndexes.
63
+ const (
64
+ listFieldDeps int32 = iota
65
+ listExtTargets
66
+ listExtDeps
67
+ listMethInDeps
68
+ listMethOutDeps
69
+ )
70
+
71
+ // Out is the output of the Builder.
72
+ type Out struct {
73
+ File pref.FileDescriptor
74
+
75
+ // Enums is all enum descriptors in "flattened ordering".
76
+ Enums []Enum
77
+ // Messages is all message descriptors in "flattened ordering".
78
+ // It includes the implicit message declarations for map entries.
79
+ Messages []Message
80
+ // Extensions is all extension descriptors in "flattened ordering".
81
+ Extensions []Extension
82
+ // Service is all service descriptors in "flattened ordering".
83
+ Services []Service
84
+ }
85
+
86
+ // Build constructs a FileDescriptor given the parameters set in Builder.
87
+ // It assumes that the inputs are well-formed and panics if any inconsistencies
88
+ // are encountered.
89
+ //
90
+ // If NumEnums+NumMessages+NumExtensions+NumServices is zero,
91
+ // then Build automatically derives them from the raw descriptor.
92
+ func (db Builder) Build() (out Out) {
93
+ // Populate the counts if uninitialized.
94
+ if db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 {
95
+ db.unmarshalCounts(db.RawDescriptor, true)
96
+ }
97
+
98
+ // Initialize resolvers and registries if unpopulated.
99
+ if db.TypeResolver == nil {
100
+ db.TypeResolver = preg.GlobalTypes
101
+ }
102
+ if db.FileRegistry == nil {
103
+ db.FileRegistry = preg.GlobalFiles
104
+ }
105
+
106
+ fd := newRawFile(db)
107
+ out.File = fd
108
+ out.Enums = fd.allEnums
109
+ out.Messages = fd.allMessages
110
+ out.Extensions = fd.allExtensions
111
+ out.Services = fd.allServices
112
+
113
+ if err := db.FileRegistry.RegisterFile(fd); err != nil {
114
+ panic(err)
115
+ }
116
+ return out
117
+ }
118
+
119
+ // unmarshalCounts counts the number of enum, message, extension, and service
120
+ // declarations in the raw message, which is either a FileDescriptorProto
121
+ // or a MessageDescriptorProto depending on whether isFile is set.
122
+ func (db *Builder) unmarshalCounts(b []byte, isFile bool) {
123
+ for len(b) > 0 {
124
+ num, typ, n := protowire.ConsumeTag(b)
125
+ b = b[n:]
126
+ switch typ {
127
+ case protowire.BytesType:
128
+ v, m := protowire.ConsumeBytes(b)
129
+ b = b[m:]
130
+ if isFile {
131
+ switch num {
132
+ case genid.FileDescriptorProto_EnumType_field_number:
133
+ db.NumEnums++
134
+ case genid.FileDescriptorProto_MessageType_field_number:
135
+ db.unmarshalCounts(v, false)
136
+ db.NumMessages++
137
+ case genid.FileDescriptorProto_Extension_field_number:
138
+ db.NumExtensions++
139
+ case genid.FileDescriptorProto_Service_field_number:
140
+ db.NumServices++
141
+ }
142
+ } else {
143
+ switch num {
144
+ case genid.DescriptorProto_EnumType_field_number:
145
+ db.NumEnums++
146
+ case genid.DescriptorProto_NestedType_field_number:
147
+ db.unmarshalCounts(v, false)
148
+ db.NumMessages++
149
+ case genid.DescriptorProto_Extension_field_number:
150
+ db.NumExtensions++
151
+ }
152
+ }
153
+ default:
154
+ m := protowire.ConsumeFieldValue(num, typ, b)
155
+ b = b[m:]
156
+ }
157
+ }
158
+ }