123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.isPureHelper = exports.isHelper = exports.isWithThemeHelper = exports.isKeyframesHelper = exports.isInjectGlobalHelper = exports.isCreateGlobalStyleHelper = exports.isCSSHelper = exports.isStyled = exports.importLocalName = exports.isValidTopLevelImport = void 0;
- var VALID_TOP_LEVEL_IMPORT_PATHS = ['styled-components', 'styled-components/no-tags', 'styled-components/native', 'styled-components/primitives'];
- var isValidTopLevelImport = function isValidTopLevelImport(x) {
- return VALID_TOP_LEVEL_IMPORT_PATHS.includes(x);
- };
- exports.isValidTopLevelImport = isValidTopLevelImport;
- var localNameCache = {};
- var importLocalName = function importLocalName(name, state) {
- var bypassCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
- var cacheKey = name + state.file.opts.filename;
- if (!bypassCache && cacheKey in localNameCache) {
- return localNameCache[cacheKey];
- }
- var localName = state.styledRequired ? name === 'default' ? 'styled' : name : false;
- state.file.path.traverse({
- ImportDeclaration: {
- exit(path) {
- var node = path.node;
- if (isValidTopLevelImport(node.source.value)) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
- try {
- for (var _iterator = path.get('specifiers')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var specifier = _step.value;
- if (specifier.isImportDefaultSpecifier()) {
- localName = specifier.node.local.name;
- }
- if (specifier.isImportSpecifier() && specifier.node.imported.name === name) {
- localName = specifier.node.local.name;
- }
- if (specifier.isImportNamespaceSpecifier()) {
- localName = specifier.node.local.name;
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
- }
- }
- }
- });
- localNameCache[cacheKey] = localName;
- return localName;
- };
- exports.importLocalName = importLocalName;
- var isStyled = function isStyled(t) {
- return function (tag, state) {
- if (t.isCallExpression(tag) && t.isMemberExpression(tag.callee) && tag.callee.property.name !== 'default'
- /** ignore default for #93 below */
- ) {
- // styled.something()
- return isStyled(t)(tag.callee.object, state);
- } else {
- return t.isMemberExpression(tag) && tag.object.name === importLocalName('default', state) || t.isCallExpression(tag) && tag.callee.name === importLocalName('default', state) ||
- /**
- * #93 Support require()
- * styled-components might be imported using a require()
- * call and assigned to a variable of any name.
- * - styled.default.div``
- * - styled.default.something()
- */
- 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;
- }
- };
- };
- exports.isStyled = isStyled;
- var isCSSHelper = function isCSSHelper(t) {
- return function (tag, state) {
- return t.isIdentifier(tag) && tag.name === importLocalName('css', state);
- };
- };
- exports.isCSSHelper = isCSSHelper;
- var isCreateGlobalStyleHelper = function isCreateGlobalStyleHelper(t) {
- return function (tag, state) {
- return t.isIdentifier(tag) && tag.name === importLocalName('createGlobalStyle', state);
- };
- };
- exports.isCreateGlobalStyleHelper = isCreateGlobalStyleHelper;
- var isInjectGlobalHelper = function isInjectGlobalHelper(t) {
- return function (tag, state) {
- return t.isIdentifier(tag) && tag.name === importLocalName('injectGlobal', state);
- };
- };
- exports.isInjectGlobalHelper = isInjectGlobalHelper;
- var isKeyframesHelper = function isKeyframesHelper(t) {
- return function (tag, state) {
- return t.isIdentifier(tag) && tag.name === importLocalName('keyframes', state);
- };
- };
- exports.isKeyframesHelper = isKeyframesHelper;
- var isWithThemeHelper = function isWithThemeHelper(t) {
- return function (tag, state) {
- return t.isIdentifier(tag) && tag.name === importLocalName('withTheme', state);
- };
- };
- exports.isWithThemeHelper = isWithThemeHelper;
- var isHelper = function isHelper(t) {
- return function (tag, state) {
- return isCSSHelper(t)(tag, state) || isKeyframesHelper(t)(tag, state) || isWithThemeHelper(t)(tag, state);
- };
- };
- exports.isHelper = isHelper;
- var isPureHelper = function isPureHelper(t) {
- return function (tag, state) {
- return isCSSHelper(t)(tag, state) || isKeyframesHelper(t)(tag, state) || isCreateGlobalStyleHelper(t)(tag, state) || isWithThemeHelper(t)(tag, state);
- };
- };
- exports.isPureHelper = isPureHelper;
|