planetscale 0.2.0 → 0.3.3

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 (365) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/pipeline.yml +21 -0
  3. data/.github/workflows/ci.yml +9 -1
  4. data/.github/workflows/gem-push.yml +9 -2
  5. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  6. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +56 -3
  7. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +205 -172
  8. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  13. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  14. data/README.md +11 -8
  15. data/controller.go +24 -26
  16. data/go.mod +4 -3
  17. data/go.sum +42 -27
  18. data/lib/generators/planetscale/install_generator.rb +8 -6
  19. data/lib/planetscale/version.rb +1 -1
  20. data/lib/planetscale.rb +14 -15
  21. data/planetscale.gemspec +2 -2
  22. data/proxy/planetscale-darwin.h +1 -1
  23. data/proxy/planetscale-darwin.so +0 -0
  24. data/proxy/planetscale-linux.h +1 -1
  25. data/proxy/planetscale-linux.so +0 -0
  26. data/proxy.go +1 -5
  27. metadata +6 -342
  28. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  29. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  30. data/vendor/github.com/armon/circbuf/README.md +0 -28
  31. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  32. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  33. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  34. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  35. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  36. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  37. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  38. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  39. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  40. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  41. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  42. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  43. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  44. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  45. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  46. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  47. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  48. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  49. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  50. data/vendor/github.com/gorilla/mux/README.md +0 -805
  51. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  52. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  53. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  54. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  55. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  56. data/vendor/github.com/gorilla/mux/route.go +0 -736
  57. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  58. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  59. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  60. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  61. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  62. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  63. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  64. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  65. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  66. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  67. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  68. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  69. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  70. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  71. data/vendor/github.com/pkg/errors/Makefile +0 -44
  72. data/vendor/github.com/pkg/errors/README.md +0 -59
  73. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  74. data/vendor/github.com/pkg/errors/errors.go +0 -288
  75. data/vendor/github.com/pkg/errors/go113.go +0 -38
  76. data/vendor/github.com/pkg/errors/stack.go +0 -177
  77. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +0 -139
  78. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +0 -258
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -142
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -305
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -131
  82. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +0 -368
  83. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +0 -78
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  85. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -467
  86. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  87. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  88. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  89. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  90. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  91. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  92. data/vendor/go.uber.org/atomic/Makefile +0 -78
  93. data/vendor/go.uber.org/atomic/README.md +0 -63
  94. data/vendor/go.uber.org/atomic/bool.go +0 -81
  95. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  96. data/vendor/go.uber.org/atomic/doc.go +0 -23
  97. data/vendor/go.uber.org/atomic/duration.go +0 -82
  98. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  99. data/vendor/go.uber.org/atomic/error.go +0 -51
  100. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  101. data/vendor/go.uber.org/atomic/float64.go +0 -76
  102. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  103. data/vendor/go.uber.org/atomic/gen.go +0 -26
  104. data/vendor/go.uber.org/atomic/go.mod +0 -8
  105. data/vendor/go.uber.org/atomic/go.sum +0 -9
  106. data/vendor/go.uber.org/atomic/int32.go +0 -102
  107. data/vendor/go.uber.org/atomic/int64.go +0 -102
  108. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  109. data/vendor/go.uber.org/atomic/string.go +0 -54
  110. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  111. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  112. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  113. data/vendor/go.uber.org/atomic/value.go +0 -31
  114. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  115. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  116. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  117. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  118. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  119. data/vendor/go.uber.org/multierr/Makefile +0 -42
  120. data/vendor/go.uber.org/multierr/README.md +0 -23
  121. data/vendor/go.uber.org/multierr/error.go +0 -449
  122. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  123. data/vendor/go.uber.org/multierr/go.mod +0 -8
  124. data/vendor/go.uber.org/multierr/go.sum +0 -11
  125. data/vendor/go.uber.org/multierr/go113.go +0 -52
  126. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  127. data/vendor/go.uber.org/zap/.gitignore +0 -32
  128. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  129. data/vendor/go.uber.org/zap/.travis.yml +0 -23
  130. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -432
  131. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  132. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -81
  133. data/vendor/go.uber.org/zap/FAQ.md +0 -156
  134. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  135. data/vendor/go.uber.org/zap/Makefile +0 -63
  136. data/vendor/go.uber.org/zap/README.md +0 -134
  137. data/vendor/go.uber.org/zap/array.go +0 -320
  138. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -123
  139. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  140. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  141. data/vendor/go.uber.org/zap/config.go +0 -264
  142. data/vendor/go.uber.org/zap/doc.go +0 -113
  143. data/vendor/go.uber.org/zap/encoder.go +0 -79
  144. data/vendor/go.uber.org/zap/error.go +0 -80
  145. data/vendor/go.uber.org/zap/field.go +0 -539
  146. data/vendor/go.uber.org/zap/flag.go +0 -39
  147. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  148. data/vendor/go.uber.org/zap/global.go +0 -168
  149. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  150. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  151. data/vendor/go.uber.org/zap/go.mod +0 -13
  152. data/vendor/go.uber.org/zap/go.sum +0 -56
  153. data/vendor/go.uber.org/zap/http_handler.go +0 -81
  154. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  155. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  156. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  157. data/vendor/go.uber.org/zap/level.go +0 -132
  158. data/vendor/go.uber.org/zap/logger.go +0 -344
  159. data/vendor/go.uber.org/zap/options.go +0 -140
  160. data/vendor/go.uber.org/zap/sink.go +0 -161
  161. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  162. data/vendor/go.uber.org/zap/sugar.go +0 -304
  163. data/vendor/go.uber.org/zap/time.go +0 -27
  164. data/vendor/go.uber.org/zap/writer.go +0 -99
  165. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  166. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  167. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  168. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  169. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  170. data/vendor/go.uber.org/zap/zapcore/error.go +0 -115
  171. data/vendor/go.uber.org/zap/zapcore/field.go +0 -227
  172. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  173. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  174. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  175. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  176. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  177. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  178. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  179. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  180. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  181. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -123
  182. data/vendor/golang.org/x/net/AUTHORS +0 -3
  183. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  184. data/vendor/golang.org/x/net/LICENSE +0 -27
  185. data/vendor/golang.org/x/net/PATENTS +0 -22
  186. data/vendor/golang.org/x/net/context/context.go +0 -56
  187. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  188. data/vendor/golang.org/x/net/context/go17.go +0 -73
  189. data/vendor/golang.org/x/net/context/go19.go +0 -21
  190. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  191. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  192. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  193. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  194. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  195. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  196. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  197. data/vendor/golang.org/x/oauth2/README.md +0 -36
  198. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  199. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  200. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  201. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  202. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  203. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  204. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  205. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  206. data/vendor/golang.org/x/oauth2/token.go +0 -178
  207. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  208. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  209. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  210. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  211. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  212. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  213. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  214. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  215. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  216. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  217. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  218. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  219. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  220. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  221. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  222. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  223. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  224. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  225. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  226. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  227. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  228. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  229. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  230. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  231. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  232. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  233. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  234. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  235. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  236. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  237. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  238. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  239. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  240. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  241. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  242. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  243. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  244. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  245. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  246. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  247. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  248. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  249. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  250. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  251. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  252. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  256. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  257. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  258. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  259. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  260. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  261. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  266. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  267. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  268. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  269. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  270. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  271. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  272. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  273. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  274. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  275. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  276. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  277. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  278. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  279. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  281. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  282. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  283. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  284. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  285. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  286. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  287. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  288. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  289. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  298. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  299. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  300. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  301. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  302. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  303. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  304. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  305. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  306. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  307. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  310. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  312. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  313. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  314. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  315. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  316. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  317. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  318. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  319. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  320. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  321. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  322. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  323. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  324. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  325. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  326. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  327. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  328. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  329. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  330. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  331. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  332. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  333. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  334. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  335. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  336. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  337. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  338. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  339. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  340. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  341. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  343. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  344. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  345. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  346. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  347. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  350. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  351. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  352. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  359. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  360. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  361. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  362. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  363. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  364. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  365. data/vendor/modules.txt +0 -79
