Innovenergy_trunk/frontend/node_modules/testcafe-hammerhead/lib/utils/logger.js

147 lines
6.5 KiB
JavaScript
Raw Normal View History

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = __importDefault(require("debug"));
const err_to_string_1 = __importDefault(require("./err-to-string"));
function getIncorrectErrorTypeMessage(err) {
const errType = typeof err;
return `The "${(0, err_to_string_1.default)(err)}" error of the "${errType}" type was passed. Make sure that service message handlers throw errors of the Error type.`;
}
debug_1.default.formatters.i = (ctx) => {
const stringifiedInfoArr = [];
const contentInfo = ctx.contentInfo;
if (ctx.isPage)
stringifiedInfoArr.push('isPage');
if (ctx.isIframe)
stringifiedInfoArr.push('isIframe');
if (ctx.isAjax)
stringifiedInfoArr.push('isAjax');
if (ctx.isWebSocket)
stringifiedInfoArr.push('isWebSocket');
if (contentInfo.isCSS)
stringifiedInfoArr.push('isCSS');
if (contentInfo.isScript)
stringifiedInfoArr.push('isScript');
if (contentInfo.isManifest)
stringifiedInfoArr.push('isManifest');
if (contentInfo.isFileDownload)
stringifiedInfoArr.push('isFileDownload');
if (ctx.contentInfo.isNotModified)
stringifiedInfoArr.push('isNotModified');
if (contentInfo.isRedirect)
stringifiedInfoArr.push('isRedirect');
if (contentInfo.isIframeWithImageSrc)
stringifiedInfoArr.push('isIframeWithImageSrc');
if (contentInfo.charset)
stringifiedInfoArr.push('charset: ' + contentInfo.charset.get());
stringifiedInfoArr.push('encoding: ' + contentInfo.encoding);
stringifiedInfoArr.push('requireProcessing: ' + contentInfo.requireProcessing);
return `{ ${stringifiedInfoArr.join(', ')} }`;
};
const hammerhead = (0, debug_1.default)('hammerhead');
const proxyLogger = hammerhead.extend('proxy');
const destinationLogger = hammerhead.extend('destination');
const http2DestinationLogger = destinationLogger.extend('http2');
const cachedDestinationLogger = destinationLogger.extend('cached');
const destinationSocketLogger = destinationLogger.extend('socket');
const serviceMsgLogger = hammerhead.extend('service-message');
const proxy = {
onRequest: (ctx) => {
proxyLogger('Proxy request %s %s %s %j', ctx.requestId, ctx.req.method, ctx.req.url, ctx.req.headers);
},
onResponse: (ctx, headers) => {
proxyLogger('Proxy response %s %d %j', ctx.requestId, ctx.destRes.statusCode, headers);
},
onRequestError: (ctx) => {
proxyLogger('Proxy error: request to proxy cannot be dispatched %s, responding 404', ctx.requestId);
},
onWebSocketResponseError: (ctx, e) => {
proxyLogger('Proxy error %s %o', ctx.requestId, e);
},
onCORSFailed: (ctx) => {
proxyLogger('Proxy CORS check failed %s', ctx.requestId);
},
onContentInfoBuilt: (ctx) => {
proxyLogger('Proxy resource content info %s %i', ctx.requestId, ctx);
},
onMockResponseError: (rule, e) => {
proxyLogger('Proxy error %s %s', rule, e);
},
};
const serviceMsg = {
onMessage: (msg, result) => {
serviceMsgLogger('Service message %j, result %j', msg, result);
},
onError: (msg, err) => {
const isError = err instanceof Error;
const errMsg = isError ? err : getIncorrectErrorTypeMessage(err);
serviceMsgLogger('Service message %j, error %o', msg, errMsg);
},
};
const destination = {
onMockedRequest: (ctx) => {
destinationLogger('Destination request is mocked %s %s %j', ctx.requestId, ctx.mock.statusCode, ctx.mock.headers);
},
onRequest: (opts) => {
destinationLogger('Destination request %s %s %s %j', opts.requestId, opts.method, opts.url, opts.headers);
},
onCachedRequest: (opts, hitCount) => {
cachedDestinationLogger('Cached destination request %s %s %s %j (hitCount: %d)', opts.requestId, opts.method, opts.url, opts.headers, hitCount);
},
onHttp2Stream: (requestId, headers) => {
http2DestinationLogger('Destination stream %s %j', requestId, headers);
},
onHttp2Unsupported: (requestId, origin) => {
http2DestinationLogger('Destination server does not support http2 %s %s', requestId, origin);
},
onHttp2SessionCreated: (requestId, origin, cacheSize, cacheTotalSize) => {
http2DestinationLogger('Destination session created %s %s (cache size %d of %d)', requestId, origin, cacheSize, cacheTotalSize);
},
onHttp2SessionClosed: (requestId, origin, cacheSize, cacheTotalSize) => {
http2DestinationLogger('Destination session closed %s %s (cache size %d of %d)', requestId, origin, cacheSize, cacheTotalSize);
},
onHttp2Error: (requestId, origin, err) => {
http2DestinationLogger('Destination error %s %s %o', requestId, origin, err);
},
onHttp2SessionTimeout: (origin, timeout) => {
http2DestinationLogger('Destination session is unused more than %d min and will be closed %s', timeout / 60000, origin);
},
onUpgradeRequest: (opts, res) => {
destinationLogger('Destination upgrade %s %d %j', opts.requestId, res.statusCode, res.headers);
},
onResponse: (opts, res) => {
destinationLogger('Destination response %s %d %j', opts.requestId, res.statusCode, res.headers);
},
onProxyAuthenticationError: (opts) => {
destinationLogger('Destination error: Cannot authorize to proxy %s', opts.requestId);
},
onResendWithCredentials: (opts) => {
destinationLogger('Destination request resent with credentials %s', opts.requestId);
},
onFileRead: (ctx) => {
destinationLogger('Read file %s %s', ctx.requestId, ctx.reqOpts.url);
},
onFileReadError: (ctx, err) => {
destinationLogger('File read error %s %o', ctx.requestId, err);
},
onTimeoutError: (opts, timeout) => {
destinationLogger('Destination request timeout %s (%d ms)', opts.requestId, timeout);
},
onError: (opts, err) => {
destinationLogger('Destination error %s %o', opts.requestId, err);
},
};
const destinationSocket = {
enabled: destinationSocketLogger.enabled,
onFirstChunk: (opts, data) => {
destinationSocketLogger('Destination request socket first chunk of data %s %d %s', opts.requestId, data.length, JSON.stringify(data.toString()));
},
onError: (opts, err) => {
destinationSocketLogger('Destination request socket error %s %o', opts.requestId, err);
},
};
exports.default = { proxy, destination, destinationSocket, serviceMsg };module.exports = exports.default;