UNPKG

1.32 kBJavaScriptView Raw
1var React = require('react');
2
3const FUNCTION_REGEX = /react(\d+)?./i;
4
5function classComponent(component) {
6 return (
7 typeof component === 'function' && component.prototype && !!component.prototype.isReactComponent
8 );
9}
10
11// Ensure compatability with transformed code
12function functionComponent(component) {
13 return (
14 typeof component === 'function' &&
15 String(component).includes('return') &&
16 !!String(component).match(FUNCTION_REGEX) &&
17 String(component).includes('.createElement')
18 );
19}
20
21function component(component) {
22 return classComponent(component) || functionComponent(component);
23}
24
25function element(typeElement) {
26 return React.isValidElement(typeElement);
27}
28
29function DOMTypeElement(typeElement) {
30 return element(typeElement) && typeof typeElement.type === 'string';
31}
32
33function compositeTypeElement(typeElement) {
34 return element(typeElement) && typeof typeElement.type === 'function';
35}
36
37function compatible(item) {
38 return element(item) || component(item);
39}
40
41var isReact = {};
42
43isReact.classComponent = classComponent;
44isReact.functionComponent = functionComponent;
45isReact.component = component;
46isReact.element = element;
47isReact.DOMTypeElement = DOMTypeElement;
48isReact.compositeTypeElement = compositeTypeElement;
49isReact.compatible = compatible;
50
51module.exports = isReact;