rollup-plugin-react-scoped-css
Version:
A rollup plugin designed to allow scoped css to be run in react (Compatible with vite and rollup)
99 lines (98 loc) • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSrcFromImportOrRequire = exports.isNodeImportOrRequire = exports.isNodeRequireCallExpression = exports.isNodeImportDeclaration = exports.isNodeIdentifier = exports.isNodeExtender = exports.isNodeObjectExpression = exports.isNodeCallExpression = exports.hackIntoExtenderCallExpression = exports.extendObjectExpression = exports.createObjectExpressionWithAttr = exports.createObjectAssignCallExpressionWithIdentifier = void 0;
const createObjectAssignCallExpressionWithIdentifier = (identifier, objectExpression) => {
return {
type: "CallExpression",
callee: {
type: "MemberExpression",
object: {
type: "Identifier",
name: "Object",
},
property: {
type: "Identifier",
name: "assign",
},
computed: false,
optional: false,
},
arguments: [
{
type: "ObjectExpression",
start: 14,
end: 16,
properties: [],
},
identifier,
objectExpression,
],
optional: false,
};
};
exports.createObjectAssignCallExpressionWithIdentifier = createObjectAssignCallExpressionWithIdentifier;
const createObjectExpressionWithAttr = (attrNode) => {
return {
type: "ObjectExpression",
properties: [attrNode],
};
};
exports.createObjectExpressionWithAttr = createObjectExpressionWithAttr;
const extendObjectExpression = (objectExpression, prop) => {
return {
...objectExpression,
properties: [...objectExpression.properties, prop],
};
};
exports.extendObjectExpression = extendObjectExpression;
const hackIntoExtenderCallExpression = (callExpression, prop) => {
return {
...callExpression,
arguments: [
...callExpression.arguments,
(0, exports.createObjectExpressionWithAttr)(prop),
],
};
};
exports.hackIntoExtenderCallExpression = hackIntoExtenderCallExpression;
const isNodeCallExpression = (node) => {
return node.type === "CallExpression";
};
exports.isNodeCallExpression = isNodeCallExpression;
const isNodeObjectExpression = (node) => {
return node.type === "ObjectExpression";
};
exports.isNodeObjectExpression = isNodeObjectExpression;
const isNodeExtender = (node) => {
return ((0, exports.isNodeCallExpression)(node) &&
(node.callee.name === "_objectSpread" || node.callee.name === "_extends"));
};
exports.isNodeExtender = isNodeExtender;
const isNodeIdentifier = (node) => {
return node.type === "Identifier";
};
exports.isNodeIdentifier = isNodeIdentifier;
const isNodeImportDeclaration = (node) => {
return node.type === "ImportDeclaration";
};
exports.isNodeImportDeclaration = isNodeImportDeclaration;
const isNodeRequireCallExpression = (node) => {
return ((0, exports.isNodeCallExpression)(node) &&
node.callee.name === "require" &&
node.arguments.length === 1);
};
exports.isNodeRequireCallExpression = isNodeRequireCallExpression;
const isNodeImportOrRequire = (node) => {
return (0, exports.isNodeImportDeclaration)(node) || (0, exports.isNodeRequireCallExpression)(node);
};
exports.isNodeImportOrRequire = isNodeImportOrRequire;
const getSrcFromImportOrRequire = (node) => {
if ((0, exports.isNodeImportDeclaration)(node)) {
return node.source.value;
}
if ((0, exports.isNodeRequireCallExpression)(node)) {
return node.arguments[0].value;
}
return null;
};
exports.getSrcFromImportOrRequire = getSrcFromImportOrRequire;