mirror of
https://github.com/bitinflow/server.git
synced 2026-03-13 13:35:53 +00:00
replace express with koa
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
"bluebird": "3.5.1",
|
"bluebird": "3.5.1",
|
||||||
"book": "1.3.3",
|
"book": "1.3.3",
|
||||||
"debug": "3.1.0",
|
"debug": "3.1.0",
|
||||||
"express": "4.14.0",
|
"koa": "2.4.1",
|
||||||
"localenv": "0.2.2",
|
"localenv": "0.2.2",
|
||||||
"on-finished": "2.3.0",
|
"on-finished": "2.3.0",
|
||||||
"optimist": "0.6.1",
|
"optimist": "0.6.1",
|
||||||
|
|||||||
170
server.js
170
server.js
@@ -1,5 +1,5 @@
|
|||||||
import log from 'book';
|
import log from 'book';
|
||||||
import express from 'express';
|
import Koa from 'koa';
|
||||||
import tldjs from 'tldjs';
|
import tldjs from 'tldjs';
|
||||||
import on_finished from 'on-finished';
|
import on_finished from 'on-finished';
|
||||||
import Debug from 'debug';
|
import Debug from 'debug';
|
||||||
@@ -24,7 +24,23 @@ const stats = {
|
|||||||
|
|
||||||
// handle proxying a request to a client
|
// handle proxying a request to a client
|
||||||
// will wait for a tunnel socket to become available
|
// will wait for a tunnel socket to become available
|
||||||
function maybe_bounce(req, res, sock, head) {
|
function DoBounce(req, res, sock) {
|
||||||
|
req.on('error', (err) => {
|
||||||
|
console.error('request', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
res.on('error', (err) => {
|
||||||
|
console.error('response', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sock) {
|
||||||
|
sock.on('error', (err) => {
|
||||||
|
console.error('response', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// without a hostname, we won't know who the request is for
|
// without a hostname, we won't know who the request is for
|
||||||
const hostname = req.headers.host;
|
const hostname = req.headers.host;
|
||||||
if (!hostname) {
|
if (!hostname) {
|
||||||
@@ -168,10 +184,9 @@ function maybe_bounce(req, res, sock, head) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a new tunnel with `id`
|
// create a new tunnel with `id`
|
||||||
function new_client(id, opt, cb) {
|
// if the id is already used, a random id is assigned
|
||||||
|
const NewClient = async (id, opt) => {
|
||||||
// can't ask for id already is use
|
// can't ask for id already is use
|
||||||
// TODO check this new id again
|
|
||||||
if (clients[id]) {
|
if (clients[id]) {
|
||||||
id = rand_id();
|
id = rand_id();
|
||||||
}
|
}
|
||||||
@@ -192,17 +207,21 @@ function new_client(id, opt, cb) {
|
|||||||
delete clients[id];
|
delete clients[id];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
// each local client has a tcp server to link with the remove localtunnel client
|
||||||
|
// this starts the server and waits until it is listening
|
||||||
client.start((err, info) => {
|
client.start((err, info) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
// clear the reserved client id
|
||||||
delete clients[id];
|
delete clients[id];
|
||||||
cb(err);
|
reject(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
++stats.tunnels;
|
++stats.tunnels;
|
||||||
|
|
||||||
info.id = id;
|
info.id = id;
|
||||||
cb(err, info);
|
resolve(info);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,98 +230,95 @@ module.exports = function(opt) {
|
|||||||
|
|
||||||
const schema = opt.secure ? 'https' : 'http';
|
const schema = opt.secure ? 'https' : 'http';
|
||||||
|
|
||||||
const app = express();
|
const app = new Koa();
|
||||||
|
|
||||||
app.get('/', function(req, res, next) {
|
// api status endpoint
|
||||||
if (req.query['new'] === undefined) {
|
app.use(async (ctx, next) => {
|
||||||
return next();
|
const path = ctx.request.path;
|
||||||
|
if (path !== '/api/status') {
|
||||||
|
await next();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const req_id = rand_id();
|
ctx.body = {
|
||||||
debug('making new client with id %s', req_id);
|
|
||||||
new_client(req_id, opt, function(err, info) {
|
|
||||||
if (err) {
|
|
||||||
res.statusCode = 500;
|
|
||||||
return res.end(err.message);
|
|
||||||
}
|
|
||||||
|
|
||||||
const url = schema + '://' + req_id + '.' + req.headers.host;
|
|
||||||
info.url = url;
|
|
||||||
res.json(info);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/', function(req, res, next) {
|
|
||||||
res.redirect('https://localtunnel.github.io/www/');
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/api/status', function(req, res, next) {
|
|
||||||
res.json({
|
|
||||||
tunnels: stats.tunnels,
|
tunnels: stats.tunnels,
|
||||||
mem: process.memoryUsage(),
|
mem: process.memoryUsage(),
|
||||||
});
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/:req_id', function(req, res, next) {
|
// root endpoint
|
||||||
const req_id = req.params.req_id;
|
app.use(async (ctx, next) => {
|
||||||
|
const path = ctx.request.path;
|
||||||
|
|
||||||
|
// skip anything not on the root path
|
||||||
|
if (path !== '/') {
|
||||||
|
await next();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isNewClientRequest = ctx.query['new'] !== undefined;
|
||||||
|
if (isNewClientRequest) {
|
||||||
|
const req_id = rand_id();
|
||||||
|
debug('making new client with id %s', req_id);
|
||||||
|
const info = await NewClient(req_id, opt);
|
||||||
|
|
||||||
|
const url = schema + '://' + info.id + '.' + ctx.request.host;
|
||||||
|
info.url = url;
|
||||||
|
ctx.body = info;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// no new client request, send to landing page
|
||||||
|
ctx.redirect('https://localtunnel.github.io/www/');
|
||||||
|
});
|
||||||
|
|
||||||
|
// anything after the / path is a request for a specific client name
|
||||||
|
// This is a backwards compat feature
|
||||||
|
app.use(async (ctx, next) => {
|
||||||
|
const parts = ctx.request.path.split('/');
|
||||||
|
|
||||||
|
// any request with several layers of paths is not allowed
|
||||||
|
// rejects /foo/bar
|
||||||
|
// allow /foo
|
||||||
|
if (parts.length !== 2) {
|
||||||
|
await next();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const req_id = parts[1];
|
||||||
|
|
||||||
// limit requested hostnames to 63 characters
|
// limit requested hostnames to 63 characters
|
||||||
if (! /^[a-z0-9]{4,63}$/.test(req_id)) {
|
if (! /^[a-z0-9]{4,63}$/.test(req_id)) {
|
||||||
const err = new Error('Invalid subdomain. Subdomains must be lowercase and between 4 and 63 alphanumeric characters.');
|
const msg = 'Invalid subdomain. Subdomains must be lowercase and between 4 and 63 alphanumeric characters.';
|
||||||
err.statusCode = 403;
|
ctx.status = 403;
|
||||||
return next(err);
|
ctx.body = {
|
||||||
|
message: msg,
|
||||||
|
};
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
debug('making new client with id %s', req_id);
|
debug('making new client with id %s', req_id);
|
||||||
new_client(req_id, opt, function(err, info) {
|
const info = await NewClient(req_id, opt);
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
const url = schema + '://' + info.id + '.' + req.headers.host;
|
const url = schema + '://' + info.id + '.' + ctx.request.host;
|
||||||
info.url = url;
|
info.url = url;
|
||||||
res.json(info);
|
ctx.body = info;
|
||||||
});
|
return;
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use(function(err, req, res, next) {
|
|
||||||
const status = err.statusCode || err.status || 500;
|
|
||||||
res.status(status).json({
|
|
||||||
message: err.message
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const server = http.createServer();
|
const server = http.createServer();
|
||||||
|
|
||||||
server.on('request', function(req, res) {
|
const appCallback = app.callback();
|
||||||
|
server.on('request', (req, res) => {
|
||||||
req.on('error', (err) => {
|
if (DoBounce(req, res, null)) {
|
||||||
console.error('request', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
res.on('error', (err) => {
|
|
||||||
console.error('response', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
debug('request %s', req.url);
|
|
||||||
if (maybe_bounce(req, res, null, null)) {
|
|
||||||
return;
|
return;
|
||||||
};
|
}
|
||||||
|
|
||||||
app(req, res);
|
appCallback(req, res);
|
||||||
});
|
});
|
||||||
|
|
||||||
server.on('upgrade', function(req, socket, head) {
|
server.on('upgrade', (req, socket, head) => {
|
||||||
req.on('error', (err) => {
|
if (DoBounce(req, null, socket)) {
|
||||||
console.error('ws req', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('error', (err) => {
|
|
||||||
console.error('ws socket', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (maybe_bounce(req, null, socket, head)) {
|
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
318
yarn.lock
318
yarn.lock
@@ -2,7 +2,7 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
accepts@~1.3.3:
|
accepts@^1.2.2:
|
||||||
version "1.3.4"
|
version "1.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
|
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -21,14 +21,14 @@ ansicolors@~0.2.1:
|
|||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
|
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
|
||||||
|
|
||||||
|
any-promise@^1.1.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||||
|
|
||||||
array-find-index@^1.0.1:
|
array-find-index@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||||
|
|
||||||
array-flatten@1.1.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
|
|
||||||
|
|
||||||
asn1@0.1.11:
|
asn1@0.1.11:
|
||||||
version "0.1.11"
|
version "0.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7"
|
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7"
|
||||||
@@ -282,6 +282,10 @@ cliui@^3.0.3:
|
|||||||
strip-ansi "^3.0.1"
|
strip-ansi "^3.0.1"
|
||||||
wrap-ansi "^2.0.0"
|
wrap-ansi "^2.0.0"
|
||||||
|
|
||||||
|
co@^4.6.0:
|
||||||
|
version "4.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||||
|
|
||||||
code-point-at@^1.0.0:
|
code-point-at@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||||
@@ -316,11 +320,11 @@ concat-map@0.0.1:
|
|||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
|
|
||||||
content-disposition@0.5.1:
|
content-disposition@~0.5.0:
|
||||||
version "0.5.1"
|
version "0.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b"
|
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
|
||||||
|
|
||||||
content-type@~1.0.2:
|
content-type@^1.0.0:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||||
|
|
||||||
@@ -328,13 +332,12 @@ convert-source-map@^1.5.0:
|
|||||||
version "1.5.1"
|
version "1.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
|
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
|
||||||
|
|
||||||
cookie-signature@1.0.6:
|
cookies@~0.7.0:
|
||||||
version "1.0.6"
|
version "0.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.1.tgz#7c8a615f5481c61ab9f16c833731bcb8f663b99b"
|
||||||
|
dependencies:
|
||||||
cookie@0.3.1:
|
depd "~1.1.1"
|
||||||
version "0.3.1"
|
keygrip "~1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
|
||||||
|
|
||||||
core-js@^2.4.0, core-js@^2.5.0:
|
core-js@^2.4.0, core-js@^2.5.0:
|
||||||
version "2.5.2"
|
version "2.5.2"
|
||||||
@@ -371,18 +374,18 @@ debounce@^1.0.0:
|
|||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.1.0.tgz#6a1a4ee2a9dc4b7c24bb012558dbcdb05b37f408"
|
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.1.0.tgz#6a1a4ee2a9dc4b7c24bb012558dbcdb05b37f408"
|
||||||
|
|
||||||
debug@2.2.0, debug@~2.2.0:
|
debug@*, debug@3.1.0:
|
||||||
version "2.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
|
|
||||||
dependencies:
|
|
||||||
ms "0.7.1"
|
|
||||||
|
|
||||||
debug@3.1.0:
|
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
|
debug@2.2.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
|
||||||
|
dependencies:
|
||||||
|
ms "0.7.1"
|
||||||
|
|
||||||
debug@^2.6.8:
|
debug@^2.6.8:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
@@ -393,15 +396,23 @@ decamelize@^1.0.0, decamelize@^1.1.2:
|
|||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||||
|
|
||||||
|
deep-equal@~1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
||||||
|
|
||||||
delayed-stream@~1.0.0:
|
delayed-stream@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
|
|
||||||
depd@~1.1.0:
|
delegates@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||||
|
|
||||||
|
depd@1.1.1, depd@^1.1.0, depd@~1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
|
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
|
||||||
|
|
||||||
destroy@~1.0.4:
|
destroy@^1.0.3:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
||||||
|
|
||||||
@@ -425,23 +436,23 @@ ee-first@1.1.1:
|
|||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
|
|
||||||
encodeurl@~1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
|
|
||||||
|
|
||||||
error-ex@^1.2.0:
|
error-ex@^1.2.0:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
|
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
|
||||||
dependencies:
|
dependencies:
|
||||||
is-arrayish "^0.2.1"
|
is-arrayish "^0.2.1"
|
||||||
|
|
||||||
|
error-inject@~1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
|
||||||
|
|
||||||
error-stack-parser@1.3.6:
|
error-stack-parser@1.3.6:
|
||||||
version "1.3.6"
|
version "1.3.6"
|
||||||
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292"
|
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292"
|
||||||
dependencies:
|
dependencies:
|
||||||
stackframe "^0.3.1"
|
stackframe "^0.3.1"
|
||||||
|
|
||||||
escape-html@~1.0.3:
|
escape-html@~1.0.1:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||||
|
|
||||||
@@ -461,41 +472,6 @@ esutils@^2.0.2:
|
|||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||||
|
|
||||||
etag@~1.7.0:
|
|
||||||
version "1.7.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8"
|
|
||||||
|
|
||||||
express@4.14.0:
|
|
||||||
version "4.14.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66"
|
|
||||||
dependencies:
|
|
||||||
accepts "~1.3.3"
|
|
||||||
array-flatten "1.1.1"
|
|
||||||
content-disposition "0.5.1"
|
|
||||||
content-type "~1.0.2"
|
|
||||||
cookie "0.3.1"
|
|
||||||
cookie-signature "1.0.6"
|
|
||||||
debug "~2.2.0"
|
|
||||||
depd "~1.1.0"
|
|
||||||
encodeurl "~1.0.1"
|
|
||||||
escape-html "~1.0.3"
|
|
||||||
etag "~1.7.0"
|
|
||||||
finalhandler "0.5.0"
|
|
||||||
fresh "0.3.0"
|
|
||||||
merge-descriptors "1.0.1"
|
|
||||||
methods "~1.1.2"
|
|
||||||
on-finished "~2.3.0"
|
|
||||||
parseurl "~1.3.1"
|
|
||||||
path-to-regexp "0.1.7"
|
|
||||||
proxy-addr "~1.1.2"
|
|
||||||
qs "6.2.0"
|
|
||||||
range-parser "~1.2.0"
|
|
||||||
send "0.14.1"
|
|
||||||
serve-static "~1.11.1"
|
|
||||||
type-is "~1.6.13"
|
|
||||||
utils-merge "1.0.0"
|
|
||||||
vary "~1.1.0"
|
|
||||||
|
|
||||||
extend@~3.0.0:
|
extend@~3.0.0:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
||||||
@@ -506,16 +482,6 @@ filewatcher@~3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
debounce "^1.0.0"
|
debounce "^1.0.0"
|
||||||
|
|
||||||
finalhandler@0.5.0:
|
|
||||||
version "0.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7"
|
|
||||||
dependencies:
|
|
||||||
debug "~2.2.0"
|
|
||||||
escape-html "~1.0.3"
|
|
||||||
on-finished "~2.3.0"
|
|
||||||
statuses "~1.3.0"
|
|
||||||
unpipe "~1.0.0"
|
|
||||||
|
|
||||||
find-up@^1.0.0:
|
find-up@^1.0.0:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
||||||
@@ -539,13 +505,9 @@ form-data@~1.0.0-rc3:
|
|||||||
combined-stream "^1.0.5"
|
combined-stream "^1.0.5"
|
||||||
mime-types "^2.1.11"
|
mime-types "^2.1.11"
|
||||||
|
|
||||||
forwarded@~0.1.0:
|
fresh@^0.5.2:
|
||||||
version "0.1.2"
|
version "0.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
|
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||||
|
|
||||||
fresh@0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f"
|
|
||||||
|
|
||||||
generate-function@^2.0.0:
|
generate-function@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
@@ -623,12 +585,20 @@ hosted-git-info@^2.1.4:
|
|||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
|
||||||
|
|
||||||
http-errors@~1.5.0, http-errors@~1.5.1:
|
http-assert@^1.1.0:
|
||||||
version "1.5.1"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750"
|
resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.3.0.tgz#a31a5cf88c873ecbb5796907d4d6f132e8c01e4a"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
deep-equal "~1.0.1"
|
||||||
|
http-errors "~1.6.1"
|
||||||
|
|
||||||
|
http-errors@^1.2.8, http-errors@~1.6.1:
|
||||||
|
version "1.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
|
||||||
|
dependencies:
|
||||||
|
depd "1.1.1"
|
||||||
inherits "2.0.3"
|
inherits "2.0.3"
|
||||||
setprototypeof "1.0.2"
|
setprototypeof "1.0.3"
|
||||||
statuses ">= 1.3.1 < 2"
|
statuses ">= 1.3.1 < 2"
|
||||||
|
|
||||||
http-signature@~0.11.0:
|
http-signature@~0.11.0:
|
||||||
@@ -663,10 +633,6 @@ invert-kv@^1.0.0:
|
|||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||||
|
|
||||||
ipaddr.js@1.4.0:
|
|
||||||
version "1.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
|
|
||||||
|
|
||||||
is-arrayish@^0.2.1:
|
is-arrayish@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||||
@@ -689,6 +655,10 @@ is-fullwidth-code-point@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
number-is-nan "^1.0.0"
|
number-is-nan "^1.0.0"
|
||||||
|
|
||||||
|
is-generator-function@^1.0.3:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.6.tgz#9e71653cd15fff341c79c4151460a131d31e9fc4"
|
||||||
|
|
||||||
is-my-json-valid@^2.12.4:
|
is-my-json-valid@^2.12.4:
|
||||||
version "2.16.1"
|
version "2.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
|
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
|
||||||
@@ -753,6 +723,60 @@ jsonpointer@^4.0.0:
|
|||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
|
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
|
||||||
|
|
||||||
|
keygrip@~1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91"
|
||||||
|
|
||||||
|
koa-compose@^3.0.0:
|
||||||
|
version "3.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7"
|
||||||
|
dependencies:
|
||||||
|
any-promise "^1.1.0"
|
||||||
|
|
||||||
|
koa-compose@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.0.0.tgz#2800a513d9c361ef0d63852b038e4f6f2d5a773c"
|
||||||
|
|
||||||
|
koa-convert@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0"
|
||||||
|
dependencies:
|
||||||
|
co "^4.6.0"
|
||||||
|
koa-compose "^3.0.0"
|
||||||
|
|
||||||
|
koa-is-json@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14"
|
||||||
|
|
||||||
|
koa@2.4.1:
|
||||||
|
version "2.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/koa/-/koa-2.4.1.tgz#d449cfb970a7e9da571f699eda40bb9e32eb1484"
|
||||||
|
dependencies:
|
||||||
|
accepts "^1.2.2"
|
||||||
|
content-disposition "~0.5.0"
|
||||||
|
content-type "^1.0.0"
|
||||||
|
cookies "~0.7.0"
|
||||||
|
debug "*"
|
||||||
|
delegates "^1.0.0"
|
||||||
|
depd "^1.1.0"
|
||||||
|
destroy "^1.0.3"
|
||||||
|
error-inject "~1.0.0"
|
||||||
|
escape-html "~1.0.1"
|
||||||
|
fresh "^0.5.2"
|
||||||
|
http-assert "^1.1.0"
|
||||||
|
http-errors "^1.2.8"
|
||||||
|
is-generator-function "^1.0.3"
|
||||||
|
koa-compose "^4.0.0"
|
||||||
|
koa-convert "^1.2.0"
|
||||||
|
koa-is-json "^1.0.0"
|
||||||
|
mime-types "^2.0.7"
|
||||||
|
on-finished "^2.1.0"
|
||||||
|
only "0.0.2"
|
||||||
|
parseurl "^1.3.0"
|
||||||
|
statuses "^1.2.0"
|
||||||
|
type-is "^1.5.5"
|
||||||
|
vary "^1.0.0"
|
||||||
|
|
||||||
lcid@^1.0.0:
|
lcid@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
|
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
|
||||||
@@ -915,28 +939,16 @@ meow@^3.3.0:
|
|||||||
redent "^1.0.0"
|
redent "^1.0.0"
|
||||||
trim-newlines "^1.0.0"
|
trim-newlines "^1.0.0"
|
||||||
|
|
||||||
merge-descriptors@1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
|
||||||
|
|
||||||
methods@~1.1.2:
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
|
||||||
|
|
||||||
mime-db@~1.30.0:
|
mime-db@~1.30.0:
|
||||||
version "1.30.0"
|
version "1.30.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
||||||
|
|
||||||
mime-types@^2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7:
|
mime-types@^2.0.7, mime-types@^2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7:
|
||||||
version "2.1.17"
|
version "2.1.17"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "~1.30.0"
|
mime-db "~1.30.0"
|
||||||
|
|
||||||
mime@1.3.4:
|
|
||||||
version "1.3.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
|
|
||||||
|
|
||||||
minimatch@0.3:
|
minimatch@0.3:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
|
||||||
@@ -991,10 +1003,6 @@ ms@0.7.1:
|
|||||||
version "0.7.1"
|
version "0.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
|
||||||
|
|
||||||
ms@0.7.2:
|
|
||||||
version "0.7.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
|
|
||||||
|
|
||||||
ms@2.0.0:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
@@ -1073,12 +1081,16 @@ object-keys@~0.2.0:
|
|||||||
indexof "~0.0.1"
|
indexof "~0.0.1"
|
||||||
is "~0.2.6"
|
is "~0.2.6"
|
||||||
|
|
||||||
on-finished@2.3.0, on-finished@~2.3.0:
|
on-finished@2.3.0, on-finished@^2.1.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||||
dependencies:
|
dependencies:
|
||||||
ee-first "1.1.1"
|
ee-first "1.1.1"
|
||||||
|
|
||||||
|
only@0.0.2:
|
||||||
|
version "0.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
||||||
|
|
||||||
openurl@1.1.0:
|
openurl@1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.0.tgz#e2f2189d999c04823201f083f0f1a7cd8903187a"
|
resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.0.tgz#e2f2189d999c04823201f083f0f1a7cd8903187a"
|
||||||
@@ -1114,7 +1126,7 @@ parse-json@^2.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
error-ex "^1.2.0"
|
error-ex "^1.2.0"
|
||||||
|
|
||||||
parseurl@~1.3.1:
|
parseurl@^1.3.0:
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||||
|
|
||||||
@@ -1132,10 +1144,6 @@ path-parse@^1.0.5:
|
|||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
||||||
|
|
||||||
path-to-regexp@0.1.7:
|
|
||||||
version "0.1.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
|
||||||
|
|
||||||
path-type@^1.0.0:
|
path-type@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
||||||
@@ -1166,25 +1174,10 @@ process-nextick-args@~1.0.6:
|
|||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
||||||
|
|
||||||
proxy-addr@~1.1.2:
|
|
||||||
version "1.1.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
|
|
||||||
dependencies:
|
|
||||||
forwarded "~0.1.0"
|
|
||||||
ipaddr.js "1.4.0"
|
|
||||||
|
|
||||||
qs@6.2.0:
|
|
||||||
version "6.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
|
|
||||||
|
|
||||||
qs@~5.2.0:
|
qs@~5.2.0:
|
||||||
version "5.2.1"
|
version "5.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc"
|
resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc"
|
||||||
|
|
||||||
range-parser@~1.2.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
|
|
||||||
|
|
||||||
read-pkg-up@^1.0.1:
|
read-pkg-up@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||||
@@ -1268,54 +1261,9 @@ resolve@^1.0.0:
|
|||||||
version "5.4.1"
|
version "5.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||||
|
|
||||||
send@0.14.1:
|
setprototypeof@1.0.3:
|
||||||
version "0.14.1"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a"
|
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
|
||||||
dependencies:
|
|
||||||
debug "~2.2.0"
|
|
||||||
depd "~1.1.0"
|
|
||||||
destroy "~1.0.4"
|
|
||||||
encodeurl "~1.0.1"
|
|
||||||
escape-html "~1.0.3"
|
|
||||||
etag "~1.7.0"
|
|
||||||
fresh "0.3.0"
|
|
||||||
http-errors "~1.5.0"
|
|
||||||
mime "1.3.4"
|
|
||||||
ms "0.7.1"
|
|
||||||
on-finished "~2.3.0"
|
|
||||||
range-parser "~1.2.0"
|
|
||||||
statuses "~1.3.0"
|
|
||||||
|
|
||||||
send@0.14.2:
|
|
||||||
version "0.14.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef"
|
|
||||||
dependencies:
|
|
||||||
debug "~2.2.0"
|
|
||||||
depd "~1.1.0"
|
|
||||||
destroy "~1.0.4"
|
|
||||||
encodeurl "~1.0.1"
|
|
||||||
escape-html "~1.0.3"
|
|
||||||
etag "~1.7.0"
|
|
||||||
fresh "0.3.0"
|
|
||||||
http-errors "~1.5.1"
|
|
||||||
mime "1.3.4"
|
|
||||||
ms "0.7.2"
|
|
||||||
on-finished "~2.3.0"
|
|
||||||
range-parser "~1.2.0"
|
|
||||||
statuses "~1.3.1"
|
|
||||||
|
|
||||||
serve-static@~1.11.1:
|
|
||||||
version "1.11.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
|
|
||||||
dependencies:
|
|
||||||
encodeurl "~1.0.1"
|
|
||||||
escape-html "~1.0.3"
|
|
||||||
parseurl "~1.3.1"
|
|
||||||
send "0.14.2"
|
|
||||||
|
|
||||||
setprototypeof@1.0.2:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08"
|
|
||||||
|
|
||||||
shellwords@^0.1.0:
|
shellwords@^0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
@@ -1367,14 +1315,10 @@ stackframe@^0.3.1:
|
|||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4"
|
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4"
|
||||||
|
|
||||||
"statuses@>= 1.3.1 < 2":
|
"statuses@>= 1.3.1 < 2", statuses@^1.2.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
|
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
|
||||||
|
|
||||||
statuses@~1.3.0, statuses@~1.3.1:
|
|
||||||
version "1.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
|
|
||||||
|
|
||||||
string-width@^1.0.1:
|
string-width@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||||
@@ -1445,7 +1389,7 @@ tunnel-agent@~0.4.1:
|
|||||||
version "0.4.3"
|
version "0.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
|
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
|
||||||
|
|
||||||
type-is@~1.6.13:
|
type-is@^1.5.5:
|
||||||
version "1.6.15"
|
version "1.6.15"
|
||||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
|
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1456,10 +1400,6 @@ ultron@1.0.x:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
|
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
|
||||||
|
|
||||||
unpipe@~1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
|
||||||
|
|
||||||
utf-8-validate@1.2.x:
|
utf-8-validate@1.2.x:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-1.2.2.tgz#8bb871a4741e085c70487ca7acdbd7d6d36029eb"
|
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-1.2.2.tgz#8bb871a4741e085c70487ca7acdbd7d6d36029eb"
|
||||||
@@ -1471,10 +1411,6 @@ util-deprecate@~1.0.1:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||||
|
|
||||||
utils-merge@1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
|
|
||||||
|
|
||||||
validate-npm-package-license@^3.0.1:
|
validate-npm-package-license@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
|
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
|
||||||
@@ -1482,7 +1418,7 @@ validate-npm-package-license@^3.0.1:
|
|||||||
spdx-correct "~1.0.0"
|
spdx-correct "~1.0.0"
|
||||||
spdx-expression-parse "~1.0.0"
|
spdx-expression-parse "~1.0.0"
|
||||||
|
|
||||||
vary@~1.1.0:
|
vary@^1.0.0:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user