UNPKG

5.49 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/utils/resolve-scope-info.js"],"names":["code","scope","result","removeFromResult","key","type","value","ImportDefault","ImportNamespace","Import","addToScope","name","Array","isArray","join","sourceType","program","body","filter","item","forEach","source","specifiers","specifier","local","imported","console","warn","JSON","stringify","Object","keys","values","length"],"mappings":"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","sourcesContent":["import { parse } from '@babel/parser';\n\nexport default code => {\n const scope = {};\n const result = {};\n\n const removeFromResult = ({ key, type, value }) => {\n switch (type) {\n case 'ImportDefault':\n delete result[key].ImportDefault;\n break;\n case 'ImportNamespace':\n delete result[key].ImportNamespace;\n break;\n case 'Import':\n delete result[key].Import[value];\n break;\n default:\n break;\n }\n };\n\n const addToScope = ({ name, key, type, value }) => {\n if (scope[name]) removeFromResult(scope[name]);\n scope[name] = { name, type, key, value };\n };\n\n parse(Array.isArray(code) ? code.join('\\n') : code, { sourceType: 'module' })\n .program.body.filter(item => item.type === 'ImportDeclaration')\n .forEach(item => {\n const key = item.source.value;\n if (!result[key]) result[key] = {};\n if (!result[key].Import) result[key].Import = {};\n item.specifiers.forEach(specifier => {\n // eslint-disable-next-line prefer-destructuring\n const name = specifier.local.name;\n if (specifier.type === 'ImportDefaultSpecifier') {\n addToScope({ name, key, type: 'ImportDefault' });\n result[key].ImportDefault = name;\n } else if (specifier.type === 'ImportNamespaceSpecifier') {\n addToScope({ name, key, type: 'ImportNamespace' });\n result[key].ImportNamespace = name;\n } else if (specifier.type === 'ImportSpecifier') {\n addToScope({ name, key, type: 'Import', value: specifier.imported.name });\n result[key].Import[specifier.imported.name] = name;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`Unhandled import specifier - ${JSON.stringify(specifier, null, 2)}`);\n }\n });\n });\n\n Object.keys(result).forEach(key => {\n if (!Object.values(result[key].Import).length) {\n delete result[key].Import;\n }\n if (!(result[key].ImportDefault || result[key].ImportNamespace || result[key].Import)) {\n delete result[key];\n }\n });\n\n return result;\n};\n"],"file":"resolve-scope-info.js"}
\No newline at end of file