UNPKG

4.11 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6var VALID_TOP_LEVEL_IMPORT_PATHS = ['styled-components', 'styled-components/no-tags', 'styled-components/native', 'styled-components/primitives'];
7
8var isValidTopLevelImport = exports.isValidTopLevelImport = function isValidTopLevelImport(x) {
9 return VALID_TOP_LEVEL_IMPORT_PATHS.includes(x);
10};
11
12var importLocalName = function importLocalName(name, state) {
13 var localName = name === 'default' ? 'styled' : name;
14
15 state.file.path.traverse({
16 ImportDeclaration: {
17 exit(path) {
18 var node = path.node;
19
20
21 if (isValidTopLevelImport(node.source.value)) {
22 var _iteratorNormalCompletion = true;
23 var _didIteratorError = false;
24 var _iteratorError = undefined;
25
26 try {
27 for (var _iterator = path.get('specifiers')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
28 var specifier = _step.value;
29
30 if (specifier.isImportDefaultSpecifier()) {
31 localName = specifier.node.local.name;
32 }
33
34 if (specifier.isImportSpecifier() && specifier.node.imported.name === name) {
35 localName = specifier.node.local.name;
36 }
37
38 if (specifier.isImportNamespaceSpecifier()) {
39 localName = specifier.node.local.name;
40 }
41 }
42 } catch (err) {
43 _didIteratorError = true;
44 _iteratorError = err;
45 } finally {
46 try {
47 if (!_iteratorNormalCompletion && _iterator.return) {
48 _iterator.return();
49 }
50 } finally {
51 if (_didIteratorError) {
52 throw _iteratorError;
53 }
54 }
55 }
56 }
57 }
58 }
59 });
60
61 return localName;
62};
63
64var isStyled = exports.isStyled = function isStyled(t) {
65 return function (tag, state) {
66 if (t.isCallExpression(tag) && t.isMemberExpression(tag.callee) && tag.callee.property.name !== 'default' /** ignore default for #93 below */
67 ) {
68 // styled.something()
69 return isStyled(t)(tag.callee.object, state);
70 } else {
71 return t.isMemberExpression(tag) && tag.object.name === importLocalName('default', state) || t.isCallExpression(tag) && tag.callee.name === importLocalName('default', state) ||
72 /**
73 * #93 Support require()
74 * styled-components might be imported using a require()
75 * call and assigned to a variable of any name.
76 * - styled.default.div``
77 * - styled.default.something()
78 */
79 state.styledRequired && t.isMemberExpression(tag) && t.isMemberExpression(tag.object) && tag.object.property.name === 'default' && tag.object.object.name === state.styledRequired || state.styledRequired && t.isCallExpression(tag) && t.isMemberExpression(tag.callee) && tag.callee.property.name === 'default' && tag.callee.object.name === state.styledRequired;
80 }
81 };
82};
83
84var isCSSHelper = exports.isCSSHelper = function isCSSHelper(t) {
85 return function (tag, state) {
86 return t.isIdentifier(tag) && tag.name === importLocalName('css', state);
87 };
88};
89
90var isCreateGlobalStyleHelper = exports.isCreateGlobalStyleHelper = function isCreateGlobalStyleHelper(t) {
91 return function (tag, state) {
92 return t.isIdentifier(tag) && tag.name === importLocalName('createGlobalStyle', state);
93 };
94};
95
96var isInjectGlobalHelper = exports.isInjectGlobalHelper = function isInjectGlobalHelper(t) {
97 return function (tag, state) {
98 return t.isIdentifier(tag) && tag.name === importLocalName('injectGlobal', state);
99 };
100};
101
102var isKeyframesHelper = exports.isKeyframesHelper = function isKeyframesHelper(t) {
103 return function (tag, state) {
104 return t.isIdentifier(tag) && tag.name === importLocalName('keyframes', state);
105 };
106};
107
108var isHelper = exports.isHelper = function isHelper(t) {
109 return function (tag, state) {
110 return isCSSHelper(t)(tag, state) || isKeyframesHelper(t)(tag, state);
111 };
112};
\No newline at end of file