UNPKG

newrelic

Version:
56 lines (51 loc) 2.26 kB
/* * Copyright 2020 New Relic Corporation. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ 'use strict' const Shim = require('./shim') const ConglomerateShim = require('./conglomerate-shim') const DatastoreShim = require('./datastore-shim') const MessageShim = require('./message-shim') const PromiseShim = require('./promise-shim') const TransactionShim = require('./transaction-shim') const WebFrameworkShim = require('./webframework-shim') const properties = require('../util/properties') const InstrumentationDescriptor = require('../instrumentation-descriptor') const SHIM_TYPE_MAP = Object.create(null) SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_GENERIC] = Shim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_CONGLOMERATE] = ConglomerateShim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_DATASTORE] = DatastoreShim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_MESSAGE] = MessageShim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_PROMISE] = PromiseShim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_TRANSACTION] = TransactionShim SHIM_TYPE_MAP[InstrumentationDescriptor.TYPE_WEB_FRAMEWORK] = WebFrameworkShim /** * * @param {object} params input params * @param {string} params.type shim type * @param {Agent} params.agent instance of agent * @param {string} params.moduleName module name * @param {string} params.resolvedName fully resolved name of module * @param {string} params.shimName name of shim, used to associate multiple shim instances * @param {string} params.pkgVersion version of pkg * @returns {Shim} shim instance */ function createShimFromType({ type, agent, moduleName, resolvedName, shimName, pkgVersion }) { let shim = null if (properties.hasOwn(SHIM_TYPE_MAP, type)) { const ShimClass = SHIM_TYPE_MAP[type] shim = new ShimClass(agent, moduleName, resolvedName, shimName, pkgVersion) } else { shim = new Shim(agent, moduleName, resolvedName, shimName, pkgVersion) } return shim } exports.Shim = Shim exports.ConglomerateShim = ConglomerateShim exports.DatastoreShim = DatastoreShim exports.MessageShim = MessageShim exports.PromiseShim = PromiseShim exports.TransactionShim = TransactionShim exports.WebFrameworkShim = WebFrameworkShim exports.createShimFromType = createShimFromType