UNPKG

newrelic

Version:
60 lines (51 loc) 1.21 kB
/* * Copyright 2024 New Relic Corporation. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ 'use strict' const SegmentSpec = require('./segment') /* eslint-disable jsdoc/require-property-description */ /** * @typedef {object} WrapSpecParams * @mixes SegmentSpecParams * @property {boolean} [matchArity] * @property {function} [wrapper] */ /** * Provides configuration for wrapping functions. * * @example * function toWrap (a, b) {} * const wrapped = shim.wrap(toWrap, { * matchArity: true, * wrapper: function () { * return function wrappedFn () {} * } * }) * assert.equal(toWrap.length, wrapped.length) */ class WrapSpec extends SegmentSpec { /** * Indicates that the arity of the wrapper should match the arity of the * function being wrapped. * * @type {boolean} */ matchArity /** * A function that wraps another function. * * @type {function} */ wrapper /* eslint-disable jsdoc/require-param-description */ /** * @param {WrapSpecParams} params */ constructor(params) { super(params) this.matchArity = params.matchArity ?? false this.wrapper = params.wrapper } } module.exports = WrapSpec