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,31 @@
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 bufferpool houses zap's shared internal buffer pool. Third-party
22
+ // packages can recreate the same functionality with buffers.NewPool.
23
+ package bufferpool
24
+
25
+ import "go.uber.org/zap/buffer"
26
+
27
+ var (
28
+ _pool = buffer.NewPool()
29
+ // Get retrieves a buffer from the pool, creating one if necessary.
30
+ Get = _pool.Get
31
+ )
@@ -0,0 +1,44 @@
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 color adds coloring functionality for TTY output.
22
+ package color
23
+
24
+ import "fmt"
25
+
26
+ // Foreground colors.
27
+ const (
28
+ Black Color = iota + 30
29
+ Red
30
+ Green
31
+ Yellow
32
+ Blue
33
+ Magenta
34
+ Cyan
35
+ White
36
+ )
37
+
38
+ // Color represents a text color.
39
+ type Color uint8
40
+
41
+ // Add adds the coloring to the given string.
42
+ func (c Color) Add(s string) string {
43
+ return fmt.Sprintf("\x1b[%dm%s\x1b[0m", uint8(c), s)
44
+ }
@@ -0,0 +1,64 @@
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 exit provides stubs so that unit tests can exercise code that calls
22
+ // os.Exit(1).
23
+ package exit
24
+
25
+ import "os"
26
+
27
+ var real = func() { os.Exit(1) }
28
+
29
+ // Exit normally terminates the process by calling os.Exit(1). If the package
30
+ // is stubbed, it instead records a call in the testing spy.
31
+ func Exit() {
32
+ real()
33
+ }
34
+
35
+ // A StubbedExit is a testing fake for os.Exit.
36
+ type StubbedExit struct {
37
+ Exited bool
38
+ prev func()
39
+ }
40
+
41
+ // Stub substitutes a fake for the call to os.Exit(1).
42
+ func Stub() *StubbedExit {
43
+ s := &StubbedExit{prev: real}
44
+ real = s.exit
45
+ return s
46
+ }
47
+
48
+ // WithStub runs the supplied function with Exit stubbed. It returns the stub
49
+ // used, so that users can test whether the process would have crashed.
50
+ func WithStub(f func()) *StubbedExit {
51
+ s := Stub()
52
+ defer s.Unstub()
53
+ f()
54
+ return s
55
+ }
56
+
57
+ // Unstub restores the previous exit function.
58
+ func (se *StubbedExit) Unstub() {
59
+ real = se.prev
60
+ }
61
+
62
+ func (se *StubbedExit) exit() {
63
+ se.Exited = true
64
+ }
@@ -0,0 +1,132 @@
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
+ "go.uber.org/atomic"
25
+ "go.uber.org/zap/zapcore"
26
+ )
27
+
28
+ const (
29
+ // DebugLevel logs are typically voluminous, and are usually disabled in
30
+ // production.
31
+ DebugLevel = zapcore.DebugLevel
32
+ // InfoLevel is the default logging priority.
33
+ InfoLevel = zapcore.InfoLevel
34
+ // WarnLevel logs are more important than Info, but don't need individual
35
+ // human review.
36
+ WarnLevel = zapcore.WarnLevel
37
+ // ErrorLevel logs are high-priority. If an application is running smoothly,
38
+ // it shouldn't generate any error-level logs.
39
+ ErrorLevel = zapcore.ErrorLevel
40
+ // DPanicLevel logs are particularly important errors. In development the
41
+ // logger panics after writing the message.
42
+ DPanicLevel = zapcore.DPanicLevel
43
+ // PanicLevel logs a message, then panics.
44
+ PanicLevel = zapcore.PanicLevel
45
+ // FatalLevel logs a message, then calls os.Exit(1).
46
+ FatalLevel = zapcore.FatalLevel
47
+ )
48
+
49
+ // LevelEnablerFunc is a convenient way to implement zapcore.LevelEnabler with
50
+ // an anonymous function.
51
+ //
52
+ // It's particularly useful when splitting log output between different
53
+ // outputs (e.g., standard error and standard out). For sample code, see the
54
+ // package-level AdvancedConfiguration example.
55
+ type LevelEnablerFunc func(zapcore.Level) bool
56
+
57
+ // Enabled calls the wrapped function.
58
+ func (f LevelEnablerFunc) Enabled(lvl zapcore.Level) bool { return f(lvl) }
59
+
60
+ // An AtomicLevel is an atomically changeable, dynamic logging level. It lets
61
+ // you safely change the log level of a tree of loggers (the root logger and
62
+ // any children created by adding context) at runtime.
63
+ //
64
+ // The AtomicLevel itself is an http.Handler that serves a JSON endpoint to
65
+ // alter its level.
66
+ //
67
+ // AtomicLevels must be created with the NewAtomicLevel constructor to allocate
68
+ // their internal atomic pointer.
69
+ type AtomicLevel struct {
70
+ l *atomic.Int32
71
+ }
72
+
73
+ // NewAtomicLevel creates an AtomicLevel with InfoLevel and above logging
74
+ // enabled.
75
+ func NewAtomicLevel() AtomicLevel {
76
+ return AtomicLevel{
77
+ l: atomic.NewInt32(int32(InfoLevel)),
78
+ }
79
+ }
80
+
81
+ // NewAtomicLevelAt is a convenience function that creates an AtomicLevel
82
+ // and then calls SetLevel with the given level.
83
+ func NewAtomicLevelAt(l zapcore.Level) AtomicLevel {
84
+ a := NewAtomicLevel()
85
+ a.SetLevel(l)
86
+ return a
87
+ }
88
+
89
+ // Enabled implements the zapcore.LevelEnabler interface, which allows the
90
+ // AtomicLevel to be used in place of traditional static levels.
91
+ func (lvl AtomicLevel) Enabled(l zapcore.Level) bool {
92
+ return lvl.Level().Enabled(l)
93
+ }
94
+
95
+ // Level returns the minimum enabled log level.
96
+ func (lvl AtomicLevel) Level() zapcore.Level {
97
+ return zapcore.Level(int8(lvl.l.Load()))
98
+ }
99
+
100
+ // SetLevel alters the logging level.
101
+ func (lvl AtomicLevel) SetLevel(l zapcore.Level) {
102
+ lvl.l.Store(int32(l))
103
+ }
104
+
105
+ // String returns the string representation of the underlying Level.
106
+ func (lvl AtomicLevel) String() string {
107
+ return lvl.Level().String()
108
+ }
109
+
110
+ // UnmarshalText unmarshals the text to an AtomicLevel. It uses the same text
111
+ // representations as the static zapcore.Levels ("debug", "info", "warn",
112
+ // "error", "dpanic", "panic", and "fatal").
113
+ func (lvl *AtomicLevel) UnmarshalText(text []byte) error {
114
+ if lvl.l == nil {
115
+ lvl.l = &atomic.Int32{}
116
+ }
117
+
118
+ var l zapcore.Level
119
+ if err := l.UnmarshalText(text); err != nil {
120
+ return err
121
+ }
122
+
123
+ lvl.SetLevel(l)
124
+ return nil
125
+ }
126
+
127
+ // MarshalText marshals the AtomicLevel to a byte slice. It uses the same
128
+ // text representation as the static zapcore.Levels ("debug", "info", "warn",
129
+ // "error", "dpanic", "panic", and "fatal").
130
+ func (lvl AtomicLevel) MarshalText() (text []byte, err error) {
131
+ return lvl.Level().MarshalText()
132
+ }
@@ -0,0 +1,344 @@
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
+ "io/ioutil"
26
+ "os"
27
+ "runtime"
28
+ "strings"
29
+ "time"
30
+
31
+ "go.uber.org/zap/zapcore"
32
+ )
33
+
34
+ // A Logger provides fast, leveled, structured logging. All methods are safe
35
+ // for concurrent use.
36
+ //
37
+ // The Logger is designed for contexts in which every microsecond and every
38
+ // allocation matters, so its API intentionally favors performance and type
39
+ // safety over brevity. For most applications, the SugaredLogger strikes a
40
+ // better balance between performance and ergonomics.
41
+ type Logger struct {
42
+ core zapcore.Core
43
+
44
+ development bool
45
+ name string
46
+ errorOutput zapcore.WriteSyncer
47
+
48
+ addCaller bool
49
+ addStack zapcore.LevelEnabler
50
+
51
+ callerSkip int
52
+ onFatal zapcore.CheckWriteAction // default is WriteThenFatal
53
+ }
54
+
55
+ // New constructs a new Logger from the provided zapcore.Core and Options. If
56
+ // the passed zapcore.Core is nil, it falls back to using a no-op
57
+ // implementation.
58
+ //
59
+ // This is the most flexible way to construct a Logger, but also the most
60
+ // verbose. For typical use cases, the highly-opinionated presets
61
+ // (NewProduction, NewDevelopment, and NewExample) or the Config struct are
62
+ // more convenient.
63
+ //
64
+ // For sample code, see the package-level AdvancedConfiguration example.
65
+ func New(core zapcore.Core, options ...Option) *Logger {
66
+ if core == nil {
67
+ return NewNop()
68
+ }
69
+ log := &Logger{
70
+ core: core,
71
+ errorOutput: zapcore.Lock(os.Stderr),
72
+ addStack: zapcore.FatalLevel + 1,
73
+ }
74
+ return log.WithOptions(options...)
75
+ }
76
+
77
+ // NewNop returns a no-op Logger. It never writes out logs or internal errors,
78
+ // and it never runs user-defined hooks.
79
+ //
80
+ // Using WithOptions to replace the Core or error output of a no-op Logger can
81
+ // re-enable logging.
82
+ func NewNop() *Logger {
83
+ return &Logger{
84
+ core: zapcore.NewNopCore(),
85
+ errorOutput: zapcore.AddSync(ioutil.Discard),
86
+ addStack: zapcore.FatalLevel + 1,
87
+ }
88
+ }
89
+
90
+ // NewProduction builds a sensible production Logger that writes InfoLevel and
91
+ // above logs to standard error as JSON.
92
+ //
93
+ // It's a shortcut for NewProductionConfig().Build(...Option).
94
+ func NewProduction(options ...Option) (*Logger, error) {
95
+ return NewProductionConfig().Build(options...)
96
+ }
97
+
98
+ // NewDevelopment builds a development Logger that writes DebugLevel and above
99
+ // logs to standard error in a human-friendly format.
100
+ //
101
+ // It's a shortcut for NewDevelopmentConfig().Build(...Option).
102
+ func NewDevelopment(options ...Option) (*Logger, error) {
103
+ return NewDevelopmentConfig().Build(options...)
104
+ }
105
+
106
+ // NewExample builds a Logger that's designed for use in zap's testable
107
+ // examples. It writes DebugLevel and above logs to standard out as JSON, but
108
+ // omits the timestamp and calling function to keep example output
109
+ // short and deterministic.
110
+ func NewExample(options ...Option) *Logger {
111
+ encoderCfg := zapcore.EncoderConfig{
112
+ MessageKey: "msg",
113
+ LevelKey: "level",
114
+ NameKey: "logger",
115
+ EncodeLevel: zapcore.LowercaseLevelEncoder,
116
+ EncodeTime: zapcore.ISO8601TimeEncoder,
117
+ EncodeDuration: zapcore.StringDurationEncoder,
118
+ }
119
+ core := zapcore.NewCore(zapcore.NewJSONEncoder(encoderCfg), os.Stdout, DebugLevel)
120
+ return New(core).WithOptions(options...)
121
+ }
122
+
123
+ // Sugar wraps the Logger to provide a more ergonomic, but slightly slower,
124
+ // API. Sugaring a Logger is quite inexpensive, so it's reasonable for a
125
+ // single application to use both Loggers and SugaredLoggers, converting
126
+ // between them on the boundaries of performance-sensitive code.
127
+ func (log *Logger) Sugar() *SugaredLogger {
128
+ core := log.clone()
129
+ core.callerSkip += 2
130
+ return &SugaredLogger{core}
131
+ }
132
+
133
+ // Named adds a new path segment to the logger's name. Segments are joined by
134
+ // periods. By default, Loggers are unnamed.
135
+ func (log *Logger) Named(s string) *Logger {
136
+ if s == "" {
137
+ return log
138
+ }
139
+ l := log.clone()
140
+ if log.name == "" {
141
+ l.name = s
142
+ } else {
143
+ l.name = strings.Join([]string{l.name, s}, ".")
144
+ }
145
+ return l
146
+ }
147
+
148
+ // WithOptions clones the current Logger, applies the supplied Options, and
149
+ // returns the resulting Logger. It's safe to use concurrently.
150
+ func (log *Logger) WithOptions(opts ...Option) *Logger {
151
+ c := log.clone()
152
+ for _, opt := range opts {
153
+ opt.apply(c)
154
+ }
155
+ return c
156
+ }
157
+
158
+ // With creates a child logger and adds structured context to it. Fields added
159
+ // to the child don't affect the parent, and vice versa.
160
+ func (log *Logger) With(fields ...Field) *Logger {
161
+ if len(fields) == 0 {
162
+ return log
163
+ }
164
+ l := log.clone()
165
+ l.core = l.core.With(fields)
166
+ return l
167
+ }
168
+
169
+ // Check returns a CheckedEntry if logging a message at the specified level
170
+ // is enabled. It's a completely optional optimization; in high-performance
171
+ // applications, Check can help avoid allocating a slice to hold fields.
172
+ func (log *Logger) Check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
173
+ return log.check(lvl, msg)
174
+ }
175
+
176
+ // Debug logs a message at DebugLevel. The message includes any fields passed
177
+ // at the log site, as well as any fields accumulated on the logger.
178
+ func (log *Logger) Debug(msg string, fields ...Field) {
179
+ if ce := log.check(DebugLevel, msg); ce != nil {
180
+ ce.Write(fields...)
181
+ }
182
+ }
183
+
184
+ // Info logs a message at InfoLevel. The message includes any fields passed
185
+ // at the log site, as well as any fields accumulated on the logger.
186
+ func (log *Logger) Info(msg string, fields ...Field) {
187
+ if ce := log.check(InfoLevel, msg); ce != nil {
188
+ ce.Write(fields...)
189
+ }
190
+ }
191
+
192
+ // Warn logs a message at WarnLevel. The message includes any fields passed
193
+ // at the log site, as well as any fields accumulated on the logger.
194
+ func (log *Logger) Warn(msg string, fields ...Field) {
195
+ if ce := log.check(WarnLevel, msg); ce != nil {
196
+ ce.Write(fields...)
197
+ }
198
+ }
199
+
200
+ // Error logs a message at ErrorLevel. The message includes any fields passed
201
+ // at the log site, as well as any fields accumulated on the logger.
202
+ func (log *Logger) Error(msg string, fields ...Field) {
203
+ if ce := log.check(ErrorLevel, msg); ce != nil {
204
+ ce.Write(fields...)
205
+ }
206
+ }
207
+
208
+ // DPanic logs a message at DPanicLevel. The message includes any fields
209
+ // passed at the log site, as well as any fields accumulated on the logger.
210
+ //
211
+ // If the logger is in development mode, it then panics (DPanic means
212
+ // "development panic"). This is useful for catching errors that are
213
+ // recoverable, but shouldn't ever happen.
214
+ func (log *Logger) DPanic(msg string, fields ...Field) {
215
+ if ce := log.check(DPanicLevel, msg); ce != nil {
216
+ ce.Write(fields...)
217
+ }
218
+ }
219
+
220
+ // Panic logs a message at PanicLevel. The message includes any fields passed
221
+ // at the log site, as well as any fields accumulated on the logger.
222
+ //
223
+ // The logger then panics, even if logging at PanicLevel is disabled.
224
+ func (log *Logger) Panic(msg string, fields ...Field) {
225
+ if ce := log.check(PanicLevel, msg); ce != nil {
226
+ ce.Write(fields...)
227
+ }
228
+ }
229
+
230
+ // Fatal logs a message at FatalLevel. The message includes any fields passed
231
+ // at the log site, as well as any fields accumulated on the logger.
232
+ //
233
+ // The logger then calls os.Exit(1), even if logging at FatalLevel is
234
+ // disabled.
235
+ func (log *Logger) Fatal(msg string, fields ...Field) {
236
+ if ce := log.check(FatalLevel, msg); ce != nil {
237
+ ce.Write(fields...)
238
+ }
239
+ }
240
+
241
+ // Sync calls the underlying Core's Sync method, flushing any buffered log
242
+ // entries. Applications should take care to call Sync before exiting.
243
+ func (log *Logger) Sync() error {
244
+ return log.core.Sync()
245
+ }
246
+
247
+ // Core returns the Logger's underlying zapcore.Core.
248
+ func (log *Logger) Core() zapcore.Core {
249
+ return log.core
250
+ }
251
+
252
+ func (log *Logger) clone() *Logger {
253
+ copy := *log
254
+ return &copy
255
+ }
256
+
257
+ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry {
258
+ // check must always be called directly by a method in the Logger interface
259
+ // (e.g., Check, Info, Fatal).
260
+ const callerSkipOffset = 2
261
+
262
+ // Check the level first to reduce the cost of disabled log calls.
263
+ // Since Panic and higher may exit, we skip the optimization for those levels.
264
+ if lvl < zapcore.DPanicLevel && !log.core.Enabled(lvl) {
265
+ return nil
266
+ }
267
+
268
+ // Create basic checked entry thru the core; this will be non-nil if the
269
+ // log message will actually be written somewhere.
270
+ ent := zapcore.Entry{
271
+ LoggerName: log.name,
272
+ Time: time.Now(),
273
+ Level: lvl,
274
+ Message: msg,
275
+ }
276
+ ce := log.core.Check(ent, nil)
277
+ willWrite := ce != nil
278
+
279
+ // Set up any required terminal behavior.
280
+ switch ent.Level {
281
+ case zapcore.PanicLevel:
282
+ ce = ce.Should(ent, zapcore.WriteThenPanic)
283
+ case zapcore.FatalLevel:
284
+ onFatal := log.onFatal
285
+ // Noop is the default value for CheckWriteAction, and it leads to
286
+ // continued execution after a Fatal which is unexpected.
287
+ if onFatal == zapcore.WriteThenNoop {
288
+ onFatal = zapcore.WriteThenFatal
289
+ }
290
+ ce = ce.Should(ent, onFatal)
291
+ case zapcore.DPanicLevel:
292
+ if log.development {
293
+ ce = ce.Should(ent, zapcore.WriteThenPanic)
294
+ }
295
+ }
296
+
297
+ // Only do further annotation if we're going to write this message; checked
298
+ // entries that exist only for terminal behavior don't benefit from
299
+ // annotation.
300
+ if !willWrite {
301
+ return ce
302
+ }
303
+
304
+ // Thread the error output through to the CheckedEntry.
305
+ ce.ErrorOutput = log.errorOutput
306
+ if log.addCaller {
307
+ frame, defined := getCallerFrame(log.callerSkip + callerSkipOffset)
308
+ if !defined {
309
+ fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", time.Now().UTC())
310
+ log.errorOutput.Sync()
311
+ }
312
+
313
+ ce.Entry.Caller = zapcore.EntryCaller{
314
+ Defined: defined,
315
+ PC: frame.PC,
316
+ File: frame.File,
317
+ Line: frame.Line,
318
+ Function: frame.Function,
319
+ }
320
+ }
321
+ if log.addStack.Enabled(ce.Entry.Level) {
322
+ ce.Entry.Stack = StackSkip("", log.callerSkip+callerSkipOffset).String
323
+ }
324
+
325
+ return ce
326
+ }
327
+
328
+ // getCallerFrame gets caller frame. The argument skip is the number of stack
329
+ // frames to ascend, with 0 identifying the caller of getCallerFrame. The
330
+ // boolean ok is false if it was not possible to recover the information.
331
+ //
332
+ // Note: This implementation is similar to runtime.Caller, but it returns the whole frame.
333
+ func getCallerFrame(skip int) (frame runtime.Frame, ok bool) {
334
+ const skipOffset = 2 // skip getCallerFrame and Callers
335
+
336
+ pc := make([]uintptr, 1)
337
+ numFrames := runtime.Callers(skip+skipOffset, pc[:])
338
+ if numFrames < 1 {
339
+ return
340
+ }
341
+
342
+ frame, _ = runtime.CallersFrames(pc).Next()
343
+ return frame, frame.PC != 0
344
+ }