%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const { FunctionPrototypeBind, ObjectDefineProperties, MathCeil, ReflectApply, ReflectConstruct, } = primordials; const { InternalPerformanceEntry } = require('internal/perf/performance_entry'); const { now } = require('internal/perf/utils'); const { validateFunction, validateObject, } = require('internal/validators'); const { isHistogram } = require('internal/histogram'); const { codes: { ERR_INVALID_ARG_TYPE, }, } = require('internal/errors'); const { enqueue, } = require('internal/perf/observe'); const { kEmptyObject, } = require('internal/util'); function processComplete(name, start, args, histogram) { const duration = now() - start; if (histogram !== undefined) histogram.record(MathCeil(duration * 1e6)); const entry = new InternalPerformanceEntry( name, 'function', start, duration, args); for (let n = 0; n < args.length; n++) entry[n] = args[n]; enqueue(entry); } function timerify(fn, options = kEmptyObject) { validateFunction(fn, 'fn'); validateObject(options, 'options'); const { histogram } = options; if (histogram !== undefined && (!isHistogram(histogram) || typeof histogram.record !== 'function')) { throw new ERR_INVALID_ARG_TYPE( 'options.histogram', 'RecordableHistogram', histogram); } function timerified(...args) { const isConstructorCall = new.target !== undefined; const start = now(); const result = isConstructorCall ? ReflectConstruct(fn, args, fn) : ReflectApply(fn, this, args); if (!isConstructorCall && typeof result?.finally === 'function') { return result.finally( FunctionPrototypeBind( processComplete, result, fn.name, start, args, histogram)); } processComplete(fn.name, start, args, histogram); return result; } ObjectDefineProperties(timerified, { length: { __proto__: null, configurable: false, enumerable: true, value: fn.length, }, name: { __proto__: null, configurable: false, enumerable: true, value: `timerified ${fn.name}` } }); return timerified; } module.exports = timerify;