Socket
Socket
Sign inDemoInstall

babel-plugin-styled-components

Package Overview
Dependencies
56
Maintainers
3
Versions
95
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.10.1-0 to 1.10.1-1

9

lib/index.js

@@ -29,4 +29,9 @@ "use strict";

visitor: {
JSXAttribute(path, state) {
(0, _transpileCssProp.default)(t)(path, state);
Program(path, state) {
path.traverse({
JSXAttribute(path, state) {
(0, _transpileCssProp.default)(t)(path, state);
}
}, state);
},

@@ -33,0 +38,0 @@

@@ -6,3 +6,3 @@ "use strict";

});
exports.isPureHelper = exports.isHelper = exports.isKeyframesHelper = exports.isInjectGlobalHelper = exports.isCreateGlobalStyleHelper = exports.isCSSHelper = exports.isStyled = exports.isValidTopLevelImport = void 0;
exports.isPureHelper = exports.isHelper = 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'];

@@ -18,5 +18,6 @@

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 (localNameCache[cacheKey]) {
if (!bypassCache && localNameCache[cacheKey]) {
return localNameCache[cacheKey];

@@ -75,2 +76,4 @@ }

exports.importLocalName = importLocalName;
var isStyled = function isStyled(t) {

@@ -77,0 +80,0 @@ return function (tag, state) {

@@ -10,32 +10,18 @@ "use strict";

var _detectors = require("../utils/detectors");
var _options = require("../utils/options");
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var getName = function getName(node, t, p) {
// Most of this code was taken from @satya164's babel-plugin-css-prop
// @see https://github.com/satya164/babel-plugin-css-prop
var getName = function getName(node, t) {
if (typeof node.name === 'string') return node.name;
if (t.isJSXMemberExpression(node)) {
return `${getName(node.object, t, p)}.${node.property.name}`;
return `${getName(node.object, t)}.${node.property.name}`;
}
throw p.buildCodeFrameError(`Cannot infer name from node with type "${node.type}". Please submit an issue at github.com/styled-components/babel-plugin-styled-components with your code so we can take a look at your use case!`);
throw path.buildCodeFrameError(`Cannot infer name from node with type "${node.type}". Please submit an issue at github.com/styled-components/babel-plugin-styled-components with your code so we can take a look at your use case!`);
};
var convertJSXExpressionToExpression = function convertJSXExpressionToExpression(node, t, p) {
if (t.isJSXIdentifier(node)) return t.identifier(node.name);
if (t.isJSXMemberExpression(node)) {
return t.memberExpression(convertJSXExpressionToExpression(node.object, t, p), convertJSXExpressionToExpression(node.property, t, p));
}
throw p.buildCodeFrameError(`Cannot convert from node with type "${node.type}". Please submit an issue at github.com/styled-components/babel-plugin-styled-components with your code so we can take a look at your use case!`);
};
var _default = function _default(t) {

@@ -48,17 +34,25 @@ return function (path, state) {

var importName = state.customImportName; // Insert import if it doesn't exist yet
var importName = state.customImportName || t.identifier((0, _detectors.importLocalName)('default', state));
var bindings = program.scope.bindings; // Insert import if it doesn't exist yet
var bindings = program.scope.bindings;
if (!importName || !bindings[importName.name]) {
importName = (0, _helperModuleImports.addDefault)(path, 'styled-components', {
nameHint: importName ? importName.name : 'styled'
if (!bindings[importName.name]) {
(0, _helperModuleImports.addDefault)(path, 'styled-components', {
nameHint: 'styled'
});
importName = t.identifier((0, _detectors.importLocalName)('default', state, true));
}
if (!state.customImportName) state.customImportName = importName;
var elem = path.parentPath;
var id = path.scope.generateUidIdentifier('Styled' + getName(elem.node.name, t, path).replace(/^([a-z])/, function (match, p1) {
var name = getName(elem.node.name, t);
var id = path.scope.generateUidIdentifier('Styled' + name.replace(/^([a-z])/, function (match, p1) {
return p1.toUpperCase();
}));
var styled;
if (/^[a-z]/.test(name)) {
styled = t.memberExpression(importName, t.identifier(name));
} else {
styled = t.callExpression(importName, [t.identifier(name)]);
}
var css;

@@ -87,16 +81,3 @@

if (!css) return; // If the identifier is not primitive, we pass it in the 'as' prop
var isPrimitive = t.isJSXIdentifier(elem.node.name) ? /^[a-z]/.test(elem.node.name.name) : false;
var styled = t.callExpression(importName, [isPrimitive ? t.stringLiteral(elem.node.name.name) // Use a arbitrary string for the tag name so styled-component doesn't throw error
// I used hyphen since it'll never be a valid html tag
: t.stringLiteral('-')]);
if (!isPrimitive && !elem.node.attributes.some(function (attr) {
return attr.name.name === 'as';
})) {
// Add it to the beginning so that it can be overriden {...spread} attributes etc.
elem.node.attributes.unshift(t.jSXAttribute(t.jSXIdentifier('as'), t.jSXExpressionContainer(convertJSXExpressionToExpression(elem.node.name, t, path))));
}
if (!css) return;
elem.node.attributes = elem.node.attributes.filter(function (attr) {

@@ -112,9 +93,4 @@ return attr !== path.node;

css.expressions = css.expressions.reduce(function (acc, ex) {
if (Object.entries(bindings).some(function (_ref
/*: any */
) {
var _ref2 = _slicedToArray(_ref, 2),
b = _ref2[1];
return b.referencePaths.find(function (p) {
if (Object.keys(bindings).some(function (key) {
return bindings[key].referencePaths.find(function (p) {
return p.node === ex;

@@ -125,6 +101,7 @@ });

} else {
var name = path.scope.generateUidIdentifier('css');
var _name = path.scope.generateUidIdentifier('css');
var p = t.identifier('p');
elem.node.attributes.push(t.jSXAttribute(t.jSXIdentifier(name.name), t.jSXExpressionContainer(ex)));
acc.push(t.arrowFunctionExpression([p], t.memberExpression(p, name)));
elem.node.attributes.push(t.jSXAttribute(t.jSXIdentifier(_name.name), t.jSXExpressionContainer(ex)));
acc.push(t.arrowFunctionExpression([p], t.memberExpression(p, _name)));
}

@@ -131,0 +108,0 @@

{
"version": "1.10.1-0",
"version": "1.10.1-1",
"name": "babel-plugin-styled-components",

@@ -18,14 +18,14 @@ "description": "Improve the debugging experience and add server-side rendering support to styled-components",

"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/preset-env": "^7.4.5",
"babel-core": "7.0.0-bridge.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-test": "^0.1.2",
"jest": "^23.6.0",
"jest-file-snapshot": "^0.3.2",
"prettier": "^1.14.2",
"rimraf": "^2.6.2",
"styled-components": "^4.0.0"
"babel-test": "^0.2.1",
"jest": "^24.8.0",
"jest-file-snapshot": "^0.3.6",
"prettier": "^1.18.2",
"rimraf": "^2.6.3",
"styled-components": "^4.3.1"
},

@@ -36,3 +36,3 @@ "dependencies": {

"babel-plugin-syntax-jsx": "^6.18.0",
"lodash": "^4.17.10"
"lodash": "^4.17.11"
},

@@ -39,0 +39,0 @@ "resolutions": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc