├── .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 |
--------------------------------------------------------------------------------