flow-upgrade 2.34.0 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,50 +4,36 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _getClassMemberName = require("../codemodUtils/getClassMemberName");
9
-
10
8
  var _replaceMethodWithArrowProp = require("../codemodUtils/replaceMethodWithArrowProp");
11
-
12
9
  var _Types = require("../Types");
13
-
14
10
  function getKind(member) {
15
11
  switch (member.type) {
16
12
  case 'MethodDefinition':
17
13
  switch (member.kind) {
18
14
  case 'get':
19
15
  return 'Getter';
20
-
21
16
  case 'set':
22
17
  return 'Setter';
23
-
24
18
  case 'method':
25
19
  case 'constructor':
26
20
  return 'Method';
27
21
  }
28
-
29
22
  throw new Error(`Unexpected method kind: ${member.kind}`);
30
-
31
23
  case 'PropertyDefinition':
32
24
  return 'Property';
33
25
  }
34
-
35
26
  throw new Error(`Unexpected member type: ${member.type}`);
36
27
  }
37
-
38
28
  function findDuplicates(membersMap) {
39
29
  const toDelete = [];
40
-
41
30
  for (const [, members] of membersMap) {
42
31
  if (members.length === 1) {
43
32
  continue;
44
33
  }
45
-
46
34
  let lastMember = null;
47
-
48
35
  for (const member of members) {
49
36
  const kind = getKind(member);
50
-
51
37
  if (lastMember == null) {
52
38
  lastMember = {
53
39
  kind,
@@ -55,7 +41,6 @@ function findDuplicates(membersMap) {
55
41
  };
56
42
  continue;
57
43
  }
58
-
59
44
  switch (lastMember.kind) {
60
45
  case 'GetterSetter':
61
46
  if (kind === 'Getter') {
@@ -69,9 +54,7 @@ function findDuplicates(membersMap) {
69
54
  toDelete.push(oldSetter);
70
55
  continue;
71
56
  }
72
-
73
57
  break;
74
-
75
58
  case 'Getter':
76
59
  if (kind === 'Setter') {
77
60
  lastMember = {
@@ -81,9 +64,7 @@ function findDuplicates(membersMap) {
81
64
  };
82
65
  continue;
83
66
  }
84
-
85
67
  break;
86
-
87
68
  case 'Setter':
88
69
  if (kind === 'Getter') {
89
70
  lastMember = {
@@ -93,28 +74,23 @@ function findDuplicates(membersMap) {
93
74
  };
94
75
  continue;
95
76
  }
96
-
97
77
  break;
98
78
  }
99
-
100
79
  if (lastMember.kind === 'GetterSetter') {
101
80
  toDelete.push(lastMember.getter);
102
81
  toDelete.push(lastMember.setter);
103
82
  } else {
104
83
  toDelete.push(lastMember.member);
105
84
  }
106
-
107
85
  lastMember = {
108
86
  kind,
109
87
  member
110
88
  };
111
89
  }
112
90
  }
113
-
114
91
  return toDelete;
115
92
  }
116
-
117
- var _default = (0, _Types.codemod)({
93
+ var _default = exports.default = (0, _Types.codemod)({
118
94
  title: 'Remove Duplicate Class Properties',
119
95
  describe: 'Removes useless duplicate class properties and fixes bad constructor binding in those classes',
120
96
  transform: context => {
@@ -123,125 +99,91 @@ var _default = (0, _Types.codemod)({
123
99
  'ClassDeclaration, ClassExpression'(node) {
124
100
  const staticMembers = new Map();
125
101
  const instanceMembers = new Map();
126
-
127
102
  for (const member of node.body.body) {
128
103
  const membersMap = member.static ? staticMembers : instanceMembers;
129
104
  const name = (0, _getClassMemberName.getClassMemberName)(member);
130
-
131
105
  if (name == null) {
132
106
  continue;
133
107
  }
134
-
135
108
  const existingMember = membersMap.get(name);
136
-
137
109
  if (existingMember == null) {
138
110
  membersMap.set(name, [member]);
139
111
  } else {
140
112
  existingMember.push(member);
141
113
  }
142
114
  }
143
-
144
115
  const toDelete = new Set(findDuplicates(staticMembers).concat(findDuplicates(instanceMembers)));
145
-
146
116
  if (toDelete.size === 0) {
147
117
  return;
148
118
  }
149
-
150
119
  for (const memberToDelete of toDelete) {
151
120
  var _memberToDelete$value;
152
-
153
121
  if (memberToDelete.type === 'PropertyDefinition' && ((_memberToDelete$value = memberToDelete.value) === null || _memberToDelete$value === void 0 ? void 0 : _memberToDelete$value.type) === 'CallExpression') {
154
122
  console.log(context.buildCodeFrame(memberToDelete.value, 'Deleted a property with a CallExpression value. You should double check this was safe.'));
155
123
  }
156
-
157
124
  context.removeNode(memberToDelete);
158
125
  }
159
-
160
126
  const newInstanceMembers = new Map();
161
-
162
127
  for (const member of node.body.body) {
163
128
  if (toDelete.has(member)) {
164
129
  continue;
165
130
  }
166
-
167
131
  if (member.static) {
168
132
  continue;
169
133
  }
170
-
171
134
  const name = (0, _getClassMemberName.getClassMemberName)(member);
172
-
173
135
  if (name == null) {
174
136
  continue;
175
137
  }
176
-
177
138
  const kind = getKind(member);
178
139
  newInstanceMembers.set(name, {
179
140
  kind,
180
141
  member
181
142
  });
182
143
  }
183
-
184
144
  classStack = {
185
145
  current: node,
186
146
  instanceMembers: newInstanceMembers,
187
147
  parent: classStack
188
148
  };
189
149
  },
190
-
191
150
  'MethodDefinition[kind = "constructor"] ExpressionStatement > AssignmentExpression[operator = "="] > MemberExpression[object.type = "ThisExpression"].left'(node) {
192
151
  if (!classStack) {
193
152
  return;
194
153
  }
195
-
196
154
  const instanceMembers = classStack.instanceMembers;
197
-
198
155
  if (node.property.type !== 'Identifier') {
199
156
  return;
200
157
  }
201
-
202
158
  const subjectName = node.property.name;
203
159
  const member = instanceMembers.get(subjectName);
204
-
205
160
  if ((member === null || member === void 0 ? void 0 : member.kind) !== 'Method') {
206
161
  return;
207
162
  }
208
-
209
163
  const assignmentExpr = node.parent;
210
164
  const exprStatement = assignmentExpr.parent;
211
-
212
165
  if (assignmentExpr.type !== 'AssignmentExpression' || exprStatement.type !== 'ExpressionStatement') {
213
166
  throw new Error('this cannot happen');
214
167
  }
215
-
216
168
  const right = assignmentExpr.right;
217
-
218
169
  if (right.type !== 'CallExpression' || right.arguments.length !== 1 || right.arguments[0].type !== 'ThisExpression' || right.callee.type !== 'MemberExpression' || right.callee.computed || right.callee.property.type !== 'Identifier' || right.callee.property.name !== 'bind' || right.callee.object.type !== 'MemberExpression' || right.callee.object.computed || right.callee.object.object.type !== 'ThisExpression' || right.callee.object.property.type !== 'Identifier' || right.callee.object.property.name !== subjectName) {
219
170
  console.log(context.buildCodeFrame(right, `${subjectName} was reassigned, but not to a bind. You can probably manually correct this.`));
220
171
  return;
221
172
  }
222
-
223
173
  context.removeStatement(exprStatement);
224
174
  const method = member.member;
225
-
226
175
  if (method.type !== 'MethodDefinition') {
227
176
  throw new Error('this cannot happen');
228
177
  }
229
-
230
178
  (0, _replaceMethodWithArrowProp.replaceMethodWithArrowProp)(context, method, subjectName);
231
179
  },
232
-
233
180
  'ClassDeclaration, ClassExpression:exit'(node) {
234
181
  var _classStack;
235
-
236
182
  if (classStack && ((_classStack = classStack) === null || _classStack === void 0 ? void 0 : _classStack.current) === node) {
237
183
  var _classStack2;
238
-
239
184
  classStack = (_classStack2 = classStack) === null || _classStack2 === void 0 ? void 0 : _classStack2.parent;
240
185
  }
241
186
  }
242
-
243
187
  };
244
188
  }
245
- });
246
-
247
- exports.default = _default;
189
+ });
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _Types = require("../Types");
9
-
10
- var _default = (0, _Types.codemod)({
8
+ var _default = exports.default = (0, _Types.codemod)({
11
9
  title: 'Remove explicitly exact object type syntax',
12
10
  describe: 'Convert explicitly exact object type syntax `{| |}` to be just be `{ }`. To be done after you turn on `exact_by_default=true` in your `.flowconfig`.',
13
11
  transform: context => {
@@ -17,9 +15,6 @@ var _default = (0, _Types.codemod)({
17
15
  exact: false
18
16
  });
19
17
  }
20
-
21
18
  };
22
19
  }
23
- });
24
-
25
- exports.default = _default;
20
+ });
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _Types = require("../Types");
9
-
10
- var _default = (0, _Types.codemod)({
8
+ var _default = exports.default = (0, _Types.codemod)({
11
9
  title: 'Rename `$Partial` to `Partial`',
12
10
  describe: 'Renames the `$Partial` type utility to `Partial`.',
13
11
  transform: context => {
@@ -17,9 +15,6 @@ var _default = (0, _Types.codemod)({
17
15
  name: 'Partial'
18
16
  });
19
17
  }
20
-
21
18
  };
22
19
  }
23
- });
24
-
25
- exports.default = _default;
20
+ });
@@ -4,14 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _hermesTransform = require("hermes-transform");
9
-
10
8
  var _Types = require("../Types");
11
-
12
9
  const UTILITY_TYPES = new Set(['React$ComponentType', 'React$AbstractComponent', 'React$Element', 'React$MixedElement', 'React$ElementType', 'React$Key', 'React$Ref', 'React$RefSetter', 'React$Node', 'React$Context', 'React$Portal', 'React$ElementProps', 'React$ElementConfig', 'React$ElementRef', 'React$Config', 'React$Config', 'React$RefObject']);
13
-
14
- var _default = (0, _Types.codemod)({
10
+ var _default = exports.default = (0, _Types.codemod)({
15
11
  title: 'Replace React$SomeUtilityType with React.SomeUtilityType.',
16
12
  transform: context => {
17
13
  return {
@@ -19,13 +15,10 @@ var _default = (0, _Types.codemod)({
19
15
  if (typeof node.id.name !== 'string') {
20
16
  return;
21
17
  }
22
-
23
18
  const utilTypeName = node.id.name;
24
-
25
19
  if (!UTILITY_TYPES.has(utilTypeName)) {
26
20
  return;
27
21
  }
28
-
29
22
  const newNode = _hermesTransform.t.GenericTypeAnnotation({
30
23
  id: _hermesTransform.t.QualifiedTypeIdentifier({
31
24
  id: _hermesTransform.t.Identifier({
@@ -37,12 +30,8 @@ var _default = (0, _Types.codemod)({
37
30
  }),
38
31
  typeParameters: node.typeParameters
39
32
  });
40
-
41
33
  context.replaceNode(node, newNode);
42
34
  }
43
-
44
35
  };
45
36
  }
46
- });
47
-
48
- exports.default = _default;
37
+ });
@@ -4,19 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _hermesTransform = require("hermes-transform");
9
-
10
8
  var _Types = require("../Types");
11
-
12
- var _default = (0, _Types.codemod)({
9
+ var _default = exports.default = (0, _Types.codemod)({
13
10
  title: 'Replace $TEMPORARY$ types',
14
11
  describe: ['Converts:', ' - `$TEMPORARY$object<{props}>` to `$ReadOnly<{props}>`', ' - `$TEMPORARY$array<T>` to `$ReadOnlyArray<T>`', ' - `$TEMPORARY$number<42>` annotations to `number`', ' - `$TEMPORARY$string<"foo">` annotations to `string`'].join('\n'),
15
12
  transform: context => {
16
13
  return {
17
14
  GenericTypeAnnotation(node) {
18
15
  const id = node.id;
19
-
20
16
  if (id.type === 'Identifier' && id.name === '$TEMPORARY$object' && node.typeParameters != null) {
21
17
  context.modifyNodeInPlace(node, {
22
18
  id: _hermesTransform.t.Identifier({
@@ -24,7 +20,6 @@ var _default = (0, _Types.codemod)({
24
20
  })
25
21
  });
26
22
  }
27
-
28
23
  if (id.type === 'Identifier' && id.name === '$TEMPORARY$array' && node.typeParameters != null) {
29
24
  context.modifyNodeInPlace(node, {
30
25
  id: _hermesTransform.t.Identifier({
@@ -32,26 +27,19 @@ var _default = (0, _Types.codemod)({
32
27
  })
33
28
  });
34
29
  }
35
-
36
30
  if (id.type === 'Identifier' && id.name === '$TEMPORARY$number') {
37
31
  const new_node = _hermesTransform.t.NumberTypeAnnotation();
38
-
39
32
  context.replaceNode(node, new_node, {
40
33
  keepComments: true
41
34
  });
42
35
  }
43
-
44
36
  if (id.type === 'Identifier' && id.name === '$TEMPORARY$string') {
45
37
  const new_node = _hermesTransform.t.StringTypeAnnotation();
46
-
47
38
  context.replaceNode(node, new_node, {
48
39
  keepComments: true
49
40
  });
50
41
  }
51
42
  }
52
-
53
43
  };
54
44
  }
55
- });
56
-
57
- exports.default = _default;
45
+ });
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _Types = require("../Types");
9
-
10
8
  var _hermesTransform = require("hermes-transform");
11
-
12
9
  function convertTypeCast(node) {
13
10
  const {
14
11
  expression,
@@ -21,8 +18,7 @@ function convertTypeCast(node) {
21
18
  typeAnnotation
22
19
  });
23
20
  }
24
-
25
- var _default = (0, _Types.codemod)({
21
+ var _default = exports.default = (0, _Types.codemod)({
26
22
  title: 'Update type casting syntax',
27
23
  describe: 'Convert type cast expressions `(<expr>: <type>)` to as expressions `<expr> as <type>`',
28
24
  transform: context => {
@@ -33,9 +29,6 @@ var _default = (0, _Types.codemod)({
33
29
  });
34
30
  context.skipTraversal();
35
31
  }
36
-
37
32
  };
38
33
  }
39
- });
40
-
41
- exports.default = _default;
34
+ });
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _Types = require("../Types");
9
-
10
8
  var _hermesTransform = require("hermes-transform");
11
-
12
- var _default = (0, _Types.codemod)({
9
+ var _default = exports.default = (0, _Types.codemod)({
13
10
  title: 'Replace `T: {}` with `T: {...}` in type parameter bounds',
14
11
  describe: 'Replace `T: {}` with `T: {...}` in type parameter bounds',
15
12
  transform: context => {
@@ -17,7 +14,6 @@ var _default = (0, _Types.codemod)({
17
14
  TypeParameter(node) {
18
15
  if (node.bound != null) {
19
16
  const annotation = node.bound.typeAnnotation;
20
-
21
17
  if (annotation.type === 'ObjectTypeAnnotation' && !annotation.inexact && annotation.properties.length === 0 && annotation.callProperties.length === 0 && annotation.indexers.length === 0 && annotation.internalSlots.length === 0) {
22
18
  context.replaceNode(annotation, _hermesTransform.t.ObjectTypeAnnotation({
23
19
  properties: [],
@@ -30,9 +26,6 @@ var _default = (0, _Types.codemod)({
30
26
  }
31
27
  }
32
28
  }
33
-
34
29
  };
35
30
  }
36
- });
37
-
38
- exports.default = _default;
31
+ });
@@ -5,19 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.findFlowFiles = findFlowFiles;
7
7
  exports.findFlowFilesWithSpinner = findFlowFilesWithSpinner;
8
-
9
8
  var _path = _interopRequireDefault(require("path"));
10
-
11
9
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
12
-
13
10
  var _ora = _interopRequireDefault(require("ora"));
14
-
15
11
  var _chalk = _interopRequireDefault(require("chalk"));
16
-
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
-
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
13
  const PRAGMA_BYTES = 5000;
20
-
21
14
  async function findFlowFiles({
22
15
  includeNonAtFlow,
23
16
  rootDirectory
@@ -25,17 +18,13 @@ async function findFlowFiles({
25
18
  const filePaths = [];
26
19
  await processDirectory(rootDirectory);
27
20
  return filePaths;
28
-
29
21
  async function processDirectory(directory) {
30
22
  const fileNames = await _fsExtra.default.readdir(directory);
31
23
  await Promise.all(fileNames.map(fileName => processFilePath(directory, fileName)));
32
24
  }
33
-
34
25
  async function processFilePath(directory, fileName) {
35
26
  const filePath = _path.default.join(directory, fileName);
36
-
37
27
  const stats = await _fsExtra.default.lstat(filePath);
38
-
39
28
  if (stats.isDirectory()) {
40
29
  if (fileName !== 'node_modules' && fileName !== 'flow-typed' && fileName !== '__flowtests__') {
41
30
  await processDirectory(filePath);
@@ -43,36 +32,29 @@ async function findFlowFiles({
43
32
  } else if (stats.isFile()) {
44
33
  const fileIsJsOrJsx = /\.jsx?$/.test(fileName);
45
34
  const fileIsIgnored = fileName.endsWith('-flowtest.js');
46
-
47
35
  if (fileIsJsOrJsx && !fileIsIgnored) {
48
36
  await processJavaScriptFilePath(filePath, stats.size);
49
37
  }
50
-
51
38
  if (fileName.endsWith('.flow')) {
52
39
  filePaths.push(filePath);
53
40
  }
54
41
  }
55
42
  }
56
-
57
43
  async function processJavaScriptFilePath(filePath, fileByteSize) {
58
44
  if (includeNonAtFlow) {
59
45
  filePaths.push(filePath);
60
46
  return;
61
47
  }
62
-
63
48
  const file = await _fsExtra.default.open(filePath, 'r');
64
49
  const bytes = Math.min(PRAGMA_BYTES, fileByteSize);
65
50
  const buffer = Buffer.alloc(bytes);
66
51
  await _fsExtra.default.read(file, buffer, 0, bytes, 0);
67
-
68
52
  if (buffer.includes('@flow')) {
69
53
  filePaths.push(filePath);
70
54
  }
71
-
72
55
  await _fsExtra.default.close(file);
73
56
  }
74
57
  }
75
-
76
58
  async function findFlowFilesWithSpinner(rootDirectory, options) {
77
59
  const spinner = (0, _ora.default)({
78
60
  text: _chalk.default.italic.cyan('Finding all the Flow files to be upgraded...'),
@@ -92,11 +74,9 @@ async function findFlowFilesWithSpinner(rootDirectory, options) {
92
74
  }
93
75
  })();
94
76
  spinner.stop();
95
-
96
77
  if (!options.silent) {
97
78
  console.log(`Found ${_chalk.default.bold.cyan(filePaths.length)} Flow files.`);
98
79
  console.log();
99
80
  }
100
-
101
81
  return filePaths;
102
82
  }
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = runCodemods;
7
-
8
7
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
9
  async function runCodemods(codemods, filePaths, options) {
13
10
  const results = await Promise.allSettled(filePaths.map(async filePath => {
14
11
  if (typeof require !== 'undefined' && require.cache) {
@@ -18,22 +15,17 @@ async function runCodemods(codemods, filePaths, options) {
18
15
  }
19
16
  });
20
17
  }
21
-
22
18
  const originalContents = await _fsExtra.default.readFile(filePath, 'utf8');
23
19
  let contents = originalContents;
24
-
25
20
  for (const codemod of codemods) {
26
21
  if (typeof jest !== 'undefined') {
27
22
  jest.resetModules();
28
23
  }
29
-
30
24
  const {
31
25
  transform
32
26
  } = require('hermes-transform');
33
-
34
27
  contents = await transform(contents, codemod.transform, options.prettierOptions);
35
28
  }
36
-
37
29
  if (originalContents !== contents) {
38
30
  await _fsExtra.default.writeFile(filePath, contents, 'utf8');
39
31
  }
package/dist/upgrade.js CHANGED
@@ -4,50 +4,35 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = upgrade;
7
-
8
7
  var _semver = _interopRequireDefault(require("semver"));
9
-
10
8
  var _chalk = _interopRequireDefault(require("chalk"));
11
-
12
9
  var _ora = _interopRequireDefault(require("ora"));
13
-
14
10
  var _promptConfirm = _interopRequireDefault(require("prompt-confirm"));
15
-
16
11
  var _Styled = _interopRequireDefault(require("./Styled"));
17
-
18
12
  var _findFlowFiles = require("./findFlowFiles");
19
-
20
13
  var _runCodemods = _interopRequireDefault(require("./runCodemods"));
21
-
22
14
  var _upgrades = require("./upgrades");
23
-
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
16
  async function upgrade(directory, currentVersion, nextVersion, options) {
27
17
  const log = options.silent ? () => {} : (...messages) => console.log(...messages);
28
18
  const allUpgrades = [];
29
-
30
19
  for (let i = 0; i < _upgrades.VERSION_UPGRADES.length; i++) {
31
20
  const {
32
21
  version,
33
22
  upgrades
34
23
  } = _upgrades.VERSION_UPGRADES[i];
35
-
36
24
  if (_semver.default.cmp(version, '>', nextVersion)) {
37
25
  break;
38
26
  }
39
-
40
27
  if (_semver.default.cmp(version, '>', currentVersion)) {
41
28
  upgrades.forEach(upgrade => allUpgrades.push(upgrade));
42
29
  }
43
30
  }
44
-
45
31
  log();
46
32
  log(_Styled.default.sectionHeader('flow-upgrade'));
47
33
  log();
48
34
  {
49
35
  const titleStyled = _chalk.default.bold('flow-upgrade');
50
-
51
36
  const message = `
52
37
  Thank you for choosing to upgrade Flow. In every release the Flow community adds
53
38
  new features and improves the performance of Flow to better serve you and your
@@ -87,25 +72,20 @@ directories, in __flowtests__ directories, or files ending in -flowtest.js.
87
72
  log(_chalk.default.bold.red('Please review this information to make sure that it is correct before proceeding.'));
88
73
  log();
89
74
  const answer = options.yes || (await new _promptConfirm.default('Are you ready to begin the upgrade?').run());
90
-
91
75
  if (!answer) {
92
76
  log();
93
77
  return;
94
78
  }
95
-
96
79
  while (allUpgrades.length) {
97
80
  log();
98
81
  const upgrade = allUpgrades.shift();
99
-
100
82
  switch (upgrade.kind) {
101
83
  case 'codemod':
102
84
  {
103
85
  const codemods = [upgrade];
104
-
105
86
  while (allUpgrades[0] && allUpgrades[0].kind === 'codemod') {
106
87
  codemods.push(allUpgrades.shift());
107
88
  }
108
-
109
89
  log(_Styled.default.sectionHeader('Codemods'));
110
90
  log();
111
91
  log('We are now going to run the following codemods:');
@@ -129,7 +109,6 @@ directories, in __flowtests__ directories, or files ending in -flowtest.js.
129
109
  await (0, _runCodemods.default)(codemods, filePaths, options);
130
110
  break;
131
111
  }
132
-
133
112
  default:
134
113
  throw new Error(`Unexpected upgrade kind: '${upgrade.kind}'`);
135
114
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _removeDuplicateClassProperties = _interopRequireDefault(require("../../codemods/removeDuplicateClassProperties"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- var _default = {
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = {
13
10
  version: '0.170.0',
14
11
  upgrades: [_removeDuplicateClassProperties.default]
15
- };
16
- exports.default = _default;
12
+ };
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _removeAnnotationsInDestructuring = _interopRequireDefault(require("../../codemods/removeAnnotationsInDestructuring"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- var _default = {
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = {
13
10
  version: '0.176.0',
14
11
  upgrades: [_removeAnnotationsInDestructuring.default]
15
- };
16
- exports.default = _default;
12
+ };