Newer
Older
}
kwargs.user = user;
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
/**
* Module exports.
* @public
*/
exports.parse = parse;
exports.serialize = serialize;
/**
* Module variables.
* @private
*/
var decode = decodeURIComponent;
var encode = encodeURIComponent;
var pairSplitRegExp = /; */;
/**
* RegExp to match field-content in RFC 7230 sec 3.2
*
* field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
* field-vchar = VCHAR / obs-text
* obs-text = %x80-FF
*/
var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
/**
* Parse a cookie header.
*
* Parse the given cookie header string into an object
* The object has the various cookies as keys(names) => values
*
* @param {string} str
* @param {object} [options]
* @return {object}
* @public
*/
function parse(str, options) {
if (typeof str !== 'string') {
throw new TypeError('argument str must be a string');
var obj = {}
var opt = options || {};
var pairs = str.split(pairSplitRegExp);
var dec = opt.decode || decode;
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i];
var eq_idx = pair.indexOf('=');
// skip things that don't look like key=value
if (eq_idx < 0) {
continue;
}
var key = pair.substr(0, eq_idx).trim()
var val = pair.substr(++eq_idx, pair.length).trim();
// quoted values
if ('"' == val[0]) {
val = val.slice(1, -1);
}
// only assign once
if (undefined == obj[key]) {
obj[key] = tryDecode(val, dec);
}
217099
217100
217101
217102
217103
217104
217105
217106
217107
217108
217109
217110
217111
217112
217113
/**
* Serialize data into a cookie header.
*
* Serialize the a name value pair into a cookie string suitable for
* http headers. An optional options object specified cookie parameters.
*
* serialize('foo', 'bar', { httpOnly: true })
* => "foo=bar; httpOnly"
*
* @param {string} name
* @param {string} val
* @param {object} [options]
* @return {string}
* @public
*/
function serialize(name, val, options) {
var opt = options || {};
var enc = opt.encode || encode;
if (typeof enc !== 'function') {
throw new TypeError('option encode is invalid');
if (!fieldContentRegExp.test(name)) {
throw new TypeError('argument name is invalid');
}
if (value && !fieldContentRegExp.test(value)) {
throw new TypeError('argument val is invalid');
var str = name + '=' + value;
if (null != opt.maxAge) {
var maxAge = opt.maxAge - 0;
if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
str += '; Max-Age=' + Math.floor(maxAge);
}
if (opt.domain) {
if (!fieldContentRegExp.test(opt.domain)) {
throw new TypeError('option domain is invalid');
str += '; Domain=' + opt.domain;
if (opt.path) {
if (!fieldContentRegExp.test(opt.path)) {
throw new TypeError('option path is invalid');
str += '; Path=' + opt.path;
}
if (opt.expires) {
if (typeof opt.expires.toUTCString !== 'function') {
throw new TypeError('option expires is invalid');
str += '; Expires=' + opt.expires.toUTCString();
if (opt.httpOnly) {
str += '; HttpOnly';
if (opt.secure) {
str += '; Secure';
217173
217174
217175
217176
217177
217178
217179
217180
217181
217182
217183
217184
217185
217186
217187
217188
217189
if (opt.sameSite) {
var sameSite = typeof opt.sameSite === 'string'
? opt.sameSite.toLowerCase() : opt.sameSite;
switch (sameSite) {
case true:
str += '; SameSite=Strict';
break;
case 'lax':
str += '; SameSite=Lax';
break;
case 'strict':
str += '; SameSite=Strict';
break;
default:
throw new TypeError('option sameSite is invalid');
}
return str;
}
/**
* Try decoding a string using a decoding function.
*
* @param {string} str
* @param {function} decode
* @private
*/
function tryDecode(str, decode) {
try {
return decode(str);
} catch (e) {
return str;
/***/ }),
/* 1705 */
/***/ (function(module, exports, __webpack_require__) {
var fs = __webpack_require__(167);
var url = __webpack_require__(82);
var transports = __webpack_require__(1706);
var path = __webpack_require__(159);
var lsmod = __webpack_require__(1708);
var stacktrace = __webpack_require__(1709);
var stringify = __webpack_require__(1702);
var ravenVersion = __webpack_require__(1710).version;
var protocolMap = {
http: 80,
https: 443
};
var consoleAlerts = new Set();
// Default Node.js REPL depth
var MAX_SERIALIZE_EXCEPTION_DEPTH = 3;
// 50kB, as 100kB is max payload size, so half sounds reasonable
var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;
var MAX_SERIALIZE_KEYS_LENGTH = 40;
function utf8Length(value) {
return ~-encodeURI(value).split(/%..|./).length;
}
function jsonSize(value) {
return utf8Length(JSON.stringify(value));
}
function isError(what) {
return (
Object.prototype.toString.call(what) === '[object Error]' || what instanceof Error
);
}
module.exports.isError = isError;
function isPlainObject(what) {
return Object.prototype.toString.call(what) === '[object Object]';
module.exports.isPlainObject = isPlainObject;
function serializeValue(value) {
var maxLength = 40;
if (typeof value === 'string') {
return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026';
} else if (
typeof value === 'number' ||
typeof value === 'boolean' ||
typeof value === 'undefined'
) {
return value;
}
var type = Object.prototype.toString.call(value);
// Node.js REPL notation
if (type === '[object Object]') return '[Object]';
if (type === '[object Array]') return '[Array]';
if (type === '[object Function]')
return value.name ? '[Function: ' + value.name + ']' : '[Function]';
function serializeObject(value, depth) {
if (depth === 0) return serializeValue(value);
if (isPlainObject(value)) {
return Object.keys(value).reduce(function(acc, key) {
acc[key] = serializeObject(value[key], depth - 1);
return acc;
}, {});
} else if (Array.isArray(value)) {
return value.map(function(val) {
return serializeObject(val, depth - 1);
});
return serializeValue(value);
}
function serializeException(ex, depth, maxSize) {
if (!isPlainObject(ex)) return ex;
depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;
maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;
var serialized = serializeObject(ex, depth);
if (jsonSize(stringify(serialized)) > maxSize) {
return serializeException(ex, depth - 1);
return serialized;
}
module.exports.serializeException = serializeException;
function serializeKeysForMessage(keys, maxLength) {
if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();
if (!Array.isArray(keys)) return '';
keys = keys.filter(function(key) {
return typeof key === 'string';
});
if (keys.length === 0) return '[object has no keys]';
maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;
if (keys[0].length >= maxLength) return keys[0];
for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {
var serialized = keys.slice(0, usedKeys).join(', ');
if (serialized.length > maxLength) continue;
if (usedKeys === keys.length) return serialized;
return serialized + '\u2026';
}
module.exports.serializeKeysForMessage = serializeKeysForMessage;
module.exports.disableConsoleAlerts = function disableConsoleAlerts() {
consoleAlerts = false;
};
module.exports.enableConsoleAlerts = function enableConsoleAlerts() {
consoleAlerts = new Set();
};
module.exports.consoleAlert = function consoleAlert(msg) {
if (consoleAlerts) {
console.warn('raven@' + ravenVersion + ' alert: ' + msg);
}
};
module.exports.consoleAlertOnce = function consoleAlertOnce(msg) {
if (consoleAlerts && !consoleAlerts.has(msg)) {
consoleAlerts.add(msg);
console.warn('raven@' + ravenVersion + ' alert: ' + msg);
}
};
module.exports.extend =
Object.assign ||
function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
module.exports.getAuthHeader = function getAuthHeader(timestamp, apiKey, apiSecret) {
var header = ['Sentry sentry_version=5'];
header.push('sentry_timestamp=' + timestamp);
header.push('sentry_client=raven-node/' + ravenVersion);
header.push('sentry_key=' + apiKey);
if (apiSecret) header.push('sentry_secret=' + apiSecret);
return header.join(', ');
};
module.exports.parseDSN = function parseDSN(dsn) {
if (!dsn) {
// Let a falsey value return false explicitly
return false;
try {
var parsed = url.parse(dsn),
response = {
protocol: parsed.protocol.slice(0, -1),
public_key: parsed.auth.split(':')[0],
host: parsed.host.split(':')[0]
};
if (parsed.auth.split(':')[1]) {
response.private_key = parsed.auth.split(':')[1];
}
if (~response.protocol.indexOf('+')) {
response.protocol = response.protocol.split('+')[1];
if (!transports.hasOwnProperty(response.protocol)) {
throw new Error('Invalid transport');
}
var index = parsed.pathname.lastIndexOf('/');
response.path = parsed.pathname.substr(0, index + 1);
response.project_id = parsed.pathname.substr(index + 1);
response.port = ~~parsed.port || protocolMap[response.protocol] || 443;
return response;
} catch (e) {
throw new Error('Invalid Sentry DSN: ' + dsn);
module.exports.getTransaction = function getTransaction(frame) {
if (frame.module || frame.function) {
return (frame.module || '?') + ' at ' + (frame.function || '?');
}
return '<unknown>';
};
var moduleCache;
module.exports.getModules = function getModules() {
if (!moduleCache) {
moduleCache = lsmod();
}
return moduleCache;
};
module.exports.fill = function(obj, name, replacement, track) {
var orig = obj[name];
obj[name] = replacement(orig);
if (track) {
track.push([obj, name, orig]);
}
};
var LINES_OF_CONTEXT = 7;
function getFunction(line) {
try {
return (
line.getFunctionName() ||
line.getTypeName() + '.' + (line.getMethodName() || '<anonymous>')
);
} catch (e) {
// This seems to happen sometimes when using 'use strict',
// stemming from `getTypeName`.
// [TypeError: Cannot read property 'constructor' of undefined]
return '<anonymous>';
}
}
var mainModule =
((__webpack_require__.c[__webpack_require__.s] && __webpack_require__.c[__webpack_require__.s].filename && path.dirname(__webpack_require__.c[__webpack_require__.s].filename)) ||
global.process.cwd()) + '/';
function getModule(filename, base) {
if (!base) base = mainModule;
// It's specifically a module
var file = path.basename(filename, '.js');
filename = path.dirname(filename);
var n = filename.lastIndexOf('/node_modules/');
if (n > -1) {
// /node_modules/ is 14 chars
return filename.substr(n + 14).replace(/\//g, '.') + ':' + file;
// Let's see if it's a part of the main module
// To be a part of main module, it has to share the same base
n = (filename + '/').lastIndexOf(base, 0);
if (n === 0) {
var module = filename.substr(base.length).replace(/\//g, '.');
if (module) module += ':';
module += file;
return module;
function readSourceFiles(filenames, cb) {
// we're relying on filenames being de-duped already
if (filenames.length === 0) return setTimeout(cb, 0, {});
var sourceFiles = {};
var numFilesToRead = filenames.length;
return filenames.forEach(function(filename) {
fs.readFile(filename, function(readErr, file) {
if (!readErr) sourceFiles[filename] = file.toString().split('\n');
if (--numFilesToRead === 0) cb(sourceFiles);
});
});
}
// This is basically just `trim_line` from https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67
function snipLine(line, colno) {
var ll = line.length;
if (ll <= 150) return line;
if (colno > ll) colno = ll;
var start = Math.max(colno - 60, 0);
if (start < 5) start = 0;
var end = Math.min(start + 140, ll);
if (end > ll - 5) end = ll;
if (end === ll) start = Math.max(end - 140, 0);
line = line.slice(start, end);
if (start > 0) line = '{snip} ' + line;
if (end < ll) line += ' {snip}';
function snipLine0(line) {
return snipLine(line, 0);
}
function parseStack(err, cb) {
if (!err) return cb([]);
var stack = stacktrace.parse(err);
if (!stack || !Array.isArray(stack) || !stack.length || !stack[0].getFileName) {
// the stack is not the useful thing we were expecting :/
return cb([]);
// Sentry expects the stack trace to be oldest -> newest, v8 provides newest -> oldest
stack.reverse();
var frames = [];
var filesToRead = {};
stack.forEach(function(line) {
var frame = {
filename: line.getFileName() || '',
lineno: line.getLineNumber(),
colno: line.getColumnNumber(),
function: getFunction(line)
};
var isInternal =
line.isNative() ||
(frame.filename[0] !== '/' &&
frame.filename[0] !== '.' &&
frame.filename.indexOf(':\\') !== 1);
// in_app is all that's not an internal Node function or a module within node_modules
// note that isNative appears to return true even for node core libraries
// see https://github.com/getsentry/raven-node/issues/176
frame.in_app = !isInternal && frame.filename.indexOf('node_modules/') === -1;
// Extract a module name based on the filename
if (frame.filename) {
frame.module = getModule(frame.filename);
if (!isInternal) filesToRead[frame.filename] = true;
frames.push(frame);
});
217571
217572
217573
217574
217575
217576
217577
217578
217579
217580
217581
217582
217583
217584
217585
217586
return readSourceFiles(Object.keys(filesToRead), function(sourceFiles) {
frames.forEach(function(frame) {
if (frame.filename && sourceFiles[frame.filename]) {
var lines = sourceFiles[frame.filename];
try {
frame.pre_context = lines
.slice(Math.max(0, frame.lineno - (LINES_OF_CONTEXT + 1)), frame.lineno - 1)
.map(snipLine0);
frame.context_line = snipLine(lines[frame.lineno - 1], frame.colno);
frame.post_context = lines
.slice(frame.lineno, frame.lineno + LINES_OF_CONTEXT)
.map(snipLine0);
} catch (e) {
// anomaly, being defensive in case
// unlikely to ever happen in practice but can definitely happen in theory
}
// expose basically for testing because I don't know what I'm doing
module.exports.parseStack = parseStack;
module.exports.getModule = getModule;
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var events = __webpack_require__(271);
var util = __webpack_require__(9);
var timeoutReq = __webpack_require__(1707);
var http = __webpack_require__(97);
var https = __webpack_require__(98);
var agentOptions = {keepAlive: true, maxSockets: 100};
var httpAgent = new http.Agent(agentOptions);
var httpsAgent = new https.Agent(agentOptions);
function Transport() {}
util.inherits(Transport, events.EventEmitter);
217620
217621
217622
217623
217624
217625
217626
217627
217628
217629
217630
217631
217632
217633
217634
217635
217636
217637
217638
217639
function HTTPTransport(options) {
this.defaultPort = 80;
this.transport = http;
this.options = options || {};
this.agent = httpAgent;
}
util.inherits(HTTPTransport, Transport);
HTTPTransport.prototype.send = function(client, message, headers, eventId, cb) {
var options = {
hostname: client.dsn.host,
path: client.dsn.path + 'api/' + client.dsn.project_id + '/store/',
headers: headers,
method: 'POST',
port: client.dsn.port || this.defaultPort,
ca: client.ca,
agent: this.agent
};
for (var key in this.options) {
if (this.options.hasOwnProperty(key)) {
options[key] = this.options[key];
// prevent off heap memory explosion
var _name = this.agent.getName({host: client.dsn.host, port: client.dsn.port});
var _requests = this.agent.requests[_name];
if (_requests && Object.keys(_requests).length > client.maxReqQueueCount) {
// other feedback strategy
client.emit('error', new Error('client req queue is full..'));
return;
217652
217653
217654
217655
217656
217657
217658
217659
217660
217661
217662
217663
217664
217665
217666
217667
var req = this.transport.request(options, function(res) {
res.setEncoding('utf8');
if (res.statusCode >= 200 && res.statusCode < 300) {
client.emit('logged', eventId);
cb && cb(null, eventId);
} else {
var reason = res.headers['x-sentry-error'];
var e = new Error('HTTP Error (' + res.statusCode + '): ' + reason);
e.response = res;
e.statusCode = res.statusCode;
e.reason = reason;
e.sendMessage = message;
e.requestHeaders = headers;
e.eventId = eventId;
client.emit('error', e);
cb && cb(e);
// force the socket to drain
var noop = function() {};
res.on('data', noop);
res.on('end', noop);
});
timeoutReq(req, client.sendTimeout * 1000);
var cbFired = false;
req.on('error', function(e) {
client.emit('error', e);
if (!cbFired) {
cb && cb(e);
cbFired = true;
}
});
req.end(message);
};
function HTTPSTransport(options) {
this.defaultPort = 443;
this.transport = https;
this.options = options || {};
this.agent = httpsAgent;
util.inherits(HTTPSTransport, HTTPTransport);
module.exports.http = new HTTPTransport();
module.exports.https = new HTTPSTransport();
module.exports.Transport = Transport;
module.exports.HTTPTransport = HTTPTransport;
module.exports.HTTPSTransport = HTTPSTransport;
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function (req, time) {
if (req.timeoutTimer) {
return req;
}
var delays = isNaN(time) ? time : {socket: time, connect: time};
var host = req._headers ? (' to ' + req._headers.host) : '';
if (delays.connect !== undefined) {
req.timeoutTimer = setTimeout(function timeoutHandler() {
req.abort();
var e = new Error('Connection timed out on request' + host);
e.code = 'ETIMEDOUT';
req.emit('error', e);
}, delays.connect);
}
// Clear the connection timeout timer once a socket is assigned to the
// request and is connected.
req.on('socket', function assign(socket) {
// Socket may come from Agent pool and may be already connected.
if (!(socket.connecting || socket._connecting)) {
connect();
return;
}
socket.once('connect', connect);
});
function clear() {
if (req.timeoutTimer) {
clearTimeout(req.timeoutTimer);
req.timeoutTimer = null;
}
}
function connect() {
clear();
if (delays.socket !== undefined) {
// Abort the request if there is no activity on the socket for more
// than `delays.socket` milliseconds.
req.setTimeout(delays.socket, function socketTimeoutHandler() {
req.abort();
var e = new Error('Socket timed out on request' + host);
e.code = 'ESOCKETTIMEDOUT';
req.emit('error', e);
});
}
}
return req.on('error', clear);
};
/***/ }),
/* 1708 */
/***/ (function(module, exports, __webpack_require__) {
// Original repository: https://github.com/defunctzombie/node-lsmod/
//
// [2018-02-09] @kamilogorek - Handle scoped packages structure
// builtin
var fs = __webpack_require__(167);
var path = __webpack_require__(159);
// node 0.6 support
fs.existsSync = fs.existsSync || path.existsSync;
// mainPaths are the paths where our mainprog will be able to load from
// we store these to avoid grabbing the modules that were loaded as a result
// of a dependency module loading its dependencies, we only care about deps our
// mainprog loads
var mainPaths = (__webpack_require__.c[__webpack_require__.s] && __webpack_require__.c[__webpack_require__.s].paths) || [];
module.exports = function() {
var paths = Object.keys(__webpack_require__.c || []);
// module information
var infos = {};
// paths we have already inspected to avoid traversing again
var seen = {};
paths.forEach(function(p) {
/* eslint-disable consistent-return */
(function updir() {
var orig = dir;
dir = path.dirname(orig);
if (/@[^/]+$/.test(dir)) {
dir = path.dirname(dir);
}
if (!dir || orig === dir || seen[orig]) {
return;
} else if (mainPaths.indexOf(dir) < 0) {
return updir();
var pkgfile = path.join(orig, 'package.json');
var exists = fs.existsSync(pkgfile);
// travel up the tree if no package.json here
if (!exists) {
return updir();
try {
var info = JSON.parse(fs.readFileSync(pkgfile, 'utf8'));
infos[info.name] = info.version;
} catch (e) {}
})();
/* eslint-enable consistent-return */
});
/***/ }),
/* 1709 */
/***/ (function(module, exports) {
exports.get = function(belowFn) {
var oldLimit = Error.stackTraceLimit;
Error.stackTraceLimit = Infinity;
var v8Handler = Error.prepareStackTrace;
Error.prepareStackTrace = function(dummyObject, v8StackTrace) {
return v8StackTrace;
};
Error.captureStackTrace(dummyObject, belowFn || exports.get);
var v8StackTrace = dummyObject.stack;
Error.prepareStackTrace = v8Handler;
Error.stackTraceLimit = oldLimit;
return v8StackTrace;
};
exports.parse = function(err) {
if (!err.stack) {
return [];
}
var self = this;
var lines = err.stack.split('\n').slice(1);
return lines
.map(function(line) {
if (line.match(/^\s*[-]{4,}$/)) {
return self._createParsedCallSite({
fileName: line,
lineNumber: null,
functionName: null,
typeName: null,
methodName: null,
columnNumber: null,
'native': null,
});
}
var lineMatch = line.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/);
if (!lineMatch) {
return;
}
var object = null;
var method = null;
var functionName = null;
var typeName = null;
var methodName = null;
var isNative = (lineMatch[5] === 'native');
if (lineMatch[1]) {
functionName = lineMatch[1];
var methodStart = functionName.lastIndexOf('.');
if (functionName[methodStart-1] == '.')
methodStart--;
if (methodStart > 0) {
object = functionName.substr(0, methodStart);
method = functionName.substr(methodStart + 1);
var objectEnd = object.indexOf('.Module');
if (objectEnd > 0) {
functionName = functionName.substr(objectEnd + 1);
object = object.substr(0, objectEnd);
}
typeName = null;
}
if (method) {
typeName = object;
methodName = method;
}
if (method === '<anonymous>') {
methodName = null;
functionName = null;
}
var properties = {
fileName: lineMatch[2] || null,
lineNumber: parseInt(lineMatch[3], 10) || null,
functionName: functionName,
typeName: typeName,
methodName: methodName,
columnNumber: parseInt(lineMatch[4], 10) || null,
'native': isNative,
};
return self._createParsedCallSite(properties);
})
.filter(function(callSite) {
return !!callSite;
});
};
function CallSite(properties) {
for (var property in properties) {
this[property] = properties[property];
}
}
217948
217949
217950
217951
217952
217953
217954
217955
217956
217957
217958
217959
217960
217961
217962
217963
217964
217965
217966
217967
217968
217969
217970
217971
217972
217973
217974
217975
217976
var strProperties = [
'this',
'typeName',
'functionName',
'methodName',
'fileName',
'lineNumber',
'columnNumber',
'function',
'evalOrigin'
];
var boolProperties = [
'topLevel',
'eval',
'native',
'constructor'
];
strProperties.forEach(function (property) {
CallSite.prototype[property] = null;
CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {
return this[property];
}
});
boolProperties.forEach(function (property) {
CallSite.prototype[property] = false;
CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {
return this[property];
}
});
exports._createParsedCallSite = function(properties) {
return new CallSite(properties);
};
/***/ }),
/* 1710 */
/***/ (function(module) {
module.exports = JSON.parse("{\"name\":\"raven\",\"description\":\"A standalone (Node.js) client for Sentry\",\"keywords\":[\"debugging\",\"errors\",\"exceptions\",\"logging\",\"raven\",\"sentry\"],\"version\":\"2.6.4\",\"repository\":\"git://github.com/getsentry/raven-js.git\",\"license\":\"BSD-2-Clause\",\"homepage\":\"https://github.com/getsentry/raven-js\",\"author\":\"Matt Robenolt <matt@ydekproductions.com>\",\"main\":\"index.js\",\"bin\":{\"raven\":\"./bin/raven\"},\"scripts\":{\"lint\":\"eslint .\",\"test\":\"NODE_ENV=test istanbul cover _mocha -- --reporter dot && NODE_ENV=test coffee ./test/run.coffee\",\"test-mocha\":\"NODE_ENV=test mocha\",\"test-full\":\"npm run test && cd test/instrumentation && ./run.sh\"},\"engines\":{\"node\":\">= 4.0.0\"},\"dependencies\":{\"cookie\":\"0.3.1\",\"md5\":\"^2.2.1\",\"stack-trace\":\"0.0.10\",\"timed-out\":\"4.0.1\",\"uuid\":\"3.3.2\"},\"devDependencies\":{\"coffee-script\":\"~1.10.0\",\"connect\":\"*\",\"eslint\":\"^4.5.0\",\"eslint-config-prettier\":\"^2.3.0\",\"express\":\"*\",\"glob\":\"~3.1.13\",\"istanbul\":\"^0.4.3\",\"mocha\":\"~3.1.2\",\"nock\":\"~9.0.0\",\"prettier\":\"^1.6.1\",\"should\":\"11.2.0\",\"sinon\":\"^3.3.0\"},\"prettier\":{\"singleQuote\":true,\"bracketSpacing\":false,\"printWidth\":90}}");
/***/ }),
/* 1711 */
/***/ (function(module, exports, __webpack_require__) {
var v1 = __webpack_require__(1712);
var v4 = __webpack_require__(261);
var uuid = v4;
uuid.v1 = v1;
uuid.v4 = v4;