in transforms/React-PropTypes-to-prop-types.js [90:139]
function addPropTypesImport(j, root) {
if (useImportSyntax(j, root)) {
// Handle cases where 'prop-types' already exists;
// eg the file has already been codemodded but more React.PropTypes were added.
if (hasPropTypesImport(j, root)) {
return;
}
const path = findImportAfterPropTypes(j, root);
if (path) {
const importStatement = j.importDeclaration(
[j.importDefaultSpecifier(j.identifier(localPropTypesName))],
j.literal(MODULE_NAME)
);
// If there is a leading comment, retain it
// https://github.com/facebook/jscodeshift/blob/master/recipes/retain-first-comment.md
const firstNode = root.find(j.Program).get('body', 0).node;
const { comments } = firstNode;
if (comments) {
delete firstNode.comments;
importStatement.comments = comments;
}
j(path).insertBefore(importStatement);
return;
}
}
// Handle cases where 'prop-types' already exists;
// eg the file has already been codemodded but more React.PropTypes were added.
if (hasPropTypesRequire(j, root)) {
return;
}
const path = findRequireAfterPropTypes(j, root);
if (path) {
const requireStatement = useVar(j, root)
? j.template.statement([
`var ${localPropTypesName} = require('${MODULE_NAME}');\n`
])
: j.template.statement([
`const ${localPropTypesName} = require('${MODULE_NAME}');\n`
]);
j(path.parent.parent).insertBefore(requireStatement);
return;
}
throw new Error('No PropTypes import found!');
}