babel-plugin-typescript-to-proptypes
Version:
Generate React PropTypes from TypeScript prop interfaces.
54 lines (42 loc) • 1.44 kB
JavaScript
Object.defineProperty(exports, '__esModule', {
value: true
});
const core = require('@babel/core');
function upsertImport(imp, options = {}) {
const checkForDefault = options.checkForDefault,
checkForNamed = options.checkForNamed;
const response = {
defaultImport: '',
namedImport: '',
namedImports: []
};
let hasDefault = false;
let hasNamed = false;
response.namedImports = imp.specifiers.filter(spec => {
if (core.types.isImportDefaultSpecifier(spec) || core.types.isImportNamespaceSpecifier(spec)) {
response.defaultImport = spec.local.name;
hasDefault = true;
return false;
}
return true;
}).map(spec => {
const name = spec.local.name;
if (name === checkForNamed) {
response.namedImport = name;
hasNamed = true;
}
return name;
}); // Add default import if it doesn't exist
if (checkForDefault && !hasDefault) {
imp.specifiers.unshift(core.types.importDefaultSpecifier(core.types.identifier(checkForDefault)));
response.defaultImport = checkForDefault;
} // Add named import if it doesn't exist
if (checkForNamed && !hasNamed) {
imp.specifiers.push(core.types.importSpecifier(core.types.identifier(checkForNamed), core.types.identifier(checkForNamed)));
response.namedImport = checkForNamed;
}
return response;
}
exports.upsertImport = upsertImport;
//# sourceMappingURL=upsertImport.js.map
;