Select Git revision
bind-mutation-test-report.js
bind-mutation-test-report.js 21.02 KiB
document.querySelector('mutation-test-report-app').report = {"files":{"/Users/sigmundd/Code/metrics/src/index.ts":{"language":"typescript","mutants":[{"id":"0","location":{"end":{"column":4,"line":79},"start":{"column":48,"line":24}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"1","location":{"end":{"column":41,"line":25},"start":{"column":28,"line":25}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"2","location":{"end":{"column":46,"line":27},"start":{"column":9,"line":27}},"mutatorName":"ConditionalExpression","replacement":"true","status":"RuntimeError"},{"id":"3","location":{"end":{"column":46,"line":27},"start":{"column":9,"line":27}},"mutatorName":"ConditionalExpression","replacement":"false","status":"RuntimeError"},{"id":"13","location":{"end":{"column":59,"line":34},"start":{"column":9,"line":34}},"mutatorName":"ConditionalExpression","replacement":"true","status":"RuntimeError"},{"id":"12","location":{"end":{"column":50,"line":32},"start":{"column":36,"line":32}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"14","location":{"end":{"column":59,"line":34},"start":{"column":9,"line":34}},"mutatorName":"ConditionalExpression","replacement":"false","status":"RuntimeError"},{"id":"15","location":{"end":{"column":47,"line":34},"start":{"column":44,"line":34}},"mutatorName":"EqualityOperator","replacement":"===","status":"RuntimeError"},{"id":"5","location":{"end":{"column":46,"line":27},"start":{"column":35,"line":27}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"16","location":{"end":{"column":59,"line":34},"start":{"column":48,"line":34}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"RuntimeError"},{"id":"4","location":{"end":{"column":34,"line":27},"start":{"column":31,"line":27}},"mutatorName":"EqualityOperator","replacement":"===","status":"Timeout"},{"id":"17","location":{"end":{"column":6,"line":36},"start":{"column":61,"line":34}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"6","location":{"end":{"column":6,"line":31},"start":{"column":48,"line":27}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"18","location":{"end":{"column":6,"line":38},"start":{"column":12,"line":36}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"7","location":{"end":{"column":36,"line":29},"start":{"column":25,"line":29}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"21","location":{"end":{"column":59,"line":39},"start":{"column":9,"line":39}},"mutatorName":"ConditionalExpression","replacement":"false","status":"RuntimeError"},{"id":"9","location":{"end":{"column":6,"line":33},"start":{"column":12,"line":31}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"19","location":{"end":{"column":40,"line":37},"start":{"column":35,"line":37}},"mutatorName":"BooleanLiteral","replacement":"true","status":"Killed"},{"id":"23","location":{"end":{"column":59,"line":39},"start":{"column":48,"line":39}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"RuntimeError"},{"id":"8","location":{"end":{"column":39,"line":30},"start":{"column":25,"line":30}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"25","location":{"end":{"column":6,"line":43},"start":{"column":12,"line":41}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"27","location":{"end":{"column":62,"line":44},"start":{"column":9,"line":44}},"mutatorName":"ConditionalExpression","replacement":"true","status":"RuntimeError"},{"id":"29","location":{"end":{"column":50,"line":44},"start":{"column":47,"line":44}},"mutatorName":"EqualityOperator","replacement":"===","status":"RuntimeError"},{"id":"10","location":{"end":{"column":51,"line":32},"start":{"column":22,"line":32}},"mutatorName":"ArrayDeclaration","replacement":"[]","status":"Timeout"},{"id":"11","location":{"end":{"column":34,"line":32},"start":{"column":23,"line":32}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"30","location":{"end":{"column":62,"line":44},"start":{"column":51,"line":44}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"RuntimeError"},{"id":"32","location":{"end":{"column":6,"line":48},"start":{"column":12,"line":46}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"34","location":{"end":{"column":61,"line":49},"start":{"column":9,"line":49}},"mutatorName":"ConditionalExpression","replacement":"true","status":"RuntimeError"},{"id":"37","location":{"end":{"column":61,"line":49},"start":{"column":50,"line":49}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"RuntimeError"},{"id":"33","location":{"end":{"column":43,"line":47},"start":{"column":38,"line":47}},"mutatorName":"BooleanLiteral","replacement":"true","status":"Killed"},{"id":"38","location":{"end":{"column":6,"line":51},"start":{"column":63,"line":49}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"39","location":{"end":{"column":6,"line":53},"start":{"column":12,"line":51}},"mutatorName":"BlockStatement","replacement":"{}","status":"RuntimeError"},{"id":"20","location":{"end":{"column":59,"line":39},"start":{"column":9,"line":39}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Timeout"},{"id":"22","location":{"end":{"column":47,"line":39},"start":{"column":44,"line":39}},"mutatorName":"EqualityOperator","replacement":"===","status":"Timeout"},{"id":"40","location":{"end":{"column":42,"line":52},"start":{"column":37,"line":52}},"mutatorName":"BooleanLiteral","replacement":"true","status":"Killed"},{"id":"41","location":{"end":{"column":37,"line":54},"start":{"column":9,"line":54}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Survived"},{"id":"24","location":{"end":{"column":6,"line":41},"start":{"column":61,"line":39}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"42","location":{"end":{"column":37,"line":54},"start":{"column":9,"line":54}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"43","location":{"end":{"column":37,"line":54},"start":{"column":9,"line":54}},"mutatorName":"BooleanLiteral","replacement":"this._disableDefaultMetrics","status":"Killed"},{"id":"28","location":{"end":{"column":62,"line":44},"start":{"column":9,"line":44}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Timeout"},{"id":"26","location":{"end":{"column":40,"line":42},"start":{"column":35,"line":42}},"mutatorName":"BooleanLiteral","replacement":"true","status":"Timeout"},{"id":"46","location":{"end":{"column":35,"line":57},"start":{"column":9,"line":57}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"47","location":{"end":{"column":35,"line":57},"start":{"column":9,"line":57}},"mutatorName":"BooleanLiteral","replacement":"this._disableErrorCounter","status":"Killed"},{"id":"31","location":{"end":{"column":6,"line":46},"start":{"column":64,"line":44}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"49","location":{"end":{"column":8,"line":62},"start":{"column":52,"line":58}},"mutatorName":"ObjectLiteral","replacement":"{}","status":"Killed"},{"id":"35","location":{"end":{"column":61,"line":49},"start":{"column":9,"line":49}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Timeout"},{"id":"36","location":{"end":{"column":49,"line":49},"start":{"column":46,"line":49}},"mutatorName":"EqualityOperator","replacement":"===","status":"Timeout"},{"id":"50","location":{"end":{"column":28,"line":59},"start":{"column":15,"line":59}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"54","location":{"end":{"column":35,"line":64},"start":{"column":9,"line":64}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Killed"},{"id":"53","location":{"end":{"column":29,"line":61},"start":{"column":22,"line":61}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"56","location":{"end":{"column":35,"line":64},"start":{"column":9,"line":64}},"mutatorName":"BooleanLiteral","replacement":"this._disableRouteCounter","status":"Killed"},{"id":"59","location":{"end":{"column":30,"line":66},"start":{"column":15,"line":66}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"61","location":{"end":{"column":30,"line":68},"start":{"column":21,"line":68}},"mutatorName":"ArrayDeclaration","replacement":"[]","status":"Killed"},{"id":"60","location":{"end":{"column":51,"line":67},"start":{"column":15,"line":67}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"62","location":{"end":{"column":29,"line":68},"start":{"column":22,"line":68}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"44","location":{"end":{"column":6,"line":56},"start":{"column":39,"line":54}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"45","location":{"end":{"column":35,"line":57},"start":{"column":9,"line":57}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Timeout"},{"id":"63","location":{"end":{"column":38,"line":71},"start":{"column":9,"line":71}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Killed"},{"id":"64","location":{"end":{"column":38,"line":71},"start":{"column":9,"line":71}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"65","location":{"end":{"column":38,"line":71},"start":{"column":9,"line":71}},"mutatorName":"BooleanLiteral","replacement":"this._disableDurationCounter","status":"Killed"},{"id":"48","location":{"end":{"column":6,"line":63},"start":{"column":37,"line":57}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"66","location":{"end":{"column":6,"line":78},"start":{"column":40,"line":71}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"51","location":{"end":{"column":33,"line":60},"start":{"column":15,"line":60}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"52","location":{"end":{"column":30,"line":61},"start":{"column":21,"line":61}},"mutatorName":"ArrayDeclaration","replacement":"[]","status":"Timeout"},{"id":"69","location":{"end":{"column":48,"line":74},"start":{"column":15,"line":74}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"55","location":{"end":{"column":35,"line":64},"start":{"column":9,"line":64}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Timeout"},{"id":"70","location":{"end":{"column":48,"line":75},"start":{"column":21,"line":75}},"mutatorName":"ArrayDeclaration","replacement":"[]","status":"Killed"},{"id":"71","location":{"end":{"column":30,"line":75},"start":{"column":22,"line":75}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"57","location":{"end":{"column":6,"line":70},"start":{"column":37,"line":64}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"58","location":{"end":{"column":8,"line":69},"start":{"column":54,"line":65}},"mutatorName":"ObjectLiteral","replacement":"{}","status":"Timeout"},{"id":"73","location":{"end":{"column":47,"line":75},"start":{"column":41,"line":75}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"76","location":{"end":{"column":20,"line":83},"start":{"column":12,"line":83}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Survived"},{"id":"78","location":{"end":{"column":50,"line":84},"start":{"column":11,"line":84}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Survived"},{"id":"79","location":{"end":{"column":50,"line":84},"start":{"column":11,"line":84}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"82","location":{"end":{"column":46,"line":85},"start":{"column":45,"line":85}},"mutatorName":"ArithmeticOperator","replacement":"+","status":"Survived"},{"id":"83","location":{"end":{"column":42,"line":86},"start":{"column":13,"line":86}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Killed"},{"id":"84","location":{"end":{"column":42,"line":86},"start":{"column":13,"line":86}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"85","location":{"end":{"column":42,"line":86},"start":{"column":13,"line":86}},"mutatorName":"BooleanLiteral","replacement":"this._disableDurationCounter","status":"Killed"},{"id":"67","location":{"end":{"column":8,"line":77},"start":{"column":74,"line":72}},"mutatorName":"ObjectLiteral","replacement":"{}","status":"Timeout"},{"id":"68","location":{"end":{"column":41,"line":73},"start":{"column":15,"line":73}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"86","location":{"end":{"column":10,"line":90},"start":{"column":44,"line":86}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"87","location":{"end":{"column":39,"line":91},"start":{"column":13,"line":91}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Killed"},{"id":"72","location":{"end":{"column":39,"line":75},"start":{"column":32,"line":75}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Timeout"},{"id":"88","location":{"end":{"column":39,"line":91},"start":{"column":13,"line":91}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"89","location":{"end":{"column":39,"line":91},"start":{"column":13,"line":91}},"mutatorName":"BooleanLiteral","replacement":"this._disableRouteCounter","status":"Killed"},{"id":"74","location":{"end":{"column":60,"line":76},"start":{"column":18,"line":76}},"mutatorName":"ArrayDeclaration","replacement":"[]","status":"Timeout"},{"id":"75","location":{"end":{"column":4,"line":102},"start":{"column":103,"line":81}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"92","location":{"end":{"column":34,"line":94},"start":{"column":13,"line":94}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Survived"},{"id":"93","location":{"end":{"column":34,"line":94},"start":{"column":13,"line":94}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"77","location":{"end":{"column":6,"line":100},"start":{"column":28,"line":83}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"95","location":{"end":{"column":30,"line":94},"start":{"column":28,"line":94}},"mutatorName":"EqualityOperator","replacement":">","status":"Killed"},{"id":"96","location":{"end":{"column":10,"line":98},"start":{"column":36,"line":94}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"80","location":{"end":{"column":50,"line":84},"start":{"column":11,"line":84}},"mutatorName":"BooleanLiteral","replacement":"this._ignore.includes(req.originalUrl)","status":"Timeout"},{"id":"81","location":{"end":{"column":8,"line":99},"start":{"column":52,"line":84}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"99","location":{"end":{"column":41,"line":95},"start":{"column":15,"line":95}},"mutatorName":"BooleanLiteral","replacement":"this._disableErrorCounter","status":"Killed"},{"id":"100","location":{"end":{"column":12,"line":97},"start":{"column":43,"line":95}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"102","location":{"end":{"column":4,"line":111},"start":{"column":76,"line":104}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"103","location":{"end":{"column":37,"line":105},"start":{"column":9,"line":105}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Killed"},{"id":"106","location":{"end":{"column":6,"line":107},"start":{"column":39,"line":105}},"mutatorName":"BlockStatement","replacement":"{}","status":"Killed"},{"id":"107","location":{"end":{"column":27,"line":108},"start":{"column":13,"line":108}},"mutatorName":"StringLiteral","replacement":"\"\"","status":"Killed"},{"id":"90","location":{"end":{"column":10,"line":93},"start":{"column":41,"line":91}},"mutatorName":"BlockStatement","replacement":"{}","status":"Timeout"},{"id":"91","location":{"end":{"column":61,"line":92},"start":{"column":35,"line":92}},"mutatorName":"ObjectLiteral","replacement":"{}","status":"Timeout"},{"id":"94","location":{"end":{"column":30,"line":94},"start":{"column":28,"line":94}},"mutatorName":"EqualityOperator","replacement":"<","status":"Timeout"},{"id":"97","location":{"end":{"column":41,"line":95},"start":{"column":15,"line":95}},"mutatorName":"ConditionalExpression","replacement":"true","status":"Timeout"},{"id":"98","location":{"end":{"column":41,"line":95},"start":{"column":15,"line":95}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Timeout"},{"id":"101","location":{"end":{"column":60,"line":96},"start":{"column":35,"line":96}},"mutatorName":"ObjectLiteral","replacement":"{}","status":"Timeout"},{"id":"104","location":{"end":{"column":37,"line":105},"start":{"column":9,"line":105}},"mutatorName":"ConditionalExpression","replacement":"false","status":"Killed"},{"id":"105","location":{"end":{"column":37,"line":105},"start":{"column":9,"line":105}},"mutatorName":"BooleanLiteral","replacement":"this._disableDefaultMetrics","status":"Killed"}],"source":"import * as express from 'express'\n\nexport interface Options {\n ignore: string[]\n disableRouteCounter: boolean\n disableErrorCounter: boolean\n disableDurationCounter: boolean\n disableDefaultMetrics: boolean\n}\n\nexport class Metrics {\n public readonly _ignore: string[]\n public readonly _disableRouteCounter: boolean\n public readonly _disableErrorCounter: boolean\n public readonly _disableDurationCounter: boolean\n public readonly _disableDefaultMetrics: boolean\n\n public readonly _client: any\n\n public readonly _httpRequestDurationMicroseconds: any\n public readonly _numOfRequests: any\n public readonly _numOfErrors: any\n\n constructor (options: Partial<Options> = {}) {\n this._client = require('prom-client')\n\n if (typeof options.ignore !== 'undefined') {\n this._ignore = options.ignore\n this._ignore.push('/_metrics')\n this._ignore.push('/favicon.ico')\n } else {\n this._ignore = ['/_metrics', '/favicon.ico']\n }\n if (typeof options.disableRouteCounter !== 'undefined') {\n this._disableRouteCounter = options.disableRouteCounter\n } else {\n this._disableRouteCounter = false\n }\n if (typeof options.disableErrorCounter !== 'undefined') {\n this._disableErrorCounter = options.disableErrorCounter\n } else {\n this._disableErrorCounter = false\n }\n if (typeof options.disableDurationCounter !== 'undefined') {\n this._disableDurationCounter = options.disableDurationCounter\n } else {\n this._disableDurationCounter = false\n }\n if (typeof options.disableDefaultMetrics !== 'undefined') {\n this._disableDefaultMetrics = options.disableDefaultMetrics\n } else {\n this._disableDefaultMetrics = false\n }\n if (!this._disableDefaultMetrics) {\n this._client._collectDefaultMetrics = this._client.collectDefaultMetrics\n }\n if (!this._disableErrorCounter) {\n this._numOfErrors = new this._client.Counter({\n name: 'numOfErrors',\n help: 'Number of errors',\n labelNames: ['error']\n })\n }\n if (!this._disableRouteCounter) {\n this._numOfRequests = new this._client.Counter({\n name: 'numOfRequests',\n help: 'Number of requests made to a route',\n labelNames: ['route']\n })\n }\n if (!this._disableDurationCounter) {\n this._httpRequestDurationMicroseconds = new this._client.Histogram({\n name: 'http_request_duration_ms',\n help: 'Duration of HTTP requests in ms',\n labelNames: ['method', 'route', 'code'],\n buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]\n })\n }\n }\n\n public collect = (req: express.Request, res: express.Response, next: express.NextFunction): void => {\n res.locals.startEpoch = Date.now()\n res.on('finish', () => {\n if (!this._ignore.includes(req.originalUrl)) {\n const responseTimeInMs = Date.now() - res.locals.startEpoch\n if (!this._disableDurationCounter) {\n this._httpRequestDurationMicroseconds\n .labels(req.method, req.originalUrl, res.statusCode.toString())\n .observe(responseTimeInMs)\n }\n if (!this._disableRouteCounter) {\n this._numOfRequests.inc({ route: req.originalUrl })\n }\n if (res.statusCode >= 400) {\n if (!this._disableErrorCounter) {\n this._numOfErrors.inc({ error: res.statusCode })\n }\n }\n }\n })\n next()\n }\n\n public endpoint = (req: express.Request, res: express.Response): void => {\n if (!this._disableDefaultMetrics) {\n this._client._collectDefaultMetrics()\n }\n res.set('Content-Type', this._client.register.contentType)\n res.status(200)\n res.end(this._client.register.metrics())\n }\n}\nexport default Metrics\n"}},"schemaVersion":"1.0","thresholds":{"break":null,"high":80,"low":60}};