(function(root) { var toString = Function.prototype.toString; function fnBody(fn) { return toString.call(fn).replace(/^[^{]*{\s*/,'').replace(/\s*}[^}]*$/,''); } function isClass(fn) { return (typeof fn === 'function' && (/^class(?:\s|{)/.test(toString.call(fn)) || (/^.*classCallCheck\(/.test(fnBody(fn)))) // babel.js ); } if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = isClass; } exports.isClass = isClass; } else if (typeof define === 'function' && define.amd) { define([], function() { return isClass; }); } else { root.isClass = isClass; } })(this);