├── .editorconfig ├── .gitignore ├── .travis.yml ├── LICENSE ├── Procfile ├── README.md ├── app.js ├── package-lock.json ├── package.json ├── server.js ├── static └── favicon.ico └── views ├── error.pug ├── layout.pug └── main.pug /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | node_modules 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "12" 4 | 5 | script: npm test 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Mashape (https://www.mashape.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: npm start 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [APIembed](https://apiembed.com/) - API Code snippets 2 | 3 | Auto-generated, code snippets in many programming languages for your website, blog or API docs. 4 | 5 | The target transformation is powered by [HTTP Snippet](https://github.com/Kong/httpsnippet). For any errors with the target syntax, or for additional target requests, please submit an issue there. 6 | 7 | Main Targets: 8 | 9 | - Shell 10 | - Javascript 11 | - Node 12 | - C 13 | - Java 14 | - PHP 15 | - Objective-C 16 | - Swift 17 | - Python 18 | - Ruby 19 | - C# 20 | - Go 21 | - OCaml 22 | - You can add more languages [here](https://github.com/Kong/httpsnippet/blob/master/CONTRIBUTING.md) 23 | 24 | ### We ♥ Open Source 25 | 26 | The [APIembed website](https://github.com/Kong/apiembed/tree/gh-pages) and the [APIembed API](https://github.com/Kong/apiembed/tree/master) are open source. We'd love to hear your feedback! 27 | 28 | --- 29 | 30 | Handcrafted by [Kong](https://www.konghq.com/) 31 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node, mocha */ 2 | 3 | "use strict"; 4 | 5 | var compression = require("compression"); 6 | var debug = require("debug")("apiembed"); 7 | var express = require("express"); 8 | var HTTPSnippet = require("httpsnippet"); 9 | var morgan = require("morgan"); 10 | var unirest = require("unirest"); 11 | var join = require("path").join; 12 | 13 | module.exports = function(callback) { 14 | var availableTargets = HTTPSnippet.availableTargets().reduce(function( 15 | targets, 16 | target 17 | ) { 18 | if (target.clients) { 19 | targets[target.key] = target.clients.reduce(function(clients, client) { 20 | clients[client.key] = false; 21 | return clients; 22 | }, {}); 23 | } else { 24 | targets[target.key] = false; 25 | } 26 | 27 | return targets; 28 | }, 29 | {}); 30 | 31 | var namedTargets = HTTPSnippet.availableTargets().reduce(function( 32 | targets, 33 | target 34 | ) { 35 | if (target.clients) { 36 | targets[target.key] = target; 37 | 38 | targets[target.key].clients = target.clients.reduce(function( 39 | clients, 40 | client 41 | ) { 42 | clients[client.key] = client; 43 | return clients; 44 | }, 45 | {}); 46 | } else { 47 | targets[target.key] = target; 48 | } 49 | 50 | return targets; 51 | }, 52 | {}); 53 | 54 | var APIError = function(code, message) { 55 | this.name = "APIError"; 56 | this.code = code || 500; 57 | this.message = message || "Oops, something went wrong!"; 58 | }; 59 | 60 | APIError.prototype = Error.prototype; 61 | 62 | // express setup 63 | var app = express(); 64 | app.set("view engine", "pug"); 65 | app.disable("x-powered-by"); 66 | 67 | if (!process.env.NOCACHE) { 68 | app.enable("view cache"); 69 | } 70 | 71 | // logging 72 | app.use(morgan("dev")); 73 | 74 | // add 3rd party middlewares 75 | app.use(compression()); 76 | 77 | // useful to get info in the view 78 | app.locals.HTTPSnippet = HTTPSnippet; 79 | app.locals.namedTargets = namedTargets; 80 | 81 | // enable CORS 82 | app.use(function(req, res, next) { 83 | res.header("Access-Control-Allow-Origin", "*"); 84 | res.header( 85 | "Access-Control-Allow-Headers", 86 | "Origin, X-Requested-With, Content-Type, Accept" 87 | ); 88 | next(); 89 | }); 90 | 91 | // static middleware does not work here 92 | app.use("/favicon.ico", function(req, res) { 93 | res.sendFile(join(__dirname, "/static/favicon.ico")); 94 | }); 95 | 96 | // static middleware does not work here 97 | app.use("/targets", function(req, res) { 98 | res.json(HTTPSnippet.availableTargets()); 99 | }); 100 | 101 | app.get("/", function(req, res, next) { 102 | var source = decodeURIComponent(req.query.source); 103 | var targets = req.query.targets || "all"; 104 | 105 | if (!source) { 106 | return next(new APIError(400, "Invalid input")); 107 | } 108 | 109 | debug("received request for source: %s & targets: %s", source, targets); 110 | 111 | // parse the requested targets 112 | // TODO this needs optimization 113 | var requestedTargets = targets.split(",").reduce(function(requested, part) { 114 | var i = part.split(":"); 115 | 116 | var target = i[0] || "all"; 117 | var client = i[1] || "all"; 118 | 119 | // all targets 120 | if (target === "all") { 121 | // set all members to true 122 | return Object.keys(availableTargets).reduce(function(output, current) { 123 | if (typeof availableTargets[current] === "object") { 124 | output[current] = Object.keys(availableTargets[current]).reduce( 125 | function(clients, currentClient) { 126 | clients[currentClient] = true; 127 | return clients; 128 | }, 129 | {} 130 | ); 131 | } else { 132 | output[current] = true; 133 | } 134 | 135 | return output; 136 | }, {}); 137 | } 138 | 139 | // all clients? 140 | if (availableTargets.hasOwnProperty(target)) { 141 | if (typeof availableTargets[target] === "object") { 142 | if (client === "all") { 143 | requested[target] = Object.keys(availableTargets[target]).reduce( 144 | function(clients, currentClient) { 145 | clients[currentClient] = true; 146 | return clients; 147 | }, 148 | {} 149 | ); 150 | } else { 151 | if (availableTargets[target].hasOwnProperty(client)) { 152 | requested[target] = requested[target] ? requested[target] : {}; 153 | requested[target][client] = true; 154 | } 155 | } 156 | } else { 157 | requested[target] = true; 158 | } 159 | 160 | return requested; 161 | } 162 | 163 | return requested; 164 | }, {}); 165 | 166 | unirest 167 | .get(source) 168 | .headers({ Accept: "application/json" }) 169 | .end(function(response) { 170 | if (response.error) { 171 | debug( 172 | "failed to load source over http: %s %s", 173 | response.code || response.error.code, 174 | response.status || response.error.message 175 | ); 176 | 177 | return next(new APIError(400, "Could not load JSON source")); 178 | } 179 | 180 | var snippet; 181 | var output = {}; 182 | 183 | if (typeof response.body !== "object") { 184 | try { 185 | response.body = JSON.parse(response.body); 186 | } catch (err) { 187 | debug( 188 | "failed to parse content of %s, with error: %s", 189 | source, 190 | err.message 191 | ); 192 | 193 | return next(new APIError(400, "Invalid JSON source")); 194 | } 195 | } 196 | 197 | try { 198 | snippet = new HTTPSnippet(response.body); 199 | } catch (err) { 200 | debug("failed to generate snippet object: %s", err.message); 201 | 202 | return next(new APIError(400, err)); 203 | } 204 | 205 | Object.keys(requestedTargets).map(function(target) { 206 | var outputTarget = target.replace(/\./, "_"); 207 | 208 | if (typeof requestedTargets[target] === "object") { 209 | output[outputTarget] = {}; 210 | 211 | return Object.keys(requestedTargets[target]).map(function(client) { 212 | var outputClient = client.replace(/\./, "_"); 213 | output[outputTarget][outputClient] = snippet.convert(target, client); 214 | }); 215 | } 216 | 217 | output[outputTarget] = snippet.convert(target); 218 | }); 219 | 220 | if (Object.keys(output).length === 0) { 221 | debug("no matching targets found"); 222 | 223 | return next(new APIError(400, "Invalid Targets")); 224 | } 225 | 226 | res.render("main", { 227 | output: output 228 | }); 229 | 230 | res.end(); 231 | }); 232 | }); 233 | 234 | // error handler 235 | app.use(function errorHandler(error, req, res/*, next */) { 236 | if (error.code === 400) { 237 | error.message += 238 | ", please review the documentation and try again"; 239 | } 240 | 241 | // never show a 40x 242 | res.status(200); 243 | res.render("error", error); 244 | }); 245 | 246 | app.listen(process.env.PORT || process.env.npm_package_config_port); 247 | 248 | if (typeof callback === "function") { 249 | callback(); 250 | } 251 | }; 252 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "apiembed", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/babel-types": { 8 | "version": "7.0.7", 9 | "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", 10 | "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==" 11 | }, 12 | "@types/babylon": { 13 | "version": "6.16.5", 14 | "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", 15 | "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", 16 | "requires": { 17 | "@types/babel-types": "*" 18 | } 19 | }, 20 | "accepts": { 21 | "version": "1.3.7", 22 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 23 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 24 | "requires": { 25 | "mime-types": "~2.1.24", 26 | "negotiator": "0.6.2" 27 | } 28 | }, 29 | "ajv": { 30 | "version": "6.10.2", 31 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 32 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", 33 | "requires": { 34 | "fast-deep-equal": "^2.0.1", 35 | "fast-json-stable-stringify": "^2.0.0", 36 | "json-schema-traverse": "^0.4.1", 37 | "uri-js": "^4.2.2" 38 | } 39 | }, 40 | "align-text": { 41 | "version": "0.1.4", 42 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 43 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 44 | "requires": { 45 | "kind-of": "^3.0.2", 46 | "longest": "^1.0.1", 47 | "repeat-string": "^1.5.2" 48 | } 49 | }, 50 | "ansi-regex": { 51 | "version": "2.1.1", 52 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 53 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 54 | }, 55 | "ansi-styles": { 56 | "version": "2.2.1", 57 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 58 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 59 | }, 60 | "array-flatten": { 61 | "version": "1.1.1", 62 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 63 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 64 | }, 65 | "async": { 66 | "version": "2.6.3", 67 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 68 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 69 | "requires": { 70 | "lodash": "^4.17.14" 71 | } 72 | }, 73 | "asynckit": { 74 | "version": "0.4.0", 75 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 76 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 77 | }, 78 | "aws4": { 79 | "version": "1.8.0", 80 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 81 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" 82 | }, 83 | "babel-runtime": { 84 | "version": "6.26.0", 85 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 86 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 87 | "requires": { 88 | "core-js": "^2.4.0", 89 | "regenerator-runtime": "^0.11.0" 90 | }, 91 | "dependencies": { 92 | "core-js": { 93 | "version": "2.6.9", 94 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", 95 | "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" 96 | } 97 | } 98 | }, 99 | "babel-types": { 100 | "version": "6.26.0", 101 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 102 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 103 | "requires": { 104 | "babel-runtime": "^6.26.0", 105 | "esutils": "^2.0.2", 106 | "lodash": "^4.17.4", 107 | "to-fast-properties": "^1.0.3" 108 | }, 109 | "dependencies": { 110 | "esutils": { 111 | "version": "2.0.3", 112 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 113 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 114 | } 115 | } 116 | }, 117 | "basic-auth": { 118 | "version": "2.0.1", 119 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 120 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 121 | "requires": { 122 | "safe-buffer": "5.1.2" 123 | } 124 | }, 125 | "bcrypt-pbkdf": { 126 | "version": "1.0.2", 127 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 128 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 129 | "requires": { 130 | "tweetnacl": "^0.14.3" 131 | } 132 | }, 133 | "body-parser": { 134 | "version": "1.19.0", 135 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 136 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 137 | "requires": { 138 | "bytes": "3.1.0", 139 | "content-type": "~1.0.4", 140 | "debug": "2.6.9", 141 | "depd": "~1.1.2", 142 | "http-errors": "1.7.2", 143 | "iconv-lite": "0.4.24", 144 | "on-finished": "~2.3.0", 145 | "qs": "6.7.0", 146 | "raw-body": "2.4.0", 147 | "type-is": "~1.6.17" 148 | }, 149 | "dependencies": { 150 | "bytes": { 151 | "version": "3.1.0", 152 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 153 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 154 | } 155 | } 156 | }, 157 | "bytes": { 158 | "version": "3.0.0", 159 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 160 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 161 | }, 162 | "camelcase": { 163 | "version": "1.2.1", 164 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 165 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" 166 | }, 167 | "caseless": { 168 | "version": "0.12.0", 169 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 170 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 171 | }, 172 | "center-align": { 173 | "version": "0.1.3", 174 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 175 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 176 | "requires": { 177 | "align-text": "^0.1.3", 178 | "lazy-cache": "^1.0.3" 179 | } 180 | }, 181 | "chalk": { 182 | "version": "1.1.3", 183 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 184 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 185 | "requires": { 186 | "ansi-styles": "^2.2.1", 187 | "escape-string-regexp": "^1.0.2", 188 | "has-ansi": "^2.0.0", 189 | "strip-ansi": "^3.0.0", 190 | "supports-color": "^2.0.0" 191 | } 192 | }, 193 | "cliui": { 194 | "version": "2.1.0", 195 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 196 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 197 | "requires": { 198 | "center-align": "^0.1.1", 199 | "right-align": "^0.1.1", 200 | "wordwrap": "0.0.2" 201 | }, 202 | "dependencies": { 203 | "wordwrap": { 204 | "version": "0.0.2", 205 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 206 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" 207 | } 208 | } 209 | }, 210 | "combined-stream": { 211 | "version": "1.0.8", 212 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 213 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 214 | "requires": { 215 | "delayed-stream": "~1.0.0" 216 | } 217 | }, 218 | "commander": { 219 | "version": "2.20.0", 220 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", 221 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" 222 | }, 223 | "compressible": { 224 | "version": "2.0.17", 225 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", 226 | "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", 227 | "requires": { 228 | "mime-db": ">= 1.40.0 < 2" 229 | } 230 | }, 231 | "compression": { 232 | "version": "1.7.4", 233 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 234 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 235 | "requires": { 236 | "accepts": "~1.3.5", 237 | "bytes": "3.0.0", 238 | "compressible": "~2.0.16", 239 | "debug": "2.6.9", 240 | "on-headers": "~1.0.2", 241 | "safe-buffer": "5.1.2", 242 | "vary": "~1.1.2" 243 | } 244 | }, 245 | "constantinople": { 246 | "version": "3.1.2", 247 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", 248 | "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", 249 | "requires": { 250 | "@types/babel-types": "^7.0.0", 251 | "@types/babylon": "^6.16.2", 252 | "babel-types": "^6.26.0", 253 | "babylon": "^6.18.0" 254 | }, 255 | "dependencies": { 256 | "babylon": { 257 | "version": "6.18.0", 258 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 259 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" 260 | } 261 | } 262 | }, 263 | "content-disposition": { 264 | "version": "0.5.3", 265 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 266 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 267 | "requires": { 268 | "safe-buffer": "5.1.2" 269 | } 270 | }, 271 | "content-type": { 272 | "version": "1.0.4", 273 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 274 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 275 | }, 276 | "cookie": { 277 | "version": "0.4.0", 278 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 279 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 280 | }, 281 | "cookie-signature": { 282 | "version": "1.0.6", 283 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 284 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 285 | }, 286 | "core-util-is": { 287 | "version": "1.0.2", 288 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 289 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 290 | }, 291 | "dashdash": { 292 | "version": "1.14.1", 293 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 294 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 295 | "requires": { 296 | "assert-plus": "^1.0.0" 297 | }, 298 | "dependencies": { 299 | "assert-plus": { 300 | "version": "1.0.0", 301 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 302 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 303 | } 304 | } 305 | }, 306 | "debug": { 307 | "version": "2.6.9", 308 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 309 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 310 | "requires": { 311 | "ms": "2.0.0" 312 | } 313 | }, 314 | "decamelize": { 315 | "version": "1.2.0", 316 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 317 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 318 | }, 319 | "delayed-stream": { 320 | "version": "1.0.0", 321 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 322 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 323 | }, 324 | "depd": { 325 | "version": "1.1.2", 326 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 327 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 328 | }, 329 | "destroy": { 330 | "version": "1.0.4", 331 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 332 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 333 | }, 334 | "doctypes": { 335 | "version": "1.1.0", 336 | "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 337 | "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" 338 | }, 339 | "duplexer": { 340 | "version": "0.1.1", 341 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 342 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" 343 | }, 344 | "ecc-jsbn": { 345 | "version": "0.1.2", 346 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 347 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 348 | "requires": { 349 | "jsbn": "~0.1.0", 350 | "safer-buffer": "^2.1.0" 351 | } 352 | }, 353 | "ee-first": { 354 | "version": "1.1.1", 355 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 356 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 357 | }, 358 | "encodeurl": { 359 | "version": "1.0.2", 360 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 361 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 362 | }, 363 | "escape-html": { 364 | "version": "1.0.3", 365 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 366 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 367 | }, 368 | "escape-string-regexp": { 369 | "version": "1.0.5", 370 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 371 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 372 | }, 373 | "etag": { 374 | "version": "1.8.1", 375 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 376 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 377 | }, 378 | "event-stream": { 379 | "version": "3.3.4", 380 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 381 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", 382 | "requires": { 383 | "duplexer": "~0.1.1", 384 | "from": "~0", 385 | "map-stream": "~0.1.0", 386 | "pause-stream": "0.0.11", 387 | "split": "0.3", 388 | "stream-combiner": "~0.0.4", 389 | "through": "~2.3.1" 390 | } 391 | }, 392 | "express": { 393 | "version": "4.17.1", 394 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 395 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 396 | "requires": { 397 | "accepts": "~1.3.7", 398 | "array-flatten": "1.1.1", 399 | "body-parser": "1.19.0", 400 | "content-disposition": "0.5.3", 401 | "content-type": "~1.0.4", 402 | "cookie": "0.4.0", 403 | "cookie-signature": "1.0.6", 404 | "debug": "2.6.9", 405 | "depd": "~1.1.2", 406 | "encodeurl": "~1.0.2", 407 | "escape-html": "~1.0.3", 408 | "etag": "~1.8.1", 409 | "finalhandler": "~1.1.2", 410 | "fresh": "0.5.2", 411 | "merge-descriptors": "1.0.1", 412 | "methods": "~1.1.2", 413 | "on-finished": "~2.3.0", 414 | "parseurl": "~1.3.3", 415 | "path-to-regexp": "0.1.7", 416 | "proxy-addr": "~2.0.5", 417 | "qs": "6.7.0", 418 | "range-parser": "~1.2.1", 419 | "safe-buffer": "5.1.2", 420 | "send": "0.17.1", 421 | "serve-static": "1.14.1", 422 | "setprototypeof": "1.1.1", 423 | "statuses": "~1.5.0", 424 | "type-is": "~1.6.18", 425 | "utils-merge": "1.0.1", 426 | "vary": "~1.1.2" 427 | } 428 | }, 429 | "extsprintf": { 430 | "version": "1.3.0", 431 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 432 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 433 | }, 434 | "fast-deep-equal": { 435 | "version": "2.0.1", 436 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 437 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" 438 | }, 439 | "fast-json-stable-stringify": { 440 | "version": "2.0.0", 441 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 442 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 443 | }, 444 | "finalhandler": { 445 | "version": "1.1.2", 446 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 447 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 448 | "requires": { 449 | "debug": "2.6.9", 450 | "encodeurl": "~1.0.2", 451 | "escape-html": "~1.0.3", 452 | "on-finished": "~2.3.0", 453 | "parseurl": "~1.3.3", 454 | "statuses": "~1.5.0", 455 | "unpipe": "~1.0.0" 456 | } 457 | }, 458 | "form-data": { 459 | "version": "1.0.1", 460 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", 461 | "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", 462 | "requires": { 463 | "async": "^2.0.1", 464 | "combined-stream": "^1.0.5", 465 | "mime-types": "^2.1.11" 466 | } 467 | }, 468 | "forwarded": { 469 | "version": "0.1.2", 470 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 471 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 472 | }, 473 | "fresh": { 474 | "version": "0.5.2", 475 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 476 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 477 | }, 478 | "from": { 479 | "version": "0.1.7", 480 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 481 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" 482 | }, 483 | "fs-readfile-promise": { 484 | "version": "2.0.1", 485 | "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz", 486 | "integrity": "sha1-gAI4I5gfn//+AWCei+Zo9prknnA=", 487 | "requires": { 488 | "graceful-fs": "^4.1.2" 489 | } 490 | }, 491 | "fs-writefile-promise": { 492 | "version": "1.0.3", 493 | "resolved": "https://registry.npmjs.org/fs-writefile-promise/-/fs-writefile-promise-1.0.3.tgz", 494 | "integrity": "sha1-4C+bWP/CVe2CKtx6ARFPRF1I0GM=", 495 | "requires": { 496 | "mkdirp-promise": "^1.0.0", 497 | "pinkie-promise": "^1.0.0" 498 | }, 499 | "dependencies": { 500 | "pinkie-promise": { 501 | "version": "1.0.0", 502 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", 503 | "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", 504 | "requires": { 505 | "pinkie": "^1.0.0" 506 | } 507 | } 508 | } 509 | }, 510 | "function-bind": { 511 | "version": "1.1.1", 512 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 513 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 514 | }, 515 | "get-own-enumerable-property-symbols": { 516 | "version": "3.0.0", 517 | "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", 518 | "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" 519 | }, 520 | "getpass": { 521 | "version": "0.1.7", 522 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 523 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 524 | "requires": { 525 | "assert-plus": "^1.0.0" 526 | }, 527 | "dependencies": { 528 | "assert-plus": { 529 | "version": "1.0.0", 530 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 531 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 532 | } 533 | } 534 | }, 535 | "graceful-fs": { 536 | "version": "4.2.2", 537 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", 538 | "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" 539 | }, 540 | "har-schema": { 541 | "version": "2.0.0", 542 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 543 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 544 | }, 545 | "har-validator": { 546 | "version": "5.1.3", 547 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 548 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 549 | "requires": { 550 | "ajv": "^6.5.5", 551 | "har-schema": "^2.0.0" 552 | } 553 | }, 554 | "has": { 555 | "version": "1.0.3", 556 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 557 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 558 | "requires": { 559 | "function-bind": "^1.1.1" 560 | } 561 | }, 562 | "has-ansi": { 563 | "version": "2.0.0", 564 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 565 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 566 | "requires": { 567 | "ansi-regex": "^2.0.0" 568 | } 569 | }, 570 | "http-errors": { 571 | "version": "1.7.2", 572 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 573 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 574 | "requires": { 575 | "depd": "~1.1.2", 576 | "inherits": "2.0.3", 577 | "setprototypeof": "1.1.1", 578 | "statuses": ">= 1.5.0 < 2", 579 | "toidentifier": "1.0.0" 580 | } 581 | }, 582 | "httpsnippet": { 583 | "version": "1.19.1", 584 | "resolved": "https://registry.npmjs.org/httpsnippet/-/httpsnippet-1.19.1.tgz", 585 | "integrity": "sha512-QfzcIPziGhUZPFIpKKWgwcpEm8w1jYfm7xc7IM4gpvp+pzk8aCtyS2/lRUoQ+T28m/0i/2zstquht7Km8NVQcA==", 586 | "requires": { 587 | "chalk": "^1.1.1", 588 | "commander": "^2.9.0", 589 | "debug": "^2.2.0", 590 | "event-stream": "3.3.4", 591 | "form-data": "^1.0.0-rc3", 592 | "fs-readfile-promise": "^2.0.1", 593 | "fs-writefile-promise": "^1.0.3", 594 | "har-validator": "^5.0.0", 595 | "pinkie-promise": "^2.0.0", 596 | "stringify-object": "^3.3.0" 597 | } 598 | }, 599 | "iconv-lite": { 600 | "version": "0.4.24", 601 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 602 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 603 | "requires": { 604 | "safer-buffer": ">= 2.1.2 < 3" 605 | } 606 | }, 607 | "inherits": { 608 | "version": "2.0.3", 609 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 610 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 611 | }, 612 | "ipaddr.js": { 613 | "version": "1.9.0", 614 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 615 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" 616 | }, 617 | "is-buffer": { 618 | "version": "1.1.6", 619 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 620 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 621 | }, 622 | "is-expression": { 623 | "version": "3.0.0", 624 | "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", 625 | "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", 626 | "requires": { 627 | "acorn": "~4.0.2", 628 | "object-assign": "^4.0.1" 629 | }, 630 | "dependencies": { 631 | "acorn": { 632 | "version": "4.0.13", 633 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 634 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" 635 | }, 636 | "object-assign": { 637 | "version": "4.1.1", 638 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 639 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 640 | } 641 | } 642 | }, 643 | "is-obj": { 644 | "version": "1.0.1", 645 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 646 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" 647 | }, 648 | "is-promise": { 649 | "version": "2.1.0", 650 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 651 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 652 | }, 653 | "is-regex": { 654 | "version": "1.0.4", 655 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 656 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 657 | "requires": { 658 | "has": "^1.0.1" 659 | } 660 | }, 661 | "is-regexp": { 662 | "version": "1.0.0", 663 | "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", 664 | "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" 665 | }, 666 | "is-typedarray": { 667 | "version": "1.0.0", 668 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 669 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 670 | }, 671 | "isstream": { 672 | "version": "0.1.2", 673 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 674 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 675 | }, 676 | "js-stringify": { 677 | "version": "1.0.2", 678 | "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", 679 | "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" 680 | }, 681 | "jsbn": { 682 | "version": "0.1.1", 683 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 684 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 685 | }, 686 | "json-schema": { 687 | "version": "0.2.3", 688 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 689 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 690 | }, 691 | "json-schema-traverse": { 692 | "version": "0.4.1", 693 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 694 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 695 | }, 696 | "json-stringify-safe": { 697 | "version": "5.0.1", 698 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 699 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 700 | }, 701 | "jsprim": { 702 | "version": "1.4.1", 703 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 704 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 705 | "requires": { 706 | "assert-plus": "1.0.0", 707 | "extsprintf": "1.3.0", 708 | "json-schema": "0.2.3", 709 | "verror": "1.10.0" 710 | }, 711 | "dependencies": { 712 | "assert-plus": { 713 | "version": "1.0.0", 714 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 715 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 716 | } 717 | } 718 | }, 719 | "kind-of": { 720 | "version": "3.2.2", 721 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 722 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 723 | "requires": { 724 | "is-buffer": "^1.1.5" 725 | } 726 | }, 727 | "lazy-cache": { 728 | "version": "1.0.4", 729 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 730 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" 731 | }, 732 | "lodash": { 733 | "version": "4.17.15", 734 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 735 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 736 | }, 737 | "longest": { 738 | "version": "1.0.1", 739 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 740 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" 741 | }, 742 | "map-stream": { 743 | "version": "0.1.0", 744 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 745 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" 746 | }, 747 | "media-typer": { 748 | "version": "0.3.0", 749 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 750 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 751 | }, 752 | "merge-descriptors": { 753 | "version": "1.0.1", 754 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 755 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 756 | }, 757 | "methods": { 758 | "version": "1.1.2", 759 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 760 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 761 | }, 762 | "mime": { 763 | "version": "1.6.0", 764 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 765 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 766 | }, 767 | "mime-db": { 768 | "version": "1.40.0", 769 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 770 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" 771 | }, 772 | "mime-types": { 773 | "version": "2.1.24", 774 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 775 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 776 | "requires": { 777 | "mime-db": "1.40.0" 778 | } 779 | }, 780 | "mkdirp-promise": { 781 | "version": "1.1.0", 782 | "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz", 783 | "integrity": "sha1-LISJPtZ24NmPsY+5piEv0bK5qBk=" 784 | }, 785 | "morgan": { 786 | "version": "1.9.1", 787 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", 788 | "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", 789 | "requires": { 790 | "basic-auth": "~2.0.0", 791 | "debug": "2.6.9", 792 | "depd": "~1.1.2", 793 | "on-finished": "~2.3.0", 794 | "on-headers": "~1.0.1" 795 | } 796 | }, 797 | "ms": { 798 | "version": "2.0.0", 799 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 800 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 801 | }, 802 | "negotiator": { 803 | "version": "0.6.2", 804 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 805 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 806 | }, 807 | "oauth-sign": { 808 | "version": "0.9.0", 809 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 810 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 811 | }, 812 | "on-finished": { 813 | "version": "2.3.0", 814 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 815 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 816 | "requires": { 817 | "ee-first": "1.1.1" 818 | } 819 | }, 820 | "on-headers": { 821 | "version": "1.0.2", 822 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 823 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 824 | }, 825 | "parseurl": { 826 | "version": "1.3.3", 827 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 828 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 829 | }, 830 | "path-parse": { 831 | "version": "1.0.6", 832 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 833 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 834 | }, 835 | "path-to-regexp": { 836 | "version": "0.1.7", 837 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 838 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 839 | }, 840 | "pause-stream": { 841 | "version": "0.0.11", 842 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 843 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 844 | "requires": { 845 | "through": "~2.3" 846 | } 847 | }, 848 | "performance-now": { 849 | "version": "2.1.0", 850 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 851 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 852 | }, 853 | "pinkie": { 854 | "version": "1.0.0", 855 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", 856 | "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=" 857 | }, 858 | "pinkie-promise": { 859 | "version": "2.0.1", 860 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 861 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 862 | "requires": { 863 | "pinkie": "^2.0.0" 864 | }, 865 | "dependencies": { 866 | "pinkie": { 867 | "version": "2.0.4", 868 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 869 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 870 | } 871 | } 872 | }, 873 | "proxy-addr": { 874 | "version": "2.0.5", 875 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 876 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 877 | "requires": { 878 | "forwarded": "~0.1.2", 879 | "ipaddr.js": "1.9.0" 880 | } 881 | }, 882 | "psl": { 883 | "version": "1.3.0", 884 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", 885 | "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==" 886 | }, 887 | "pug": { 888 | "version": "2.0.4", 889 | "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", 890 | "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", 891 | "requires": { 892 | "pug-code-gen": "^2.0.2", 893 | "pug-filters": "^3.1.1", 894 | "pug-lexer": "^4.1.0", 895 | "pug-linker": "^3.0.6", 896 | "pug-load": "^2.0.12", 897 | "pug-parser": "^5.0.1", 898 | "pug-runtime": "^2.0.5", 899 | "pug-strip-comments": "^1.0.4" 900 | } 901 | }, 902 | "pug-attrs": { 903 | "version": "2.0.4", 904 | "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", 905 | "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", 906 | "requires": { 907 | "constantinople": "^3.0.1", 908 | "js-stringify": "^1.0.1", 909 | "pug-runtime": "^2.0.5" 910 | } 911 | }, 912 | "pug-code-gen": { 913 | "version": "2.0.2", 914 | "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", 915 | "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", 916 | "requires": { 917 | "constantinople": "^3.1.2", 918 | "doctypes": "^1.1.0", 919 | "js-stringify": "^1.0.1", 920 | "pug-attrs": "^2.0.4", 921 | "pug-error": "^1.3.3", 922 | "pug-runtime": "^2.0.5", 923 | "void-elements": "^2.0.1", 924 | "with": "^5.0.0" 925 | }, 926 | "dependencies": { 927 | "acorn": { 928 | "version": "3.3.0", 929 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 930 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" 931 | }, 932 | "acorn-globals": { 933 | "version": "3.1.0", 934 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", 935 | "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", 936 | "requires": { 937 | "acorn": "^4.0.4" 938 | }, 939 | "dependencies": { 940 | "acorn": { 941 | "version": "4.0.13", 942 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 943 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" 944 | } 945 | } 946 | }, 947 | "babylon": { 948 | "version": "6.18.0", 949 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 950 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" 951 | }, 952 | "constantinople": { 953 | "version": "3.1.2", 954 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", 955 | "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", 956 | "requires": { 957 | "@types/babel-types": "^7.0.0", 958 | "@types/babylon": "^6.16.2", 959 | "babel-types": "^6.26.0", 960 | "babylon": "^6.18.0" 961 | } 962 | }, 963 | "with": { 964 | "version": "5.1.1", 965 | "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", 966 | "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", 967 | "requires": { 968 | "acorn": "^3.1.0", 969 | "acorn-globals": "^3.0.0" 970 | } 971 | } 972 | } 973 | }, 974 | "pug-error": { 975 | "version": "1.3.3", 976 | "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", 977 | "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" 978 | }, 979 | "pug-filters": { 980 | "version": "3.1.1", 981 | "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", 982 | "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", 983 | "requires": { 984 | "clean-css": "^4.1.11", 985 | "constantinople": "^3.0.1", 986 | "jstransformer": "1.0.0", 987 | "pug-error": "^1.3.3", 988 | "pug-walk": "^1.1.8", 989 | "resolve": "^1.1.6", 990 | "uglify-js": "^2.6.1" 991 | }, 992 | "dependencies": { 993 | "asap": { 994 | "version": "2.0.6", 995 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 996 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 997 | }, 998 | "clean-css": { 999 | "version": "4.2.1", 1000 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", 1001 | "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", 1002 | "requires": { 1003 | "source-map": "~0.6.0" 1004 | } 1005 | }, 1006 | "jstransformer": { 1007 | "version": "1.0.0", 1008 | "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", 1009 | "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", 1010 | "requires": { 1011 | "is-promise": "^2.0.0", 1012 | "promise": "^7.0.1" 1013 | } 1014 | }, 1015 | "promise": { 1016 | "version": "7.3.1", 1017 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 1018 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 1019 | "requires": { 1020 | "asap": "~2.0.3" 1021 | } 1022 | }, 1023 | "source-map": { 1024 | "version": "0.6.1", 1025 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1026 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1027 | } 1028 | } 1029 | }, 1030 | "pug-lexer": { 1031 | "version": "4.1.0", 1032 | "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", 1033 | "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", 1034 | "requires": { 1035 | "character-parser": "^2.1.1", 1036 | "is-expression": "^3.0.0", 1037 | "pug-error": "^1.3.3" 1038 | }, 1039 | "dependencies": { 1040 | "character-parser": { 1041 | "version": "2.2.0", 1042 | "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", 1043 | "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", 1044 | "requires": { 1045 | "is-regex": "^1.0.3" 1046 | } 1047 | } 1048 | } 1049 | }, 1050 | "pug-linker": { 1051 | "version": "3.0.6", 1052 | "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", 1053 | "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", 1054 | "requires": { 1055 | "pug-error": "^1.3.3", 1056 | "pug-walk": "^1.1.8" 1057 | } 1058 | }, 1059 | "pug-load": { 1060 | "version": "2.0.12", 1061 | "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", 1062 | "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", 1063 | "requires": { 1064 | "object-assign": "^4.1.0", 1065 | "pug-walk": "^1.1.8" 1066 | }, 1067 | "dependencies": { 1068 | "object-assign": { 1069 | "version": "4.1.1", 1070 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1071 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1072 | } 1073 | } 1074 | }, 1075 | "pug-parser": { 1076 | "version": "5.0.1", 1077 | "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", 1078 | "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", 1079 | "requires": { 1080 | "pug-error": "^1.3.3", 1081 | "token-stream": "0.0.1" 1082 | } 1083 | }, 1084 | "pug-runtime": { 1085 | "version": "2.0.5", 1086 | "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", 1087 | "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" 1088 | }, 1089 | "pug-strip-comments": { 1090 | "version": "1.0.4", 1091 | "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", 1092 | "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", 1093 | "requires": { 1094 | "pug-error": "^1.3.3" 1095 | } 1096 | }, 1097 | "pug-walk": { 1098 | "version": "1.1.8", 1099 | "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", 1100 | "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" 1101 | }, 1102 | "punycode": { 1103 | "version": "2.1.1", 1104 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1105 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1106 | }, 1107 | "qs": { 1108 | "version": "6.7.0", 1109 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1110 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 1111 | }, 1112 | "range-parser": { 1113 | "version": "1.2.1", 1114 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1115 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1116 | }, 1117 | "raw-body": { 1118 | "version": "2.4.0", 1119 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1120 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1121 | "requires": { 1122 | "bytes": "3.1.0", 1123 | "http-errors": "1.7.2", 1124 | "iconv-lite": "0.4.24", 1125 | "unpipe": "1.0.0" 1126 | }, 1127 | "dependencies": { 1128 | "bytes": { 1129 | "version": "3.1.0", 1130 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 1131 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 1132 | } 1133 | } 1134 | }, 1135 | "regenerator-runtime": { 1136 | "version": "0.11.1", 1137 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1138 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 1139 | }, 1140 | "repeat-string": { 1141 | "version": "1.6.1", 1142 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1143 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 1144 | }, 1145 | "request": { 1146 | "version": "2.88.0", 1147 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", 1148 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", 1149 | "requires": { 1150 | "aws-sign2": "~0.7.0", 1151 | "aws4": "^1.8.0", 1152 | "caseless": "~0.12.0", 1153 | "combined-stream": "~1.0.6", 1154 | "extend": "~3.0.2", 1155 | "forever-agent": "~0.6.1", 1156 | "form-data": "~2.3.2", 1157 | "har-validator": "~5.1.0", 1158 | "http-signature": "~1.2.0", 1159 | "is-typedarray": "~1.0.0", 1160 | "isstream": "~0.1.2", 1161 | "json-stringify-safe": "~5.0.1", 1162 | "mime-types": "~2.1.19", 1163 | "oauth-sign": "~0.9.0", 1164 | "performance-now": "^2.1.0", 1165 | "qs": "~6.5.2", 1166 | "safe-buffer": "^5.1.2", 1167 | "tough-cookie": "~2.4.3", 1168 | "tunnel-agent": "^0.6.0", 1169 | "uuid": "^3.3.2" 1170 | }, 1171 | "dependencies": { 1172 | "assert-plus": { 1173 | "version": "1.0.0", 1174 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1175 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 1176 | }, 1177 | "aws-sign2": { 1178 | "version": "0.7.0", 1179 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 1180 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 1181 | }, 1182 | "extend": { 1183 | "version": "3.0.2", 1184 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1185 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 1186 | }, 1187 | "forever-agent": { 1188 | "version": "0.6.1", 1189 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1190 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 1191 | }, 1192 | "form-data": { 1193 | "version": "2.3.3", 1194 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 1195 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 1196 | "requires": { 1197 | "asynckit": "^0.4.0", 1198 | "combined-stream": "^1.0.6", 1199 | "mime-types": "^2.1.12" 1200 | } 1201 | }, 1202 | "http-signature": { 1203 | "version": "1.2.0", 1204 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1205 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1206 | "requires": { 1207 | "assert-plus": "^1.0.0", 1208 | "jsprim": "^1.2.2", 1209 | "sshpk": "^1.7.0" 1210 | } 1211 | }, 1212 | "punycode": { 1213 | "version": "1.4.1", 1214 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1215 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1216 | }, 1217 | "qs": { 1218 | "version": "6.5.2", 1219 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 1220 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 1221 | }, 1222 | "tough-cookie": { 1223 | "version": "2.4.3", 1224 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 1225 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", 1226 | "requires": { 1227 | "psl": "^1.1.24", 1228 | "punycode": "^1.4.1" 1229 | } 1230 | }, 1231 | "uuid": { 1232 | "version": "3.3.2", 1233 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 1234 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 1235 | } 1236 | } 1237 | }, 1238 | "resolve": { 1239 | "version": "1.12.0", 1240 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 1241 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 1242 | "requires": { 1243 | "path-parse": "^1.0.6" 1244 | } 1245 | }, 1246 | "right-align": { 1247 | "version": "0.1.3", 1248 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 1249 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 1250 | "requires": { 1251 | "align-text": "^0.1.1" 1252 | } 1253 | }, 1254 | "safe-buffer": { 1255 | "version": "5.1.2", 1256 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1257 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1258 | }, 1259 | "safer-buffer": { 1260 | "version": "2.1.2", 1261 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1262 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1263 | }, 1264 | "send": { 1265 | "version": "0.17.1", 1266 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1267 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1268 | "requires": { 1269 | "debug": "2.6.9", 1270 | "depd": "~1.1.2", 1271 | "destroy": "~1.0.4", 1272 | "encodeurl": "~1.0.2", 1273 | "escape-html": "~1.0.3", 1274 | "etag": "~1.8.1", 1275 | "fresh": "0.5.2", 1276 | "http-errors": "~1.7.2", 1277 | "mime": "1.6.0", 1278 | "ms": "2.1.1", 1279 | "on-finished": "~2.3.0", 1280 | "range-parser": "~1.2.1", 1281 | "statuses": "~1.5.0" 1282 | }, 1283 | "dependencies": { 1284 | "ms": { 1285 | "version": "2.1.1", 1286 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1287 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1288 | } 1289 | } 1290 | }, 1291 | "serve-static": { 1292 | "version": "1.14.1", 1293 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1294 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1295 | "requires": { 1296 | "encodeurl": "~1.0.2", 1297 | "escape-html": "~1.0.3", 1298 | "parseurl": "~1.3.3", 1299 | "send": "0.17.1" 1300 | } 1301 | }, 1302 | "setprototypeof": { 1303 | "version": "1.1.1", 1304 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1305 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1306 | }, 1307 | "should": { 1308 | "version": "5.2.0", 1309 | "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", 1310 | "integrity": "sha1-mkUZtEe4te7c6e7ZavNCDUUaVAs=", 1311 | "dev": true, 1312 | "requires": { 1313 | "should-equal": "0.3.1", 1314 | "should-format": "0.0.7", 1315 | "should-type": "0.0.4" 1316 | } 1317 | }, 1318 | "should-equal": { 1319 | "version": "0.3.1", 1320 | "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.3.1.tgz", 1321 | "integrity": "sha1-vY6pemdI45+tR2o75v1y68LnK/A=", 1322 | "dev": true, 1323 | "requires": { 1324 | "should-type": "0.0.4" 1325 | } 1326 | }, 1327 | "should-format": { 1328 | "version": "0.0.7", 1329 | "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.0.7.tgz", 1330 | "integrity": "sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI=", 1331 | "dev": true, 1332 | "requires": { 1333 | "should-type": "0.0.4" 1334 | } 1335 | }, 1336 | "should-type": { 1337 | "version": "0.0.4", 1338 | "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.0.4.tgz", 1339 | "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", 1340 | "dev": true 1341 | }, 1342 | "split": { 1343 | "version": "0.3.3", 1344 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 1345 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", 1346 | "requires": { 1347 | "through": "2" 1348 | } 1349 | }, 1350 | "sshpk": { 1351 | "version": "1.16.1", 1352 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1353 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1354 | "requires": { 1355 | "asn1": "~0.2.3", 1356 | "assert-plus": "^1.0.0", 1357 | "bcrypt-pbkdf": "^1.0.0", 1358 | "dashdash": "^1.12.0", 1359 | "ecc-jsbn": "~0.1.1", 1360 | "getpass": "^0.1.1", 1361 | "jsbn": "~0.1.0", 1362 | "safer-buffer": "^2.0.2", 1363 | "tweetnacl": "~0.14.0" 1364 | }, 1365 | "dependencies": { 1366 | "asn1": { 1367 | "version": "0.2.4", 1368 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 1369 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 1370 | "requires": { 1371 | "safer-buffer": "~2.1.0" 1372 | } 1373 | }, 1374 | "assert-plus": { 1375 | "version": "1.0.0", 1376 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1377 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 1378 | } 1379 | } 1380 | }, 1381 | "statuses": { 1382 | "version": "1.5.0", 1383 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1384 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1385 | }, 1386 | "stream-combiner": { 1387 | "version": "0.0.4", 1388 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 1389 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", 1390 | "requires": { 1391 | "duplexer": "~0.1.1" 1392 | } 1393 | }, 1394 | "stringify-object": { 1395 | "version": "3.3.0", 1396 | "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", 1397 | "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", 1398 | "requires": { 1399 | "get-own-enumerable-property-symbols": "^3.0.0", 1400 | "is-obj": "^1.0.1", 1401 | "is-regexp": "^1.0.0" 1402 | } 1403 | }, 1404 | "strip-ansi": { 1405 | "version": "3.0.1", 1406 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1407 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1408 | "requires": { 1409 | "ansi-regex": "^2.0.0" 1410 | } 1411 | }, 1412 | "supports-color": { 1413 | "version": "2.0.0", 1414 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1415 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1416 | }, 1417 | "through": { 1418 | "version": "2.3.8", 1419 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1420 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1421 | }, 1422 | "to-fast-properties": { 1423 | "version": "1.0.3", 1424 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1425 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 1426 | }, 1427 | "toidentifier": { 1428 | "version": "1.0.0", 1429 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1430 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1431 | }, 1432 | "token-stream": { 1433 | "version": "0.0.1", 1434 | "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", 1435 | "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" 1436 | }, 1437 | "tunnel-agent": { 1438 | "version": "0.6.0", 1439 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1440 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1441 | "requires": { 1442 | "safe-buffer": "^5.0.1" 1443 | } 1444 | }, 1445 | "tweetnacl": { 1446 | "version": "0.14.5", 1447 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1448 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1449 | }, 1450 | "type-is": { 1451 | "version": "1.6.18", 1452 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1453 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1454 | "requires": { 1455 | "media-typer": "0.3.0", 1456 | "mime-types": "~2.1.24" 1457 | } 1458 | }, 1459 | "uglify-js": { 1460 | "version": "2.8.29", 1461 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 1462 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 1463 | "requires": { 1464 | "source-map": "~0.5.1", 1465 | "uglify-to-browserify": "~1.0.0", 1466 | "yargs": "~3.10.0" 1467 | }, 1468 | "dependencies": { 1469 | "source-map": { 1470 | "version": "0.5.7", 1471 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1472 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 1473 | } 1474 | } 1475 | }, 1476 | "uglify-to-browserify": { 1477 | "version": "1.0.2", 1478 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 1479 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 1480 | "optional": true 1481 | }, 1482 | "unirest": { 1483 | "version": "0.6.0", 1484 | "resolved": "https://registry.npmjs.org/unirest/-/unirest-0.6.0.tgz", 1485 | "integrity": "sha512-BdYdcYJHXACqZ53k8Zz7QlNK/1W/HjCZlmg1OaaN/oTSp4FTWh0upXGSJsG88PljDBpSrNc2R649drasUA9NEg==", 1486 | "requires": { 1487 | "form-data": "^0.2.0", 1488 | "mime": "^2.4.0", 1489 | "request": "^2.88.0" 1490 | }, 1491 | "dependencies": { 1492 | "async": { 1493 | "version": "0.9.2", 1494 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 1495 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 1496 | }, 1497 | "combined-stream": { 1498 | "version": "0.0.7", 1499 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", 1500 | "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", 1501 | "requires": { 1502 | "delayed-stream": "0.0.5" 1503 | } 1504 | }, 1505 | "delayed-stream": { 1506 | "version": "0.0.5", 1507 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", 1508 | "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" 1509 | }, 1510 | "form-data": { 1511 | "version": "0.2.0", 1512 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", 1513 | "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", 1514 | "requires": { 1515 | "async": "~0.9.0", 1516 | "combined-stream": "~0.0.4", 1517 | "mime-types": "~2.0.3" 1518 | } 1519 | }, 1520 | "mime": { 1521 | "version": "2.4.4", 1522 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", 1523 | "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" 1524 | }, 1525 | "mime-db": { 1526 | "version": "1.12.0", 1527 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", 1528 | "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" 1529 | }, 1530 | "mime-types": { 1531 | "version": "2.0.14", 1532 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", 1533 | "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", 1534 | "requires": { 1535 | "mime-db": "~1.12.0" 1536 | } 1537 | } 1538 | } 1539 | }, 1540 | "unpipe": { 1541 | "version": "1.0.0", 1542 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1543 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1544 | }, 1545 | "uri-js": { 1546 | "version": "4.2.2", 1547 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1548 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1549 | "requires": { 1550 | "punycode": "^2.1.0" 1551 | } 1552 | }, 1553 | "utils-merge": { 1554 | "version": "1.0.1", 1555 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1556 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1557 | }, 1558 | "vary": { 1559 | "version": "1.1.2", 1560 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1561 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1562 | }, 1563 | "verror": { 1564 | "version": "1.10.0", 1565 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1566 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1567 | "requires": { 1568 | "assert-plus": "^1.0.0", 1569 | "core-util-is": "1.0.2", 1570 | "extsprintf": "^1.2.0" 1571 | }, 1572 | "dependencies": { 1573 | "assert-plus": { 1574 | "version": "1.0.0", 1575 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1576 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 1577 | } 1578 | } 1579 | }, 1580 | "void-elements": { 1581 | "version": "2.0.1", 1582 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 1583 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" 1584 | }, 1585 | "window-size": { 1586 | "version": "0.1.0", 1587 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 1588 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" 1589 | }, 1590 | "yargs": { 1591 | "version": "3.10.0", 1592 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 1593 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 1594 | "requires": { 1595 | "camelcase": "^1.0.2", 1596 | "cliui": "^2.1.0", 1597 | "decamelize": "^1.0.0", 1598 | "window-size": "0.1.0" 1599 | } 1600 | } 1601 | } 1602 | } 1603 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "version": "1.0.0", 4 | "name": "apiembed", 5 | "description": "Embeddable API Code Snippets", 6 | "author": "Kong (https://www.konghq.com/)", 7 | "homepage": "https://apiembed.com/", 8 | "license": "MIT", 9 | "keywords": [ 10 | "HAR", 11 | "HTTP", 12 | "API", 13 | "Embed", 14 | "Snippet" 15 | ], 16 | "engines": { 17 | "node": ">=0.12" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/Kong/apiembed" 22 | }, 23 | "bugs": { 24 | "url": "https://github.com/Kong/apiembed/issues" 25 | }, 26 | "scripts": { 27 | "test": "echo 'No test suite'; exit 0" 28 | }, 29 | "standard": { 30 | "ignore": [ 31 | "**/test/fixtures/**" 32 | ] 33 | }, 34 | "eslintConfig": { 35 | "env": { 36 | "node": true 37 | } 38 | }, 39 | "config": { 40 | "port": 8080 41 | }, 42 | "devDependencies": { 43 | "should": "^5.2.0" 44 | }, 45 | "dependencies": { 46 | "compression": "^1.4.3", 47 | "debug": "^2.1.3", 48 | "express": "^4.12.3", 49 | "httpsnippet": "latest", 50 | "pug": "^2.0.4", 51 | "morgan": "^1.5.2", 52 | "unirest": "^0.6.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node, mocha */ 2 | 3 | "use strict"; 4 | 5 | var app = require("./app"); 6 | var cluster = require("cluster"); 7 | var os = require("os"); 8 | 9 | var WORKERS = process.env.WEB_CONCURRENCY || os.cpus().length; 10 | 11 | if (cluster.isMaster) { 12 | // Spawn as many workers as there are CPUs in the system. 13 | for (var i = 0; i < WORKERS; i++) { 14 | cluster.fork(); 15 | } 16 | 17 | cluster.on("exit", function(worker/*, code, signal*/) { 18 | console.info("worker", worker.process.pid, "died :("); 19 | console.info("spawning a new worker"); 20 | cluster.fork(); 21 | }); 22 | } else { 23 | app(function() { 24 | console.info("spawning worker #" + cluster.worker.id); 25 | }); 26 | } 27 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kong/apiembed/7936c76066a47abbb3d1590a6f97370aa8f3c946/static/favicon.ico -------------------------------------------------------------------------------- /views/error.pug: -------------------------------------------------------------------------------- 1 | extends layout.jade 2 | 3 | block styles 4 | style. 5 | code.error { 6 | display: block; 7 | font-size: 15px; 8 | text-align: center; 9 | } 10 | 11 | block content 12 | div#embed 13 | div.tab-content 14 | div.tab-pane.active(id= target): pre: code.error.text-danger!= message 15 | 16 | footer Powered by #[a(href="https://apiembed.com/", target="_blank") APIembed] 17 | -------------------------------------------------------------------------------- /views/layout.pug: -------------------------------------------------------------------------------- 1 | - var title = 'APIembed by Kong'; 2 | - var description = 'Auto-generated code snippets in many programming languages for your website, blog or API documentation. Made with Love by Kong.'; 3 | 4 | doctype html 5 | html(lang='en', itemscope, itemtype='http://schema.org/Product') 6 | head(prefix='og: http://ogp.me/ns# website: http://ogp.me/ns/website#') 7 | 8 | meta(charset='utf-8') 9 | meta(http-equiv='X-UA-Compatible', content='IE=edge') 10 | meta(name='robots', content='index,follow') 11 | meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no') 12 | 13 | title= title 14 | meta(itemprop='name', content= title) 15 | meta(property='og:title', content= title) 16 | meta(name='twitter:title', content= title) 17 | 18 | link(rel='author', href='https://www.konghq.com/') 19 | meta(name='author', content='Kong') 20 | meta(name='twitter:creator', content='@thekonginc') 21 | 22 | meta(name='description', content= description) 23 | meta(itemprop='description', content= description) 24 | meta(property='og:description', content= description) 25 | meta(name='twitter:description', content= description) 26 | 27 | meta(itemprop='image', content='https://apiembed.com/share.png') 28 | meta(property='og:image', content='https://apiembed.com/share.png') 29 | meta(name='twitter:image:src', content='https://apiembed.com/share-twitter.png') 30 | 31 | meta(name='twitter:card', content='summary') 32 | meta(name='twitter:site', content='@thekonginc') 33 | meta(name='twitter:domain', content='apiembed.com') 34 | 35 | link(rel='canonical', href='https://apiembed.com/') 36 | meta(property='og:url', content='https://apiembed.com/') 37 | meta(name='twitter:url', content='https://apiembed.com/') 38 | 39 | meta(property='og:type', content='website') 40 | meta(property='og:site_name', content= title) 41 | meta(property='fb:admins', content='227304446') 42 | meta(property='fb:admins', content='576641408') 43 | 44 | link(rel='shortcut icon', href='/favicon.ico') 45 | link(rel='icon', type='image/x-icon', href='/favicon.ico') 46 | 47 | meta(name='google-site-verification', content='RZH9o8AG09CMZVyIgR5YRf-ErrNuqRj-YorgKe50_us') 48 | 49 | link(rel='stylesheet', type='text/css', href='https://fonts.googleapis.com/css?family=Open+Sans:400,600|Source+Code+Pro:200,300,400,500,600,700,900', media='all') 50 | link(rel='stylesheet', type='text/css', href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.css', media='all') 51 | link(rel='stylesheet', type='text/css', href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.min.css', media='all') 52 | link(rel='stylesheet', type='text/css', href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/tomorrow.min.css', media='all') 53 | 54 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js') 55 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js') 56 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js') 57 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/languages/ocaml.min.js') 58 | script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js') 59 | 60 | style. 61 | * { 62 | -webkit-font-smoothing:antialiased; 63 | -moz-osx-font-smoothing:grayscale; 64 | } 65 | 66 | body { 67 | font-family: 'Open Sans', sans-serif; 68 | background-color: transparent; 69 | overflow: hidden; 70 | } 71 | 72 | code, kbd, pre, samp { 73 | font-family: 'Source Code Pro', Menlo, Monaco, Consolas, 'Courier New', monospace; 74 | } 75 | 76 | #embed { 77 | position: relative; 78 | 79 | border-radius: 4px; 80 | border: 1px solid #C7C7C7; 81 | border: 1px solid rgba(0, 0, 0, .22); 82 | background-color: #FFFFFF; 83 | 84 | box-shadow: 1px 0px 3px rgba(0, 0, 0, .15); 85 | 86 | -moz-background-clip: padding; 87 | -webkit-background-clip: padding-box; 88 | background-clip: padding-box; 89 | } 90 | 91 | #embed header { 92 | height: 50px; 93 | border-bottom: 1px solid #EAEAEA; 94 | background-color: #FCFCFC; 95 | border-top-left-radius: 4px; 96 | border-top-right-radius: 4px; 97 | } 98 | 99 | #embed .nav-tabs { 100 | border: 0; 101 | height: 51px; 102 | width: 10000px; 103 | position: absolute; 104 | } 105 | 106 | #embed .nav-tabs > li { 107 | margin-bottom: 0; 108 | } 109 | 110 | #embed .nav-tabs > li a, 111 | #embed .nav-tabs > li a:focus { 112 | border-top: none; 113 | border-bottom: none; 114 | border-radius: 0; 115 | 116 | color: #8C9093; 117 | font-size: 13px; 118 | font-weight: 600; 119 | 120 | padding: 16px; 121 | margin-right: 0; 122 | } 123 | 124 | #embed .nav-tabs > li:not(.active) a:hover { 125 | color: #41484C; 126 | background-color: #FCFCFC; 127 | } 128 | 129 | #embed .nav-tabs .open > a { 130 | border-color: #E6E6E6; 131 | background-color: #FCFCFC; 132 | } 133 | 134 | #embed .nav-tabs { 135 | border-top-left-radius: 4px; 136 | border-top-right-radius: 4px; 137 | } 138 | 139 | #embed .nav-tabs > li:first-of-type > a { 140 | border-left: none; 141 | border-top-left-radius: 4px; 142 | } 143 | 144 | #embed .nav-tabs > li.active > a, 145 | #embed .nav-tabs > li.active > a:focus, 146 | #embed .nav-tabs > li.active > a:hover { 147 | color: #216FA6; 148 | border-color: #E6E6E6; 149 | } 150 | 151 | #embed .nav-tabs > .dropdown.active > a { 152 | color: #41484C; 153 | } 154 | 155 | #embed .nav-tabs > .dropdown > .dropdown-menu a .fa { 156 | opacity: 0; 157 | } 158 | 159 | #embed .nav-tabs > .dropdown.active > .dropdown-menu > .active > a .fa { 160 | opacity: 1; 161 | } 162 | 163 | #embed .nav-tabs > .dropdown.active > .dropdown-menu > .active > a, 164 | #embed .nav-tabs > .dropdown.active > .dropdown-menu > .active > a:focus, 165 | #embed .nav-tabs > .dropdown.active > .dropdown-menu > .active > a:hover { 166 | color: #216FA6; 167 | background-color: #F2F9FF; 168 | } 169 | 170 | #embed .dropdown-menu { 171 | padding: 0; 172 | border-radius: 0; 173 | 174 | border-top: 0; 175 | margin-top: 0; 176 | 177 | background-color: #FCFCFC; 178 | box-shadow: 0 3px 3px rgba(0, 0, 0, .15); 179 | } 180 | 181 | #embed .btn-dropdown { 182 | position: absolute; 183 | top: 0; 184 | right: 0; 185 | } 186 | 187 | #embed .btn-dropdown .btn { 188 | border: 0; 189 | border-radius: 0; 190 | 191 | padding: 15px; 192 | background-color: transparent; 193 | } 194 | 195 | #embed .btn-dropdown .dropdown-menu { 196 | overflow: auto; 197 | } 198 | 199 | #embed .btn-dropdown .dropdown-menu .fa { 200 | display: none; 201 | } 202 | 203 | #embed .btn-dropdown .dropdown-menu > .active .fa { 204 | display: inline-block; 205 | } 206 | 207 | #embed .btn-dropdown .dropdown-menu > li > a { 208 | padding: 10px; 209 | color: #8C9093; 210 | } 211 | 212 | 213 | #embed .btn-dropdown .dropdown-menu > .dropdown-header { 214 | padding: 10px; 215 | font-weight: 700; 216 | } 217 | 218 | #embed .btn-dropdown .dropdown-menu > .active > a, 219 | #embed .btn-dropdown .dropdown-menu > .active > a:focus, 220 | #embed .btn-dropdown .dropdown-menu > .active > a:hover { 221 | color: #216FA6; 222 | background-color: #F2F9FF; 223 | } 224 | 225 | #embed .tab-content .tab-pane, 226 | #embed .tab-content .tab-pane pre, 227 | #embed .tab-content .tab-pane pre code { 228 | height: 100%; 229 | 230 | white-space: pre; 231 | word-break: normal; 232 | word-wrap: normal; 233 | } 234 | 235 | #embed .tab-content .tab-pane .btn-clipboard { 236 | position: absolute; 237 | bottom: 4px; 238 | right: 5px; 239 | 240 | border-color: #D7D9DB; 241 | 242 | color: #399ee5; 243 | font-size: 11px; 244 | font-weight: 600; 245 | 246 | padding: 3px 7px; 247 | 248 | background: #F7F7F7; 249 | background: -moz-linear-gradient(0deg, #F7F7F7 0%, #FFFFFF 100%); 250 | background: -webkit-linear-gradient(0deg, #F7F7F7 0%, #FFFFFF 100%); 251 | background: -o-linear-gradient(0deg, #F7F7F7 0%, #FFFFFF 100%); 252 | background: -ms-linear-gradient(0deg, #F7F7F7 0%, #FFFFFF 100%); 253 | background: linear-gradient(0deg, #F7F7F7 0%, #FFFFFF 100%); 254 | } 255 | 256 | #embed footer { 257 | padding: 10px 15px; 258 | 259 | color: #7b858c; 260 | font-size: 11px; 261 | font-weight: 600; 262 | 263 | border-top: 1px solid #E6E6E6; 264 | border-bottom-left-radius: 4px; 265 | border-bottom-right-radius: 4px; 266 | 267 | background-color: #FFFFFF; 268 | } 269 | 270 | #embed footer a { 271 | color: #7b858c; 272 | } 273 | 274 | #embed:hover footer a { 275 | color: #399ee5; 276 | } 277 | 278 | #embed pre { 279 | margin: 0; 280 | padding: 0; 281 | 282 | border: none; 283 | border-radius: 0; 284 | 285 | background-color: #FFFFFF; 286 | } 287 | 288 | #embed pre code { 289 | padding: 15px; 290 | } 291 | 292 | .hljs { 293 | padding: 0; 294 | } 295 | 296 | block styles 297 | 298 | body 299 | block content 300 | 301 | block scripts 302 | 303 | script(type='text/javascript'). 304 | !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t li').each(function () { 75 | var tab = $(this) 76 | var link = tab.find('a') 77 | 78 | totalWidth += tab.width() 79 | 80 | if (tab.position().left + tab.width() + 100 > windowWidth) { 81 | tab.addClass('hidden') 82 | 83 | $('.btn-dropdown a[href*="' + link.attr('href') + '"]').removeClass('hidden') 84 | $('.btn-dropdown li[data-clients*="' + link.attr('href') + '"]').removeClass('hidden') 85 | } else { 86 | tab.removeClass('hidden') 87 | 88 | $('.btn-dropdown a[href*="' + link.attr('href') + '"]').addClass('hidden') 89 | $('.btn-dropdown li[data-clients*="' + link.attr('href') + '"]').addClass('hidden') 90 | } 91 | }) 92 | 93 | if (totalWidth + 50 > windowWidth) { 94 | $('.btn-dropdown').removeClass('hidden') 95 | } else { 96 | $('.btn-dropdown').addClass('hidden') 97 | } 98 | 99 | $('.dropdown-menu').css('max-height', $(this).height() - 100) 100 | }).resize() 101 | 102 | // dropdown click events 103 | $('.btn-dropdown a[data-toggle="tab"]').on('click', function (e) { 104 | e.preventDefault() 105 | 106 | $('.btn-dropdown .active').removeClass('active') 107 | $('.nav-tabs .active').removeClass('active') 108 | 109 | $(this).tab('show') 110 | 111 | $('a[href="' + $(e.target).attr('href') + '"]').parent().addClass('active') 112 | }); 113 | 114 | // highlight the code 115 | $('.tab-content pre code').each(function (i, block) { 116 | hljs.highlightBlock(block) 117 | }) 118 | }) 119 | --------------------------------------------------------------------------------