-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js.map
1 lines (1 loc) · 47.6 KB
/
index.js.map
1
{"mappings":"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","sources":["src/index.js"],"sourcesContent":["/*\r\nMIT License\r\n\r\nCopyright (c) 2023 Simon Y. Blackwell, AnyWhichWay, LLC\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n*/\r\nimport { performance } from \"node:perf_hooks\";\r\nimport async_hooks from 'node:async_hooks';\r\nimport process from \"node:process\";\r\nimport vm from \"node:vm\"\r\nimport v8 from \"v8\";\r\nimport {expect} from \"chai\";\r\n\r\nv8.setFlagsFromString('--expose_gc');\r\nconst gc = vm.runInNewContext('gc');\r\n\r\nimport { max, min, mean, std, sum, variance } from 'mathjs/number';\r\n\r\nconst asyncTracker = {created:new Map(),resolved:new Set(),rejected:new Set()},\r\n asyncHookOptions = {\r\n init(asyncId, type, triggerAsyncId, resource){\r\n if(!asyncHook.tracking) {\r\n asyncHook.tracking = true;\r\n if(!(asyncTracker.created.has(asyncId) || asyncTracker.created.has(triggerAsyncId))) {\r\n asyncTracker.created.set(asyncId,resource);\r\n }\r\n asyncHook.tracking = false;\r\n }\r\n },\r\n promiseResolve(asyncId) {\r\n const promise = asyncTracker.created.get(asyncId);\r\n if(promise) {\r\n asyncTracker.resolved.add(promise);\r\n }\r\n }\r\n },\r\n OldPromise = global.Promise,\r\n MonkeyPromise = class Promise extends OldPromise {\r\n constructor(executor) {\r\n super(executor); // call native Promise constructor\r\n if(!MonkeyPromise.tracking) {\r\n MonkeyPromise.tracking = true;\r\n const [asyncId,triggerAsyncId] = Object.getOwnPropertySymbols(this).map((key) => this[key]);\r\n if(!(asyncTracker.created.has(asyncId) || asyncTracker.created.has(triggerAsyncId))) {\r\n asyncTracker.created.set(asyncId, this);\r\n this.then(() => {\r\n asyncTracker.resolved.add(this);\r\n })\r\n this.catch(() => {\r\n asyncTracker.rejected.add(this);\r\n })\r\n // todo rewrite catch to watch fro unhandled rejecttions by counting for calls\r\n }\r\n MonkeyPromise.tracking = false;\r\n }\r\n }\r\n },\r\n asyncHook = async_hooks.createHook(asyncHookOptions),\r\n trackAsync = (on) => {\r\n if(on) {\r\n if(!trackAsync.enabled) {\r\n trackAsync.enabled = true;\r\n Object.values(asyncTracker).forEach((map) => {\r\n map.clear();\r\n })\r\n asyncHook.enable();\r\n global.Promise = MonkeyPromise;\r\n }\r\n } else if(!on && trackAsync.enabled){\r\n trackAsync.enabled = false;\r\n asyncHook.disable();\r\n global.Promise = Promise;\r\n }\r\n };\r\n\r\nconst objectDelta = (start,finish) => {\r\n return Object.entries(start).reduce((delta,[key,value]) => {\r\n if(typeof(value)===\"number\" && typeof(finish[key])===\"number\") {\r\n delta[key] = finish[key] - value;\r\n }\r\n return delta;\r\n },{})\r\n}\r\n\r\nconst objectDeltaPercent = (start,finish) => {\r\n return Object.entries(start).reduce((delta,[key,value]) => {\r\n if(typeof(value)===\"number\" && typeof(finish[key])===\"number\") {\r\n delta[key] = ((finish[key] / value) - 1) + \"%\";\r\n }\r\n return delta;\r\n },{})\r\n}\r\n\r\nconst copyExpected = (expected) => {\r\n if(typeof(expected)!==\"object\" || expected==null) {\r\n return expected;\r\n }\r\n return Object.entries(expected).reduce((expected,[key,value]) => {\r\n if(value!==false && value!==true) {\r\n expected[key] = copyExpected(value);\r\n }\r\n return expected;\r\n },{})\r\n}\r\n\r\nconst issues = (summary) => {\r\n const issues = {};\r\n Object.entries(summary).forEach(([suiteName,summary]) => {\r\n issues[suiteName] = {};\r\n Object.entries(summary).forEach(([testName,testSummary]) => {\r\n const expected = summary[testName].expected;\r\n Object.entries(testSummary.memory?.delta||{}).forEach(([memoryType,value]) => {\r\n if((expected.memory===true && value>0) || value > expected.memory[memoryType] || (expected.memory[memoryType]===undefined && value>0)) {\r\n issues[suiteName][testName] ||= {};\r\n issues[suiteName][testName][memoryType] = value;\r\n }\r\n })\r\n if(testSummary.pendingPromises>0 && (expected.pendingPromises===true || testSummary.pendingPromises>expected.pendingPromises)) {\r\n issues[suiteName][testName] ||= {};\r\n issues[suiteName][testName].pendingPromises = testSummary.pendingPromises;\r\n }\r\n if(testSummary.unresolvedAsyncs>0 && (expected.unresolvedAsyncs===true || testSummary.unresolvedAsyncs>expected.unresolvedAsyncs)) {\r\n issues[suiteName][testName] ||= {};\r\n issues[suiteName][testName].unresolvedAsyncs = testSummary.unresolvedAsyncs;\r\n }\r\n Object.entries(testSummary.activeResources||{}).forEach(([resourceType,count]) => {\r\n if(expected.activeResources==null || expected.activeResources==false) {\r\n return;\r\n } else if(expected.activeResources !== true && count>0) {\r\n expected.activeResources = {};\r\n }\r\n if(count>0 && (expected.activeResources===true) || expected.activeResources[resourceType]>count || (expected.activeResources[resourceType]===undefined)) {\r\n issues[suiteName][testName] ||= {};\r\n issues[suiteName][testName][resourceType] = count;\r\n }\r\n });\r\n if(issues[suiteName][testName]) {\r\n issues[suiteName][testName].expected = copyExpected(expected);\r\n summary[testName].issues = issues[testName];\r\n }\r\n })\r\n })\r\n return issues;\r\n}\r\n\r\nconst summarize = (metrics) => {\r\n const summary = {};\r\n Object.entries(metrics).forEach(([suiteName,metrics]) => {\r\n summary[suiteName] = {};\r\n Object.entries(metrics).filter(([key]) => ![\"sample\",\"pendingPromises\",\"activeResources\"].includes(key)).forEach(([testName, {memory,pendingPromises,activeResources,samples,expected}]) => {\r\n const testSummary = {cycles:samples?.length||0,memory,pendingPromises,activeResources,expected:copyExpected(expected)},\r\n durations = [],\r\n cputime = {};\r\n let cpuSampled;\r\n (samples||[]).forEach((sample) => {\r\n if(sample.performance!=null) {\r\n durations.push(sample.performance);\r\n }\r\n if(sample.cpu!=null) {\r\n Object.entries(sample.cpu).forEach(([cpuType,value]) => {\r\n if(expected.sample.cpu[cpuType]!==false) {\r\n cpuSampled = true;\r\n if(cpuType===\"delta\") {\r\n return;\r\n }\r\n cputime[cpuType] ||= [];\r\n cputime[cpuType].push(value);\r\n }\r\n })\r\n }\r\n })\r\n\r\n if(durations.length>0) {\r\n for(let i=0;i<=2 && durations.length>10;i--) {\r\n const maxi = durations.indexOf(max(durations));\r\n durations.splice(maxi, 1);\r\n const mini = durations.indexOf(min(durations));\r\n durations.splice(mini, 1);\r\n }\r\n const performance = testSummary.performance = {};\r\n Object.defineProperty(performance,\"sum\",{enumerable:true,get() { return sum(durations)}});\r\n Object.defineProperty(performance,\"max\",{enumerable:true,get() { return max(durations)}});\r\n Object.defineProperty(performance,\"avg\",{enumerable:true,get() { return mean(durations) }});\r\n Object.defineProperty(performance,\"min\",{enumerable:true,get() { return min(durations) }});\r\n Object.defineProperty(performance,\"var\",{enumerable:true,get() { return variance(durations) }});\r\n Object.defineProperty(performance,\"stdev\",{enumerable:true,get() { return std(durations) }});\r\n\r\n const opsSec = testSummary.opsSec = {},\r\n ops = durations.map((duration) => 1000 / duration);\r\n Object.defineProperty(opsSec,\"max\",{enumerable:true,get() { return max(ops)}});\r\n Object.defineProperty(opsSec,\"avg\",{enumerable:true,get() { return mean(ops)}});\r\n Object.defineProperty(opsSec,\"min\",{enumerable:true,get() { return min(ops)}});\r\n Object.defineProperty(opsSec,\"var\",{enumerable:true,get() { return variance(ops)}});\r\n Object.defineProperty(opsSec,\"stdev\",{enumerable:true,get() { return std(ops)}});\r\n Object.defineProperty(opsSec,\"+/-\",{enumerable:true,get() {\r\n const diff1 = this.max - this.avg,\r\n diff2 = this.avg - this.min;\r\n return (Math.max(diff1/this.avg,diff2/this.avg)*100).toFixed(2) + \"%\";\r\n }})\r\n }\r\n if(cpuSampled) {\r\n const cpu = testSummary.cpu = {};\r\n Object.entries(cputime).forEach(([cpuType,values]) => {\r\n for(let i=0;i<=2 && values.length>10;i--) {\r\n const maxi = values.indexOf(max(values));\r\n values.splice(maxi, 1);\r\n const mini = values.indexOf(min(values));\r\n values.splice(mini, 1);\r\n }\r\n const o = cpu[cpuType] = {};\r\n Object.defineProperty(o,\"sum\",{enumerable:true,get() { return sum(values)}});\r\n Object.defineProperty(o,\"max\",{enumerable:true,get() { return values.length>0 ? max(values) : undefined }});\r\n Object.defineProperty(o,\"avg\",{enumerable:true,get() { return values.length>0 ? mean(values) : undefined }});\r\n Object.defineProperty(o,\"min\",{enumerable:true,get() { return values.length>0 ? min(values) : undefined }});\r\n Object.defineProperty(o,\"var\",{enumerable:true,get() { return values.length>0 ? variance(values) : undefined }});\r\n Object.defineProperty(o,\"stdev\",{enumerable:true,get() { return values.length>0 ? std(values) : undefined }});\r\n Object.defineProperty(o,\"+/-\",{enumerable:true,get() {\r\n if(this.avg===0) {\r\n return \"0%\"\r\n }\r\n const diff1 = this.max - this.avg,\r\n diff2 = this.avg - this.min;\r\n return (Math.max(diff1/this.avg,diff2/this.avg)*100).toFixed(2) + \"%\";\r\n }})\r\n })\r\n\r\n delete testSummary.expected.sample.size;\r\n }\r\n Object.entries(testSummary).forEach(([key,value]) => {\r\n if(key===\"performance\" || key===\"cpu\" || key===\"opsSec\") {\r\n if(!expected.sample) {\r\n delete testSummary[key];\r\n }\r\n return;\r\n }\r\n if(key!==\"expected\" && key!==\"cycles\" && (value===undefined || expected[key]===false || expected[key]==null)) {\r\n delete testSummary[key];\r\n }\r\n })\r\n summary[suiteName][testName] = testSummary;\r\n })\r\n });\r\n return summary;\r\n}\r\n\r\n\r\nconst _metrics = {},\r\n metrics = () => {\r\n return _metrics\r\n };\r\n\r\nconst benchtest = {};\r\n\r\nbenchtest.describe = (describeSpecification) => (name,fn) => {\r\n benchtest.suiteName = name;\r\n return describeSpecification(name,fn);\r\n};\r\n\r\nbenchtest.it = benchtest.test = (testSpecFunction) => {\r\n const _testSpecFunction = testSpecFunction;\r\n return function(name,f,options) {\r\n let timeout, cycles = 0, metrics;\r\n if(typeof(options)===\"number\" || !options) {\r\n return _testSpecFunction(name,f,options);\r\n }\r\n timeout = options.timeout;\r\n metrics = options.metrics || {memory:true, pendingPromises: true,activeResources:true, sample:{size:100}};\r\n cycles = typeof(metrics.sample?.size)===\"number\" ? metrics.sample?.size : (metrics.sample ? 100 : 0);\r\n if((typeof(metrics.sample)===\"object\" && metrics.sample.cpu==null && metrics.sample.performance==null) || metrics.sample) {\r\n metrics.sample = {\r\n size: cycles,\r\n cpu: true,\r\n performance: true\r\n }\r\n }\r\n if(metrics.sample?.opsSec===true && !metrics.sample.performance) {\r\n metrics.sample.performance = true;\r\n } else if(typeof(metrics.sample?.opsSec)===\"number\" && !metrics.sample.performance) {\r\n metrics.sample.performance = metrics.sample.opsSec / 1000;\r\n }\r\n if(metrics.memory && !cycles) {\r\n cycles = 1;\r\n }\r\n if(typeof(metrics.memory)===\"object\") {\r\n metrics.memory = {rss:false,heapTotal:false,heapUsed:false,external:false,arrayBuffers:false,...metrics.memory}\r\n }\r\n if(metrics.sample?.cpu===true) {\r\n metrics.sample.cpu = {user:true,system:true}\r\n }\r\n const expected = {...metrics},\r\n _f = f,\r\n memory = metrics?.memory ? {} : undefined,\r\n AsyncFunction = (async ()=>{}).constructor;\r\n let sampleMetrics,\r\n pendingPromises,\r\n active,\r\n activeResources;\r\n if(f.constructor===AsyncFunction) {\r\n f = async function() {\r\n //trackAsync(false);\r\n let error;\r\n active = process.getActiveResourcesInfo().reduce((resources,item) => {\r\n resources[item] ||= 0;\r\n resources[item]++;\r\n return resources;\r\n },{});\r\n trackAsync(true);\r\n await _f();\r\n trackAsync(false);\r\n if(metrics?.pendingPromises) {\r\n pendingPromises = asyncTracker.created.size - (asyncTracker.resolved.size - asyncTracker.rejected.size);\r\n if(typeof(metrics.pendingPromises)===\"number\") {\r\n try {\r\n expect(pendingPromises).to.be.lessThanOrEqual(metrics.pendingPromises);\r\n } catch(e) {\r\n e.message += ' when checking pendingPromises';\r\n error = e;\r\n }\r\n }\r\n }\r\n if(metrics?.activeResources) {\r\n activeResources = process.getActiveResourcesInfo().reduce((resources,item) => {\r\n resources[item] ||= 0;\r\n resources[item]++;\r\n return resources;\r\n }, {});\r\n Object.entries(activeResources).forEach(([key,value]) => {\r\n if(value<=active[key]) {\r\n delete activeResources[key];\r\n } else {\r\n activeResources[key] = activeResources[key] - (active[key] || 0)\r\n }\r\n })\r\n if(typeof(metrics.activeResources)===\"object\") {\r\n for(const [type,value] of Object.entries(metrics.activeResources)) {\r\n if(typeof(value)===\"number\") {\r\n try {\r\n expect(activeResources[type]).to.be.lessThanOrEqual(value);\r\n } catch(e) {\r\n e.message += ` when checking activeResources[${type}]`;\r\n error ||= e;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if(metrics) {\r\n gc();\r\n if(memory) {\r\n memory.start = process.memoryUsage();\r\n }\r\n gc();\r\n let cycle = 1;\r\n while(cycle<=cycles && !error) {\r\n sampleMetrics ||= [];\r\n const sample = {\r\n cycle,\r\n cpu: metrics.sample?.cpu ? process.cpuUsage() : undefined,\r\n performance: metrics.sample?.performance ? performance.now() : undefined\r\n }\r\n try {\r\n await _f();\r\n } catch(e) {\r\n error = e;\r\n } finally {\r\n if(sample.performance) {\r\n sample.performance = performance.now() - sample.performance;\r\n if(typeof(metrics.sample.performance)===\"number\") {\r\n try {\r\n expect(sample.performance).to.be.lessThanOrEqual(metrics.sample.performance)\r\n } catch(e) {\r\n e.message += ` when checking performance`;\r\n error ||= e;\r\n }\r\n }\r\n }\r\n if(sample.cpu) {\r\n sample.cpu = process.cpuUsage(sample.cpu);\r\n if(typeof(metrics.sample.cpu)===\"object\") {\r\n for(const [type,max] of Object.entries(metrics.sample.cpu)) {\r\n if(typeof(max)===\"number\") {\r\n try {\r\n expect(sample.cpu[type]).to.be.lessThanOrEqual(max);\r\n } catch(e) {\r\n e.message += ` when checking cpu[${type}]`;\r\n error ||= e;\r\n break;\r\n }\r\n } else if(!max) {\r\n delete sample.cpu[type];\r\n }\r\n }\r\n }\r\n }\r\n sampleMetrics.push(sample);\r\n gc();\r\n cycle++;\r\n }\r\n }\r\n if(memory) {\r\n gc();\r\n memory.finish = process.memoryUsage();\r\n memory.delta = objectDelta(memory.start,memory.finish);\r\n memory.deltaPct = objectDeltaPercent(memory.start,memory.finish);\r\n if(typeof(metrics.memory)===\"object\") {\r\n for(const [type,max] of Object.entries(metrics.memory)) {\r\n if(typeof(max)===\"number\") {\r\n try {\r\n expect(memory.delta[type]).to.be.lessThanOrEqual(max);\r\n } catch(e) {\r\n e.message += ` when checking memory[${type}]`;\r\n error ||= e;\r\n break;\r\n }\r\n } else if(!max) {\r\n delete memory.start[type];\r\n delete memory.finish[type];\r\n delete memory.delta[type];\r\n delete memory.deltaPct[type];\r\n }\r\n }\r\n }\r\n }\r\n metrics[name] = {\r\n memory,\r\n pendingPromises,\r\n activeResources,\r\n samples: sampleMetrics,\r\n expected\r\n }\r\n Object.entries(metrics[name]).forEach(([key,value]) => {\r\n if(value===undefined) {\r\n delete metrics[name][key]\r\n }\r\n })\r\n _metrics[suiteName][name] = metrics[name];\r\n if(error) {\r\n throw error;\r\n }\r\n }\r\n }\r\n } else {\r\n f = function() {\r\n // trackAsync(false);\r\n let error;\r\n if (metrics?.pendingPromises!=null) {\r\n pendingPromises = Promise.instances?.size || 0;\r\n }\r\n active = process.getActiveResourcesInfo().reduce((resources, item) => {\r\n resources[item] ||= 0;\r\n resources[item]++;\r\n return resources;\r\n }, {});\r\n trackAsync(true);\r\n _f();\r\n trackAsync(false);\r\n if(metrics?.pendingPromises!=null) {\r\n pendingPromises = asyncTracker.created.size - (asyncTracker.resolved.size - asyncTracker.rejected.size);\r\n if(typeof(metrics.pendingPromises)===\"number\") {\r\n try {\r\n expect(pendingPromises).to.be.lessThanOrEqual(metrics.pendingPromises);\r\n } catch(e) {\r\n e.message += ` when checking pendingPromises`;\r\n error = e;\r\n }\r\n }\r\n }\r\n if(metrics?.activeResources) {\r\n activeResources = process.getActiveResourcesInfo().reduce((resources, item) => {\r\n resources[item] ||= 0;\r\n resources[item]++;\r\n return resources;\r\n }, {});\r\n Object.entries(activeResources).forEach(([key, value]) => {\r\n if (value <= active[key]) {\r\n delete activeResources[key];\r\n } else {\r\n activeResources[key] = activeResources[key] - (active[key] || 0)\r\n }\r\n })\r\n if(typeof(metrics.activeResources)===\"object\") {\r\n for(const [type,value] of Object.entries(metrics.activeResources)) {\r\n if(typeof(value)===\"number\") {\r\n try {\r\n expect(activeResources[type]).to.be.lessThanOrEqual(value);\r\n } catch(e) {\r\n e.message += ' when checking activeResources'\r\n error ||= e;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (metrics) {\r\n gc();\r\n if (memory) {\r\n gc();\r\n memory.start = process.memoryUsage();\r\n gc();\r\n }\r\n let cycle = 1;\r\n while (cycle <= cycles && !error) {\r\n sampleMetrics ||= [];\r\n const sample = {\r\n cycle,\r\n cpu: metrics.sample?.cpu ? process.cpuUsage() : undefined,\r\n performance: metrics.sample?.performance ? performance.now() : undefined\r\n }\r\n try {\r\n _f();\r\n } catch (e) {\r\n error = e;\r\n } finally {\r\n if(sample.performance) {\r\n sample.performance = performance.now() - sample.performance;\r\n if(typeof(metrics.sample.performance)===\"number\") {\r\n try {\r\n expect(sample.performance).to.be.lessThanOrEqual(metrics.sample.performance)\r\n } catch(e) {\r\n e.message += ' when checking performance';\r\n error ||= e;\r\n }\r\n }\r\n }\r\n if (sample.cpu) {\r\n sample.cpu = process.cpuUsage(sample.cpu);\r\n if(typeof(metrics.sample.cpu)===\"object\") {\r\n for(let [type,max] of Object.entries(metrics.sample.cpu)) {\r\n if(typeof(max)===\"number\") {\r\n try {\r\n expect(sample.cpu[type]).to.be.lessThanOrEqual(max);\r\n } catch(e) {\r\n e.message += ` when checking cpu[${type}]`;\r\n error ||= e;\r\n break;\r\n }\r\n } else if(!max) {\r\n delete sample.cpu[type];\r\n }\r\n }\r\n }\r\n }\r\n sampleMetrics.push(sample);\r\n gc();\r\n cycle++;\r\n }\r\n }\r\n if (memory) {\r\n gc();\r\n memory.finish = process.memoryUsage();\r\n memory.delta = objectDelta(memory.start, memory.finish);\r\n memory.deltaPct = objectDeltaPercent(memory.start, memory.finish);\r\n if(typeof(metrics.memory)===\"object\") {\r\n for(let [type,max] of Object.entries(metrics.memory)) {\r\n if(max===true) {\r\n max = 0;\r\n }\r\n if(typeof(max)===\"number\") {\r\n try {\r\n expect(memory.delta[type]).to.be.lessThanOrEqual(max);\r\n } catch(e) {\r\n e.message += ` when checking memory[${type}]`;\r\n error ||= e;\r\n break;\r\n }\r\n } else if(!max) {\r\n delete memory.start[type];\r\n delete memory.finish[type];\r\n delete memory.delta[type];\r\n delete memory.deltaPct[type];\r\n }\r\n }\r\n }\r\n }\r\n metrics[name] = {\r\n memory,\r\n pendingPromises,\r\n activeResources,\r\n samples: sampleMetrics,\r\n expected\r\n }\r\n Object.entries(metrics[name]).forEach(([key,value]) => {\r\n if(value===undefined) {\r\n delete metrics[name][key]\r\n }\r\n })\r\n _metrics[suiteName][name] = metrics[name];\r\n if (error) {\r\n throw error;\r\n }\r\n }\r\n }\r\n }\r\n const spec = _testSpecFunction(name,f,timeout),\r\n suiteName = benchtest.suiteName;\r\n _metrics[suiteName] ||= {};\r\n return spec;\r\n }\r\n}\r\n\r\nbenchtest.summarize = summarize;\r\nbenchtest.issues = issues;\r\nbenchtest.metrics = metrics;\r\n\r\nexport {benchtest, benchtest as default}\r\n"],"names":[],"version":3,"file":"index.js.map"}