├── .gitignore ├── .nowignore ├── CODE_OF_CONDUCT.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE.md ├── README.md ├── gist ├── Cargo.toml └── src │ └── lib.rs ├── html ├── Cargo.toml └── src │ └── main.rs ├── img ├── Cargo.toml └── src │ └── main.rs ├── now.json └── site ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── package-lock.json ├── package.json ├── src ├── components │ ├── atoms │ │ ├── color.component.ts │ │ ├── seo.component.tsx │ │ └── typography.component.ts │ ├── molecules │ │ ├── footer.component.tsx │ │ ├── header.component.tsx │ │ └── preview.component.tsx │ └── organisms │ │ └── layout.component.tsx ├── pages │ └── index.tsx ├── types │ └── component.types.ts └── utils │ ├── fp.utils.ts │ └── spacing.utils.ts ├── static └── images │ └── card_preview.png └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | 4 | target/ 5 | **/*.rs.bk 6 | 7 | node_modules/ 8 | public/ 9 | .cache/ 10 | -------------------------------------------------------------------------------- /.nowignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | 4 | target/ 5 | **/*.rs.bk 6 | 7 | /Cargo.toml 8 | /Cargo.lock 9 | 10 | node_modules/ 11 | public/ 12 | .cache/ 13 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies within all project spaces, and it also applies when 49 | an individual is representing the project or its community in public spaces. 50 | Examples of representing a project or community include using an official 51 | project e-mail address, posting via an official social media account, or acting 52 | as an appointed representative at an online or offline event. Representation of 53 | a project may be further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at mike@mike-engel.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | 78 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "adler32" 5 | version = "1.0.3" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | 8 | [[package]] 9 | name = "aho-corasick" 10 | version = "0.7.3" 11 | source = "registry+https://github.com/rust-lang/crates.io-index" 12 | dependencies = [ 13 | "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 14 | ] 15 | 16 | [[package]] 17 | name = "argon2rs" 18 | version = "0.2.5" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | dependencies = [ 21 | "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 23 | ] 24 | 25 | [[package]] 26 | name = "arrayvec" 27 | version = "0.4.10" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | dependencies = [ 30 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 31 | ] 32 | 33 | [[package]] 34 | name = "autocfg" 35 | version = "0.1.4" 36 | source = "registry+https://github.com/rust-lang/crates.io-index" 37 | 38 | [[package]] 39 | name = "backtrace" 40 | version = "0.3.30" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | dependencies = [ 43 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 44 | "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 45 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 48 | ] 49 | 50 | [[package]] 51 | name = "backtrace-sys" 52 | version = "0.1.28" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | dependencies = [ 55 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 56 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 57 | ] 58 | 59 | [[package]] 60 | name = "base64" 61 | version = "0.10.1" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | dependencies = [ 64 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 65 | ] 66 | 67 | [[package]] 68 | name = "bitflags" 69 | version = "1.1.0" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | 72 | [[package]] 73 | name = "blake2-rfc" 74 | version = "0.2.18" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | dependencies = [ 77 | "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 78 | "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 79 | ] 80 | 81 | [[package]] 82 | name = "build_const" 83 | version = "0.2.1" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | 86 | [[package]] 87 | name = "byteorder" 88 | version = "1.3.2" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | 91 | [[package]] 92 | name = "bytes" 93 | version = "0.4.12" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | dependencies = [ 96 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 97 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 98 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 99 | ] 100 | 101 | [[package]] 102 | name = "cc" 103 | version = "1.0.37" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | 106 | [[package]] 107 | name = "cfg-if" 108 | version = "0.1.9" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | 111 | [[package]] 112 | name = "chrono" 113 | version = "0.4.6" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | dependencies = [ 116 | "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 117 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 118 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 119 | ] 120 | 121 | [[package]] 122 | name = "cloudabi" 123 | version = "0.0.3" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | dependencies = [ 126 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 127 | ] 128 | 129 | [[package]] 130 | name = "constant_time_eq" 131 | version = "0.1.3" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | 134 | [[package]] 135 | name = "cookie" 136 | version = "0.12.0" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | dependencies = [ 139 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 140 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 141 | ] 142 | 143 | [[package]] 144 | name = "cookie_store" 145 | version = "0.7.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | dependencies = [ 148 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 149 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 151 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 152 | "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 153 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 154 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 155 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 156 | "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 157 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 158 | ] 159 | 160 | [[package]] 161 | name = "core-foundation" 162 | version = "0.6.4" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | dependencies = [ 165 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 166 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 167 | ] 168 | 169 | [[package]] 170 | name = "core-foundation-sys" 171 | version = "0.6.2" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | 174 | [[package]] 175 | name = "crc" 176 | version = "1.8.1" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | dependencies = [ 179 | "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 180 | ] 181 | 182 | [[package]] 183 | name = "crc32fast" 184 | version = "1.2.0" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | dependencies = [ 187 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 188 | ] 189 | 190 | [[package]] 191 | name = "crossbeam-deque" 192 | version = "0.7.1" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | dependencies = [ 195 | "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 196 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 197 | ] 198 | 199 | [[package]] 200 | name = "crossbeam-epoch" 201 | version = "0.7.1" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | dependencies = [ 204 | "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 207 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 208 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 209 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 210 | ] 211 | 212 | [[package]] 213 | name = "crossbeam-queue" 214 | version = "0.1.2" 215 | source = "registry+https://github.com/rust-lang/crates.io-index" 216 | dependencies = [ 217 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 218 | ] 219 | 220 | [[package]] 221 | name = "crossbeam-utils" 222 | version = "0.6.5" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | dependencies = [ 225 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 226 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 227 | ] 228 | 229 | [[package]] 230 | name = "dirs" 231 | version = "1.0.5" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | dependencies = [ 234 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 235 | "redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 236 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 237 | ] 238 | 239 | [[package]] 240 | name = "dtoa" 241 | version = "0.4.4" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | 244 | [[package]] 245 | name = "either" 246 | version = "1.5.2" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | 249 | [[package]] 250 | name = "encoding_rs" 251 | version = "0.8.17" 252 | source = "registry+https://github.com/rust-lang/crates.io-index" 253 | dependencies = [ 254 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 255 | ] 256 | 257 | [[package]] 258 | name = "error-chain" 259 | version = "0.12.1" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | dependencies = [ 262 | "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", 263 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 264 | ] 265 | 266 | [[package]] 267 | name = "failure" 268 | version = "0.1.5" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | dependencies = [ 271 | "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", 272 | "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 273 | ] 274 | 275 | [[package]] 276 | name = "failure_derive" 277 | version = "0.1.5" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | dependencies = [ 280 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 281 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 282 | "syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)", 283 | "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 284 | ] 285 | 286 | [[package]] 287 | name = "flate2" 288 | version = "1.0.7" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | dependencies = [ 291 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 292 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 293 | "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 294 | ] 295 | 296 | [[package]] 297 | name = "fnv" 298 | version = "1.0.6" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | 301 | [[package]] 302 | name = "foreign-types" 303 | version = "0.3.2" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | dependencies = [ 306 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 307 | ] 308 | 309 | [[package]] 310 | name = "foreign-types-shared" 311 | version = "0.1.1" 312 | source = "registry+https://github.com/rust-lang/crates.io-index" 313 | 314 | [[package]] 315 | name = "fuchsia-cprng" 316 | version = "0.1.1" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | 319 | [[package]] 320 | name = "fuchsia-zircon" 321 | version = "0.3.3" 322 | source = "registry+https://github.com/rust-lang/crates.io-index" 323 | dependencies = [ 324 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 325 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 326 | ] 327 | 328 | [[package]] 329 | name = "fuchsia-zircon-sys" 330 | version = "0.3.3" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | 333 | [[package]] 334 | name = "futf" 335 | version = "0.1.4" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | dependencies = [ 338 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 339 | "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 340 | ] 341 | 342 | [[package]] 343 | name = "futures" 344 | version = "0.1.27" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | 347 | [[package]] 348 | name = "futures-cpupool" 349 | version = "0.1.8" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | dependencies = [ 352 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 353 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 354 | ] 355 | 356 | [[package]] 357 | name = "gistcard" 358 | version = "0.1.0" 359 | dependencies = [ 360 | "html5ever 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 362 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 364 | "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", 365 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 366 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 367 | ] 368 | 369 | [[package]] 370 | name = "gistcard_html" 371 | version = "0.1.0" 372 | dependencies = [ 373 | "gistcard 0.1.0", 374 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 375 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 376 | "now_lambda 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 377 | "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", 378 | "simplelog 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 379 | "urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 380 | ] 381 | 382 | [[package]] 383 | name = "gistcard_img" 384 | version = "0.1.0" 385 | dependencies = [ 386 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 387 | "gistcard 0.1.0", 388 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 389 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 390 | "now_lambda 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 391 | "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", 392 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 393 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 394 | "simplelog 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 395 | "urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 396 | ] 397 | 398 | [[package]] 399 | name = "h2" 400 | version = "0.1.23" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | dependencies = [ 403 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 404 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 405 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 406 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 410 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 411 | "string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 412 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 413 | ] 414 | 415 | [[package]] 416 | name = "html5ever" 417 | version = "0.23.0" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | dependencies = [ 420 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 421 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 422 | "markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 423 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 425 | "syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)", 426 | ] 427 | 428 | [[package]] 429 | name = "http" 430 | version = "0.1.17" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | dependencies = [ 433 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 434 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 435 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 436 | ] 437 | 438 | [[package]] 439 | name = "http-body" 440 | version = "0.1.0" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | dependencies = [ 443 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 444 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 445 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 446 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 447 | ] 448 | 449 | [[package]] 450 | name = "httparse" 451 | version = "1.3.3" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | 454 | [[package]] 455 | name = "hyper" 456 | version = "0.12.30" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | dependencies = [ 459 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 460 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 461 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 462 | "h2 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", 463 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 464 | "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 465 | "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 466 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 469 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 473 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 474 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 475 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 476 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 477 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 478 | "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 479 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 481 | ] 482 | 483 | [[package]] 484 | name = "hyper-tls" 485 | version = "0.3.2" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | dependencies = [ 488 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 489 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 490 | "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", 491 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 492 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 493 | ] 494 | 495 | [[package]] 496 | name = "idna" 497 | version = "0.1.5" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | dependencies = [ 500 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 501 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 502 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 503 | ] 504 | 505 | [[package]] 506 | name = "indexmap" 507 | version = "1.0.2" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | 510 | [[package]] 511 | name = "iovec" 512 | version = "0.1.2" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | dependencies = [ 515 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 516 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 517 | ] 518 | 519 | [[package]] 520 | name = "itoa" 521 | version = "0.4.4" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | 524 | [[package]] 525 | name = "kernel32-sys" 526 | version = "0.2.2" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | dependencies = [ 529 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 530 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 531 | ] 532 | 533 | [[package]] 534 | name = "lambda_runtime" 535 | version = "0.2.1" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | dependencies = [ 538 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 539 | "lambda_runtime_core 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 541 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 542 | "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 543 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 545 | ] 546 | 547 | [[package]] 548 | name = "lambda_runtime_client" 549 | version = "0.2.2" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | dependencies = [ 552 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 553 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 554 | "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", 555 | "lambda_runtime_errors 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 556 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 557 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 558 | "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 559 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 560 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 561 | ] 562 | 563 | [[package]] 564 | name = "lambda_runtime_core" 565 | version = "0.1.2" 566 | source = "registry+https://github.com/rust-lang/crates.io-index" 567 | dependencies = [ 568 | "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", 569 | "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 570 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 571 | "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", 572 | "lambda_runtime_client 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 573 | "lambda_runtime_errors 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 574 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 575 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 576 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 577 | ] 578 | 579 | [[package]] 580 | name = "lambda_runtime_errors" 581 | version = "0.1.1" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | dependencies = [ 584 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 585 | "lambda_runtime_errors_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 586 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 587 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 588 | ] 589 | 590 | [[package]] 591 | name = "lambda_runtime_errors_derive" 592 | version = "0.1.1" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | dependencies = [ 595 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 596 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 597 | "syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)", 598 | "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 599 | ] 600 | 601 | [[package]] 602 | name = "lazy_static" 603 | version = "1.3.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | 606 | [[package]] 607 | name = "libc" 608 | version = "0.2.58" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | 611 | [[package]] 612 | name = "lock_api" 613 | version = "0.1.5" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | dependencies = [ 616 | "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 617 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 618 | ] 619 | 620 | [[package]] 621 | name = "log" 622 | version = "0.4.6" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | dependencies = [ 625 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 626 | ] 627 | 628 | [[package]] 629 | name = "mac" 630 | version = "0.1.1" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | 633 | [[package]] 634 | name = "markup5ever" 635 | version = "0.8.1" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | dependencies = [ 638 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 639 | "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 640 | "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 642 | "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 643 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 644 | "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 645 | "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 646 | "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 647 | ] 648 | 649 | [[package]] 650 | name = "matches" 651 | version = "0.1.8" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | 654 | [[package]] 655 | name = "memchr" 656 | version = "2.2.0" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | 659 | [[package]] 660 | name = "memoffset" 661 | version = "0.2.1" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | 664 | [[package]] 665 | name = "mime" 666 | version = "0.3.13" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | dependencies = [ 669 | "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 670 | ] 671 | 672 | [[package]] 673 | name = "mime_guess" 674 | version = "2.0.0-alpha.6" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | dependencies = [ 677 | "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 678 | "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 679 | "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 680 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 681 | ] 682 | 683 | [[package]] 684 | name = "miniz_oxide" 685 | version = "0.2.1" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | dependencies = [ 688 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 689 | ] 690 | 691 | [[package]] 692 | name = "miniz_oxide_c_api" 693 | version = "0.2.1" 694 | source = "registry+https://github.com/rust-lang/crates.io-index" 695 | dependencies = [ 696 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 697 | "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 698 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 699 | "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 700 | ] 701 | 702 | [[package]] 703 | name = "mio" 704 | version = "0.6.19" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | dependencies = [ 707 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 708 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 709 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 710 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 711 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 712 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 713 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 714 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 715 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 716 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 717 | ] 718 | 719 | [[package]] 720 | name = "mio-uds" 721 | version = "0.6.7" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | dependencies = [ 724 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 725 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 726 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 727 | ] 728 | 729 | [[package]] 730 | name = "miow" 731 | version = "0.2.1" 732 | source = "registry+https://github.com/rust-lang/crates.io-index" 733 | dependencies = [ 734 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 735 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 736 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 737 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 738 | ] 739 | 740 | [[package]] 741 | name = "native-tls" 742 | version = "0.2.3" 743 | source = "registry+https://github.com/rust-lang/crates.io-index" 744 | dependencies = [ 745 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 746 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 747 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 748 | "openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)", 749 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 750 | "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", 751 | "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 752 | "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 753 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 754 | "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 755 | ] 756 | 757 | [[package]] 758 | name = "net2" 759 | version = "0.2.33" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | dependencies = [ 762 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 763 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 764 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 765 | ] 766 | 767 | [[package]] 768 | name = "new_debug_unreachable" 769 | version = "1.0.3" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | 772 | [[package]] 773 | name = "nodrop" 774 | version = "0.1.13" 775 | source = "registry+https://github.com/rust-lang/crates.io-index" 776 | 777 | [[package]] 778 | name = "now_lambda" 779 | version = "0.1.3" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | dependencies = [ 782 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 784 | "lambda_runtime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 785 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 786 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 787 | "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 788 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 789 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 790 | ] 791 | 792 | [[package]] 793 | name = "num-integer" 794 | version = "0.1.41" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | dependencies = [ 797 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 798 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 799 | ] 800 | 801 | [[package]] 802 | name = "num-traits" 803 | version = "0.2.8" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | dependencies = [ 806 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 807 | ] 808 | 809 | [[package]] 810 | name = "num_cpus" 811 | version = "1.10.1" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | dependencies = [ 814 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 815 | ] 816 | 817 | [[package]] 818 | name = "openssl" 819 | version = "0.10.23" 820 | source = "registry+https://github.com/rust-lang/crates.io-index" 821 | dependencies = [ 822 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 823 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 824 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 825 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 826 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 827 | "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", 828 | ] 829 | 830 | [[package]] 831 | name = "openssl-probe" 832 | version = "0.1.2" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | 835 | [[package]] 836 | name = "openssl-sys" 837 | version = "0.9.47" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | dependencies = [ 840 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 841 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 842 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 843 | "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 844 | "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 845 | ] 846 | 847 | [[package]] 848 | name = "owning_ref" 849 | version = "0.4.0" 850 | source = "registry+https://github.com/rust-lang/crates.io-index" 851 | dependencies = [ 852 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 853 | ] 854 | 855 | [[package]] 856 | name = "parking_lot" 857 | version = "0.7.1" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | dependencies = [ 860 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 861 | "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 862 | ] 863 | 864 | [[package]] 865 | name = "parking_lot_core" 866 | version = "0.4.0" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | dependencies = [ 869 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 870 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 872 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 873 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 874 | ] 875 | 876 | [[package]] 877 | name = "percent-encoding" 878 | version = "1.0.1" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | 881 | [[package]] 882 | name = "phf" 883 | version = "0.7.24" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | dependencies = [ 886 | "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 887 | ] 888 | 889 | [[package]] 890 | name = "phf_codegen" 891 | version = "0.7.24" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | dependencies = [ 894 | "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 895 | "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 896 | ] 897 | 898 | [[package]] 899 | name = "phf_generator" 900 | version = "0.7.24" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | dependencies = [ 903 | "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 904 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 905 | ] 906 | 907 | [[package]] 908 | name = "phf_shared" 909 | version = "0.7.24" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | dependencies = [ 912 | "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 913 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 914 | ] 915 | 916 | [[package]] 917 | name = "pkg-config" 918 | version = "0.3.14" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | 921 | [[package]] 922 | name = "precomputed-hash" 923 | version = "0.1.1" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | 926 | [[package]] 927 | name = "proc-macro2" 928 | version = "0.4.30" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | dependencies = [ 931 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 932 | ] 933 | 934 | [[package]] 935 | name = "publicsuffix" 936 | version = "1.5.2" 937 | source = "registry+https://github.com/rust-lang/crates.io-index" 938 | dependencies = [ 939 | "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 940 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 941 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 942 | "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 943 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 944 | ] 945 | 946 | [[package]] 947 | name = "quote" 948 | version = "0.6.12" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | dependencies = [ 951 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 952 | ] 953 | 954 | [[package]] 955 | name = "rand" 956 | version = "0.6.5" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | dependencies = [ 959 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 960 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 961 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 962 | "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 963 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 964 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 965 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 966 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 967 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 968 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 969 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 970 | ] 971 | 972 | [[package]] 973 | name = "rand_chacha" 974 | version = "0.1.1" 975 | source = "registry+https://github.com/rust-lang/crates.io-index" 976 | dependencies = [ 977 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 978 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 979 | ] 980 | 981 | [[package]] 982 | name = "rand_core" 983 | version = "0.3.1" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | dependencies = [ 986 | "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 987 | ] 988 | 989 | [[package]] 990 | name = "rand_core" 991 | version = "0.4.0" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | 994 | [[package]] 995 | name = "rand_hc" 996 | version = "0.1.0" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | dependencies = [ 999 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1000 | ] 1001 | 1002 | [[package]] 1003 | name = "rand_isaac" 1004 | version = "0.1.1" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | dependencies = [ 1007 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1008 | ] 1009 | 1010 | [[package]] 1011 | name = "rand_jitter" 1012 | version = "0.1.4" 1013 | source = "registry+https://github.com/rust-lang/crates.io-index" 1014 | dependencies = [ 1015 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1016 | "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1017 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1018 | ] 1019 | 1020 | [[package]] 1021 | name = "rand_os" 1022 | version = "0.1.3" 1023 | source = "registry+https://github.com/rust-lang/crates.io-index" 1024 | dependencies = [ 1025 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1029 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1030 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "rand_pcg" 1035 | version = "0.1.2" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | dependencies = [ 1038 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1039 | "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "rand_xorshift" 1044 | version = "0.1.1" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | dependencies = [ 1047 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1048 | ] 1049 | 1050 | [[package]] 1051 | name = "rdrand" 1052 | version = "0.4.0" 1053 | source = "registry+https://github.com/rust-lang/crates.io-index" 1054 | dependencies = [ 1055 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1056 | ] 1057 | 1058 | [[package]] 1059 | name = "redox_syscall" 1060 | version = "0.1.54" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | 1063 | [[package]] 1064 | name = "redox_users" 1065 | version = "0.3.0" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | dependencies = [ 1068 | "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 1069 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1070 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1071 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 1072 | ] 1073 | 1074 | [[package]] 1075 | name = "regex" 1076 | version = "1.1.7" 1077 | source = "registry+https://github.com/rust-lang/crates.io-index" 1078 | dependencies = [ 1079 | "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 1080 | "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1081 | "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1082 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1083 | "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "regex-syntax" 1088 | version = "0.6.7" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | dependencies = [ 1091 | "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1092 | ] 1093 | 1094 | [[package]] 1095 | name = "remove_dir_all" 1096 | version = "0.5.2" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | dependencies = [ 1099 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "reqwest" 1104 | version = "0.9.18" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | dependencies = [ 1107 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1108 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1109 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 1110 | "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1111 | "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", 1112 | "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1113 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1114 | "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 1115 | "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", 1116 | "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1117 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1118 | "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 1119 | "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", 1120 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1121 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 1122 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", 1123 | "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1124 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 1125 | "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1126 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1127 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1128 | "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 1129 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1130 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1131 | "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "rustc-demangle" 1136 | version = "0.1.15" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | 1139 | [[package]] 1140 | name = "rustc_version" 1141 | version = "0.2.3" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | dependencies = [ 1144 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1145 | ] 1146 | 1147 | [[package]] 1148 | name = "ryu" 1149 | version = "0.2.8" 1150 | source = "registry+https://github.com/rust-lang/crates.io-index" 1151 | 1152 | [[package]] 1153 | name = "schannel" 1154 | version = "0.1.15" 1155 | source = "registry+https://github.com/rust-lang/crates.io-index" 1156 | dependencies = [ 1157 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1158 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1159 | ] 1160 | 1161 | [[package]] 1162 | name = "scoped_threadpool" 1163 | version = "0.1.9" 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" 1165 | 1166 | [[package]] 1167 | name = "scopeguard" 1168 | version = "0.3.3" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | 1171 | [[package]] 1172 | name = "security-framework" 1173 | version = "0.3.1" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | dependencies = [ 1176 | "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1177 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1179 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "security-framework-sys" 1184 | version = "0.3.1" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | dependencies = [ 1187 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1188 | ] 1189 | 1190 | [[package]] 1191 | name = "semver" 1192 | version = "0.9.0" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | dependencies = [ 1195 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "semver-parser" 1200 | version = "0.7.0" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | 1203 | [[package]] 1204 | name = "serde" 1205 | version = "1.0.92" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | dependencies = [ 1208 | "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "serde_derive" 1213 | version = "1.0.92" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | dependencies = [ 1216 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1217 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1218 | "syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | ] 1220 | 1221 | [[package]] 1222 | name = "serde_json" 1223 | version = "1.0.39" 1224 | source = "registry+https://github.com/rust-lang/crates.io-index" 1225 | dependencies = [ 1226 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1227 | "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1228 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 1229 | ] 1230 | 1231 | [[package]] 1232 | name = "serde_urlencoded" 1233 | version = "0.5.5" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | dependencies = [ 1236 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1237 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1238 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 1239 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1240 | ] 1241 | 1242 | [[package]] 1243 | name = "simplelog" 1244 | version = "0.5.3" 1245 | source = "registry+https://github.com/rust-lang/crates.io-index" 1246 | dependencies = [ 1247 | "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1248 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1249 | "term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1250 | ] 1251 | 1252 | [[package]] 1253 | name = "siphasher" 1254 | version = "0.2.3" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | 1257 | [[package]] 1258 | name = "slab" 1259 | version = "0.4.2" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | 1262 | [[package]] 1263 | name = "smallvec" 1264 | version = "0.6.10" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | 1267 | [[package]] 1268 | name = "stable_deref_trait" 1269 | version = "1.1.1" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | 1272 | [[package]] 1273 | name = "string" 1274 | version = "0.2.0" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | dependencies = [ 1277 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "string_cache" 1282 | version = "0.7.3" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | dependencies = [ 1285 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1286 | "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1287 | "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 1288 | "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1289 | "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", 1290 | "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1291 | "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1292 | ] 1293 | 1294 | [[package]] 1295 | name = "string_cache_codegen" 1296 | version = "0.4.2" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | dependencies = [ 1299 | "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 1300 | "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", 1301 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1302 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1303 | "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1304 | ] 1305 | 1306 | [[package]] 1307 | name = "string_cache_shared" 1308 | version = "0.3.0" 1309 | source = "registry+https://github.com/rust-lang/crates.io-index" 1310 | 1311 | [[package]] 1312 | name = "syn" 1313 | version = "0.15.36" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | dependencies = [ 1316 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1317 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1318 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "synstructure" 1323 | version = "0.10.2" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | dependencies = [ 1326 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1327 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1328 | "syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)", 1329 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1330 | ] 1331 | 1332 | [[package]] 1333 | name = "tempfile" 1334 | version = "3.0.8" 1335 | source = "registry+https://github.com/rust-lang/crates.io-index" 1336 | dependencies = [ 1337 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1338 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1339 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1340 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 1341 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1342 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1343 | ] 1344 | 1345 | [[package]] 1346 | name = "tendril" 1347 | version = "0.4.1" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | dependencies = [ 1350 | "futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1351 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1352 | "utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", 1353 | ] 1354 | 1355 | [[package]] 1356 | name = "term" 1357 | version = "0.5.2" 1358 | source = "registry+https://github.com/rust-lang/crates.io-index" 1359 | dependencies = [ 1360 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1361 | "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1363 | ] 1364 | 1365 | [[package]] 1366 | name = "thread_local" 1367 | version = "0.3.6" 1368 | source = "registry+https://github.com/rust-lang/crates.io-index" 1369 | dependencies = [ 1370 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "time" 1375 | version = "0.1.42" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | dependencies = [ 1378 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1379 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 1380 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1381 | ] 1382 | 1383 | [[package]] 1384 | name = "tokio" 1385 | version = "0.1.21" 1386 | source = "registry+https://github.com/rust-lang/crates.io-index" 1387 | dependencies = [ 1388 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1389 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1390 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1391 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1392 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1393 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1394 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1395 | "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1396 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1397 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1398 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1399 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1400 | "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 1401 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1402 | "tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1403 | "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1404 | "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 1405 | ] 1406 | 1407 | [[package]] 1408 | name = "tokio-buf" 1409 | version = "0.1.1" 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" 1411 | dependencies = [ 1412 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1413 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1414 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1415 | ] 1416 | 1417 | [[package]] 1418 | name = "tokio-codec" 1419 | version = "0.1.1" 1420 | source = "registry+https://github.com/rust-lang/crates.io-index" 1421 | dependencies = [ 1422 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1423 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1424 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1425 | ] 1426 | 1427 | [[package]] 1428 | name = "tokio-current-thread" 1429 | version = "0.1.6" 1430 | source = "registry+https://github.com/rust-lang/crates.io-index" 1431 | dependencies = [ 1432 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1433 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1434 | ] 1435 | 1436 | [[package]] 1437 | name = "tokio-executor" 1438 | version = "0.1.7" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | dependencies = [ 1441 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1442 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1443 | ] 1444 | 1445 | [[package]] 1446 | name = "tokio-fs" 1447 | version = "0.1.6" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | dependencies = [ 1450 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1451 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1452 | "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 1453 | ] 1454 | 1455 | [[package]] 1456 | name = "tokio-io" 1457 | version = "0.1.12" 1458 | source = "registry+https://github.com/rust-lang/crates.io-index" 1459 | dependencies = [ 1460 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1461 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1462 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1463 | ] 1464 | 1465 | [[package]] 1466 | name = "tokio-reactor" 1467 | version = "0.1.9" 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" 1469 | dependencies = [ 1470 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1471 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1472 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1473 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1474 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1475 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1476 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1477 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1478 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1479 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1480 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "tokio-sync" 1485 | version = "0.1.6" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | dependencies = [ 1488 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1489 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "tokio-tcp" 1494 | version = "0.1.3" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | dependencies = [ 1497 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1498 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1499 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1500 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1501 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1502 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "tokio-threadpool" 1507 | version = "0.1.14" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | dependencies = [ 1510 | "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1511 | "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1512 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1513 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1514 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1515 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1516 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1517 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1518 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "tokio-timer" 1523 | version = "0.2.11" 1524 | source = "registry+https://github.com/rust-lang/crates.io-index" 1525 | dependencies = [ 1526 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1527 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1528 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1529 | "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1530 | ] 1531 | 1532 | [[package]] 1533 | name = "tokio-trace-core" 1534 | version = "0.2.0" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | dependencies = [ 1537 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1538 | ] 1539 | 1540 | [[package]] 1541 | name = "tokio-udp" 1542 | version = "0.1.3" 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" 1544 | dependencies = [ 1545 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1546 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1547 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1548 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1549 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1550 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1551 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "tokio-uds" 1556 | version = "0.2.5" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | dependencies = [ 1559 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1560 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1561 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1562 | "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1563 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1564 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1565 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1566 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1567 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1568 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1569 | ] 1570 | 1571 | [[package]] 1572 | name = "try-lock" 1573 | version = "0.2.2" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | 1576 | [[package]] 1577 | name = "try_from" 1578 | version = "0.3.2" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | dependencies = [ 1581 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1582 | ] 1583 | 1584 | [[package]] 1585 | name = "ucd-util" 1586 | version = "0.1.3" 1587 | source = "registry+https://github.com/rust-lang/crates.io-index" 1588 | 1589 | [[package]] 1590 | name = "unicase" 1591 | version = "1.4.2" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | dependencies = [ 1594 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1595 | ] 1596 | 1597 | [[package]] 1598 | name = "unicase" 1599 | version = "2.4.0" 1600 | source = "registry+https://github.com/rust-lang/crates.io-index" 1601 | dependencies = [ 1602 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1603 | ] 1604 | 1605 | [[package]] 1606 | name = "unicode-bidi" 1607 | version = "0.3.4" 1608 | source = "registry+https://github.com/rust-lang/crates.io-index" 1609 | dependencies = [ 1610 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1611 | ] 1612 | 1613 | [[package]] 1614 | name = "unicode-normalization" 1615 | version = "0.1.8" 1616 | source = "registry+https://github.com/rust-lang/crates.io-index" 1617 | dependencies = [ 1618 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1619 | ] 1620 | 1621 | [[package]] 1622 | name = "unicode-xid" 1623 | version = "0.1.0" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | 1626 | [[package]] 1627 | name = "url" 1628 | version = "1.7.2" 1629 | source = "registry+https://github.com/rust-lang/crates.io-index" 1630 | dependencies = [ 1631 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1632 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1633 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1634 | ] 1635 | 1636 | [[package]] 1637 | name = "urlencoding" 1638 | version = "1.0.0" 1639 | source = "registry+https://github.com/rust-lang/crates.io-index" 1640 | 1641 | [[package]] 1642 | name = "utf-8" 1643 | version = "0.7.5" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | 1646 | [[package]] 1647 | name = "utf8-ranges" 1648 | version = "1.0.3" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | 1651 | [[package]] 1652 | name = "uuid" 1653 | version = "0.7.4" 1654 | source = "registry+https://github.com/rust-lang/crates.io-index" 1655 | dependencies = [ 1656 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1657 | ] 1658 | 1659 | [[package]] 1660 | name = "vcpkg" 1661 | version = "0.2.6" 1662 | source = "registry+https://github.com/rust-lang/crates.io-index" 1663 | 1664 | [[package]] 1665 | name = "version_check" 1666 | version = "0.1.5" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | 1669 | [[package]] 1670 | name = "want" 1671 | version = "0.0.6" 1672 | source = "registry+https://github.com/rust-lang/crates.io-index" 1673 | dependencies = [ 1674 | "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", 1675 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 1676 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1677 | ] 1678 | 1679 | [[package]] 1680 | name = "winapi" 1681 | version = "0.2.8" 1682 | source = "registry+https://github.com/rust-lang/crates.io-index" 1683 | 1684 | [[package]] 1685 | name = "winapi" 1686 | version = "0.3.7" 1687 | source = "registry+https://github.com/rust-lang/crates.io-index" 1688 | dependencies = [ 1689 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1690 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "winapi-build" 1695 | version = "0.1.1" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | 1698 | [[package]] 1699 | name = "winapi-i686-pc-windows-gnu" 1700 | version = "0.4.0" 1701 | source = "registry+https://github.com/rust-lang/crates.io-index" 1702 | 1703 | [[package]] 1704 | name = "winapi-x86_64-pc-windows-gnu" 1705 | version = "0.4.0" 1706 | source = "registry+https://github.com/rust-lang/crates.io-index" 1707 | 1708 | [[package]] 1709 | name = "ws2_32-sys" 1710 | version = "0.2.1" 1711 | source = "registry+https://github.com/rust-lang/crates.io-index" 1712 | dependencies = [ 1713 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1714 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1715 | ] 1716 | 1717 | [metadata] 1718 | "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" 1719 | "checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" 1720 | "checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" 1721 | "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" 1722 | "checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" 1723 | "checksum backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)" = "ada4c783bb7e7443c14e0480f429ae2cc99da95065aeab7ee1b81ada0419404f" 1724 | "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" 1725 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 1726 | "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" 1727 | "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" 1728 | "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" 1729 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1730 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 1731 | "checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" 1732 | "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" 1733 | "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" 1734 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1735 | "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" 1736 | "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" 1737 | "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" 1738 | "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 1739 | "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 1740 | "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" 1741 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 1742 | "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 1743 | "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" 1744 | "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" 1745 | "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" 1746 | "checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" 1747 | "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 1748 | "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" 1749 | "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" 1750 | "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" 1751 | "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" 1752 | "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" 1753 | "checksum flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f87e68aa82b2de08a6e037f1385455759df6e445a8df5e005b4297191dbf18aa" 1754 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1755 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1756 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1757 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1758 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1759 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1760 | "checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" 1761 | "checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" 1762 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1763 | "checksum h2 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)" = "1e42e3daed5a7e17b12a0c23b5b2fbff23a925a570938ebee4baca1a9a1a2240" 1764 | "checksum html5ever 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce65ac8028cf5a287a7dbf6c4e0a6cf2dcf022ed5b167a81bae66ebf599a8b7" 1765 | "checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" 1766 | "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" 1767 | "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" 1768 | "checksum hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)" = "40e7692b2009a70b1e9b362284add4d8b75880fefddb4acaa5e67194e843f219" 1769 | "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" 1770 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1771 | "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" 1772 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1773 | "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 1774 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1775 | "checksum lambda_runtime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "077b8819fe6998266342efdc5154192551143f390ab758007cc7421992e61b07" 1776 | "checksum lambda_runtime_client 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e64758b587f1d07b6ca4814a3bc0f3db48c89cc3c895db43a23c690855b370" 1777 | "checksum lambda_runtime_core 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da1cb59e060c1068cfa386b58c202a4381c509ace85a1eadab505164f0563ca5" 1778 | "checksum lambda_runtime_errors 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "93b63ea3688df164aaa5643c5f3291cc481366d624729deb3c4dc85ee65ac20a" 1779 | "checksum lambda_runtime_errors_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "38fa619ec6f1ee2371a109683d251035c83f01b8ffc10f4aa46de821836a7baf" 1780 | "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" 1781 | "checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" 1782 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 1783 | "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" 1784 | "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1785 | "checksum markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f1af46a727284117e09780d05038b1ce6fc9c76cc6df183c3dae5a8955a25e21" 1786 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1787 | "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" 1788 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1789 | "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" 1790 | "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" 1791 | "checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" 1792 | "checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" 1793 | "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" 1794 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1795 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1796 | "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" 1797 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1798 | "checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30" 1799 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 1800 | "checksum now_lambda 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f8eb2b51ee8c79860d73e275350782d52e4d9d76547e078821e70ab0cf9b30c7" 1801 | "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" 1802 | "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 1803 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1804 | "checksum openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)" = "97c140cbb82f3b3468193dd14c1b88def39f341f68257f8a7fe8ed9ed3f628a5" 1805 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1806 | "checksum openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)" = "75bdd6dbbb4958d38e47a1d2348847ad1eb4dc205dc5d37473ae504391865acc" 1807 | "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 1808 | "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 1809 | "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 1810 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1811 | "checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" 1812 | "checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" 1813 | "checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" 1814 | "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" 1815 | "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" 1816 | "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 1817 | "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 1818 | "checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d" 1819 | "checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" 1820 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1821 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1822 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1823 | "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" 1824 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 1825 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 1826 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 1827 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1828 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 1829 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 1830 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1831 | "checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" 1832 | "checksum redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe5204c3a17e97dde73f285d49be585df59ed84b50a872baf416e73b62c3828" 1833 | "checksum regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2f0808e7d7e4fb1cb07feb6ff2f4bc827938f24f8c2e6a3beb7370af544bdd" 1834 | "checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" 1835 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1836 | "checksum reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)" = "00eb63f212df0e358b427f0f40aa13aaea010b470be642ad422bcbca2feff2e4" 1837 | "checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" 1838 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1839 | "checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" 1840 | "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" 1841 | "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" 1842 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1843 | "checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2" 1844 | "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" 1845 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1846 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1847 | "checksum serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)" = "32746bf0f26eab52f06af0d0aa1984f641341d06d8d673c693871da2d188c9be" 1848 | "checksum serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)" = "46a3223d0c9ba936b61c0d2e3e559e3217dbfb8d65d06d26e8b3c25de38bae3e" 1849 | "checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" 1850 | "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" 1851 | "checksum simplelog 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e95345f185d5adeb8ec93459d2dc99654e294cc6ccf5b75414d8ea262de9a13" 1852 | "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" 1853 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1854 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1855 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1856 | "checksum string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0bbfb8937e38e34c3444ff00afb28b0811d9554f15c5ad64d12b0308d1d1995" 1857 | "checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423" 1858 | "checksum string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eea1eee654ef80933142157fdad9dd8bc43cf7c74e999e369263496f04ff4da" 1859 | "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" 1860 | "checksum syn 0.15.36 (registry+https://github.com/rust-lang/crates.io-index)" = "8b4f551a91e2e3848aeef8751d0d4eec9489b6474c720fd4c55958d8d31a430c" 1861 | "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" 1862 | "checksum tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7dc4738f2e68ed2855de5ac9cdbe05c9216773ecde4739b2f095002ab03a13ef" 1863 | "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" 1864 | "checksum term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" 1865 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1866 | "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" 1867 | "checksum tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "ec2ffcf4bcfc641413fa0f1427bf8f91dfc78f56a6559cbf50e04837ae442a87" 1868 | "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" 1869 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 1870 | "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" 1871 | "checksum tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "83ea44c6c0773cc034771693711c35c677b4b5a4b21b9e7071704c54de7d555e" 1872 | "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" 1873 | "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 1874 | "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" 1875 | "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" 1876 | "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 1877 | "checksum tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72558af20be886ea124595ea0f806dd5703b8958e4705429dd58b3d8231f72f2" 1878 | "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" 1879 | "checksum tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9c8a256d6956f7cb5e2bdfe8b1e8022f1a09206c6c2b1ba00f3b746b260c613" 1880 | "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" 1881 | "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" 1882 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1883 | "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" 1884 | "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" 1885 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1886 | "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" 1887 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1888 | "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 1889 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 1890 | "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 1891 | "checksum urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3df3561629a8bb4c57e5a2e4c43348d9e29c7c29d9b1c4c1f47166deca8f37ed" 1892 | "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" 1893 | "checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" 1894 | "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 1895 | "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" 1896 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1897 | "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" 1898 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1899 | "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" 1900 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1901 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1902 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1903 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1904 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "html", 5 | "img", 6 | "gist" 7 | ] 8 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2019 Mike Engel 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gistcard 2 | 3 | > Show better gist previews in twitter with a code snippet and a link to the gist 4 | 5 | `gistcard` is a better way to share gists (until github does this themselves 😉). It shows a snippet of the gist as a preview using [carbon](https://carbon.now.sh) and includes a link to the gist. 6 | 7 | ## Usage 8 | 9 | The original inspiration for this was from a [tweet](https://twitter.com/noopkat/status/1138552168372289537) from [Suz Hinton](https://twitter.com/noopkat). It's a wonderful idea, and I fully expect this tool to only last for a little while until GitHub does it officially. 10 | 11 | `gistcard` is meant to only be used on the web, so it only provides a web facing API. There are three parts to it: 12 | 13 | 1. **An image creator**: This creates the image and exposes itself under the url `/img/:gistId.png`. This uses the Carbon API to crate and serve the image as a PNG. 14 | 2. **A forwarder**: This provides a barebones HTML page that uses the existing `meta` tags from the official gist page, and adds the proper image source for the code preview. Upon visiting, it immediately redirects to the gist page. 15 | 3. **A UI**: This provides a simple landing page to demonstrate how to use it and to generate a URL to paste, if needed. 16 | 17 | For ease of use, the gist for the page can be the full url of the gist (with or without the username), or just the ID. All three of the following are valid URLs! 18 | 19 | - [https://gistcard.now.sh/https://gist.github.com/mike-engel/a1c11cd6d0edcdab6fd912619b33d972](https://gistcard.now.sh/https://gist.github.com/mike-engel/a1c11cd6d0edcdab6fd912619b33d972) 20 | - [https://gistcard.now.sh/https://gist.github.com/a1c11cd6d0edcdab6fd912619b33d972](https://gistcard.now.sh/https://gist.github.com/a1c11cd6d0edcdab6fd912619b33d972) 21 | - [https://gistcard.now.sh/a1c11cd6d0edcdab6fd912619b33d972](https://gistcard.now.sh/a1c11cd6d0edcdab6fd912619b33d972) 22 | 23 | The image URL will always use the gist's ID, like so: [https://gistcard.now.sh/img/a1c11cd6d0edcdab6fd912619b33d972.png](https://gistcard.now.sh/img/a1c11cd6d0edcdab6fd912619b33d972.png). 24 | 25 | ## Contributing 26 | 27 | Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. 28 | 29 | I would love to see issues and pull requests to make this a better tool that works for people other than myself! 30 | 31 | ### Rust bits 32 | 33 | This project only works with rust's 2018 edition. Thus, you must have version 1.31 or later. Once you have rust installed (I recommend [rustup](https://rustup.sh)), you can then run `cargo build` to see it in action. This will download and compile all the dependencies in development mode. 34 | 35 | In theory, you can use now's [`now dev`](https://zeit.co/blog/now-dev), but as of this writing, the rust support still needs some work. In the meantime, you could build a simple binary that uses the library, or you can deploy it to your own [`zeit`](https://zeit.co) account. If you need help, please submit an issue and I'll be happy to try and help you out. 36 | 37 | ### UI bits 38 | 39 | The UI is built with [Gatsby](https://gatsby.org), [Styled Components](https://styled-components.com), and [typescript](https://typescriptlang.org). To start, run `npm install` from within the site folder to download all of the dependencies. 40 | 41 | If you wish to use `now dev`, run that from the root directory. This should then be available at [http://localhost:3000](http://localhost:3000). 42 | 43 | To use Gatsby's develop mode, run `npm run dev` from wihin the `site` directory. The URL will be printed to the console, but it is usually [http://localhost:8000](http://localhost:8000). 44 | 45 | ## [License](LICENSE.md) 46 | -------------------------------------------------------------------------------- /gist/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gistcard" 3 | version = "0.1.0" 4 | authors = ["Mike Engel "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | regex = "1" 9 | log = "0.4" 10 | reqwest = "0.9" 11 | serde_json = "1" 12 | serde = { version = "1", features = ["derive"] } 13 | http = "0.1" 14 | html5ever = "0.23" 15 | -------------------------------------------------------------------------------- /gist/src/lib.rs: -------------------------------------------------------------------------------- 1 | use html5ever::rcdom::{NodeData, RcDom}; 2 | use html5ever::tendril::TendrilSink; 3 | use html5ever::tree_builder::TreeBuilderOpts; 4 | use html5ever::{parse_document, Attribute, ParseOpts}; 5 | use http::header; 6 | use log::debug; 7 | use regex::Regex; 8 | use reqwest::Client; 9 | use serde::Deserialize; 10 | use std::collections::HashMap; 11 | 12 | pub enum GistError { 13 | BadGateway, 14 | NotFound, 15 | InvalidId, 16 | ImageError, 17 | } 18 | 19 | #[derive(Debug, Deserialize)] 20 | pub struct GistFile { 21 | pub filename: String, 22 | pub content: String, 23 | } 24 | 25 | #[derive(Debug, Deserialize)] 26 | pub struct Gist { 27 | pub url: String, 28 | pub html_url: String, 29 | pub description: Option, 30 | pub user: Option, 31 | pub files: HashMap, 32 | } 33 | 34 | pub fn parse_gist_id(id: &str) -> Result { 35 | debug!("parsing incoming gist id: {}", id); 36 | 37 | let url_regex = 38 | Regex::new("^(?:https?://gist.github.com/(?:[A-z0-9-]*/)?)?(?P[A-z0-9]+)$").unwrap(); 39 | let gist_id = url_regex 40 | .captures(id) 41 | .ok_or_else(|| { 42 | debug!("Regex was unable to match the input id"); 43 | 44 | GistError::InvalidId 45 | })? 46 | .name("id") 47 | .ok_or_else(|| { 48 | debug!("Regex did not return any matches for the capture group"); 49 | 50 | GistError::InvalidId 51 | })? 52 | .as_str(); 53 | 54 | Ok(gist_id.into()) 55 | } 56 | 57 | pub fn get_gist(id: &str) -> Result { 58 | debug!("fetching gist data as JSON"); 59 | 60 | let gist_id = parse_gist_id(id)?; 61 | let client = Client::new(); 62 | let res: Gist = client 63 | .get(format!("https://api.github.com/gists/{}", gist_id).as_str()) 64 | .header(header::ACCEPT, "application/vnd.github.v3+json") 65 | .send() 66 | .and_then(|mut res| res.json()) 67 | .map_err(|err| { 68 | debug!("Error retrieving the gist: {:?}", err); 69 | 70 | GistError::BadGateway 71 | })?; 72 | 73 | Ok(res) 74 | } 75 | 76 | pub fn get_gist_markup(id: &str) -> Result { 77 | debug!("fetching github gist markup"); 78 | 79 | let gist_id = parse_gist_id(id)?; 80 | let client = Client::new(); 81 | 82 | client 83 | .get(format!("https://gist.github.com/{}", gist_id).as_str()) 84 | .send() 85 | .and_then(|mut res| res.text()) 86 | .map_err(|err| { 87 | debug!("Error fetching gist markup: {:?}", err); 88 | 89 | GistError::BadGateway 90 | }) 91 | } 92 | 93 | fn attr(name: &str, attrs: &Vec) -> Option { 94 | for attr in attrs.iter() { 95 | if attr.name.local.as_ref() == name { 96 | return Some(attr.value.to_string()); 97 | } 98 | } 99 | None 100 | } 101 | 102 | fn extract_media_prop(name: &str, attrs: &Vec) -> Option<(String, String)> { 103 | attr(name, attrs).and_then(|property| { 104 | if property.starts_with("og:") 105 | || (property.starts_with("twitter:") && !property.starts_with("twitter:image:src")) 106 | { 107 | attr("content", attrs).map(|content| (property, content)) 108 | } else { 109 | None 110 | } 111 | }) 112 | } 113 | 114 | pub fn get_media_tags(id: &str) -> Result, GistError> { 115 | debug!("collecting meta tags"); 116 | 117 | let markup = get_gist_markup(id)?; 118 | let opts = ParseOpts { 119 | tree_builder: TreeBuilderOpts { 120 | drop_doctype: true, 121 | ..Default::default() 122 | }, 123 | ..Default::default() 124 | }; 125 | let dom = parse_document(RcDom::default(), opts) 126 | .from_utf8() 127 | .read_from(&mut markup.as_bytes()) 128 | .unwrap(); 129 | let document = &dom.document; 130 | let html = &document.children.borrow()[0]; 131 | let head = &html.children.borrow()[0]; 132 | let mut meta = Vec::new(); 133 | 134 | for child in head.children.borrow().iter() { 135 | match &child.data { 136 | NodeData::Element { name, attrs, .. } => match name.local.as_ref() { 137 | "meta" => { 138 | match extract_media_prop("name", &attrs.borrow()) { 139 | Some((key, content)) => meta.push((key, content)), 140 | None => {} 141 | }; 142 | match extract_media_prop("property", &attrs.borrow()) { 143 | Some((key, content)) => meta.push((key, content)), 144 | None => {} 145 | }; 146 | } 147 | _ => {} 148 | }, 149 | _ => {} 150 | } 151 | } 152 | 153 | let meta_tags = meta 154 | .iter() 155 | .map(|(key, content)| match key.starts_with("twitter:") { 156 | true => format!("", key, content), 157 | false => format!("", key, content), 158 | }) 159 | .collect(); 160 | 161 | Ok(meta_tags) 162 | } 163 | -------------------------------------------------------------------------------- /html/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gistcard_html" 3 | version = "0.1.0" 4 | authors = ["Mike Engel "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | reqwest = "0.9" 9 | log = "0.4" 10 | simplelog = "0.5" 11 | now_lambda = "*" 12 | http = "0.1" 13 | gistcard = { path = "../gist" } 14 | urlencoding = "1" 15 | -------------------------------------------------------------------------------- /html/src/main.rs: -------------------------------------------------------------------------------- 1 | use gistcard::{get_media_tags, parse_gist_id}; 2 | use http::{header, StatusCode}; 3 | use log::debug; 4 | use now_lambda::{error::NowError, lambda, IntoResponse, Request, Response}; 5 | use simplelog::{Config, Level, LevelFilter, SimpleLogger}; 6 | use std::error::Error; 7 | use urlencoding::decode; 8 | 9 | const LOG_CONFIG: Config = Config { 10 | time: Some(Level::Debug), 11 | level: Some(Level::Debug), 12 | target: None, 13 | location: None, 14 | time_format: Some("%T"), 15 | }; 16 | 17 | fn handler(req: Request) -> Result { 18 | let id = decode(&req.uri().query().unwrap_or("").replace("id=", "")).map_err(|err| { 19 | debug!("Unable to decode gist id: {:?}", err); 20 | 21 | NowError::new("Unable to decode gist id. Please try again") 22 | })?; 23 | let gist_id = parse_gist_id(&id) 24 | .map_err(|_| NowError::new("Unable to parse that gist url/id. Please try again"))?; 25 | let meta_tags = get_media_tags(&gist_id).map_err(|_| { 26 | NowError::new("Unable to scrape the meta tags from the gist. Please try again") 27 | })?; 28 | let html = format!("{}", meta_tags.join(""), gist_id, gist_id); 29 | 30 | Ok(Response::builder() 31 | .status(StatusCode::OK) 32 | .header(header::CONTENT_TYPE, "text/html") 33 | .body(html) 34 | .expect("Internal Server Error")) 35 | } 36 | 37 | fn main() -> Result<(), Box> { 38 | match SimpleLogger::init(LevelFilter::Debug, LOG_CONFIG) { 39 | Ok(_) => {} 40 | Err(error) => eprintln!("Error setting up SimpleLogger: {:?}", error), 41 | }; 42 | 43 | Ok(lambda!(handler)) 44 | } 45 | -------------------------------------------------------------------------------- /img/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gistcard_img" 3 | version = "0.1.0" 4 | authors = ["Mike Engel "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | reqwest = "0.9" 9 | http = "0.1" 10 | serde = { version = "1", features = ["derive"] } 11 | serde_json = "1" 12 | log = "0.4" 13 | simplelog = "0.5" 14 | now_lambda = "*" 15 | base64 = "0.10" 16 | urlencoding = "1" 17 | gistcard = { path = "../gist" } 18 | -------------------------------------------------------------------------------- /img/src/main.rs: -------------------------------------------------------------------------------- 1 | use base64; 2 | use gistcard::{get_gist, Gist, GistError, GistFile}; 3 | use http::{header, StatusCode}; 4 | use log::debug; 5 | use now_lambda::{error::NowError, lambda, IntoResponse, Request, Response}; 6 | use reqwest::Client; 7 | use serde::Serialize; 8 | use serde_json::json; 9 | use simplelog::{Config, Level, LevelFilter, SimpleLogger}; 10 | use std::error::Error; 11 | use urlencoding; 12 | 13 | const LOG_CONFIG: Config = Config { 14 | time: Some(Level::Debug), 15 | level: Some(Level::Debug), 16 | target: None, 17 | location: None, 18 | time_format: Some("%T"), 19 | }; 20 | 21 | #[derive(Debug, Serialize)] 22 | struct Highlight { 23 | background: String, 24 | text: String, 25 | variable: String, 26 | attribute: String, 27 | definition: String, 28 | keyword: String, 29 | operator: String, 30 | property: String, 31 | number: String, 32 | string: String, 33 | comment: String, 34 | meta: String, 35 | tag: String, 36 | } 37 | 38 | #[derive(Debug, Serialize)] 39 | struct CarbonImage { 40 | #[serde(rename = "paddingVertical")] 41 | padding_vertical: String, 42 | #[serde(rename = "paddingHorizontal")] 43 | padding_horizontal: String, 44 | #[serde(rename = "marginVertical")] 45 | margin_vertical: String, 46 | #[serde(rename = "marginHorizontal")] 47 | margin_horizontal: String, 48 | #[serde(rename = "backgroundImage")] 49 | background_image: Option, 50 | #[serde(rename = "backgroundImageSelection")] 51 | background_image_selection: Option, 52 | #[serde(rename = "backgroundMode")] 53 | background_mode: String, 54 | #[serde(rename = "backgroundColor")] 55 | background_color: String, 56 | #[serde(rename = "dropShadow")] 57 | drop_shadow: bool, 58 | #[serde(rename = "dropShadowOffsetY")] 59 | drop_shadow_offset_y: String, 60 | #[serde(rename = "dropShadowBlurRadius")] 61 | drop_shadow_blur_radius: String, 62 | theme: String, 63 | #[serde(rename = "windowTheme")] 64 | window_theme: String, 65 | language: String, 66 | #[serde(rename = "fontFamily")] 67 | font_family: String, 68 | #[serde(rename = "fontSize")] 69 | font_size: String, 70 | #[serde(rename = "lineHeight")] 71 | line_height: String, 72 | #[serde(rename = "windowControls")] 73 | window_controls: bool, 74 | #[serde(rename = "widthAdjustment")] 75 | width_adjustment: bool, 76 | #[serde(rename = "lineNumbers")] 77 | line_numbers: bool, 78 | #[serde(rename = "exportSize")] 79 | export_size: String, 80 | watermark: bool, 81 | #[serde(rename = "squaredImage")] 82 | squared_image: bool, 83 | code: String, 84 | loading: bool, 85 | preset: String, 86 | highlights: Highlight, 87 | } 88 | 89 | impl CarbonImage { 90 | fn default() -> CarbonImage { 91 | CarbonImage { 92 | padding_vertical: "56px".into(), 93 | padding_horizontal: "56px".into(), 94 | margin_vertical: "45px".into(), 95 | margin_horizontal: "45px".into(), 96 | background_image: None, 97 | background_image_selection: None, 98 | background_mode: "color".into(), 99 | background_color: "rgba(189,210,157,1)".into(), 100 | drop_shadow: true, 101 | drop_shadow_offset_y: "20px".into(), 102 | drop_shadow_blur_radius: "68px".into(), 103 | theme: "dracula".into(), 104 | window_theme: "none".into(), 105 | language: "auto".into(), 106 | font_family: "hack".into(), 107 | font_size: "14px".into(), 108 | line_height: "133%".into(), 109 | window_controls: false, 110 | width_adjustment: false, 111 | line_numbers: false, 112 | export_size: "2x".into(), 113 | watermark: false, 114 | squared_image: false, 115 | code: "console.log(\"hello world\");".into(), 116 | loading: false, 117 | preset: "preset:4".into(), 118 | highlights: Highlight { 119 | background: "#151718".into(), 120 | text: "#CFD2D1".into(), 121 | variable: "#a074c4".into(), 122 | attribute: "#9fca56".into(), 123 | definition: "#55b5db".into(), 124 | keyword: "#e6cd69".into(), 125 | operator: "#9fca56".into(), 126 | property: "#a074c4".into(), 127 | number: "#cd3f45".into(), 128 | string: "#55b5db".into(), 129 | comment: "#41535b".into(), 130 | meta: "#55b5db".into(), 131 | tag: "#55b5db".into(), 132 | }, 133 | } 134 | } 135 | 136 | fn with_code(code: &str) -> CarbonImage { 137 | CarbonImage { 138 | code: code.into(), 139 | ..CarbonImage::default() 140 | } 141 | } 142 | } 143 | 144 | fn decode_image(blob: &str) -> Result, GistError> { 145 | let base64_data = blob.replace("data:image/png;base64,", ""); 146 | 147 | base64::decode(&base64_data).map_err(|err| { 148 | debug!("Error decoding image data: {:?}", err); 149 | 150 | GistError::ImageError 151 | }) 152 | } 153 | 154 | fn handler(req: Request) -> Result { 155 | let client = Client::new(); 156 | let id = req.uri().query().unwrap_or("").replace("id=", ""); 157 | let Gist { files, .. } = get_gist(&id).map_err(|err| match err { 158 | GistError::InvalidId => NowError::new("An invalid ID was provided. Please try again"), 159 | GistError::BadGateway => { 160 | NowError::new("For some reason the GitHub API isn't responding. Please try again later") 161 | } 162 | GistError::NotFound => NowError::new("That gist can't be found. Is it private?"), 163 | _ => NowError::new("Something went terribly wrong. Please try again"), 164 | })?; 165 | let GistFile { content, .. } = files.iter().map(|(_, v)| v).collect::>()[0]; 166 | let state = CarbonImage::with_code(content); 167 | let encoded_state = base64::encode( 168 | urlencoding::encode(serde_json::to_string(&state).unwrap().as_str()).as_str(), 169 | ); 170 | let res = client 171 | .post("https://carbon.now.sh/api/image") 172 | .json(&json!({ "state": encoded_state })) 173 | .send() 174 | .and_then(|mut res| res.text()) 175 | .map(|data| decode_image(&data)) 176 | .map_err(|err| { 177 | debug!("Unable to create the image: {:?}", err); 178 | 179 | GistError::BadGateway 180 | }); 181 | 182 | match res { 183 | Ok(Ok(value)) => Ok(Response::builder() 184 | .status(StatusCode::OK) 185 | .header(header::CONTENT_TYPE, "image/png") 186 | .body(value) 187 | .expect("Internal Server Error")), 188 | _ => { 189 | debug!("Error creating the image from carbon"); 190 | 191 | Ok(Response::builder() 192 | .status(StatusCode::BAD_GATEWAY) 193 | .body("Error creating the code image".as_bytes().to_vec()) 194 | .expect("Internal Server Error")) 195 | } 196 | } 197 | } 198 | 199 | fn main() -> Result<(), Box> { 200 | match SimpleLogger::init(LevelFilter::Debug, LOG_CONFIG) { 201 | Ok(_) => {} 202 | Err(error) => eprintln!("Error setting up SimpleLogger: {:?}", error), 203 | }; 204 | 205 | Ok(lambda!(handler)) 206 | } 207 | -------------------------------------------------------------------------------- /now.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "name": "gistcard", 4 | "alias": ["gistcard.now.sh"], 5 | "builds": [ 6 | { "src": "/img/Cargo.toml", "use": "now-rust@1" }, 7 | { "src": "/html/Cargo.toml", "use": "now-rust@1" }, 8 | { 9 | "src": "/site/package.json", 10 | "use": "@now/static-build", 11 | "config": { "distDir": "public" } 12 | } 13 | ], 14 | "routes": [ 15 | { "src": "/", "dest": "/site/index.html" }, 16 | { "src": "/img/(.+).png", "dest": "/img/gistcard_img?id=$1" }, 17 | { "src": "/((.+).(js|json|css|png))", "dest": "/site/$1" }, 18 | { "src": "/(.+)", "dest": "/html/gistcard_html?id=$1" } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /site/gatsby-browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Browser APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/browser-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /site/gatsby-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteMetadata: { 3 | title: `gistcard`, 4 | description: `Show better gist previews in twitter with a code snippet and a link to the gist`, 5 | author: `@beardfury` 6 | }, 7 | plugins: [ 8 | `gatsby-plugin-react-helmet`, 9 | `gatsby-plugin-styled-components`, 10 | `gatsby-plugin-typescript` 11 | // `gatsby-plugin-offline`, 12 | ] 13 | }; 14 | -------------------------------------------------------------------------------- /site/gatsby-node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Node APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/node-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /site/gatsby-ssr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/ssr-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /site/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gistcard-site", 3 | "private": true, 4 | "description": "A simple UI for gistcard", 5 | "version": "1.0.0", 6 | "author": "Mike Engel ", 7 | "dependencies": { 8 | "babel-plugin-styled-components": "^1.10.1", 9 | "gatsby": "^2.24.60", 10 | "gatsby-plugin-offline": "^2.1.1", 11 | "gatsby-plugin-react-helmet": "^3.0.12", 12 | "gatsby-plugin-styled-components": "^3.0.7", 13 | "gatsby-plugin-typescript": "^2.0.15", 14 | "react": "^16.8.6", 15 | "react-dom": "^16.8.6", 16 | "react-helmet": "^5.2.1", 17 | "styled-components": "^4.3.1" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^12.0.7", 21 | "@types/react": "^16.8.19", 22 | "@types/react-dom": "^16.8.4", 23 | "@types/react-helmet": "^5.0.8", 24 | "@types/styled-components": "^4.1.16", 25 | "husky": "^2.4.1", 26 | "lint-staged": "^8.2.1", 27 | "prettier": "^1.18.0", 28 | "typescript": "^3.5.1" 29 | }, 30 | "keywords": [ 31 | "gatsby", 32 | "typescript" 33 | ], 34 | "license": "MIT", 35 | "scripts": { 36 | "build": "gatsby build", 37 | "dev": "gatsby develop", 38 | "start": "npm run develop", 39 | "serve": "gatsby serve", 40 | "typecheck": "tsc --noEmit", 41 | "now-build": "npm run build" 42 | }, 43 | "lint-staged": { 44 | "*.tsx?": [ 45 | "prettier --write", 46 | "git add" 47 | ] 48 | }, 49 | "repository": { 50 | "type": "git", 51 | "url": "https://github.com/mike-engel/gistcard" 52 | }, 53 | "bugs": { 54 | "url": "https://github.com/mike-engel/gistcard/issues" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /site/src/components/atoms/color.component.ts: -------------------------------------------------------------------------------- 1 | export const hexToRgba = (hex: string, alpha: number) => { 2 | const r = hex.substr(1, 2); 3 | const g = hex.substr(3, 2); 4 | const b = hex.substr(5, 2); 5 | 6 | return `rgba(${parseInt(r, 16)}, ${parseInt(g, 16)}, ${parseInt(b, 16)}, ${alpha})`; 7 | }; 8 | 9 | export const white = "#FFFFFF"; 10 | export const lightGrey = "#A1A3A6"; 11 | export const darkGrey = "#717477"; 12 | export const black = "#18191A"; 13 | 14 | // generic function to transform a color hex string to rgb 15 | // see https://github.com/PimpTrizkit/PJs/wiki/12.-Shade,-Blend-and-Convert-a-Web-Color-(pSBC.js) 16 | export const pSBCr = (color: string) => { 17 | const l = color.length; 18 | const RGB: Record = {}; 19 | 20 | if (l > 9) { 21 | const colorArr = color.split(","); 22 | 23 | if (colorArr.length < 3 || colorArr.length > 4) return null; 24 | 25 | RGB[0] = parseInt(colorArr[0].split("(")[1]); 26 | RGB[1] = parseInt(colorArr[1]); 27 | RGB[2] = parseInt(colorArr[2]); 28 | RGB[3] = colorArr[3] ? parseFloat(colorArr[3]) : -1; 29 | } else { 30 | let colorStr: string | number = color; 31 | 32 | if (l == 8 || l == 6 || l < 4) return null; 33 | 34 | if (l < 6) { 35 | colorStr = 36 | "#" + 37 | color[1] + 38 | color[1] + 39 | color[2] + 40 | color[2] + 41 | color[3] + 42 | color[3] + 43 | (l > 4 ? color[4] + "" + color[4] : ""); 44 | } 45 | 46 | const colorInt = parseInt(colorStr.slice(1), 16); 47 | 48 | RGB[0] = (colorInt >> 16) & 255; 49 | RGB[1] = (colorInt >> 8) & 255; 50 | RGB[2] = colorInt & 255; 51 | RGB[3] = -1; 52 | 53 | if (l == 9 || l == 5) { 54 | RGB[3] = Math.round((RGB[2] / 255) * 10000) / 10000; 55 | RGB[2] = RGB[1]; 56 | RGB[1] = RGB[0]; 57 | RGB[0] = (colorInt >> 24) & 255; 58 | } 59 | } 60 | 61 | return RGB; 62 | }; 63 | 64 | // color shading function, darken or lighten by a percentage 65 | // see https://github.com/PimpTrizkit/PJs/wiki/12.-Shade,-Blend-and-Convert-a-Web-Color-(pSBC.js) 66 | export const pSBC = function(percentage: number, from: string, to?: string) { 67 | if (percentage < -1 || percentage > 1 || (from[0] != "r" && from[0] != "#")) { 68 | return null; 69 | } 70 | 71 | const isHex = from.length > 9; 72 | const isRgb = !!to ? (to.length > 9 ? true : to == "c" ? !isHex : false) : isHex; 73 | const makeDarker = percentage < 0; 74 | const delta = makeDarker ? percentage * -1 : percentage; 75 | const normalizedTo = !!to && to != "c" ? to : makeDarker ? "#000000" : "#FFFFFF"; 76 | const f = pSBCr(from); 77 | const t = pSBCr(normalizedTo); 78 | 79 | if (!f || !t) return null; 80 | 81 | if (isRgb) { 82 | return ( 83 | "rgb" + 84 | (f[3] > -1 || t[3] > -1 ? "a(" : "(") + 85 | Math.round((t[0] - f[0]) * delta + f[0]) + 86 | "," + 87 | Math.round((t[1] - f[1]) * delta + f[1]) + 88 | "," + 89 | Math.round((t[2] - f[2]) * delta + f[2]) + 90 | (f[3] < 0 && t[3] < 0 91 | ? ")" 92 | : "," + 93 | (f[3] > -1 && t[3] > -1 94 | ? Math.round(((t[3] - f[3]) * delta + f[3]) * 10000) / 10000 95 | : t[3] < 0 96 | ? f[3] 97 | : t[3]) + 98 | ")") 99 | ); 100 | } else { 101 | return ( 102 | "#" + 103 | ( 104 | 0x100000000 + 105 | Math.round((t[0] - f[0]) * delta + f[0]) * 0x1000000 + 106 | Math.round((t[1] - f[1]) * delta + f[1]) * 0x10000 + 107 | Math.round((t[2] - f[2]) * delta + f[2]) * 0x100 + 108 | (f[3] > -1 && t[3] > -1 109 | ? Math.round(((t[3] - f[3]) * delta + f[3]) * 255) 110 | : t[3] > -1 111 | ? Math.round(t[3] * 255) 112 | : f[3] > -1 113 | ? Math.round(f[3] * 255) 114 | : 255) 115 | ) 116 | .toString(16) 117 | .slice(1, f[3] > -1 || t[3] > -1 ? undefined : -2) 118 | ); 119 | } 120 | }; 121 | -------------------------------------------------------------------------------- /site/src/components/atoms/seo.component.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Helmet from "react-helmet"; 3 | 4 | type MetaProps = JSX.IntrinsicElements["meta"]; 5 | 6 | export interface Props { 7 | description?: string; 8 | lang?: string; 9 | meta?: MetaProps[]; 10 | title: string; 11 | } 12 | 13 | const SEO = ({ description, lang, meta, title }: Props) => { 14 | const metaDescription = description; 15 | 16 | return ( 17 | 58 | ); 59 | }; 60 | 61 | SEO.defaultProps = { 62 | lang: `en`, 63 | meta: [], 64 | description: `` 65 | }; 66 | 67 | export default SEO; 68 | -------------------------------------------------------------------------------- /site/src/components/atoms/typography.component.ts: -------------------------------------------------------------------------------- 1 | import { HTMLProps } from "react"; 2 | import styled from "styled-components"; 3 | import { black, pSBC } from "./color.component"; 4 | import { spacing } from "../../utils/spacing.utils"; 5 | import { propOr } from "../../utils/fp.utils"; 6 | 7 | export enum FontStyle { 8 | Italic = "italic", 9 | Normal = "normal", 10 | Inherit = "inherit" 11 | } 12 | 13 | export enum FontWeight { 14 | Regular = "400", 15 | Semibold = "500", 16 | Bold = "600", 17 | Heavy = "700", 18 | Inherit = "inherit" 19 | } 20 | 21 | type FontSize = { 22 | [key: string]: string; 23 | }; 24 | 25 | type TypeProps = { 26 | color?: string; 27 | fontWeight?: FontWeight; 28 | fontStyle?: FontStyle; 29 | level?: 1 | 2 | 3 | 4 | 5 | 6 | "inherit"; 30 | displayLevel?: 1 | 2 | 3 | 4 | 5 | 6 | "inherit"; 31 | }; 32 | 33 | export type HeadingProps = TypeProps & HTMLProps; 34 | 35 | export type TextProps = TypeProps & HTMLProps; 36 | 37 | export type LinkProps = TypeProps & HTMLProps; 38 | 39 | export const fontFamily = 40 | "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif"; 41 | 42 | // Perfect fourth 43 | export const fontSize: FontSize = { 44 | level1: "2.369rem", 45 | level2: "1.777rem", 46 | level3: "1.333rem", 47 | level4: "1.000rem", 48 | level5: "0.750rem", 49 | level6: "10px", 50 | inherit: "1em" 51 | }; 52 | 53 | export const Heading = styled("div").attrs(({ level }) => ({ 54 | role: "heading", 55 | "aria-level": level || 1 56 | }))` 57 | max-width: 40em; 58 | color: ${propOr(black, "color")}; 59 | font-size: ${({ level, displayLevel }) => fontSize[`level${displayLevel || level || 1}`]}; 60 | font-weight: ${propOr(FontWeight.Bold, "fontWeight")}; 61 | font-style: ${propOr(FontStyle.Normal, "fontStyle")}; 62 | line-height: 1.2; 63 | margin: 0; 64 | 65 | & + * { 66 | margin-top: ${spacing(2)}px !important; 67 | } 68 | `; 69 | 70 | export const Text = styled("p")` 71 | max-width: 40em; 72 | color: ${propOr(black, "color")}; 73 | font-size: ${({ level, displayLevel }: TextProps) => 74 | fontSize[`level${displayLevel || level || 4}`]}; 75 | font-weight: ${propOr(FontWeight.Regular, "fontWeight")}; 76 | font-style: ${propOr(FontStyle.Normal, "fontStyle")}; 77 | line-height: 1.4; 78 | margin: 0; 79 | 80 | & + * { 81 | margin-top: ${spacing(2)}px !important; 82 | } 83 | `; 84 | 85 | export const Span = styled(Text).attrs(() => ({ as: "span" }))``; 86 | 87 | Span.defaultProps = { 88 | color: "inherit", 89 | fontWeight: FontWeight.Inherit, 90 | fontStyle: FontStyle.Inherit 91 | }; 92 | 93 | export const Link = styled("a")` 94 | display: inline-block; 95 | text-decoration: underline; 96 | color: ${propOr(black, "color")}; 97 | font-size: ${({ level, displayLevel }: LinkProps) => 98 | fontSize[`level${displayLevel || level || 4}`]}; 99 | font-weight: ${propOr(FontWeight.Regular, "fontWeight")}; 100 | font-style: ${propOr(FontStyle.Normal, "fontStyle")}; 101 | line-height: 1.2; 102 | margin: 0; 103 | transition: color 150ms, border-color 150ms; 104 | 105 | @media (hover) { 106 | &:hover { 107 | color: ${pSBC(0.5, black)}; 108 | } 109 | } 110 | `; 111 | 112 | Link.defaultProps = { 113 | fontWeight: FontWeight.Inherit, 114 | fontStyle: FontStyle.Inherit, 115 | level: "inherit" 116 | }; 117 | 118 | export const ExternalLink = styled(Link).attrs(() => ({ 119 | target: "_blank", 120 | rel: "noopener noreferrer" 121 | }))``; 122 | -------------------------------------------------------------------------------- /site/src/components/molecules/footer.component.tsx: -------------------------------------------------------------------------------- 1 | import React, { memo } from "react"; 2 | import styled from "styled-components"; 3 | import { Stylable } from "../../types/component.types"; 4 | import { ExternalLink, Text } from "../atoms/typography.component"; 5 | import { maxWidth, spacing } from "../../utils/spacing.utils"; 6 | 7 | type Props = Stylable; 8 | 9 | export const RawFooter = memo(({ className }: Props) => ( 10 |
11 | 12 | ©{new Date().getFullYear()}, Built by 13 | {` `} 14 | Mike Engel 15 | {" | "} 16 | View on GitHub 17 | 18 |
19 | )); 20 | 21 | export const Footer = styled(RawFooter)` 22 | display: flex; 23 | align-items: center; 24 | justify-content: center; 25 | padding: ${spacing(2)}px 0; 26 | 27 | ${Text} { 28 | width: 90vw; 29 | max-width: ${maxWidth}px; 30 | } 31 | `; 32 | -------------------------------------------------------------------------------- /site/src/components/molecules/header.component.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode, memo } from "react"; 2 | import styled from "styled-components"; 3 | import { Heading, FontWeight } from "../atoms/typography.component"; 4 | import { Stylable } from "../../types/component.types"; 5 | import { spacing, maxWidth } from "../../utils/spacing.utils"; 6 | import { darkGrey } from "../atoms/color.component"; 7 | 8 | type Props = Stylable & { 9 | children?: ReactNode; 10 | }; 11 | 12 | export const RawHeader = memo(({ children = "GistCard", className }: Props) => ( 13 |
14 | {children} 15 | 16 | Show better gist previews in twitter with a code snippet and a link to the gist 17 | 18 |
19 | )); 20 | 21 | export const Header = styled(RawHeader)` 22 | display: flex; 23 | flex-direction: column; 24 | align-items: center; 25 | justify-content: center; 26 | padding: ${spacing(3)}px 0; 27 | 28 | ${Heading} { 29 | width: 90vw; 30 | max-width: ${maxWidth}px; 31 | } 32 | 33 | ${Heading} + ${Heading} { 34 | margin-top: 0 !important; 35 | } 36 | `; 37 | -------------------------------------------------------------------------------- /site/src/components/molecules/preview.component.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useRef, SetStateAction, Dispatch } from "react"; 2 | import styled from "styled-components"; 3 | import { 4 | Text, 5 | Heading, 6 | Span, 7 | FontWeight, 8 | ExternalLink, 9 | fontFamily, 10 | fontSize 11 | } from "../atoms/typography.component"; 12 | import { Stylable } from "../../types/component.types"; 13 | import { spacing } from "../../utils/spacing.utils"; 14 | import { darkGrey, lightGrey, black, hexToRgba, white, pSBC } from "../atoms/color.component"; 15 | 16 | type Props = Stylable; 17 | 18 | export const copyText = ( 19 | input: HTMLInputElement | null, 20 | setState: Dispatch> 21 | ) => { 22 | if (!input) return; 23 | 24 | const tempTextarea = document.createElement("textarea"); 25 | 26 | tempTextarea.value = `https://gistcard.now.sh/${input.value}`; 27 | tempTextarea.style.position = "absolute"; 28 | tempTextarea.style.width = "0px"; 29 | tempTextarea.style.height = "0px"; 30 | tempTextarea.style.top = "0px"; 31 | tempTextarea.style.bottom = "0px"; 32 | 33 | document.body.appendChild(tempTextarea); 34 | 35 | tempTextarea.select(); 36 | 37 | setState(true); 38 | 39 | document.execCommand("copy"); 40 | 41 | document.body.removeChild(tempTextarea); 42 | 43 | input.focus(); 44 | }; 45 | 46 | export const RawPreview = ({ className }: Props) => { 47 | const [id, setId] = useState(""); 48 | const [copied, setCopied] = useState(false); 49 | const inputRef = useRef(null); 50 | const url = `https://gistcard.now.sh/${id}`; 51 | 52 | useEffect(() => { 53 | if (!inputRef.current) return; 54 | 55 | inputRef.current.focus(); 56 | }, []); 57 | 58 | useEffect(() => { 59 | if (!copied) return; 60 | 61 | const id = setTimeout(() => { 62 | setCopied(false); 63 | }, 5000); 64 | 65 | return () => { 66 | clearTimeout(id); 67 | }; 68 | }, [copied]); 69 | 70 | return ( 71 |
72 | Usage 73 | 74 | GistCard is used by adding the gist ID or gist url 75 | after https://gistcard.now.sh. Clicking on that link will rediredct any user to 76 | the actual gist page. 77 | 78 |
79 | Create a GistCard 80 | 94 |
 95 |           {url}
 96 |           
 99 |         
100 |
101 |
102 | ); 103 | }; 104 | 105 | export const Preview = styled(RawPreview)` 106 | margin-top: ${spacing(5)}px !important; 107 | padding-top: 1px; 108 | 109 | fieldset { 110 | border: 1px solid ${pSBC(0.75, lightGrey)}; 111 | background: ${white}; 112 | box-shadow: 0 2px 4px ${hexToRgba(black, 0.15)}; 113 | border-radius: ${spacing(0.5)}px; 114 | padding: ${spacing(2)}px; 115 | } 116 | 117 | label { 118 | display: block; 119 | margin: 0 0 ${spacing(2)}px 0; 120 | 121 | span { 122 | display: block; 123 | } 124 | } 125 | 126 | label + pre, 127 | label input { 128 | width: 100%; 129 | margin-top: ${spacing(1)}px !important; 130 | padding: ${spacing(1.5)}px ${spacing(2)}px; 131 | border-radius: ${spacing(0.5)}px; 132 | border: 1px solid ${pSBC(0.6, lightGrey)}; 133 | font-family: ${fontFamily}; 134 | font-size: ${fontSize.level4}; 135 | } 136 | 137 | label + pre { 138 | background: #eee; 139 | } 140 | 141 | pre { 142 | display: flex; 143 | align-items: top; 144 | justify-content: space-between; 145 | white-space: pre-wrap; 146 | margin: 0; 147 | 148 | ${ExternalLink} { 149 | flex-shrink: 1; 150 | } 151 | } 152 | 153 | button { 154 | appearance: none; 155 | font-family: ${fontFamily}; 156 | font-size: ${fontSize.level4}; 157 | color: ${black}; 158 | border: none; 159 | font-weight: ${FontWeight.Bold}; 160 | white-space: nowrap; 161 | 162 | @media (hover) { 163 | &:hover { 164 | cursor: pointer; 165 | } 166 | } 167 | } 168 | `; 169 | -------------------------------------------------------------------------------- /site/src/components/organisms/layout.component.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from "react"; 2 | import styled, { createGlobalStyle } from "styled-components"; 3 | import { Header } from "../molecules/header.component"; 4 | import SEO, { Props as SEOProps } from "../atoms/seo.component"; 5 | import { fontFamily } from "../atoms/typography.component"; 6 | import { Stylable } from "../../types/component.types"; 7 | import { Footer } from "../molecules/footer.component"; 8 | import { maxWidth, spacing } from "../../utils/spacing.utils"; 9 | 10 | type Props = SEOProps & 11 | Stylable & { 12 | children: ReactNode; 13 | }; 14 | 15 | const GlobalStyles = createGlobalStyle` 16 | *, *:before, *:after { 17 | box-sizing: border-box; 18 | 19 | &:focus:not(:focus-visible) { outline: none } 20 | } 21 | 22 | html, 23 | body { 24 | width: 100%; 25 | height: 100%; 26 | margin: 0; 27 | padding: 0; 28 | } 29 | 30 | body { 31 | position: relative; 32 | font-style: normal; 33 | font-weight: 400; 34 | font-family: ${fontFamily}; 35 | font-size: 18px; 36 | line-height: 1.4; 37 | } 38 | 39 | @media(prefers-reduced-motion: reduce) { 40 | *, 41 | *:before, 42 | *:after { 43 | transition: none !important; 44 | animation: none !important; 45 | } 46 | } 47 | `; 48 | 49 | const RawLayout = ({ className, children, title }: Props) => { 50 | return ( 51 |
52 | 53 |
{title}
54 | 55 |
{children}
56 |
57 |
58 | ); 59 | }; 60 | 61 | export const Layout = styled(RawLayout)` 62 | main { 63 | width: 90vw; 64 | max-width: ${maxWidth}px; 65 | margin: ${spacing(2)}px auto; 66 | } 67 | `; 68 | -------------------------------------------------------------------------------- /site/src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Layout } from "../components/organisms/layout.component"; 3 | import { 4 | Text, 5 | ExternalLink, 6 | Span, 7 | FontWeight, 8 | Heading 9 | } from "../components/atoms/typography.component"; 10 | import styled from "styled-components"; 11 | import { Stylable } from "../types/component.types"; 12 | import { Preview } from "../components/molecules/preview.component"; 13 | import { spacing } from "../utils/spacing.utils"; 14 | import { pSBC, lightGrey, hexToRgba, black } from "../components/atoms/color.component"; 15 | 16 | type Props = Stylable; 17 | 18 | const RawIndexPage = ({ className }: Props) => ( 19 | 20 | What 21 | 22 | GistCard is a better way to share gists (until 23 | github does this themselves 😉). It shows a snippet of the gist as a preview using{" "} 24 | carbon and includes a link to the 25 | gist. 26 | 27 | 28 | The original inspiration for this was from a{" "} 29 | 30 | tweet 31 | {" "} 32 | from Suz Hinton. It's a 33 | wonderful idea, and I fully expect this tool to only last for a little while until GitHub does 34 | it officially. 35 | 36 | 37 | Preview 38 | Preview of the twitter card 39 | 40 | ); 41 | 42 | export default styled(RawIndexPage)` 43 | ${Span} + ${ExternalLink} { 44 | margin-top: 0 !important; 45 | } 46 | 47 | ${Text} + ${Heading}, 48 | ${Preview} + ${Heading} { 49 | margin-top: ${spacing(5)}px !important; 50 | } 51 | 52 | img { 53 | max-width: 504px; 54 | width: auto; 55 | height: auto; 56 | border: 1px solid ${pSBC(0.75, lightGrey)}; 57 | box-shadow: 0 2px 4px ${hexToRgba(black, 0.15)}; 58 | border-radius: ${spacing(0.5)}px; 59 | } 60 | `; 61 | -------------------------------------------------------------------------------- /site/src/types/component.types.ts: -------------------------------------------------------------------------------- 1 | export type Stylable = { className?: string }; 2 | 3 | export type ReducerAction = { 4 | type: T; 5 | payload?: P; 6 | }; 7 | -------------------------------------------------------------------------------- /site/src/utils/fp.utils.ts: -------------------------------------------------------------------------------- 1 | export const propOr = (fallback: any, property: string) => (obj: Record) => 2 | obj[property] || fallback; 3 | -------------------------------------------------------------------------------- /site/src/utils/spacing.utils.ts: -------------------------------------------------------------------------------- 1 | export const spacing = (multiple: number = 1) => multiple * 8; 2 | 3 | export const maxWidth = spacing(90); 4 | 5 | export enum Breakpoints { 6 | Mobile = 580, 7 | Tablet = 768, 8 | Desktop = 1024 9 | } 10 | -------------------------------------------------------------------------------- /site/static/images/card_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mike-engel/gistcard/5c9cef04b25aa218d10903b1d44832b03d02a0bc/site/static/images/card_preview.png -------------------------------------------------------------------------------- /site/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "allowSyntheticDefaultImports": true, 5 | "jsx": "preserve", 6 | "lib": ["es6", "es2016", "dom", "dom.iterable", "scripthost", "esnext.asynciterable"], 7 | "module": "esnext", 8 | "moduleResolution": "node", 9 | "noImplicitAny": true, 10 | "noUnusedLocals": true, 11 | "noUnusedParameters": true, 12 | "outDir": "dist/", 13 | "preserveConstEnums": true, 14 | "resolveJsonModule": true, 15 | "skipLibCheck": true, 16 | "sourceMap": true, 17 | "strict": true, 18 | "strictNullChecks": true, 19 | "target": "esnext", 20 | "typeRoots": ["node_modules/@types", "src/types", "src/typings"] 21 | } 22 | } 23 | --------------------------------------------------------------------------------