| Server IP : 46.62.235.243 / Your IP : 216.73.216.217 Web Server : Apache/2.4.58 (Ubuntu) System : Linux Linkabili3Dicembre 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/nodejs/babel-plugin-add-module-exports/lib/ |
Upload File : |
{"version":3,"file":"index.js","names":["module","exports","template","pluginOptions","addModuleExportsDefaults","path","finder","ExportsFinder","isOnlyExportsDefault","isAmd","rootPath","getRootPath","node","body","push","addDefaultProperty","ExportsDefaultVisitor","CallExpression","get","matchesPattern","identifier","prop","objectName","propertyName","AssignmentExpression","visitor","Program","state","opts","post","fileMap","traverse","exportsDefaultPath","hasExportsDefault","hasExportsNamed","hasModuleExports","findParent","key","parentPath","forEach","isVariableDeclaration","findExports","isExpressionStatement","isAssignmentExpression","findExportsInCallExpression","property","self","hasntAmdRoot","amdRoot","isCallExpression"],"sources":["../src/index.js"],"sourcesContent":["// 1. find to `exports.default`\n// 2. find to all Expression(`exports.default`, `exports.foo` etc)\n// 3. add `module.exports` if exists only `exports.default` assignment\n// The above works after executing `preset-env`(transform-es2015-modules-*) in `Plugin.post`\n\nmodule.exports = ({ template }) => {\n let pluginOptions\n\n function addModuleExportsDefaults(path) {\n const finder = new ExportsFinder(path)\n if (!finder.isOnlyExportsDefault()) {\n return\n }\n if (finder.isAmd()) {\n return\n }\n const rootPath = finder.getRootPath()\n\n // HACK: `path.node.body.push` instead of path.pushContainer(due doesn't work in Plugin.post)\n rootPath.node.body.push(template('module.exports = exports.default')())\n if (pluginOptions.addDefaultProperty) {\n rootPath.node.body.push(template('module.exports.default = exports.default')())\n }\n }\n\n const ExportsDefaultVisitor = {\n CallExpression(path) {\n if (!path.get('callee').matchesPattern('Object.defineProperty')) {\n return\n }\n\n const [identifier, prop] = path.get('arguments')\n const objectName = identifier.get('name').node\n const propertyName = prop.get('value').node\n\n if ((objectName === 'exports' || objectName === '_exports') && propertyName === 'default') {\n addModuleExportsDefaults(path)\n }\n },\n AssignmentExpression(path) {\n if (\n path.get('left').matchesPattern('exports.default') ||\n path.get('left').matchesPattern('_exports.default')\n ) {\n addModuleExportsDefaults(path)\n }\n }\n }\n\n return {\n visitor: {\n Program(path, state) {\n // HACK: can't get plugin options in Plugin.post\n pluginOptions = state.opts\n }\n },\n post(fileMap) {\n fileMap.path.traverse(ExportsDefaultVisitor)\n }\n }\n}\n\nclass ExportsFinder {\n constructor(exportsDefaultPath) {\n this.path = exportsDefaultPath\n this.hasExportsDefault = false\n this.hasExportsNamed = false\n this.hasModuleExports = false\n }\n\n getRootPath() {\n return this.path.findParent(path => {\n return path.key === 'body' || !path.parentPath\n })\n }\n\n isOnlyExportsDefault() {\n this.getRootPath()\n .get('body')\n .forEach(path => {\n if (path.isVariableDeclaration()) {\n this.findExports(path.get('declarations.0'), 'init')\n } else if (\n path.isExpressionStatement() &&\n path.get('expression').isAssignmentExpression()\n ) {\n this.findExports(path)\n } else {\n this.findExportsInCallExpression(path)\n }\n })\n return this.hasExportsDefault && !this.hasExportsNamed && !this.hasModuleExports\n }\n\n findExports(path, property = 'expression') {\n // Not `exports.anything`, skip\n if (\n !path.get(`${property}`).node ||\n !path.get(`${property}.left`).node ||\n !path.get(`${property}.left.object`).node\n ) {\n return\n }\n\n const objectName = path.get(`${property}.left.object.name`).node\n // Check name of MemberExpressions and values of StringLiterals\n const propertyName =\n path.get(`${property}.left.property.name`).node ||\n path.get(`${property}.left.property.value`).node\n if (objectName === 'exports' || objectName === '_exports') {\n if (propertyName === 'default') {\n this.hasExportsDefault = true\n this.findExports(path.get(property), 'right')\n } else if (propertyName !== '__esModule') {\n this.hasExportsNamed = true\n }\n }\n if (`${objectName}.${propertyName}` === 'module.exports') {\n this.hasModuleExports = true\n }\n }\n\n findExportsInCallExpression(path) {\n const self = this\n path.traverse({\n CallExpression(path) {\n if (!path.get('callee').matchesPattern('Object.defineProperty')) {\n return\n }\n\n const [identifier, prop] = path.get('arguments')\n const objectName = identifier.get('name').node\n const propertyName = prop.get('value').node\n\n if (\n (objectName === 'exports' || objectName === '_exports') &&\n propertyName !== '__esModule'\n ) {\n if (propertyName === 'default') {\n self.hasExportsDefault = true\n } else {\n self.hasExportsNamed = true\n }\n }\n }\n })\n }\n\n isAmd() {\n const rootPath = this.getRootPath()\n const hasntAmdRoot = !(rootPath.parentPath && rootPath.parentPath.parentPath)\n if (hasntAmdRoot) {\n return false\n }\n\n const amdRoot = rootPath.parentPath.parentPath\n if (!amdRoot.isCallExpression()) {\n return false\n }\n if (amdRoot.get('callee.name').node === 'define') {\n return true\n }\n return false\n }\n}\n"],"mappings":"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"}