Repository URL to install this package:
|
Version:
0.7.0 ▾
|
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const requireHook=require("../../../util/requireHook"),cls=require("../../cls");let isActive=!1;function instrumentMemored(memored){return["read","multiRead","store","multiStore","remove","multiRemove","clean","size","keys"].forEach(instrumentMemoredFunction.bind(null,memored)),memored}function instrumentMemoredFunction(memored,fnName){if("function"==typeof memored[fnName]){const original=memored[fnName];memored[fnName]=function(){if(!isActive)return original.apply(this,arguments);var originalArgs=new Array(arguments.length);for(let i=0;i<arguments.length;i++)originalArgs[i]=arguments[i];let originalCb,j;for(j=originalArgs.length-1;0<=j;j--)if("function"==typeof originalArgs[j]){originalCb=originalArgs[j];break}return originalCb&&(originalArgs[j]=cls.ns.bind(function(){originalCb.apply(this,arguments)})),original.apply(this,originalArgs)}}}exports.init=function(){requireHook.onFileLoad(/\/memored\/index.js/,instrumentMemored)},exports.activate=function(){isActive=!0},exports.deactivate=function(){isActive=!1};