Skip to content

Commit 40dd307

Browse files
committed
Ensure we don't remove types from 'prop-types' import
1 parent 29ff53e commit 40dd307

7 files changed

Lines changed: 27 additions & 23 deletions

transforms/__tests__/deprecated-prop-types-types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ describe("transform deprecated-prop-types-types", () => {
206206
declare const weakValidationMap: WeakValidationMap<{}>;
207207
`),
208208
).toMatchInlineSnapshot(`
209-
"import { checkPropTypes } from 'prop-types';
209+
"import { checkPropTypes, Requireable, Validator, ValidationMap, WeakValidationMap } from 'prop-types';
210210
import { type ReactNode } from 'react';
211211
212212
declare const requireable: Requireable<ReactNode>;

transforms/deprecated-prop-types-types.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const parseSync = require("./utils/parseSync");
2-
const { replaceType } = require("./utils/replaceType");
2+
const { replaceReactType } = require("./utils/replaceType");
33

44
/**
55
* @type {import('jscodeshift').Transform}
@@ -69,7 +69,7 @@ const deprecatedPropTypesTypes = (file, api) => {
6969
"ValidationMap",
7070
"WeakValidationMap",
7171
]) {
72-
const changedType = replaceType(
72+
const changedType = replaceReactType(
7373
j,
7474
ast,
7575
movedType,

transforms/deprecated-react-child.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const parseSync = require("./utils/parseSync");
2-
const { replaceType } = require("./utils/replaceType");
2+
const { replaceReactType } = require("./utils/replaceType");
33

44
/**
55
* @type {import('jscodeshift').Transform}
@@ -8,7 +8,7 @@ const deprecatedReactChildTransform = (file, api) => {
88
const j = api.jscodeshift;
99
const ast = parseSync(file);
1010

11-
const hasChanges = replaceType(
11+
const hasChanges = replaceReactType(
1212
j,
1313
ast,
1414
"ReactChild",

transforms/deprecated-react-fragment.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const parseSync = require("./utils/parseSync");
2-
const { replaceType } = require("./utils/replaceType");
2+
const { replaceReactType } = require("./utils/replaceType");
33

44
/**
55
* @type {import('jscodeshift').Transform}
@@ -8,7 +8,7 @@ const deprecatedReactFragmentTransform = (file, api) => {
88
const j = api.jscodeshift;
99
const ast = parseSync(file);
1010

11-
const hasChanges = replaceType(
11+
const hasChanges = replaceReactType(
1212
j,
1313
ast,
1414
"ReactFragment",

transforms/deprecated-react-node-array.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const parseSync = require("./utils/parseSync");
2-
const { replaceType } = require("./utils/replaceType");
2+
const { replaceReactType } = require("./utils/replaceType");
33

44
/**
55
* @type {import('jscodeshift').Transform}
@@ -8,7 +8,7 @@ const deprecatedReactNodeArrayTransform = (file, api) => {
88
const j = api.jscodeshift;
99
const ast = parseSync(file);
1010

11-
const hasChanges = replaceType(
11+
const hasChanges = replaceReactType(
1212
j,
1313
ast,
1414
"ReactNodeArray",

transforms/deprecated-react-text.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const parseSync = require("./utils/parseSync");
2-
const { replaceType } = require("./utils/replaceType");
2+
const { replaceReactType } = require("./utils/replaceType");
33

44
/**
55
* @type {import('jscodeshift').Transform}
@@ -8,7 +8,7 @@ const deprecatedReactTextTransform = (file, api) => {
88
const j = api.jscodeshift;
99
const ast = parseSync(file);
1010

11-
const hasChanges = replaceType(
11+
const hasChanges = replaceReactType(
1212
j,
1313
ast,
1414
"ReactText",

transforms/utils/replaceType.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const { findTSTypeReferenceCollections } = require("./jscodeshift-bugfixes");
1111
* @returns {boolean}
1212
*/
1313
function renameType(j, ast, sourceIdentifier, targetIdentifier) {
14-
return replaceType(
14+
return replaceReactType(
1515
j,
1616
ast,
1717
sourceIdentifier,
@@ -47,7 +47,7 @@ function renameType(j, ast, sourceIdentifier, targetIdentifier) {
4747
* @param {(sourcePath: import("jscodeshift").TSTypeReference) => import("jscodeshift").TSTypeReference | import("jscodeshift").TSUnionType} buildTargetTypeReference
4848
* @param {string | null} addedType - `null` if no type was added
4949
*/
50-
function replaceType(
50+
function replaceReactType(
5151
j,
5252
ast,
5353
sourceIdentifier,
@@ -66,15 +66,19 @@ function replaceType(
6666
(local == null || local.name === addedType)
6767
);
6868
});
69-
const sourceIdentifierImports = ast.find(j.ImportSpecifier, (node) => {
70-
const { imported, local } = node;
71-
return (
72-
imported.type === "Identifier" &&
73-
imported.name === sourceIdentifier &&
74-
// We don't support renames generally, so we don't handle them here
75-
(local == null || local.name === sourceIdentifier)
76-
);
77-
});
69+
const sourceIdentifierImports = ast
70+
.find(j.ImportDeclaration, (declaration) => {
71+
return declaration.source.value === "react";
72+
})
73+
.find(j.ImportSpecifier, (node) => {
74+
const { imported, local } = node;
75+
return (
76+
imported.type === "Identifier" &&
77+
imported.name === sourceIdentifier &&
78+
// We don't support renames generally, so we don't handle them here
79+
(local == null || local.name === sourceIdentifier)
80+
);
81+
});
7882
if (sourceIdentifierImports.length > 0) {
7983
hasChanges = true;
8084

@@ -120,4 +124,4 @@ function replaceType(
120124
return hasChanges;
121125
}
122126

123-
module.exports = { replaceType, renameType };
127+
module.exports = { replaceReactType, renameType };

0 commit comments

Comments
 (0)