Monkey Patch Wrapper that support multiple wrapping and unwrapping.
npm install --save mpwrapperconsthttps=require('https');constmpWrapper=require('mpwrapper');constwrapper1=mpWrapper.wrap(https,'get',(original)=>{returnfunction(){console.log('before request 1');constresult=original.apply(this,arguments);console.log('after request 1');returnresult;};});constwrapper2=mpWrapper.wrap(https,'get',(original)=>{returnfunction(){console.log('before request 2');constresult=original.apply(this,arguments);console.log('after request 2');returnresult;};});functiongetData(callback){consturl='https://raw.githubusercontent.com/obecny/mpwrapper/master/package.json';https.get(url,(response)=>{letdata='';response.on('data',(chunk)=>{data+=chunk;});response.on('end',()=>{constinfo=JSON.parse(data);console.log(`${info.name} - ${info.version}`);callback();});});}getData(()=>{wrapper1.unwrap();getData(()=>{wrapper2.unwrap();getData(()=>{console.log('done');});});});// before request 1// before request 2// after request 2// after request 1// mpwrapper - 0.1.0// before request 2// after request 2// mpwrapper - 0.1.0// mpwrapper - 0.1.0// doneimport*asmpWrapperfrom'mpwrapper';constwrapper1=mpWrapper.wrap(XMLHttpRequest.prototype,'open',(original)=>{returnfunction(){console.log('before request 1');constresult=original.apply(this,arguments);console.log('after request 1');returnresult;};});constwrapper2=mpWrapper.wrap(XMLHttpRequest.prototype,'open',(original)=>{returnfunction(){console.log('before request 2');constresult=original.apply(this,arguments);console.log('after request 2');returnresult;};});functiongetData(callback){consturl='https://raw.githubusercontent.com/obecny/mpwrapper/master/package.json';constreq=newXMLHttpRequest();req.open('GET',url,true);req.send();req.onload=function(){constinfo=JSON.parse(req.responseText);console.log(`${info.name} - ${info.version}`);callback();};}getData(()=>{wrapper1.unwrap();getData(()=>{wrapper2.unwrap();getData(()=>{console.log('done');});});});// before request 1// before request 2// after request 2// after request 1// mpwrapper - 0.1.0// before request 2// after request 2// mpwrapper - 0.1.0// mpwrapper - 0.1.0// doneApache 2.0 - See LICENSE for more information.