UNPKG

@opentelemetry/instrumentation

Version:
80 lines 2.56 kB
"use strict"; /* * Copyright The OpenTelemetry Authors * * Licensed 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 * * https://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.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0; /** * function to execute patched function and being able to catch errors * @param execute - function to be executed * @param onFinish - callback to run when execute finishes */ function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { let error; let result; try { result = execute(); } catch (e) { error = e; } finally { onFinish(error, result); if (error && !preventThrowingError) { // eslint-disable-next-line no-unsafe-finally throw error; } // eslint-disable-next-line no-unsafe-finally return result; } } exports.safeExecuteInTheMiddle = safeExecuteInTheMiddle; /** * Async function to execute patched function and being able to catch errors * @param execute - function to be executed * @param onFinish - callback to run when execute finishes */ async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { let error; let result; try { result = await execute(); } catch (e) { error = e; } finally { onFinish(error, result); if (error && !preventThrowingError) { // eslint-disable-next-line no-unsafe-finally throw error; } // eslint-disable-next-line no-unsafe-finally return result; } } exports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync; /** * Checks if certain function has been already wrapped * @param func */ function isWrapped(func) { return (typeof func === 'function' && typeof func.__original === 'function' && typeof func.__unwrap === 'function' && func.__wrapped === true); } exports.isWrapped = isWrapped; //# sourceMappingURL=utils.js.map