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,73 @@
1
+ package proxy
2
+
3
+ import (
4
+ "crypto/tls"
5
+ "errors"
6
+ "sync"
7
+ "time"
8
+ )
9
+
10
+ var errConfigNotFound = errors.New("TLS config not found")
11
+
12
+ // expireTTL defines the time
13
+ const expireTTL = 10 * time.Minute
14
+
15
+ type cacheEntry struct {
16
+ // cfg defines the TLS config we're caching
17
+ cfg *tls.Config
18
+ remoteAddr string
19
+
20
+ // added holds the time the cfg was added to the cache
21
+ added time.Time
22
+ }
23
+
24
+ type tlsCache struct {
25
+ // configs holds the TLS config for each remote instance
26
+ configs map[string]cacheEntry
27
+ configsMu sync.Mutex // protects configs
28
+
29
+ // nowFn returns the current local time, used during insertion of cache
30
+ // entries. It's a function so we can use it for tests.
31
+ nowFn func() time.Time
32
+ }
33
+
34
+ func newtlsCache() *tlsCache {
35
+ return &tlsCache{
36
+ configs: make(map[string]cacheEntry),
37
+ nowFn: time.Now,
38
+ }
39
+ }
40
+
41
+ // Add adds the given config and remote address for the given instance name
42
+ func (t *tlsCache) Add(instance string, cfg *tls.Config, remoteAddr string) {
43
+ t.configsMu.Lock()
44
+ defer t.configsMu.Unlock()
45
+
46
+ t.configs[instance] = cacheEntry{
47
+ cfg: cfg,
48
+ remoteAddr: remoteAddr,
49
+ added: t.nowFn(),
50
+ }
51
+ }
52
+
53
+ // Get retrieves the config for the given instance
54
+ func (t *tlsCache) Get(instance string) (cacheEntry, error) {
55
+ t.configsMu.Lock()
56
+ defer t.configsMu.Unlock()
57
+
58
+ e, ok := t.configs[instance]
59
+ if !ok {
60
+ return cacheEntry{}, errConfigNotFound
61
+ }
62
+
63
+ now := time.Now()
64
+
65
+ // delete the config if it's expired. This will trigger the user to request
66
+ // another TLS config.
67
+ if e.added.Add(expireTTL).Before(now) {
68
+ delete(t.configs, instance)
69
+ return cacheEntry{}, errConfigNotFound
70
+ }
71
+
72
+ return e, nil
73
+ }
@@ -0,0 +1,19 @@
1
+ coverage:
2
+ range: 80..100
3
+ round: down
4
+ precision: 2
5
+
6
+ status:
7
+ project: # measuring the overall project coverage
8
+ default: # context, you can create multiple ones with custom titles
9
+ enabled: yes # must be yes|true to enable this status
10
+ target: 100 # specify the target coverage for each commit status
11
+ # option: "auto" (must increase from parent commit or pull request base)
12
+ # option: "X%" a static target percentage to hit
13
+ if_not_found: success # if parent is not found report status as success, error, or failure
14
+ if_ci_failed: error # if ci fails report status as success, error, or failure
15
+
16
+ # Also update COVER_IGNORE_PKGS in the Makefile.
17
+ ignore:
18
+ - /internal/gen-atomicint/
19
+ - /internal/gen-valuewrapper/
@@ -0,0 +1,12 @@
1
+ /bin
2
+ .DS_Store
3
+ /vendor
4
+ cover.html
5
+ cover.out
6
+ lint.log
7
+
8
+ # Binaries
9
+ *.test
10
+
11
+ # Profiling output
12
+ *.prof
@@ -0,0 +1,27 @@
1
+ sudo: false
2
+ language: go
3
+ go_import_path: go.uber.org/atomic
4
+
5
+ env:
6
+ global:
7
+ - GO111MODULE=on
8
+
9
+ matrix:
10
+ include:
11
+ - go: oldstable
12
+ - go: stable
13
+ env: LINT=1
14
+
15
+ cache:
16
+ directories:
17
+ - vendor
18
+
19
+ before_install:
20
+ - go version
21
+
22
+ script:
23
+ - test -z "$LINT" || make lint
24
+ - make cover
25
+
26
+ after_success:
27
+ - bash <(curl -s https://codecov.io/bash)
@@ -0,0 +1,76 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.7.0] - 2020-09-14
8
+ ### Added
9
+ - Support JSON serialization and deserialization of primitive atomic types.
10
+ - Support Text marshalling and unmarshalling for string atomics.
11
+
12
+ ### Changed
13
+ - Disallow incorrect comparison of atomic values in a non-atomic way.
14
+
15
+ ### Removed
16
+ - Remove dependency on `golang.org/x/{lint, tools}`.
17
+
18
+ ## [1.6.0] - 2020-02-24
19
+ ### Changed
20
+ - Drop library dependency on `golang.org/x/{lint, tools}`.
21
+
22
+ ## [1.5.1] - 2019-11-19
23
+ - Fix bug where `Bool.CAS` and `Bool.Toggle` do work correctly together
24
+ causing `CAS` to fail even though the old value matches.
25
+
26
+ ## [1.5.0] - 2019-10-29
27
+ ### Changed
28
+ - With Go modules, only the `go.uber.org/atomic` import path is supported now.
29
+ If you need to use the old import path, please add a `replace` directive to
30
+ your `go.mod`.
31
+
32
+ ## [1.4.0] - 2019-05-01
33
+ ### Added
34
+ - Add `atomic.Error` type for atomic operations on `error` values.
35
+
36
+ ## [1.3.2] - 2018-05-02
37
+ ### Added
38
+ - Add `atomic.Duration` type for atomic operations on `time.Duration` values.
39
+
40
+ ## [1.3.1] - 2017-11-14
41
+ ### Fixed
42
+ - Revert optimization for `atomic.String.Store("")` which caused data races.
43
+
44
+ ## [1.3.0] - 2017-11-13
45
+ ### Added
46
+ - Add `atomic.Bool.CAS` for compare-and-swap semantics on bools.
47
+
48
+ ### Changed
49
+ - Optimize `atomic.String.Store("")` by avoiding an allocation.
50
+
51
+ ## [1.2.0] - 2017-04-12
52
+ ### Added
53
+ - Shadow `atomic.Value` from `sync/atomic`.
54
+
55
+ ## [1.1.0] - 2017-03-10
56
+ ### Added
57
+ - Add atomic `Float64` type.
58
+
59
+ ### Changed
60
+ - Support new `go.uber.org/atomic` import path.
61
+
62
+ ## [1.0.0] - 2016-07-18
63
+
64
+ - Initial release.
65
+
66
+ [1.7.0]: https://github.com/uber-go/atomic/compare/v1.6.0...v1.7.0
67
+ [1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0
68
+ [1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1
69
+ [1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0
70
+ [1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0
71
+ [1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2
72
+ [1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1
73
+ [1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0
74
+ [1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0
75
+ [1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0
76
+ [1.0.0]: https://github.com/uber-go/atomic/releases/tag/v1.0.0
@@ -0,0 +1,19 @@
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.
@@ -0,0 +1,78 @@
1
+ # Directory to place `go install`ed binaries into.
2
+ export GOBIN ?= $(shell pwd)/bin
3
+
4
+ GOLINT = $(GOBIN)/golint
5
+ GEN_ATOMICINT = $(GOBIN)/gen-atomicint
6
+ GEN_ATOMICWRAPPER = $(GOBIN)/gen-atomicwrapper
7
+ STATICCHECK = $(GOBIN)/staticcheck
8
+
9
+ GO_FILES ?= $(shell find . '(' -path .git -o -path vendor ')' -prune -o -name '*.go' -print)
10
+
11
+ # Also update ignore section in .codecov.yml.
12
+ COVER_IGNORE_PKGS = \
13
+ go.uber.org/atomic/internal/gen-atomicint \
14
+ go.uber.org/atomic/internal/gen-atomicwrapper
15
+
16
+ .PHONY: build
17
+ build:
18
+ go build ./...
19
+
20
+ .PHONY: test
21
+ test:
22
+ go test -race ./...
23
+
24
+ .PHONY: gofmt
25
+ gofmt:
26
+ $(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
27
+ gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
28
+ @[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)
29
+
30
+ $(GOLINT):
31
+ cd tools && go install golang.org/x/lint/golint
32
+
33
+ $(STATICCHECK):
34
+ cd tools && go install honnef.co/go/tools/cmd/staticcheck
35
+
36
+ $(GEN_ATOMICWRAPPER): $(wildcard ./internal/gen-atomicwrapper/*)
37
+ go build -o $@ ./internal/gen-atomicwrapper
38
+
39
+ $(GEN_ATOMICINT): $(wildcard ./internal/gen-atomicint/*)
40
+ go build -o $@ ./internal/gen-atomicint
41
+
42
+ .PHONY: golint
43
+ golint: $(GOLINT)
44
+ $(GOLINT) ./...
45
+
46
+ .PHONY: staticcheck
47
+ staticcheck: $(STATICCHECK)
48
+ $(STATICCHECK) ./...
49
+
50
+ .PHONY: lint
51
+ lint: gofmt golint staticcheck generatenodirty
52
+
53
+ # comma separated list of packages to consider for code coverage.
54
+ COVER_PKG = $(shell \
55
+ go list -find ./... | \
56
+ grep -v $(foreach pkg,$(COVER_IGNORE_PKGS),-e "^$(pkg)$$") | \
57
+ paste -sd, -)
58
+
59
+ .PHONY: cover
60
+ cover:
61
+ go test -coverprofile=cover.out -coverpkg $(COVER_PKG) -v ./...
62
+ go tool cover -html=cover.out -o cover.html
63
+
64
+ .PHONY: generate
65
+ generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER)
66
+ go generate ./...
67
+
68
+ .PHONY: generatenodirty
69
+ generatenodirty:
70
+ @[ -z "$$(git status --porcelain)" ] || ( \
71
+ echo "Working tree is dirty. Commit your changes first."; \
72
+ exit 1 )
73
+ @make generate
74
+ @status=$$(git status --porcelain); \
75
+ [ -z "$$status" ] || ( \
76
+ echo "Working tree is dirty after `make generate`:"; \
77
+ echo "$$status"; \
78
+ echo "Please ensure that the generated code is up-to-date." )
@@ -0,0 +1,63 @@
1
+ # atomic [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Go Report Card][reportcard-img]][reportcard]
2
+
3
+ Simple wrappers for primitive types to enforce atomic access.
4
+
5
+ ## Installation
6
+
7
+ ```shell
8
+ $ go get -u go.uber.org/atomic@v1
9
+ ```
10
+
11
+ ### Legacy Import Path
12
+
13
+ As of v1.5.0, the import path `go.uber.org/atomic` is the only supported way
14
+ of using this package. If you are using Go modules, this package will fail to
15
+ compile with the legacy import path path `github.com/uber-go/atomic`.
16
+
17
+ We recommend migrating your code to the new import path but if you're unable
18
+ to do so, or if your dependencies are still using the old import path, you
19
+ will have to add a `replace` directive to your `go.mod` file downgrading the
20
+ legacy import path to an older version.
21
+
22
+ ```
23
+ replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0
24
+ ```
25
+
26
+ You can do so automatically by running the following command.
27
+
28
+ ```shell
29
+ $ go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ The standard library's `sync/atomic` is powerful, but it's easy to forget which
35
+ variables must be accessed atomically. `go.uber.org/atomic` preserves all the
36
+ functionality of the standard library, but wraps the primitive types to
37
+ provide a safer, more convenient API.
38
+
39
+ ```go
40
+ var atom atomic.Uint32
41
+ atom.Store(42)
42
+ atom.Sub(2)
43
+ atom.CAS(40, 11)
44
+ ```
45
+
46
+ See the [documentation][doc] for a complete API specification.
47
+
48
+ ## Development Status
49
+
50
+ Stable.
51
+
52
+ ---
53
+
54
+ Released under the [MIT License](LICENSE.txt).
55
+
56
+ [doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg
57
+ [doc]: https://godoc.org/go.uber.org/atomic
58
+ [ci-img]: https://travis-ci.com/uber-go/atomic.svg?branch=master
59
+ [ci]: https://travis-ci.com/uber-go/atomic
60
+ [cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg
61
+ [cov]: https://codecov.io/gh/uber-go/atomic
62
+ [reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic
63
+ [reportcard]: https://goreportcard.com/report/go.uber.org/atomic
@@ -0,0 +1,81 @@
1
+ // @generated Code generated by gen-atomicwrapper.
2
+
3
+ // Copyright (c) 2020 Uber Technologies, Inc.
4
+ //
5
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ // of this software and associated documentation files (the "Software"), to deal
7
+ // in the Software without restriction, including without limitation the rights
8
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ // copies of the Software, and to permit persons to whom the Software is
10
+ // furnished to do so, subject to the following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be included in
13
+ // all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ // THE SOFTWARE.
22
+
23
+ package atomic
24
+
25
+ import (
26
+ "encoding/json"
27
+ )
28
+
29
+ // Bool is an atomic type-safe wrapper for bool values.
30
+ type Bool struct {
31
+ _ nocmp // disallow non-atomic comparison
32
+
33
+ v Uint32
34
+ }
35
+
36
+ var _zeroBool bool
37
+
38
+ // NewBool creates a new Bool.
39
+ func NewBool(v bool) *Bool {
40
+ x := &Bool{}
41
+ if v != _zeroBool {
42
+ x.Store(v)
43
+ }
44
+ return x
45
+ }
46
+
47
+ // Load atomically loads the wrapped bool.
48
+ func (x *Bool) Load() bool {
49
+ return truthy(x.v.Load())
50
+ }
51
+
52
+ // Store atomically stores the passed bool.
53
+ func (x *Bool) Store(v bool) {
54
+ x.v.Store(boolToInt(v))
55
+ }
56
+
57
+ // CAS is an atomic compare-and-swap for bool values.
58
+ func (x *Bool) CAS(o, n bool) bool {
59
+ return x.v.CAS(boolToInt(o), boolToInt(n))
60
+ }
61
+
62
+ // Swap atomically stores the given bool and returns the old
63
+ // value.
64
+ func (x *Bool) Swap(o bool) bool {
65
+ return truthy(x.v.Swap(boolToInt(o)))
66
+ }
67
+
68
+ // MarshalJSON encodes the wrapped bool into JSON.
69
+ func (x *Bool) MarshalJSON() ([]byte, error) {
70
+ return json.Marshal(x.Load())
71
+ }
72
+
73
+ // UnmarshalJSON decodes a bool from JSON.
74
+ func (x *Bool) UnmarshalJSON(b []byte) error {
75
+ var v bool
76
+ if err := json.Unmarshal(b, &v); err != nil {
77
+ return err
78
+ }
79
+ x.Store(v)
80
+ return nil
81
+ }