proxy-tracker
Version:
Nato per separare in modo semplice il controllo degli errori e il logging dalla logica dell'applicazione. Facilita l'uso di Proxy con handler complessi scrivendoli in una forma standardizzata. Permette di inserire funzioni "spia" tramite Proxy
30 lines (23 loc) • 1.28 kB
JavaScript
/* global Reflect, Function */
const assert = require('assert').strict;
const generaHandlerForProxyTrack = require('./handlertrack-proxy-generator.js');
const generaHandlerForProxy = require('./handler-proxy-generator.js');
const {trapRemover, removerProxyForExtends} = require('./proxy-remover.js');
function ProxyTracker(target, ...callbacks_for_tracker){
checkProxyTracker(target, callbacks_for_tracker);
const handler_tipo_tracker = generaHandlerForProxyTrack(...callbacks_for_tracker);
const handler = generaHandlerForProxy(handler_tipo_tracker, generaHandlerForProxyTrack.CONST, target, modifiesHandler);
return new Proxy(target, handler);
}
function checkProxyTracker(target, callbacks_for_tracker){
/*assert( typeof target === 'object' ||
typeof target === 'function' ||
Array.isArray(target), 'target deve essere object, function o array');*/ // this check will did by ProxyJS
assert(Array.isArray(callbacks_for_tracker), 'callbacks_for_tracker non è un array');
}
function modifiesHandler(handler, entity){
let handler_with_trap_remover = trapRemover(handler, entity);
handler_with_trap_remover = removerProxyForExtends(handler_with_trap_remover);
return handler_with_trap_remover;
}
module.exports.ProxyTracker = ProxyTracker;