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,80 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ package zap
22
+
23
+ import (
24
+ "sync"
25
+
26
+ "go.uber.org/zap/zapcore"
27
+ )
28
+
29
+ var _errArrayElemPool = sync.Pool{New: func() interface{} {
30
+ return &errArrayElem{}
31
+ }}
32
+
33
+ // Error is shorthand for the common idiom NamedError("error", err).
34
+ func Error(err error) Field {
35
+ return NamedError("error", err)
36
+ }
37
+
38
+ // NamedError constructs a field that lazily stores err.Error() under the
39
+ // provided key. Errors which also implement fmt.Formatter (like those produced
40
+ // by github.com/pkg/errors) will also have their verbose representation stored
41
+ // under key+"Verbose". If passed a nil error, the field is a no-op.
42
+ //
43
+ // For the common case in which the key is simply "error", the Error function
44
+ // is shorter and less repetitive.
45
+ func NamedError(key string, err error) Field {
46
+ if err == nil {
47
+ return Skip()
48
+ }
49
+ return Field{Key: key, Type: zapcore.ErrorType, Interface: err}
50
+ }
51
+
52
+ type errArray []error
53
+
54
+ func (errs errArray) MarshalLogArray(arr zapcore.ArrayEncoder) error {
55
+ for i := range errs {
56
+ if errs[i] == nil {
57
+ continue
58
+ }
59
+ // To represent each error as an object with an "error" attribute and
60
+ // potentially an "errorVerbose" attribute, we need to wrap it in a
61
+ // type that implements LogObjectMarshaler. To prevent this from
62
+ // allocating, pool the wrapper type.
63
+ elem := _errArrayElemPool.Get().(*errArrayElem)
64
+ elem.error = errs[i]
65
+ arr.AppendObject(elem)
66
+ elem.error = nil
67
+ _errArrayElemPool.Put(elem)
68
+ }
69
+ return nil
70
+ }
71
+
72
+ type errArrayElem struct {
73
+ error
74
+ }
75
+
76
+ func (e *errArrayElem) MarshalLogObject(enc zapcore.ObjectEncoder) error {
77
+ // Re-use the error field's logic, which supports non-standard error types.
78
+ Error(e.error).AddTo(enc)
79
+ return nil
80
+ }
@@ -0,0 +1,539 @@
1
+ // Copyright (c) 2016 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ package zap
22
+
23
+ import (
24
+ "fmt"
25
+ "math"
26
+ "time"
27
+
28
+ "go.uber.org/zap/zapcore"
29
+ )
30
+
31
+ // Field is an alias for Field. Aliasing this type dramatically
32
+ // improves the navigability of this package's API documentation.
33
+ type Field = zapcore.Field
34
+
35
+ var (
36
+ _minTimeInt64 = time.Unix(0, math.MinInt64)
37
+ _maxTimeInt64 = time.Unix(0, math.MaxInt64)
38
+ )
39
+
40
+ // Skip constructs a no-op field, which is often useful when handling invalid
41
+ // inputs in other Field constructors.
42
+ func Skip() Field {
43
+ return Field{Type: zapcore.SkipType}
44
+ }
45
+
46
+ // nilField returns a field which will marshal explicitly as nil. See motivation
47
+ // in https://github.com/uber-go/zap/issues/753 . If we ever make breaking
48
+ // changes and add zapcore.NilType and zapcore.ObjectEncoder.AddNil, the
49
+ // implementation here should be changed to reflect that.
50
+ func nilField(key string) Field { return Reflect(key, nil) }
51
+
52
+ // Binary constructs a field that carries an opaque binary blob.
53
+ //
54
+ // Binary data is serialized in an encoding-appropriate format. For example,
55
+ // zap's JSON encoder base64-encodes binary blobs. To log UTF-8 encoded text,
56
+ // use ByteString.
57
+ func Binary(key string, val []byte) Field {
58
+ return Field{Key: key, Type: zapcore.BinaryType, Interface: val}
59
+ }
60
+
61
+ // Bool constructs a field that carries a bool.
62
+ func Bool(key string, val bool) Field {
63
+ var ival int64
64
+ if val {
65
+ ival = 1
66
+ }
67
+ return Field{Key: key, Type: zapcore.BoolType, Integer: ival}
68
+ }
69
+
70
+ // Boolp constructs a field that carries a *bool. The returned Field will safely
71
+ // and explicitly represent `nil` when appropriate.
72
+ func Boolp(key string, val *bool) Field {
73
+ if val == nil {
74
+ return nilField(key)
75
+ }
76
+ return Bool(key, *val)
77
+ }
78
+
79
+ // ByteString constructs a field that carries UTF-8 encoded text as a []byte.
80
+ // To log opaque binary blobs (which aren't necessarily valid UTF-8), use
81
+ // Binary.
82
+ func ByteString(key string, val []byte) Field {
83
+ return Field{Key: key, Type: zapcore.ByteStringType, Interface: val}
84
+ }
85
+
86
+ // Complex128 constructs a field that carries a complex number. Unlike most
87
+ // numeric fields, this costs an allocation (to convert the complex128 to
88
+ // interface{}).
89
+ func Complex128(key string, val complex128) Field {
90
+ return Field{Key: key, Type: zapcore.Complex128Type, Interface: val}
91
+ }
92
+
93
+ // Complex128p constructs a field that carries a *complex128. The returned Field will safely
94
+ // and explicitly represent `nil` when appropriate.
95
+ func Complex128p(key string, val *complex128) Field {
96
+ if val == nil {
97
+ return nilField(key)
98
+ }
99
+ return Complex128(key, *val)
100
+ }
101
+
102
+ // Complex64 constructs a field that carries a complex number. Unlike most
103
+ // numeric fields, this costs an allocation (to convert the complex64 to
104
+ // interface{}).
105
+ func Complex64(key string, val complex64) Field {
106
+ return Field{Key: key, Type: zapcore.Complex64Type, Interface: val}
107
+ }
108
+
109
+ // Complex64p constructs a field that carries a *complex64. The returned Field will safely
110
+ // and explicitly represent `nil` when appropriate.
111
+ func Complex64p(key string, val *complex64) Field {
112
+ if val == nil {
113
+ return nilField(key)
114
+ }
115
+ return Complex64(key, *val)
116
+ }
117
+
118
+ // Float64 constructs a field that carries a float64. The way the
119
+ // floating-point value is represented is encoder-dependent, so marshaling is
120
+ // necessarily lazy.
121
+ func Float64(key string, val float64) Field {
122
+ return Field{Key: key, Type: zapcore.Float64Type, Integer: int64(math.Float64bits(val))}
123
+ }
124
+
125
+ // Float64p constructs a field that carries a *float64. The returned Field will safely
126
+ // and explicitly represent `nil` when appropriate.
127
+ func Float64p(key string, val *float64) Field {
128
+ if val == nil {
129
+ return nilField(key)
130
+ }
131
+ return Float64(key, *val)
132
+ }
133
+
134
+ // Float32 constructs a field that carries a float32. The way the
135
+ // floating-point value is represented is encoder-dependent, so marshaling is
136
+ // necessarily lazy.
137
+ func Float32(key string, val float32) Field {
138
+ return Field{Key: key, Type: zapcore.Float32Type, Integer: int64(math.Float32bits(val))}
139
+ }
140
+
141
+ // Float32p constructs a field that carries a *float32. The returned Field will safely
142
+ // and explicitly represent `nil` when appropriate.
143
+ func Float32p(key string, val *float32) Field {
144
+ if val == nil {
145
+ return nilField(key)
146
+ }
147
+ return Float32(key, *val)
148
+ }
149
+
150
+ // Int constructs a field with the given key and value.
151
+ func Int(key string, val int) Field {
152
+ return Int64(key, int64(val))
153
+ }
154
+
155
+ // Intp constructs a field that carries a *int. The returned Field will safely
156
+ // and explicitly represent `nil` when appropriate.
157
+ func Intp(key string, val *int) Field {
158
+ if val == nil {
159
+ return nilField(key)
160
+ }
161
+ return Int(key, *val)
162
+ }
163
+
164
+ // Int64 constructs a field with the given key and value.
165
+ func Int64(key string, val int64) Field {
166
+ return Field{Key: key, Type: zapcore.Int64Type, Integer: val}
167
+ }
168
+
169
+ // Int64p constructs a field that carries a *int64. The returned Field will safely
170
+ // and explicitly represent `nil` when appropriate.
171
+ func Int64p(key string, val *int64) Field {
172
+ if val == nil {
173
+ return nilField(key)
174
+ }
175
+ return Int64(key, *val)
176
+ }
177
+
178
+ // Int32 constructs a field with the given key and value.
179
+ func Int32(key string, val int32) Field {
180
+ return Field{Key: key, Type: zapcore.Int32Type, Integer: int64(val)}
181
+ }
182
+
183
+ // Int32p constructs a field that carries a *int32. The returned Field will safely
184
+ // and explicitly represent `nil` when appropriate.
185
+ func Int32p(key string, val *int32) Field {
186
+ if val == nil {
187
+ return nilField(key)
188
+ }
189
+ return Int32(key, *val)
190
+ }
191
+
192
+ // Int16 constructs a field with the given key and value.
193
+ func Int16(key string, val int16) Field {
194
+ return Field{Key: key, Type: zapcore.Int16Type, Integer: int64(val)}
195
+ }
196
+
197
+ // Int16p constructs a field that carries a *int16. The returned Field will safely
198
+ // and explicitly represent `nil` when appropriate.
199
+ func Int16p(key string, val *int16) Field {
200
+ if val == nil {
201
+ return nilField(key)
202
+ }
203
+ return Int16(key, *val)
204
+ }
205
+
206
+ // Int8 constructs a field with the given key and value.
207
+ func Int8(key string, val int8) Field {
208
+ return Field{Key: key, Type: zapcore.Int8Type, Integer: int64(val)}
209
+ }
210
+
211
+ // Int8p constructs a field that carries a *int8. The returned Field will safely
212
+ // and explicitly represent `nil` when appropriate.
213
+ func Int8p(key string, val *int8) Field {
214
+ if val == nil {
215
+ return nilField(key)
216
+ }
217
+ return Int8(key, *val)
218
+ }
219
+
220
+ // String constructs a field with the given key and value.
221
+ func String(key string, val string) Field {
222
+ return Field{Key: key, Type: zapcore.StringType, String: val}
223
+ }
224
+
225
+ // Stringp constructs a field that carries a *string. The returned Field will safely
226
+ // and explicitly represent `nil` when appropriate.
227
+ func Stringp(key string, val *string) Field {
228
+ if val == nil {
229
+ return nilField(key)
230
+ }
231
+ return String(key, *val)
232
+ }
233
+
234
+ // Uint constructs a field with the given key and value.
235
+ func Uint(key string, val uint) Field {
236
+ return Uint64(key, uint64(val))
237
+ }
238
+
239
+ // Uintp constructs a field that carries a *uint. The returned Field will safely
240
+ // and explicitly represent `nil` when appropriate.
241
+ func Uintp(key string, val *uint) Field {
242
+ if val == nil {
243
+ return nilField(key)
244
+ }
245
+ return Uint(key, *val)
246
+ }
247
+
248
+ // Uint64 constructs a field with the given key and value.
249
+ func Uint64(key string, val uint64) Field {
250
+ return Field{Key: key, Type: zapcore.Uint64Type, Integer: int64(val)}
251
+ }
252
+
253
+ // Uint64p constructs a field that carries a *uint64. The returned Field will safely
254
+ // and explicitly represent `nil` when appropriate.
255
+ func Uint64p(key string, val *uint64) Field {
256
+ if val == nil {
257
+ return nilField(key)
258
+ }
259
+ return Uint64(key, *val)
260
+ }
261
+
262
+ // Uint32 constructs a field with the given key and value.
263
+ func Uint32(key string, val uint32) Field {
264
+ return Field{Key: key, Type: zapcore.Uint32Type, Integer: int64(val)}
265
+ }
266
+
267
+ // Uint32p constructs a field that carries a *uint32. The returned Field will safely
268
+ // and explicitly represent `nil` when appropriate.
269
+ func Uint32p(key string, val *uint32) Field {
270
+ if val == nil {
271
+ return nilField(key)
272
+ }
273
+ return Uint32(key, *val)
274
+ }
275
+
276
+ // Uint16 constructs a field with the given key and value.
277
+ func Uint16(key string, val uint16) Field {
278
+ return Field{Key: key, Type: zapcore.Uint16Type, Integer: int64(val)}
279
+ }
280
+
281
+ // Uint16p constructs a field that carries a *uint16. The returned Field will safely
282
+ // and explicitly represent `nil` when appropriate.
283
+ func Uint16p(key string, val *uint16) Field {
284
+ if val == nil {
285
+ return nilField(key)
286
+ }
287
+ return Uint16(key, *val)
288
+ }
289
+
290
+ // Uint8 constructs a field with the given key and value.
291
+ func Uint8(key string, val uint8) Field {
292
+ return Field{Key: key, Type: zapcore.Uint8Type, Integer: int64(val)}
293
+ }
294
+
295
+ // Uint8p constructs a field that carries a *uint8. The returned Field will safely
296
+ // and explicitly represent `nil` when appropriate.
297
+ func Uint8p(key string, val *uint8) Field {
298
+ if val == nil {
299
+ return nilField(key)
300
+ }
301
+ return Uint8(key, *val)
302
+ }
303
+
304
+ // Uintptr constructs a field with the given key and value.
305
+ func Uintptr(key string, val uintptr) Field {
306
+ return Field{Key: key, Type: zapcore.UintptrType, Integer: int64(val)}
307
+ }
308
+
309
+ // Uintptrp constructs a field that carries a *uintptr. The returned Field will safely
310
+ // and explicitly represent `nil` when appropriate.
311
+ func Uintptrp(key string, val *uintptr) Field {
312
+ if val == nil {
313
+ return nilField(key)
314
+ }
315
+ return Uintptr(key, *val)
316
+ }
317
+
318
+ // Reflect constructs a field with the given key and an arbitrary object. It uses
319
+ // an encoding-appropriate, reflection-based function to lazily serialize nearly
320
+ // any object into the logging context, but it's relatively slow and
321
+ // allocation-heavy. Outside tests, Any is always a better choice.
322
+ //
323
+ // If encoding fails (e.g., trying to serialize a map[int]string to JSON), Reflect
324
+ // includes the error message in the final log output.
325
+ func Reflect(key string, val interface{}) Field {
326
+ return Field{Key: key, Type: zapcore.ReflectType, Interface: val}
327
+ }
328
+
329
+ // Namespace creates a named, isolated scope within the logger's context. All
330
+ // subsequent fields will be added to the new namespace.
331
+ //
332
+ // This helps prevent key collisions when injecting loggers into sub-components
333
+ // or third-party libraries.
334
+ func Namespace(key string) Field {
335
+ return Field{Key: key, Type: zapcore.NamespaceType}
336
+ }
337
+
338
+ // Stringer constructs a field with the given key and the output of the value's
339
+ // String method. The Stringer's String method is called lazily.
340
+ func Stringer(key string, val fmt.Stringer) Field {
341
+ return Field{Key: key, Type: zapcore.StringerType, Interface: val}
342
+ }
343
+
344
+ // Time constructs a Field with the given key and value. The encoder
345
+ // controls how the time is serialized.
346
+ func Time(key string, val time.Time) Field {
347
+ if val.Before(_minTimeInt64) || val.After(_maxTimeInt64) {
348
+ return Field{Key: key, Type: zapcore.TimeFullType, Interface: val}
349
+ }
350
+ return Field{Key: key, Type: zapcore.TimeType, Integer: val.UnixNano(), Interface: val.Location()}
351
+ }
352
+
353
+ // Timep constructs a field that carries a *time.Time. The returned Field will safely
354
+ // and explicitly represent `nil` when appropriate.
355
+ func Timep(key string, val *time.Time) Field {
356
+ if val == nil {
357
+ return nilField(key)
358
+ }
359
+ return Time(key, *val)
360
+ }
361
+
362
+ // Stack constructs a field that stores a stacktrace of the current goroutine
363
+ // under provided key. Keep in mind that taking a stacktrace is eager and
364
+ // expensive (relatively speaking); this function both makes an allocation and
365
+ // takes about two microseconds.
366
+ func Stack(key string) Field {
367
+ return StackSkip(key, 1) // skip Stack
368
+ }
369
+
370
+ // StackSkip constructs a field similarly to Stack, but also skips the given
371
+ // number of frames from the top of the stacktrace.
372
+ func StackSkip(key string, skip int) Field {
373
+ // Returning the stacktrace as a string costs an allocation, but saves us
374
+ // from expanding the zapcore.Field union struct to include a byte slice. Since
375
+ // taking a stacktrace is already so expensive (~10us), the extra allocation
376
+ // is okay.
377
+ return String(key, takeStacktrace(skip+1)) // skip StackSkip
378
+ }
379
+
380
+ // Duration constructs a field with the given key and value. The encoder
381
+ // controls how the duration is serialized.
382
+ func Duration(key string, val time.Duration) Field {
383
+ return Field{Key: key, Type: zapcore.DurationType, Integer: int64(val)}
384
+ }
385
+
386
+ // Durationp constructs a field that carries a *time.Duration. The returned Field will safely
387
+ // and explicitly represent `nil` when appropriate.
388
+ func Durationp(key string, val *time.Duration) Field {
389
+ if val == nil {
390
+ return nilField(key)
391
+ }
392
+ return Duration(key, *val)
393
+ }
394
+
395
+ // Object constructs a field with the given key and ObjectMarshaler. It
396
+ // provides a flexible, but still type-safe and efficient, way to add map- or
397
+ // struct-like user-defined types to the logging context. The struct's
398
+ // MarshalLogObject method is called lazily.
399
+ func Object(key string, val zapcore.ObjectMarshaler) Field {
400
+ return Field{Key: key, Type: zapcore.ObjectMarshalerType, Interface: val}
401
+ }
402
+
403
+ // Any takes a key and an arbitrary value and chooses the best way to represent
404
+ // them as a field, falling back to a reflection-based approach only if
405
+ // necessary.
406
+ //
407
+ // Since byte/uint8 and rune/int32 are aliases, Any can't differentiate between
408
+ // them. To minimize surprises, []byte values are treated as binary blobs, byte
409
+ // values are treated as uint8, and runes are always treated as integers.
410
+ func Any(key string, value interface{}) Field {
411
+ switch val := value.(type) {
412
+ case zapcore.ObjectMarshaler:
413
+ return Object(key, val)
414
+ case zapcore.ArrayMarshaler:
415
+ return Array(key, val)
416
+ case bool:
417
+ return Bool(key, val)
418
+ case *bool:
419
+ return Boolp(key, val)
420
+ case []bool:
421
+ return Bools(key, val)
422
+ case complex128:
423
+ return Complex128(key, val)
424
+ case *complex128:
425
+ return Complex128p(key, val)
426
+ case []complex128:
427
+ return Complex128s(key, val)
428
+ case complex64:
429
+ return Complex64(key, val)
430
+ case *complex64:
431
+ return Complex64p(key, val)
432
+ case []complex64:
433
+ return Complex64s(key, val)
434
+ case float64:
435
+ return Float64(key, val)
436
+ case *float64:
437
+ return Float64p(key, val)
438
+ case []float64:
439
+ return Float64s(key, val)
440
+ case float32:
441
+ return Float32(key, val)
442
+ case *float32:
443
+ return Float32p(key, val)
444
+ case []float32:
445
+ return Float32s(key, val)
446
+ case int:
447
+ return Int(key, val)
448
+ case *int:
449
+ return Intp(key, val)
450
+ case []int:
451
+ return Ints(key, val)
452
+ case int64:
453
+ return Int64(key, val)
454
+ case *int64:
455
+ return Int64p(key, val)
456
+ case []int64:
457
+ return Int64s(key, val)
458
+ case int32:
459
+ return Int32(key, val)
460
+ case *int32:
461
+ return Int32p(key, val)
462
+ case []int32:
463
+ return Int32s(key, val)
464
+ case int16:
465
+ return Int16(key, val)
466
+ case *int16:
467
+ return Int16p(key, val)
468
+ case []int16:
469
+ return Int16s(key, val)
470
+ case int8:
471
+ return Int8(key, val)
472
+ case *int8:
473
+ return Int8p(key, val)
474
+ case []int8:
475
+ return Int8s(key, val)
476
+ case string:
477
+ return String(key, val)
478
+ case *string:
479
+ return Stringp(key, val)
480
+ case []string:
481
+ return Strings(key, val)
482
+ case uint:
483
+ return Uint(key, val)
484
+ case *uint:
485
+ return Uintp(key, val)
486
+ case []uint:
487
+ return Uints(key, val)
488
+ case uint64:
489
+ return Uint64(key, val)
490
+ case *uint64:
491
+ return Uint64p(key, val)
492
+ case []uint64:
493
+ return Uint64s(key, val)
494
+ case uint32:
495
+ return Uint32(key, val)
496
+ case *uint32:
497
+ return Uint32p(key, val)
498
+ case []uint32:
499
+ return Uint32s(key, val)
500
+ case uint16:
501
+ return Uint16(key, val)
502
+ case *uint16:
503
+ return Uint16p(key, val)
504
+ case []uint16:
505
+ return Uint16s(key, val)
506
+ case uint8:
507
+ return Uint8(key, val)
508
+ case *uint8:
509
+ return Uint8p(key, val)
510
+ case []byte:
511
+ return Binary(key, val)
512
+ case uintptr:
513
+ return Uintptr(key, val)
514
+ case *uintptr:
515
+ return Uintptrp(key, val)
516
+ case []uintptr:
517
+ return Uintptrs(key, val)
518
+ case time.Time:
519
+ return Time(key, val)
520
+ case *time.Time:
521
+ return Timep(key, val)
522
+ case []time.Time:
523
+ return Times(key, val)
524
+ case time.Duration:
525
+ return Duration(key, val)
526
+ case *time.Duration:
527
+ return Durationp(key, val)
528
+ case []time.Duration:
529
+ return Durations(key, val)
530
+ case error:
531
+ return NamedError(key, val)
532
+ case []error:
533
+ return Errors(key, val)
534
+ case fmt.Stringer:
535
+ return Stringer(key, val)
536
+ default:
537
+ return Reflect(key, val)
538
+ }
539
+ }