UNPKG

rollup-plugin-strip-final-exports

Version:
76 lines (68 loc) 3.38 kB
'use strict'; const estreeWalker = require('estree-walker'); const MagicString = require('magic-string'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } const MagicString__default = /*#__PURE__*/_interopDefaultLegacy(MagicString); const isExpressionStatement = (node) => node.type === 'ExpressionStatement'; const isIdentifier = (node) => node.type === 'Identifier'; const isLiteral = (node) => node.type === 'Literal'; const isMemberExpression = (node) => node.type === 'MemberExpression'; const isAssignmentStatement = (node) => (isExpressionStatement(node) && node.expression.type === 'AssignmentExpression'); const isModuleIdentifier = (node) => (isIdentifier(node) && node.name === 'module'); const isExportsIdentifier = (node) => (isIdentifier(node) && node.name === 'exports'); const isExportsLiteral = (node) => (isLiteral(node) && node.value === 'exports'); const isModuleExportsWithIdentifier = (memberExpression) => (isModuleIdentifier(memberExpression.object) && isExportsIdentifier(memberExpression.property)); const isModuleExportsWithLiteral = (memberExpression) => (isModuleIdentifier(memberExpression.object) && isExportsLiteral(memberExpression.property)); const isModuleExportsExpression = (memberExpression) => (isModuleExportsWithIdentifier(memberExpression) || isModuleExportsWithLiteral(memberExpression)); const utils = { isAssignmentStatement, isExportsIdentifier, isMemberExpression, isModuleExportsExpression, isModuleIdentifier, }; const isModuleExportsMemberExpression = (expression) => (utils.isMemberExpression(expression) && utils.isModuleExportsExpression(expression)); const isCJSExportsAssignment = (memberExpression) => (utils.isExportsIdentifier(memberExpression.object) || utils.isModuleExportsExpression(memberExpression) || isModuleExportsMemberExpression(memberExpression.object)); const isCJSModuleExportStatement = (node) => (utils.isAssignmentStatement(node) && utils.isMemberExpression(node.expression.left) && isCJSExportsAssignment(node.expression.left)); const isESModuleExportStatement = (node) => [ 'ExportAllDeclaration', 'ExportDefaultDeclaration', 'ExportNamedDeclaration', ].includes(node.type); const isCJSExport = (node, rollupOptions) => (rollupOptions.format === 'cjs' && isCJSModuleExportStatement(node)); const isESModuleExport = (node, rollupOptions) => (rollupOptions.format === 'es' && isESModuleExportStatement(node)); const isExport = (node, rollupOptions) => (isCJSExport(node, rollupOptions) || isESModuleExport(node, rollupOptions)); const index = (stripExportsOptions = {}) => ({ name: 'Strip final exports', renderChunk(sourceCode, chunk, rollupOptions) { const ast = this.parse(sourceCode); const magicString = new MagicString__default["default"](sourceCode); estreeWalker.walk(ast, { enter(node) { if (isExport(node, rollupOptions)) { const { start, end } = node; magicString.remove(start, end); } }, }); const code = magicString.toString(); const map = stripExportsOptions.sourceMap ? magicString.generateMap() : null; return { code, map }; }, }); module.exports = index;