console-feed-modern
Version:
A React component that displays console logs from the current page, an iframe or transported across a server
46 lines • 3.25 kB
JavaScript
import Methods from '../definitions/Methods';
import Parse from './parse';
import { Encode } from '../Transform';
// import Construct from './construct'
/**
* Hook a console constructor and forward messages to a callback
* @argument console The Console constructor to Hook
* @argument callback The callback to be called once a message is logged
*/
export default function Hook(console, callback, encode = true) {
const TargetConsole = console;
const Storage = {
pointers: {},
src: {
npm: 'https://npmjs.com/package/console-feed',
github: 'https://github.com/samdenty99/console-feed'
}
};
// Override console methods
for (let method of Methods) {
const NativeMethod = TargetConsole[method];
// Override
TargetConsole[method] = function () {
// Pass back to native method
NativeMethod.apply(this, arguments);
// Parse arguments and send to transport
const args = [].slice.call(arguments);
// setTimeout to prevent lag
setTimeout(() => {
const parsed = Parse(method, args);
if (parsed) {
let encoded = parsed;
if (encode) {
encoded = Encode(parsed);
}
callback(encoded, parsed);
}
});
};
// Store native methods
Storage.pointers[method] = NativeMethod;
}
TargetConsole.feed = Storage;
return TargetConsole;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvSG9vay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQTtBQUU1QyxPQUFPLEtBQUssTUFBTSxTQUFTLENBQUE7QUFFM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxzQ0FBc0M7QUFFdEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsSUFBSSxDQUMxQixPQUFnQixFQUNoQixRQUFrQixFQUNsQixNQUFNLEdBQUcsSUFBSTtJQUViLE1BQU0sYUFBYSxHQUFHLE9BQXdCLENBQUE7SUFDOUMsTUFBTSxPQUFPLEdBQVk7UUFDdkIsUUFBUSxFQUFFLEVBQUU7UUFDWixHQUFHLEVBQUU7WUFDSCxHQUFHLEVBQUUsd0NBQXdDO1lBQzdDLE1BQU0sRUFBRSw0Q0FBNEM7U0FDckQ7S0FDRixDQUFBO0lBRUQsMkJBQTJCO0lBQzNCLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO1FBQzFCLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUxQyxXQUFXO1FBQ1gsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3RCLDZCQUE2QjtZQUM3QixZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUVuQyx3Q0FBd0M7WUFDeEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFFckMsNEJBQTRCO1lBQzVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXdCLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3BELElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksT0FBTyxHQUFZLE1BQWlCLENBQUE7b0JBQ3hDLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFZLENBQUE7cUJBQ3BDO29CQUNELFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUE7UUFFRCx1QkFBdUI7UUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUE7S0FDeEM7SUFFRCxhQUFhLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUU1QixPQUFPLGFBQWEsQ0FBQTtBQUN0QixDQUFDIn0=