console-feed-modern
Version:
A React component that displays console logs from the current page, an iframe or transported across a server
51 lines • 3.09 kB
JavaScript
/**
* Serialize a function into JSON
*/
export default {
type: 'Function',
shouldTransform(type, obj) {
return typeof obj === 'function';
},
toSerializable(func) {
let body = '';
try {
body = func
.toString()
.substring(body.indexOf('{') + 1, body.lastIndexOf('}'));
}
catch (e) { }
return {
name: func.name,
body,
proto: Object.getPrototypeOf(func).constructor.name
};
},
fromSerializable(data) {
try {
const tempFunc = function () { };
if (typeof data.name === 'string') {
Object.defineProperty(tempFunc, 'name', {
value: data.name,
writable: false
});
}
if (typeof data.body === 'string') {
Object.defineProperty(tempFunc, 'body', {
value: data.body,
writable: false
});
}
if (typeof data.proto === 'string') {
// @ts-ignore
tempFunc.constructor = {
name: data.proto
};
}
return tempFunc;
}
catch (e) {
return data;
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHJhbnNmb3JtL0Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOztHQUVHO0FBQ0gsZUFBZTtJQUNiLElBQUksRUFBRSxVQUFVO0lBQ2hCLGVBQWUsQ0FBQyxJQUFTLEVBQUUsR0FBUTtRQUNqQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQTtJQUNsQyxDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQWM7UUFDM0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2IsSUFBSTtZQUNGLElBQUksR0FBRyxJQUFJO2lCQUNSLFFBQVEsRUFBRTtpQkFDVixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQzNEO1FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtRQUVkLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJO1lBQ0osS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7U0FDcEQsQ0FBQTtJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxJQUFhO1FBQzVCLElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxjQUFZLENBQUMsQ0FBQTtZQUU5QixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNoQixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxDQUFBO2FBQ0g7WUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNoQixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxDQUFBO2FBQ0g7WUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQ2xDLGFBQWE7Z0JBQ2IsUUFBUSxDQUFDLFdBQVcsR0FBRztvQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO2lCQUNqQixDQUFBO2FBQ0Y7WUFFRCxPQUFPLFFBQVEsQ0FBQTtTQUNoQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUE7U0FDWjtJQUNILENBQUM7Q0FDRixDQUFBIn0=