is-class.js 733 B

12345678910111213141516171819202122232425262728
  1. (function(root) {
  2. var toString = Function.prototype.toString;
  3. function fnBody(fn) {
  4. return toString.call(fn).replace(/^[^{]*{\s*/,'').replace(/\s*}[^}]*$/,'');
  5. }
  6. function isClass(fn) {
  7. return (typeof fn === 'function' &&
  8. (/^class(?:\s|{)/.test(toString.call(fn)) ||
  9. (/^.*classCallCheck\(/.test(fnBody(fn)))) // babel.js
  10. );
  11. }
  12. if (typeof exports !== 'undefined') {
  13. if (typeof module !== 'undefined' && module.exports) {
  14. exports = module.exports = isClass;
  15. }
  16. exports.isClass = isClass;
  17. } else if (typeof define === 'function' && define.amd) {
  18. define([], function() {
  19. return isClass;
  20. });
  21. } else {
  22. root.isClass = isClass;
  23. }
  24. })(this);