UNPKG

skywalking-backend-js-netease

Version:

The NodeJS agent for Apache SkyWalking

68 lines 2.35 kB
"use strict"; /*! * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapPromise = exports.wrapCallback = exports.wrapEmit = void 0; exports.wrapEmit = (span, ee, doError = true, stop = NaN) => { // stop = NaN because NaN !== NaN const stopIsFunc = typeof stop === 'function'; const _emit = ee.emit; Object.defineProperty(ee, 'emit', { configurable: true, writable: true, value: function () { const event = arguments[0]; span.resync(); try { if (doError && event === 'error') span.error(arguments[1]); return _emit.apply(this, arguments); } catch (err) { span.error(err); throw err; } finally { if (stopIsFunc ? stop(event) : event === stop) span.stop(); else span.async(); } }, }); }; exports.wrapCallback = (span, callback, idxError = false) => { return function () { if (idxError !== false && arguments[idxError]) span.error(arguments[idxError]); span.stop(); return callback.apply(this, arguments); }; }; exports.wrapPromise = (span, promise) => { return promise.then((res) => { span.stop(); return res; }, (err) => { span.error(err); span.stop(); return Promise.reject(err); }); }; //# sourceMappingURL=SwPlugin.js.map