@@ -1,85 +0,0 @@
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
- "runtime"
25
- "sync"
26
-
27
- "go.uber.org/zap/internal/bufferpool"
28
- )
29
-
30
- var (
31
- _stacktracePool = sync.Pool{
32
- New: func() interface{} {
33
- return newProgramCounters(64)
34
- },
35
- }
36
- )
37
-
38
- func takeStacktrace(skip int) string {
39
- buffer := bufferpool.Get()
40
- defer buffer.Free()
41
- programCounters := _stacktracePool.Get().(*programCounters)
42
- defer _stacktracePool.Put(programCounters)
43
-
44
- var numFrames int
45
- for {
46
- // Skip the call to runtime.Callers and takeStacktrace so that the
47
- // program counters start at the caller of takeStacktrace.
48
- numFrames = runtime.Callers(skip+2, programCounters.pcs)
49
- if numFrames < len(programCounters.pcs) {
50
- break
51
- }
52
- // Don't put the too-short counter slice back into the pool; this lets
53
- // the pool adjust if we consistently take deep stacktraces.
54
- programCounters = newProgramCounters(len(programCounters.pcs) * 2)
55
- }
56
-
57
- i := 0
58
- frames := runtime.CallersFrames(programCounters.pcs[:numFrames])
59
-
60
- // Note: On the last iteration, frames.Next() returns false, with a valid
61
- // frame, but we ignore this frame. The last frame is a a runtime frame which
62
- // adds noise, since it's only either runtime.main or runtime.goexit.
63
- for frame, more := frames.Next(); more; frame, more = frames.Next() {
64
- if i != 0 {
65
- buffer.AppendByte('\n')
66
- }
67
- i++
68
- buffer.AppendString(frame.Function)
69
- buffer.AppendByte('\n')
70
- buffer.AppendByte('\t')
71
- buffer.AppendString(frame.File)
72
- buffer.AppendByte(':')
73
- buffer.AppendInt(int64(frame.Line))
74
- }
75
-
76
- return buffer.String()
77
- }
78
-
79
- type programCounters struct {
80
- pcs []uintptr
81
- }
82
-
83
- func newProgramCounters(size int) *programCounters {
84
- return &programCounters{make([]uintptr, size)}
85
- }
@@ -1,304 +0,0 @@
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
-
26
- "go.uber.org/zap/zapcore"
27
-
28
- "go.uber.org/multierr"
29
- )
30
-
31
- const (
32
- _oddNumberErrMsg = "Ignored key without a value."
33
- _nonStringKeyErrMsg = "Ignored key-value pairs with non-string keys."
34
- )
35
-
36
- // A SugaredLogger wraps the base Logger functionality in a slower, but less
37
- // verbose, API. Any Logger can be converted to a SugaredLogger with its Sugar
38
- // method.
39
- //
40
- // Unlike the Logger, the SugaredLogger doesn't insist on structured logging.
41
- // For each log level, it exposes three methods: one for loosely-typed
42
- // structured logging, one for println-style formatting, and one for
43
- // printf-style formatting. For example, SugaredLoggers can produce InfoLevel
44
- // output with Infow ("info with" structured context), Info, or Infof.
45
- type SugaredLogger struct {
46
- base *Logger
47
- }
48
-
49
- // Desugar unwraps a SugaredLogger, exposing the original Logger. Desugaring
50
- // is quite inexpensive, so it's reasonable for a single application to use
51
- // both Loggers and SugaredLoggers, converting between them on the boundaries
52
- // of performance-sensitive code.
53
- func (s *SugaredLogger) Desugar() *Logger {
54
- base := s.base.clone()
55
- base.callerSkip -= 2
56
- return base
57
- }
58
-
59
- // Named adds a sub-scope to the logger's name. See Logger.Named for details.
60
- func (s *SugaredLogger) Named(name string) *SugaredLogger {
61
- return &SugaredLogger{base: s.base.Named(name)}
62
- }
63
-
64
- // With adds a variadic number of fields to the logging context. It accepts a
65
- // mix of strongly-typed Field objects and loosely-typed key-value pairs. When
66
- // processing pairs, the first element of the pair is used as the field key
67
- // and the second as the field value.
68
- //
69
- // For example,
70
- // sugaredLogger.With(
71
- // "hello", "world",
72
- // "failure", errors.New("oh no"),
73
- // Stack(),
74
- // "count", 42,
75
- // "user", User{Name: "alice"},
76
- // )
77
- // is the equivalent of
78
- // unsugared.With(
79
- // String("hello", "world"),
80
- // String("failure", "oh no"),
81
- // Stack(),
82
- // Int("count", 42),
83
- // Object("user", User{Name: "alice"}),
84
- // )
85
- //
86
- // Note that the keys in key-value pairs should be strings. In development,
87
- // passing a non-string key panics. In production, the logger is more
88
- // forgiving: a separate error is logged, but the key-value pair is skipped
89
- // and execution continues. Passing an orphaned key triggers similar behavior:
90
- // panics in development and errors in production.
91
- func (s *SugaredLogger) With(args ...interface{}) *SugaredLogger {
92
- return &SugaredLogger{base: s.base.With(s.sweetenFields(args)...)}
93
- }
94
-
95
- // Debug uses fmt.Sprint to construct and log a message.
96
- func (s *SugaredLogger) Debug(args ...interface{}) {
97
- s.log(DebugLevel, "", args, nil)
98
- }
99
-
100
- // Info uses fmt.Sprint to construct and log a message.
101
- func (s *SugaredLogger) Info(args ...interface{}) {
102
- s.log(InfoLevel, "", args, nil)
103
- }
104
-
105
- // Warn uses fmt.Sprint to construct and log a message.
106
- func (s *SugaredLogger) Warn(args ...interface{}) {
107
- s.log(WarnLevel, "", args, nil)
108
- }
109
-
110
- // Error uses fmt.Sprint to construct and log a message.
111
- func (s *SugaredLogger) Error(args ...interface{}) {
112
- s.log(ErrorLevel, "", args, nil)
113
- }
114
-
115
- // DPanic uses fmt.Sprint to construct and log a message. In development, the
116
- // logger then panics. (See DPanicLevel for details.)
117
- func (s *SugaredLogger) DPanic(args ...interface{}) {
118
- s.log(DPanicLevel, "", args, nil)
119
- }
120
-
121
- // Panic uses fmt.Sprint to construct and log a message, then panics.
122
- func (s *SugaredLogger) Panic(args ...interface{}) {
123
- s.log(PanicLevel, "", args, nil)
124
- }
125
-
126
- // Fatal uses fmt.Sprint to construct and log a message, then calls os.Exit.
127
- func (s *SugaredLogger) Fatal(args ...interface{}) {
128
- s.log(FatalLevel, "", args, nil)
129
- }
130
-
131
- // Debugf uses fmt.Sprintf to log a templated message.
132
- func (s *SugaredLogger) Debugf(template string, args ...interface{}) {
133
- s.log(DebugLevel, template, args, nil)
134
- }
135
-
136
- // Infof uses fmt.Sprintf to log a templated message.
137
- func (s *SugaredLogger) Infof(template string, args ...interface{}) {
138
- s.log(InfoLevel, template, args, nil)
139
- }
140
-
141
- // Warnf uses fmt.Sprintf to log a templated message.
142
- func (s *SugaredLogger) Warnf(template string, args ...interface{}) {
143
- s.log(WarnLevel, template, args, nil)
144
- }
145
-
146
- // Errorf uses fmt.Sprintf to log a templated message.
147
- func (s *SugaredLogger) Errorf(template string, args ...interface{}) {
148
- s.log(ErrorLevel, template, args, nil)
149
- }
150
-
151
- // DPanicf uses fmt.Sprintf to log a templated message. In development, the
152
- // logger then panics. (See DPanicLevel for details.)
153
- func (s *SugaredLogger) DPanicf(template string, args ...interface{}) {
154
- s.log(DPanicLevel, template, args, nil)
155
- }
156
-
157
- // Panicf uses fmt.Sprintf to log a templated message, then panics.
158
- func (s *SugaredLogger) Panicf(template string, args ...interface{}) {
159
- s.log(PanicLevel, template, args, nil)
160
- }
161
-
162
- // Fatalf uses fmt.Sprintf to log a templated message, then calls os.Exit.
163
- func (s *SugaredLogger) Fatalf(template string, args ...interface{}) {
164
- s.log(FatalLevel, template, args, nil)
165
- }
166
-
167
- // Debugw logs a message with some additional context. The variadic key-value
168
- // pairs are treated as they are in With.
169
- //
170
- // When debug-level logging is disabled, this is much faster than
171
- // s.With(keysAndValues).Debug(msg)
172
- func (s *SugaredLogger) Debugw(msg string, keysAndValues ...interface{}) {
173
- s.log(DebugLevel, msg, nil, keysAndValues)
174
- }
175
-
176
- // Infow logs a message with some additional context. The variadic key-value
177
- // pairs are treated as they are in With.
178
- func (s *SugaredLogger) Infow(msg string, keysAndValues ...interface{}) {
179
- s.log(InfoLevel, msg, nil, keysAndValues)
180
- }
181
-
182
- // Warnw logs a message with some additional context. The variadic key-value
183
- // pairs are treated as they are in With.
184
- func (s *SugaredLogger) Warnw(msg string, keysAndValues ...interface{}) {
185
- s.log(WarnLevel, msg, nil, keysAndValues)
186
- }
187
-
188
- // Errorw logs a message with some additional context. The variadic key-value
189
- // pairs are treated as they are in With.
190
- func (s *SugaredLogger) Errorw(msg string, keysAndValues ...interface{}) {
191
- s.log(ErrorLevel, msg, nil, keysAndValues)
192
- }
193
-
194
- // DPanicw logs a message with some additional context. In development, the
195
- // logger then panics. (See DPanicLevel for details.) The variadic key-value
196
- // pairs are treated as they are in With.
197
- func (s *SugaredLogger) DPanicw(msg string, keysAndValues ...interface{}) {
198
- s.log(DPanicLevel, msg, nil, keysAndValues)
199
- }
200
-
201
- // Panicw logs a message with some additional context, then panics. The
202
- // variadic key-value pairs are treated as they are in With.
203
- func (s *SugaredLogger) Panicw(msg string, keysAndValues ...interface{}) {
204
- s.log(PanicLevel, msg, nil, keysAndValues)
205
- }
206
-
207
- // Fatalw logs a message with some additional context, then calls os.Exit. The
208
- // variadic key-value pairs are treated as they are in With.
209
- func (s *SugaredLogger) Fatalw(msg string, keysAndValues ...interface{}) {
210
- s.log(FatalLevel, msg, nil, keysAndValues)
211
- }
212
-
213
- // Sync flushes any buffered log entries.
214
- func (s *SugaredLogger) Sync() error {
215
- return s.base.Sync()
216
- }
217
-
218
- func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interface{}, context []interface{}) {
219
- // If logging at this level is completely disabled, skip the overhead of
220
- // string formatting.
221
- if lvl < DPanicLevel && !s.base.Core().Enabled(lvl) {
222
- return
223
- }
224
-
225
- // Format with Sprint, Sprintf, or neither.
226
- msg := template
227
- if msg == "" && len(fmtArgs) > 0 {
228
- msg = fmt.Sprint(fmtArgs...)
229
- } else if msg != "" && len(fmtArgs) > 0 {
230
- msg = fmt.Sprintf(template, fmtArgs...)
231
- }
232
-
233
- if ce := s.base.Check(lvl, msg); ce != nil {
234
- ce.Write(s.sweetenFields(context)...)
235
- }
236
- }
237
-
238
- func (s *SugaredLogger) sweetenFields(args []interface{}) []Field {
239
- if len(args) == 0 {
240
- return nil
241
- }
242
-
243
- // Allocate enough space for the worst case; if users pass only structured
244
- // fields, we shouldn't penalize them with extra allocations.
245
- fields := make([]Field, 0, len(args))
246
- var invalid invalidPairs
247
-
248
- for i := 0; i < len(args); {
249
- // This is a strongly-typed field. Consume it and move on.
250
- if f, ok := args[i].(Field); ok {
251
- fields = append(fields, f)
252
- i++
253
- continue
254
- }
255
-
256
- // Make sure this element isn't a dangling key.
257
- if i == len(args)-1 {
258
- s.base.DPanic(_oddNumberErrMsg, Any("ignored", args[i]))
259
- break
260
- }
261
-
262
- // Consume this value and the next, treating them as a key-value pair. If the
263
- // key isn't a string, add this pair to the slice of invalid pairs.
264
- key, val := args[i], args[i+1]
265
- if keyStr, ok := key.(string); !ok {
266
- // Subsequent errors are likely, so allocate once up front.
267
- if cap(invalid) == 0 {
268
- invalid = make(invalidPairs, 0, len(args)/2)
269
- }
270
- invalid = append(invalid, invalidPair{i, key, val})
271
- } else {
272
- fields = append(fields, Any(keyStr, val))
273
- }
274
- i += 2
275
- }
276
-
277
- // If we encountered any invalid key-value pairs, log an error.
278
- if len(invalid) > 0 {
279
- s.base.DPanic(_nonStringKeyErrMsg, Array("invalid", invalid))
280
- }
281
- return fields
282
- }
283
-
284
- type invalidPair struct {
285
- position int
286
- key, value interface{}
287
- }
288
-
289
- func (p invalidPair) MarshalLogObject(enc zapcore.ObjectEncoder) error {
290
- enc.AddInt64("position", int64(p.position))
291
- Any("key", p.key).AddTo(enc)
292
- Any("value", p.value).AddTo(enc)
293
- return nil
294
- }
295
-
296
- type invalidPairs []invalidPair
297
-
298
- func (ps invalidPairs) MarshalLogArray(enc zapcore.ArrayEncoder) error {
299
- var err error
300
- for i := range ps {
301
- err = multierr.Append(err, enc.AppendObject(ps[i]))
302
- }
303
- return err
304
- }
@@ -1,27 +0,0 @@
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 "time"
24
-
25
- func timeToMillis(t time.Time) int64 {
26
- return t.UnixNano() / int64(time.Millisecond)
27
- }
@@ -1,99 +0,0 @@
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"
26
- "io/ioutil"
27
-
28
- "go.uber.org/zap/zapcore"
29
-
30
- "go.uber.org/multierr"
31
- )
32
-
33
- // Open is a high-level wrapper that takes a variadic number of URLs, opens or
34
- // creates each of the specified resources, and combines them into a locked
35
- // WriteSyncer. It also returns any error encountered and a function to close
36
- // any opened files.
37
- //
38
- // Passing no URLs returns a no-op WriteSyncer. Zap handles URLs without a
39
- // scheme and URLs with the "file" scheme. Third-party code may register
40
- // factories for other schemes using RegisterSink.
41
- //
42
- // URLs with the "file" scheme must use absolute paths on the local
43
- // filesystem. No user, password, port, fragments, or query parameters are
44
- // allowed, and the hostname must be empty or "localhost".
45
- //
46
- // Since it's common to write logs to the local filesystem, URLs without a
47
- // scheme (e.g., "/var/log/foo.log") are treated as local file paths. Without
48
- // a scheme, the special paths "stdout" and "stderr" are interpreted as
49
- // os.Stdout and os.Stderr. When specified without a scheme, relative file
50
- // paths also work.
51
- func Open(paths ...string) (zapcore.WriteSyncer, func(), error) {
52
- writers, close, err := open(paths)
53
- if err != nil {
54
- return nil, nil, err
55
- }
56
-
57
- writer := CombineWriteSyncers(writers...)
58
- return writer, close, nil
59
- }
60
-
61
- func open(paths []string) ([]zapcore.WriteSyncer, func(), error) {
62
- writers := make([]zapcore.WriteSyncer, 0, len(paths))
63
- closers := make([]io.Closer, 0, len(paths))
64
- close := func() {
65
- for _, c := range closers {
66
- c.Close()
67
- }
68
- }
69
-
70
- var openErr error
71
- for _, path := range paths {
72
- sink, err := newSink(path)
73
- if err != nil {
74
- openErr = multierr.Append(openErr, fmt.Errorf("couldn't open sink %q: %v", path, err))
75
- continue
76
- }
77
- writers = append(writers, sink)
78
- closers = append(closers, sink)
79
- }
80
- if openErr != nil {
81
- close()
82
- return writers, nil, openErr
83
- }
84
-
85
- return writers, close, nil
86
- }
87
-
88
- // CombineWriteSyncers is a utility that combines multiple WriteSyncers into a
89
- // single, locked WriteSyncer. If no inputs are supplied, it returns a no-op
90
- // WriteSyncer.
91
- //
92
- // It's provided purely as a convenience; the result is no different from
93
- // using zapcore.NewMultiWriteSyncer and zapcore.Lock individually.
94
- func CombineWriteSyncers(writers ...zapcore.WriteSyncer) zapcore.WriteSyncer {
95
- if len(writers) == 0 {
96
- return zapcore.AddSync(ioutil.Discard)
97
- }
98
- return zapcore.Lock(zapcore.NewMultiWriteSyncer(writers...))
99
- }
@@ -1,161 +0,0 @@
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 zapcore
22
-
23
- import (
24
- "fmt"
25
- "sync"
26
-
27
- "go.uber.org/zap/buffer"
28
- "go.uber.org/zap/internal/bufferpool"
29
- )
30
-
31
- var _sliceEncoderPool = sync.Pool{
32
- New: func() interface{} {
33
- return &sliceArrayEncoder{elems: make([]interface{}, 0, 2)}
34
- },
35
- }
36
-
37
- func getSliceEncoder() *sliceArrayEncoder {
38
- return _sliceEncoderPool.Get().(*sliceArrayEncoder)
39
- }
40
-
41
- func putSliceEncoder(e *sliceArrayEncoder) {
42
- e.elems = e.elems[:0]
43
- _sliceEncoderPool.Put(e)
44
- }
45
-
46
- type consoleEncoder struct {
47
- *jsonEncoder
48
- }
49
-
50
- // NewConsoleEncoder creates an encoder whose output is designed for human -
51
- // rather than machine - consumption. It serializes the core log entry data
52
- // (message, level, timestamp, etc.) in a plain-text format and leaves the
53
- // structured context as JSON.
54
- //
55
- // Note that although the console encoder doesn't use the keys specified in the
56
- // encoder configuration, it will omit any element whose key is set to the empty
57
- // string.
58
- func NewConsoleEncoder(cfg EncoderConfig) Encoder {
59
- if len(cfg.ConsoleSeparator) == 0 {
60
- // Use a default delimiter of '\t' for backwards compatibility
61
- cfg.ConsoleSeparator = "\t"
62
- }
63
- return consoleEncoder{newJSONEncoder(cfg, true)}
64
- }
65
-
66
- func (c consoleEncoder) Clone() Encoder {
67
- return consoleEncoder{c.jsonEncoder.Clone().(*jsonEncoder)}
68
- }
69
-
70
- func (c consoleEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer, error) {
71
- line := bufferpool.Get()
72
-
73
- // We don't want the entry's metadata to be quoted and escaped (if it's
74
- // encoded as strings), which means that we can't use the JSON encoder. The
75
- // simplest option is to use the memory encoder and fmt.Fprint.
76
- //
77
- // If this ever becomes a performance bottleneck, we can implement
78
- // ArrayEncoder for our plain-text format.
79
- arr := getSliceEncoder()
80
- if c.TimeKey != "" && c.EncodeTime != nil {
81
- c.EncodeTime(ent.Time, arr)
82
- }
83
- if c.LevelKey != "" && c.EncodeLevel != nil {
84
- c.EncodeLevel(ent.Level, arr)
85
- }
86
- if ent.LoggerName != "" && c.NameKey != "" {
87
- nameEncoder := c.EncodeName
88
-
89
- if nameEncoder == nil {
90
- // Fall back to FullNameEncoder for backward compatibility.
91
- nameEncoder = FullNameEncoder
92
- }
93
-
94
- nameEncoder(ent.LoggerName, arr)
95
- }
96
- if ent.Caller.Defined {
97
- if c.CallerKey != "" && c.EncodeCaller != nil {
98
- c.EncodeCaller(ent.Caller, arr)
99
- }
100
- if c.FunctionKey != "" {
101
- arr.AppendString(ent.Caller.Function)
102
- }
103
- }
104
- for i := range arr.elems {
105
- if i > 0 {
106
- line.AppendString(c.ConsoleSeparator)
107
- }
108
- fmt.Fprint(line, arr.elems[i])
109
- }
110
- putSliceEncoder(arr)
111
-
112
- // Add the message itself.
113
- if c.MessageKey != "" {
114
- c.addSeparatorIfNecessary(line)
115
- line.AppendString(ent.Message)
116
- }
117
-
118
- // Add any structured context.
119
- c.writeContext(line, fields)
120
-
121
- // If there's no stacktrace key, honor that; this allows users to force
122
- // single-line output.
123
- if ent.Stack != "" && c.StacktraceKey != "" {
124
- line.AppendByte('\n')
125
- line.AppendString(ent.Stack)
126
- }
127
-
128
- if c.LineEnding != "" {
129
- line.AppendString(c.LineEnding)
130
- } else {
131
- line.AppendString(DefaultLineEnding)
132
- }
133
- return line, nil
134
- }
135
-
136
- func (c consoleEncoder) writeContext(line *buffer.Buffer, extra []Field) {
137
- context := c.jsonEncoder.Clone().(*jsonEncoder)
138
- defer func() {
139
- // putJSONEncoder assumes the buffer is still used, but we write out the buffer so
140
- // we can free it.
141
- context.buf.Free()
142
- putJSONEncoder(context)
143
- }()
144
-
145
- addFields(context, extra)
146
- context.closeOpenNamespaces()
147
- if context.buf.Len() == 0 {
148
- return
149
- }
150
-
151
- c.addSeparatorIfNecessary(line)
152
- line.AppendByte('{')
153
- line.Write(context.buf.Bytes())
154
- line.AppendByte('}')
155
- }
156
-
157
- func (c consoleEncoder) addSeparatorIfNecessary(line *buffer.Buffer) {
158
- if line.Len() > 0 {
159
- line.AppendString(c.ConsoleSeparator)
160
- }
161
- }