Enable prefer-const lint rules (#18451)
* Enable prefer-const rule Stylistically I don't like this but Closure Compiler takes advantage of this information. * Auto-fix lints * Manually fix the remaining callsites
Sebastian Markbåge committed
Apr 1, 2020 at 12:35 UTC
3e94bce765d355d74f6a60feb4addb6d196e3482
215 files changed
+1576
-1584
.eslintrc.js
+1
@@ -126,6 +126,7 @@ module.exports = {
126
},
127
rules: {
128
'no-var': ERROR,
129
+ 'prefer-const': ERROR,
130
strict: OFF,
131
},
132
},
packages/babel-plugin-react-jsx/src/TransformJSXToReactBabelPlugin.js
+1
-1
@@ -115,7 +115,7 @@ You can turn on the 'throwIfNamespace' flag to bypass this warning.`,
115
'Fragment tags are only supported in React 16 and up.',
116
);
117
}
118
- let callExpr = buildJSXFragmentCall(path, file);
118
+ const callExpr = buildJSXFragmentCall(path, file);
119
120
if (callExpr) {
121
path.replaceWith(t.inherits(callExpr, path.node));
packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js
+31
-29
@@ -62,10 +62,10 @@ export default {
62
const scopeManager = context.getSourceCode().scopeManager;
63
64
// Should be shared between visitors.
65
- let setStateCallSites = new WeakMap();
66
- let stateVariables = new WeakSet();
67
- let staticKnownValueCache = new WeakMap();
68
- let functionWithoutCapturedValueCache = new WeakMap();
65
+ const setStateCallSites = new WeakMap();
66
+ const stateVariables = new WeakSet();
67
+ const staticKnownValueCache = new WeakMap();
68
+ const functionWithoutCapturedValueCache = new WeakMap();
69
function memoizeWithWeakMap(fn, map) {
70
return function(arg) {
71
if (map.has(arg)) {
@@ -400,12 +400,12 @@ export default {
400
// Search the direct component subscopes for
401
// top-level function definitions matching this reference.
402
const fnNode = def.node;
403
- let childScopes = componentScope.childScopes;
403
+ const childScopes = componentScope.childScopes;
404
let fnScope = null;
405
let i;
406
for (i = 0; i < childScopes.length; i++) {
407
- let childScope = childScopes[i];
408
- let childScopeBlock = childScope.block;
407
+ const childScope = childScopes[i];
408
+ const childScopeBlock = childScope.block;
409
if (
410
// function handleChange() {}
411
(fnNode.type === 'FunctionDeclaration' &&
@@ -597,7 +597,7 @@ export default {
597
598
// Warn about assigning to variables in the outer scope.
599
// Those are usually bugs.
600
- let staleAssignments = new Set();
600
+ const staleAssignments = new Set();
601
function reportStaleAssignment(writeExpr, key) {
602
if (staleAssignments.has(key)) {
603
return;
@@ -664,7 +664,7 @@ export default {
664
});
665
});
666
if (setStateInsideEffectWithoutDeps) {
667
- let {suggestedDependencies} = collectRecommendations({
667
+ const {suggestedDependencies} = collectRecommendations({
668
dependencies,
669
declaredDependencies: [],
670
optionalDependencies,
@@ -789,7 +789,7 @@ export default {
789
});
790
}
791
792
- let {
792
+ const {
793
suggestedDependencies,
794
unnecessaryDependencies,
795
missingDependencies,
@@ -802,6 +802,8 @@ export default {
802
isEffect,
803
});
804
805
+ let suggestedDeps = suggestedDependencies;
806
+
807
const problemCount =
808
duplicateDependencies.size +
809
missingDependencies.size +
@@ -871,7 +873,7 @@ export default {
873
// for effects though because those have legit
874
// use cases for over-specifying deps.
875
if (!isEffect && missingDependencies.size > 0) {
874
- suggestedDependencies = collectRecommendations({
876
+ suggestedDeps = collectRecommendations({
877
dependencies,
878
declaredDependencies: [], // Pretend we don't know
879
optionalDependencies,
@@ -890,7 +892,7 @@ export default {
892
return declaredDepKeys.join(',') === sortedDeclaredDepKeys.join(',');
893
}
894
if (areDeclaredDepsAlphabetized()) {
893
- suggestedDependencies.sort();
895
+ suggestedDeps.sort();
896
}
897
898
function getWarningMessage(deps, singlePrefix, label, fixVerb) {
@@ -945,7 +947,7 @@ export default {
947
// a `this` value. This warning can be confusing.
948
// So if we're going to show it, append a clarification.
949
if (!extraWarning && missingDependencies.has('props')) {
948
- let propDep = dependencies.get('props');
950
+ const propDep = dependencies.get('props');
951
if (propDep == null) {
952
return;
953
}
@@ -1146,14 +1148,14 @@ export default {
1148
extraWarning,
1149
suggest: [
1150
{
1149
- desc: `Update the dependencies array to be: [${suggestedDependencies.join(
1151
+ desc: `Update the dependencies array to be: [${suggestedDeps.join(
1152
', ',
1153
)}]`,
1154
fix(fixer) {
1155
// TODO: consider preserving the comments or formatting?
1156
return fixer.replaceText(
1157
declaredDependenciesNode,
1156
- `[${suggestedDependencies.join(', ')}]`,
1158
+ `[${suggestedDeps.join(', ')}]`,
1159
);
1160
},
1161
},
@@ -1213,9 +1215,9 @@ function collectRecommendations({
1215
1216
// Tree manipulation helpers.
1217
function getOrCreateNodeByPath(rootNode, path) {
1216
- let keys = path.split('.');
1218
+ const keys = path.split('.');
1219
let node = rootNode;
1218
- for (let key of keys) {
1220
+ for (const key of keys) {
1221
let child = node.children.get(key);
1222
if (!child) {
1223
child = createDepTree();
@@ -1226,10 +1228,10 @@ function collectRecommendations({
1228
return node;
1229
}
1230
function markAllParentsByPath(rootNode, path, fn) {
1229
- let keys = path.split('.');
1231
+ const keys = path.split('.');
1232
let node = rootNode;
1231
- for (let key of keys) {
1232
- let child = node.children.get(key);
1233
+ for (const key of keys) {
1234
+ const child = node.children.get(key);
1235
if (!child) {
1236
return;
1237
}
@@ -1239,8 +1241,8 @@ function collectRecommendations({
1241
}
1242
1243
// Now we can learn which dependencies are missing or necessary.
1242
- let missingDependencies = new Set();
1243
- let satisfyingDependencies = new Set();
1244
+ const missingDependencies = new Set();
1245
+ const satisfyingDependencies = new Set();
1246
scanTreeRecursively(
1247
depTree,
1248
missingDependencies,
@@ -1277,9 +1279,9 @@ function collectRecommendations({
1279
}
1280
1281
// Collect suggestions in the order they were originally specified.
1280
- let suggestedDependencies = [];
1281
- let unnecessaryDependencies = new Set();
1282
- let duplicateDependencies = new Set();
1282
+ const suggestedDependencies = [];
1283
+ const unnecessaryDependencies = new Set();
1284
+ const duplicateDependencies = new Set();
1285
declaredDependencies.forEach(({key}) => {
1286
// Does this declared dep satisfy a real need?
1287
if (satisfyingDependencies.has(key)) {
@@ -1337,7 +1339,7 @@ function scanForDeclaredBareFunctions({
1339
if (fnRef == null) {
1340
return null;
1341
}
1340
- let fnNode = fnRef.defs[0];
1342
+ const fnNode = fnRef.defs[0];
1343
if (fnNode == null) {
1344
return null;
1345
}
@@ -1461,7 +1463,7 @@ function getNodeWithoutReactNamespace(node, options) {
1463
// 1 for useImperativeHandle(ref, fn).
1464
// For additionally configured Hooks, assume that they're like useEffect (0).
1465
function getReactiveHookCallbackIndex(calleeNode, options) {
1464
- let node = getNodeWithoutReactNamespace(calleeNode);
1466
+ const node = getNodeWithoutReactNamespace(calleeNode);
1467
if (node.type !== 'Identifier') {
1468
return -1;
1469
}
@@ -1507,7 +1509,7 @@ function getReactiveHookCallbackIndex(calleeNode, options) {
1509
* - agnostic to AST node types, it looks for `{ type: string, ... }`
1510
*/
1511
function fastFindReferenceWithParent(start, target) {
1510
- let queue = [start];
1512
+ const queue = [start];
1513
let item = null;
1514
1515
while (queue.length) {
@@ -1521,7 +1523,7 @@ function fastFindReferenceWithParent(start, target) {
1523
continue;
1524
}
1525
1524
- for (let [key, value] of Object.entries(item)) {
1526
+ for (const [key, value] of Object.entries(item)) {
1527
if (key === 'parent') {
1528
continue;
1529
}
packages/eslint-plugin-react-hooks/src/RulesOfHooks.js
+1
-1
@@ -226,7 +226,7 @@ export default {
226
function countPathsToEnd(segment, pathHistory) {
227
const {cache} = countPathsToEnd;
228
let paths = cache.get(segment.id);
229
- let pathList = new Set(pathHistory);
229
+ const pathList = new Set(pathHistory);
230
231
// If `pathList` includes the current segment then we've found a cycle!
232
// We need to fill `cyclic` with all segments inside cycle
packages/jest-react/src/JestReact.js
+1
-1
@@ -99,7 +99,7 @@ function jsonChildrenToJSXChildren(jsonChildren) {
99
if (jsonChildren.length === 1) {
100
return jsonChildToJSXChild(jsonChildren[0]);
101
} else if (jsonChildren.length > 1) {
102
- let jsxChildren = [];
102
+ const jsxChildren = [];
103
let allJSXChildrenAreStrings = true;
104
let jsxChildrenString = '';
105
for (let i = 0; i < jsonChildren.length; i++) {
packages/legacy-events/getListener.js
+1
-3
@@ -46,8 +46,6 @@ function shouldPreventMouseEvent(name, type, props) {
46
* @return {?function} The stored callback.
47
*/
48
export default function getListener(inst: Fiber, registrationName: string) {
49
- let listener;
50
-
49
// TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
50
// live here; needs to be moved to a better place soon
51
const stateNode = inst.stateNode;
@@ -60,7 +58,7 @@ export default function getListener(inst: Fiber, registrationName: string) {
58
// Work in progress.
59
return null;
60
}
63
- listener = props[registrationName];
61
+ const listener = props[registrationName];
62
if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
63
return null;
64
}
packages/react-art/src/ReactARTHostConfig.js
+2
-2
@@ -68,7 +68,7 @@ function createEventHandler(instance) {
68
69
function destroyEventListeners(instance) {
70
if (instance._subscriptions) {
71
- for (let type in instance._subscriptions) {
71
+ for (const type in instance._subscriptions) {
72
instance._subscriptions[type]();
73
}
74
}
@@ -170,7 +170,7 @@ function applyNodeProps(instance, props, prevProps = {}) {
170
}
171
}
172
173
- for (let type in EVENT_TYPES) {
173
+ for (const type in EVENT_TYPES) {
174
addEventListeners(instance, EVENT_TYPES[type], props[type]);
175
}
176
}
packages/react-cache/src/ReactCache.js
+1
-1
@@ -97,7 +97,7 @@ function accessResult<I, K, V>(
97
entriesForResource = new Map();
98
entries.set(resource, entriesForResource);
99
}
100
- let entry = entriesForResource.get(key);
100
+ const entry = entriesForResource.get(key);
101
if (entry === undefined) {
102
const thenable = fetch(input);
103
thenable.then(
packages/react-cache/src/__tests__/ReactCache-test.internal.js
+1
-1
@@ -303,7 +303,7 @@ describe('ReactCache', () => {
303
const BadTextResource = createResource(
304
([text, ms = 0]) => {
305
let listeners = null;
306
- let value = null;
306
+ const value = null;
307
return {
308
then(resolve, reject) {
309
if (value !== null) {
packages/react-client/src/ReactFlightClient.js
+25
-25
@@ -62,7 +62,7 @@ function Chunk(status: any, value: any) {
62
this._value = value;
63
}
64
Chunk.prototype.then = function<T>(resolve: () => mixed) {
65
- let chunk: SomeChunk<T> = this;
65
+ const chunk: SomeChunk<T> = this;
66
if (chunk._status === PENDING) {
67
if (chunk._value === null) {
68
chunk._value = [];
@@ -81,8 +81,8 @@ export type Response<T> = {
81
};
82
83
function readRoot<T>(): T {
84
- let response: Response<T> = this;
85
- let rootChunk = response.rootChunk;
84
+ const response: Response<T> = this;
85
+ const rootChunk = response.rootChunk;
86
if (rootChunk._status === RESOLVED) {
87
return rootChunk._value;
88
} else if (rootChunk._status === PENDING) {
@@ -94,10 +94,10 @@ function readRoot<T>(): T {
94
}
95
96
export function createResponse<T>(): Response<T> {
97
- let rootChunk: SomeChunk<any> = createPendingChunk();
98
- let chunks: Map<number, SomeChunk<any>> = new Map();
97
+ const rootChunk: SomeChunk<any> = createPendingChunk();
98
+ const chunks: Map<number, SomeChunk<any>> = new Map();
99
chunks.set(0, rootChunk);
100
- let response = {
100
+ const response = {
101
partialRow: '',
102
rootChunk,
103
chunks: chunks,
@@ -117,7 +117,7 @@ function createErrorChunk(error: Error): ErroredChunk {
117
function wakeChunk(listeners: null | Array<() => mixed>) {
118
if (listeners !== null) {
119
for (let i = 0; i < listeners.length; i++) {
120
- let listener = listeners[i];
120
+ const listener = listeners[i];
121
listener();
122
}
123
}
@@ -128,8 +128,8 @@ function triggerErrorOnChunk<T>(chunk: SomeChunk<T>, error: Error): void {
128
// We already resolved. We didn't expect to see this.
129
return;
130
}
131
- let listeners = chunk._value;
132
- let erroredChunk: ErroredChunk = (chunk: any);
131
+ const listeners = chunk._value;
132
+ const erroredChunk: ErroredChunk = (chunk: any);
133
erroredChunk._status = ERRORED;
134
erroredChunk._value = error;
135
wakeChunk(listeners);
@@ -144,8 +144,8 @@ function resolveChunk<T>(chunk: SomeChunk<T>, value: T): void {
144
// We already resolved. We didn't expect to see this.
145
return;
146
}
147
- let listeners = chunk._value;
148
- let resolvedChunk: ResolvedChunk<T> = (chunk: any);
147
+ const listeners = chunk._value;
148
+ const resolvedChunk: ResolvedChunk<T> = (chunk: any);
149
resolvedChunk._status = RESOLVED;
150
resolvedChunk._value = value;
151
wakeChunk(listeners);
@@ -170,7 +170,7 @@ function readMaybeChunk<T>(maybeChunk: SomeChunk<T> | T): T {
170
// $FlowFixMe
171
return maybeChunk;
172
}
173
- let chunk: SomeChunk<T> = (maybeChunk: any);
173
+ const chunk: SomeChunk<T> = (maybeChunk: any);
174
if (chunk._status === RESOLVED) {
175
return chunk._value;
176
} else if (chunk._status === PENDING) {
@@ -232,18 +232,18 @@ function initializeBlock<Props, Data>(
232
tuple: UninitializedBlockPayload<Data>,
233
): BlockComponent<Props, Data> {
234
// Require module first and then data. The ordering matters.
235
- let moduleMetaData: ModuleMetaData = readMaybeChunk(tuple[1]);
236
- let moduleReference: ModuleReference<
235
+ const moduleMetaData: ModuleMetaData = readMaybeChunk(tuple[1]);
236
+ const moduleReference: ModuleReference<
237
BlockRenderFunction<Props, Data>,
238
> = resolveModuleReference(moduleMetaData);
239
// TODO: Do this earlier, as the chunk is resolved.
240
preloadModule(moduleReference);
241
242
- let moduleExport = requireModule(moduleReference);
242
+ const moduleExport = requireModule(moduleReference);
243
244
// The ordering here is important because this call might suspend.
245
// We don't want that to prevent the module graph for being initialized.
246
- let data: Data = readMaybeChunk(tuple[2]);
246
+ const data: Data = readMaybeChunk(tuple[2]);
247
248
return {
249
$$typeof: REACT_BLOCK_TYPE,
@@ -256,7 +256,7 @@ function initializeBlock<Props, Data>(
256
function createLazyBlock<Props, Data>(
257
tuple: UninitializedBlockPayload<Data>,
258
): LazyComponent<BlockComponent<Props, Data>, UninitializedBlockPayload<Data>> {
259
- let lazyType: LazyComponent<
259
+ const lazyType: LazyComponent<
260
BlockComponent<Props, Data>,
261
UninitializedBlockPayload<Data>,
262
> = {
@@ -281,8 +281,8 @@ export function parseModelFromJSON<T>(
281
// This was an escaped string value.
282
return value.substring(1);
283
} else {
284
- let id = parseInt(value.substring(1), 16);
285
- let chunks = response.chunks;
284
+ const id = parseInt(value.substring(1), 16);
285
+ const chunks = response.chunks;
286
let chunk = chunks.get(id);
287
if (!chunk) {
288
chunk = createPendingChunk();
@@ -296,7 +296,7 @@ export function parseModelFromJSON<T>(
296
}
297
}
298
if (typeof value === 'object' && value !== null) {
299
- let tuple: [mixed, mixed, mixed, mixed] = (value: any);
299
+ const tuple: [mixed, mixed, mixed, mixed] = (value: any);
300
switch (tuple[0]) {
301
case REACT_ELEMENT_TYPE: {
302
// TODO: Consider having React just directly accept these arrays as elements.
@@ -317,8 +317,8 @@ export function resolveModelChunk<T, M>(
317
id: number,
318
model: M,
319
): void {
320
- let chunks = response.chunks;
321
- let chunk = chunks.get(id);
320
+ const chunks = response.chunks;
321
+ const chunk = chunks.get(id);
322
if (!chunk) {
323
chunks.set(id, createResolvedChunk(model));
324
} else {
@@ -332,10 +332,10 @@ export function resolveErrorChunk<T>(
332
message: string,
333
stack: string,
334
): void {
335
- let error = new Error(message);
335
+ const error = new Error(message);
336
error.stack = stack;
337
- let chunks = response.chunks;
338
- let chunk = chunks.get(id);
337
+ const chunks = response.chunks;
338
+ const chunk = chunks.get(id);
339
if (!chunk) {
340
chunks.set(id, createErrorChunk(error));
341
} else {
packages/react-client/src/ReactFlightClientStream.js
+14
-14
@@ -31,7 +31,7 @@ export type Response<T> = ResponseBase<T> & {
31
};
32
33
export function createResponse<T>(): Response<T> {
34
- let response: Response<T> = (createResponseImpl(): any);
34
+ const response: Response<T> = (createResponseImpl(): any);
35
response.fromJSON = function(key: string, value: JSONValue) {
36
return parseModelFromJSON(response, this, key, value);
37
};
@@ -45,27 +45,27 @@ function processFullRow<T>(response: Response<T>, row: string): void {
45
if (row === '') {
46
return;
47
}
48
- let tag = row[0];
48
+ const tag = row[0];
49
switch (tag) {
50
case 'J': {
51
- let colon = row.indexOf(':', 1);
52
- let id = parseInt(row.substring(1, colon), 16);
53
- let json = row.substring(colon + 1);
54
- let model = JSON.parse(json, response.fromJSON);
51
+ const colon = row.indexOf(':', 1);
52
+ const id = parseInt(row.substring(1, colon), 16);
53
+ const json = row.substring(colon + 1);
54
+ const model = JSON.parse(json, response.fromJSON);
55
resolveModelChunk(response, id, model);
56
return;
57
}
58
case 'E': {
59
- let colon = row.indexOf(':', 1);
60
- let id = parseInt(row.substring(1, colon), 16);
61
- let json = row.substring(colon + 1);
62
- let errorInfo = JSON.parse(json);
59
+ const colon = row.indexOf(':', 1);
60
+ const id = parseInt(row.substring(1, colon), 16);
61
+ const json = row.substring(colon + 1);
62
+ const errorInfo = JSON.parse(json);
63
resolveErrorChunk(response, id, errorInfo.message, errorInfo.stack);
64
return;
65
}
66
default: {
67
// Assume this is the root model.
68
- let model = JSON.parse(row, response.fromJSON);
68
+ const model = JSON.parse(row, response.fromJSON);
69
resolveModelChunk(response, 0, model);
70
return;
71
}
@@ -79,7 +79,7 @@ export function processStringChunk<T>(
79
): void {
80
let linebreak = chunk.indexOf('\n', offset);
81
while (linebreak > -1) {
82
- let fullrow = response.partialRow + chunk.substring(offset, linebreak);
82
+ const fullrow = response.partialRow + chunk.substring(offset, linebreak);
83
processFullRow(response, fullrow);
84
response.partialRow = '';
85
offset = linebreak + 1;
@@ -95,10 +95,10 @@ export function processBinaryChunk<T>(
95
if (!supportsBinaryStreams) {
96
throw new Error("This environment don't support binary chunks.");
97
}
98
- let stringDecoder = response.stringDecoder;
98
+ const stringDecoder = response.stringDecoder;
99
let linebreak = chunk.indexOf(10); // newline
100
while (linebreak > -1) {
101
- let fullrow =
101
+ const fullrow =
102
response.partialRow +
103
readFinalStringChunk(stringDecoder, chunk.subarray(0, linebreak));
104
processFullRow(response, fullrow);
packages/react-client/src/__tests__/ReactFlight-test.js
+13
-13
@@ -38,7 +38,7 @@ describe('ReactFlight', () => {
38
};
39
}
40
return function(...args) {
41
- let curriedLoad = () => {
41
+ const curriedLoad = () => {
42
return load(...args);
43
};
44
return ReactNoopFlightServerRuntime.serverBlock(render, curriedLoad);
@@ -58,10 +58,10 @@ describe('ReactFlight', () => {
58
),
59
};
60
}
61
- let transport = ReactNoopFlightServer.render({
61
+ const transport = ReactNoopFlightServer.render({
62
foo: <Foo />,
63
});
64
- let model = ReactNoopFlightClient.read(transport);
64
+ const model = ReactNoopFlightClient.read(transport);
65
expect(model).toEqual({
66
foo: {
67
bar: (
@@ -84,16 +84,16 @@ describe('ReactFlight', () => {
84
</span>
85
);
86
}
87
- let loadUser = block(User);
88
- let model = {
87
+ const loadUser = block(User);
88
+ const model = {
89
User: loadUser('Seb', 'Smith'),
90
};
91
92
- let transport = ReactNoopFlightServer.render(model);
92
+ const transport = ReactNoopFlightServer.render(model);
93
94
act(() => {
95
- let rootModel = ReactNoopFlightClient.read(transport);
96
- let UserClient = rootModel.User;
95
+ const rootModel = ReactNoopFlightClient.read(transport);
96
+ const UserClient = rootModel.User;
97
ReactNoop.render(<UserClient greeting="Hello" />);
98
});
99
@@ -111,16 +111,16 @@ describe('ReactFlight', () => {
111
</span>
112
);
113
}
114
- let loadUser = block(User, load);
115
- let model = {
114
+ const loadUser = block(User, load);
115
+ const model = {
116
User: loadUser('Seb', 'Smith'),
117
};
118
119
- let transport = ReactNoopFlightServer.render(model);
119
+ const transport = ReactNoopFlightServer.render(model);
120
121
act(() => {
122
- let rootModel = ReactNoopFlightClient.read(transport);
123
- let UserClient = rootModel.User;
122
+ const rootModel = ReactNoopFlightClient.read(transport);
123
+ const UserClient = rootModel.User;
124
ReactNoop.render(<UserClient greeting="Hello" />);
125
});
126
packages/react-debug-tools/src/ReactDebugHooks.js
+34
-33
@@ -65,7 +65,7 @@ function getPrimitiveStackCache(): Map<string, Array<any>> {
65
// This initializes a cache of all primitive hooks so that the top
66
// most stack frames added by calling the primitive hook can be removed.
67
if (primitiveStackCache === null) {
68
- let cache = new Map();
68
+ const cache = new Map();
69
let readHookLog;
70
try {
71
// Use all hooks here to add them to the hook log.
@@ -94,7 +94,7 @@ function getPrimitiveStackCache(): Map<string, Array<any>> {
94
hookLog = [];
95
}
96
for (let i = 0; i < readHookLog.length; i++) {
97
- let hook = readHookLog[i];
97
+ const hook = readHookLog[i];
98
cache.set(hook.primitive, ErrorStackParser.parse(hook.stackError));
99
}
100
primitiveStackCache = cache;
@@ -104,7 +104,7 @@ function getPrimitiveStackCache(): Map<string, Array<any>> {
104
105
let currentHook: null | Hook = null;
106
function nextHook(): null | Hook {
107
- let hook = currentHook;
107
+ const hook = currentHook;
108
if (hook !== null) {
109
currentHook = hook.next;
110
}
@@ -134,8 +134,8 @@ function useContext<T>(
134
function useState<S>(
135
initialState: (() => S) | S,
136
): [S, Dispatch<BasicStateAction<S>>] {
137
- let hook = nextHook();
138
- let state: S =
137
+ const hook = nextHook();
138
+ const state: S =
139
hook !== null
140
? hook.memoizedState
141
: typeof initialState === 'function'
@@ -151,7 +151,7 @@ function useReducer<S, I, A>(
151
initialArg: I,
152
init?: I => S,
153
): [S, Dispatch<A>] {
154
- let hook = nextHook();
154
+ const hook = nextHook();
155
let state;
156
if (hook !== null) {
157
state = hook.memoizedState;
@@ -167,8 +167,8 @@ function useReducer<S, I, A>(
167
}
168
169
function useRef<T>(initialValue: T): {|current: T|} {
170
- let hook = nextHook();
171
- let ref = hook !== null ? hook.memoizedState : {current: initialValue};
170
+ const hook = nextHook();
171
+ const ref = hook !== null ? hook.memoizedState : {current: initialValue};
172
hookLog.push({
173
primitive: 'Ref',
174
stackError: new Error(),
@@ -227,7 +227,7 @@ function useDebugValue(value: any, formatterFn: ?(value: any) => any) {
227
}
228
229
function useCallback<T>(callback: T, inputs: Array<mixed> | void | null): T {
230
- let hook = nextHook();
230
+ const hook = nextHook();
231
hookLog.push({
232
primitive: 'Callback',
233
stackError: new Error(),
@@ -240,8 +240,8 @@ function useMemo<T>(
240
nextCreate: () => T,
241
inputs: Array<mixed> | void | null,
242
): T {
243
- let hook = nextHook();
244
- let value = hook !== null ? hook.memoizedState[0] : nextCreate();
243
+ const hook = nextHook();
244
+ const value = hook !== null ? hook.memoizedState[0] : nextCreate();
245
hookLog.push({primitive: 'Memo', stackError: new Error(), value});
246
return value;
247
}
@@ -367,7 +367,7 @@ export type HooksTree = Array<HooksNode>;
367
let mostLikelyAncestorIndex = 0;
368
369
function findSharedIndex(hookStack, rootStack, rootIndex) {
370
- let source = rootStack[rootIndex].source;
370
+ const source = rootStack[rootIndex].source;
371
hookSearch: for (let i = 0; i < hookStack.length; i++) {
372
if (hookStack[i].source === source) {
373
// This looks like a match. Validate that the rest of both stack match up.
@@ -412,7 +412,7 @@ function isReactWrapper(functionName, primitiveName) {
412
if (!functionName) {
413
return false;
414
}
415
- let expectedPrimitiveName = 'use' + primitiveName;
415
+ const expectedPrimitiveName = 'use' + primitiveName;
416
if (functionName.length < expectedPrimitiveName.length) {
417
return false;
418
}
@@ -423,8 +423,8 @@ function isReactWrapper(functionName, primitiveName) {
423
}
424
425
function findPrimitiveIndex(hookStack, hook) {
426
- let stackCache = getPrimitiveStackCache();
427
- let primitiveStack = stackCache.get(hook.primitive);
426
+ const stackCache = getPrimitiveStackCache();
427
+ const primitiveStack = stackCache.get(hook.primitive);
428
if (primitiveStack === undefined) {
429
return -1;
430
}
@@ -453,9 +453,9 @@ function findPrimitiveIndex(hookStack, hook) {
453
function parseTrimmedStack(rootStack, hook) {
454
// Get the stack trace between the primitive hook function and
455
// the root function call. I.e. the stack frames of custom hooks.
456
- let hookStack = ErrorStackParser.parse(hook.stackError);
457
- let rootIndex = findCommonAncestorIndex(rootStack, hookStack);
458
- let primitiveIndex = findPrimitiveIndex(hookStack, hook);
456
+ const hookStack = ErrorStackParser.parse(hook.stackError);
457
+ const rootIndex = findCommonAncestorIndex(rootStack, hookStack);
458
+ const primitiveIndex = findPrimitiveIndex(hookStack, hook);
459
if (
460
rootIndex === -1 ||
461
primitiveIndex === -1 ||
@@ -482,14 +482,14 @@ function parseCustomHookName(functionName: void | string): string {
482
}
483
484
function buildTree(rootStack, readHookLog): HooksTree {
485
- let rootChildren = [];
485
+ const rootChildren = [];
486
let prevStack = null;
487
let levelChildren = rootChildren;
488
let nativeHookID = 0;
489
- let stackOfChildren = [];
489
+ const stackOfChildren = [];
490
for (let i = 0; i < readHookLog.length; i++) {
491
- let hook = readHookLog[i];
492
- let stack = parseTrimmedStack(rootStack, hook);
491
+ const hook = readHookLog[i];
492
+ const stack = parseTrimmedStack(rootStack, hook);
493
if (stack !== null) {
494
// Note: The indices 0 <= n < length-1 will contain the names.
495
// The indices 1 <= n < length will contain the source locations.
@@ -499,8 +499,9 @@ function buildTree(rootStack, readHookLog): HooksTree {
499
if (prevStack !== null) {
500
// Compare the current level's stack to the new stack.
501
while (commonSteps < stack.length && commonSteps < prevStack.length) {
502
- let stackSource = stack[stack.length - commonSteps - 1].source;
503
- let prevSource = prevStack[prevStack.length - commonSteps - 1].source;
502
+ const stackSource = stack[stack.length - commonSteps - 1].source;
503
+ const prevSource =
504
+ prevStack[prevStack.length - commonSteps - 1].source;
505
if (stackSource !== prevSource) {
506
break;
507
}
@@ -514,7 +515,7 @@ function buildTree(rootStack, readHookLog): HooksTree {
515
// The remaining part of the new stack are custom hooks. Push them
516
// to the tree.
517
for (let j = stack.length - commonSteps - 1; j >= 1; j--) {
517
- let children = [];
518
+ const children = [];
519
levelChildren.push({
520
id: null,
521
isStateEditable: false,
@@ -563,7 +564,7 @@ function processDebugValues(
564
hooksTree: HooksTree,
565
parentHooksNode: HooksNode | null,
566
): void {
566
- let debugValueHooksNodes: Array<HooksNode> = [];
567
+ const debugValueHooksNodes: Array<HooksNode> = [];
568
569
for (let i = 0; i < hooksTree.length; i++) {
570
const hooksNode = hooksTree[i];
@@ -599,7 +600,7 @@ export function inspectHooks<Props>(
600
currentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
601
}
602
602
- let previousDispatcher = currentDispatcher.current;
603
+ const previousDispatcher = currentDispatcher.current;
604
let readHookLog;
605
currentDispatcher.current = Dispatcher;
606
let ancestorStackError;
@@ -611,7 +612,7 @@ export function inspectHooks<Props>(
612
hookLog = [];
613
currentDispatcher.current = previousDispatcher;
614
}
614
- let rootStack = ErrorStackParser.parse(ancestorStackError);
615
+ const rootStack = ErrorStackParser.parse(ancestorStackError);
616
return buildTree(rootStack, readHookLog);
617
}
618
@@ -642,7 +643,7 @@ function inspectHooksOfForwardRef<Props, Ref>(
643
ref: Ref,
644
currentDispatcher: CurrentDispatcherRef,
645
): HooksTree {
645
- let previousDispatcher = currentDispatcher.current;
646
+ const previousDispatcher = currentDispatcher.current;
647
let readHookLog;
648
currentDispatcher.current = Dispatcher;
649
let ancestorStackError;
@@ -654,7 +655,7 @@ function inspectHooksOfForwardRef<Props, Ref>(
655
hookLog = [];
656
currentDispatcher.current = previousDispatcher;
657
}
657
- let rootStack = ErrorStackParser.parse(ancestorStackError);
658
+ const rootStack = ErrorStackParser.parse(ancestorStackError);
659
return buildTree(rootStack, readHookLog);
660
}
661
@@ -663,7 +664,7 @@ function resolveDefaultProps(Component, baseProps) {
664
// Resolve default props. Taken from ReactElement
665
const props = Object.assign({}, baseProps);
666
const defaultProps = Component.defaultProps;
666
- for (let propName in defaultProps) {
667
+ for (const propName in defaultProps) {
668
if (props[propName] === undefined) {
669
props[propName] = defaultProps[propName];
670
}
@@ -695,7 +696,7 @@ export function inspectHooksOfFiber(
696
}
697
// Warm up the cache so that it doesn't consume the currentHook.
698
getPrimitiveStackCache();
698
- let type = fiber.type;
699
+ const type = fiber.type;
700
let props = fiber.memoizedProps;
701
if (type !== fiber.elementType) {
702
props = resolveDefaultProps(type, props);
@@ -703,7 +704,7 @@ export function inspectHooksOfFiber(
704
// Set up the current hook so that we can step through and read the
705
// current state from them.
706
currentHook = (fiber.memoizedState: Hook);
706
- let contextMap = new Map();
707
+ const contextMap = new Map();
708
try {
709
setupContexts(contextMap, fiber);
710
if (fiber.tag === ForwardRef) {
packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.internal.js
+2
-2
@@ -39,7 +39,7 @@ describe('ReactHooksInspection', () => {
39
});
40
return <div DEPRECATED_flareListeners={listener}>Hello world</div>;
41
}
42
- let tree = ReactDebugTools.inspectHooks(Foo, {});
42
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
43
expect(tree).toEqual([
44
{
45
isStateEditable: false,
@@ -65,7 +65,7 @@ describe('ReactHooksInspection', () => {
65
React.useEffect(effect);
66
return <div ref={ref}>Hello world</div>;
67
}
68
- let tree = ReactDebugTools.inspectHooks(Foo, {});
68
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
69
expect(tree).toEqual([
70
{
71
isStateEditable: false,
packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.js
+24
-24
@@ -22,10 +22,10 @@ describe('ReactHooksInspection', () => {
22
23
it('should inspect a simple useState hook', () => {
24
function Foo(props) {
25
- let [state] = React.useState('hello world');
25
+ const [state] = React.useState('hello world');
26
return <div>{state}</div>;
27
}
28
- let tree = ReactDebugTools.inspectHooks(Foo, {});
28
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
29
expect(tree).toEqual([
30
{
31
isStateEditable: true,
@@ -39,15 +39,15 @@ describe('ReactHooksInspection', () => {
39
40
it('should inspect a simple custom hook', () => {
41
function useCustom(value) {
42
- let [state] = React.useState(value);
42
+ const [state] = React.useState(value);
43
React.useDebugValue('custom hook label');
44
return state;
45
}
46
function Foo(props) {
47
- let value = useCustom('hello world');
47
+ const value = useCustom('hello world');
48
return <div>{value}</div>;
49
}
50
- let tree = ReactDebugTools.inspectHooks(Foo, {});
50
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
51
expect(tree).toEqual([
52
{
53
isStateEditable: false,
@@ -70,20 +70,20 @@ describe('ReactHooksInspection', () => {
70
it('should inspect a tree of multiple hooks', () => {
71
function effect() {}
72
function useCustom(value) {
73
- let [state] = React.useState(value);
73
+ const [state] = React.useState(value);
74
React.useEffect(effect);
75
return state;
76
}
77
function Foo(props) {
78
- let value1 = useCustom('hello');
79
- let value2 = useCustom('world');
78
+ const value1 = useCustom('hello');
79
+ const value2 = useCustom('world');
80
return (
81
<div>
82
{value1} {value2}
83
</div>
84
);
85
}
86
- let tree = ReactDebugTools.inspectHooks(Foo, {});
86
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
87
expect(tree).toEqual([
88
{
89
isStateEditable: false,
@@ -135,30 +135,30 @@ describe('ReactHooksInspection', () => {
135
it('should inspect a tree of multiple levels of hooks', () => {
136
function effect() {}
137
function useCustom(value) {
138
- let [state] = React.useReducer((s, a) => s, value);
138
+ const [state] = React.useReducer((s, a) => s, value);
139
React.useEffect(effect);
140
return state;
141
}
142
function useBar(value) {
143
- let result = useCustom(value);
143
+ const result = useCustom(value);
144
React.useLayoutEffect(effect);
145
return result;
146
}
147
function useBaz(value) {
148
React.useLayoutEffect(effect);
149
- let result = useCustom(value);
149
+ const result = useCustom(value);
150
return result;
151
}
152
function Foo(props) {
153
- let value1 = useBar('hello');
154
- let value2 = useBaz('world');
153
+ const value1 = useBar('hello');
154
+ const value2 = useBaz('world');
155
return (
156
<div>
157
{value1} {value2}
158
</div>
159
);
160
}
161
- let tree = ReactDebugTools.inspectHooks(Foo, {});
161
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
162
expect(tree).toEqual([
163
{
164
isStateEditable: false,
@@ -238,12 +238,12 @@ describe('ReactHooksInspection', () => {
238
});
239
240
it('should inspect the default value using the useContext hook', () => {
241
- let MyContext = React.createContext('default');
241
+ const MyContext = React.createContext('default');
242
function Foo(props) {
243
- let value = React.useContext(MyContext);
243
+ const value = React.useContext(MyContext);
244
return <div>{value}</div>;
245
}
246
- let tree = ReactDebugTools.inspectHooks(Foo, {});
246
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
247
expect(tree).toEqual([
248
{
249
isStateEditable: false,
@@ -257,15 +257,15 @@ describe('ReactHooksInspection', () => {
257
258
it('should support an injected dispatcher', () => {
259
function Foo(props) {
260
- let [state] = React.useState('hello world');
260
+ const [state] = React.useState('hello world');
261
return <div>{state}</div>;
262
}
263
264
- let initial = {};
264
+ const initial = {};
265
let current = initial;
266
let getterCalls = 0;
267
- let setterCalls = [];
268
- let FakeDispatcherRef = {
267
+ const setterCalls = [];
268
+ const FakeDispatcherRef = {
269
get current() {
270
getterCalls++;
271
return current;
@@ -299,7 +299,7 @@ describe('ReactHooksInspection', () => {
299
React.useDebugValue('this is invalid');
300
return null;
301
}
302
- let tree = ReactDebugTools.inspectHooks(Foo, {});
302
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
303
expect(tree).toHaveLength(0);
304
});
305
@@ -312,7 +312,7 @@ describe('ReactHooksInspection', () => {
312
useCustom();
313
return null;
314
}
315
- let tree = ReactDebugTools.inspectHooks(Foo, {});
315
+ const tree = ReactDebugTools.inspectHooks(Foo, {});
316
expect(tree).toEqual([
317
{
318
isStateEditable: false,
packages/react-debug-tools/src/__tests__/ReactHooksInspectionIntegration-test.js
+70
-70
@@ -27,17 +27,17 @@ describe('ReactHooksInspectionIntegration', () => {
27
});
28
29
it('should inspect the current state of useState hooks', () => {
30
- let useState = React.useState;
30
+ const useState = React.useState;
31
function Foo(props) {
32
- let [state1, setState1] = useState('hello');
33
- let [state2, setState2] = useState('world');
32
+ const [state1, setState1] = useState('hello');
33
+ const [state2, setState2] = useState('world');
34
return (
35
<div onMouseDown={setState1} onMouseUp={setState2}>
36
{state1} {state2}
37
</div>
38
);
39
}
40
- let renderer = ReactTestRenderer.create(<Foo prop="prop" />);
40
+ const renderer = ReactTestRenderer.create(<Foo prop="prop" />);
41
42
let childFiber = renderer.root.findByType(Foo)._currentFiber();
43
let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
@@ -58,7 +58,7 @@ describe('ReactHooksInspectionIntegration', () => {
58
},
59
]);
60
61
- let {
61
+ const {
62
onMouseDown: setStateA,
63
onMouseUp: setStateB,
64
} = renderer.root.findByType('div').props;
@@ -109,12 +109,12 @@ describe('ReactHooksInspectionIntegration', () => {
109
});
110
111
it('should inspect the current state of all stateful hooks', () => {
112
- let outsideRef = React.createRef();
112
+ const outsideRef = React.createRef();
113
function effect() {}
114
function Foo(props) {
115
- let [state1, setState] = React.useState('a');
116
- let [state2, dispatch] = React.useReducer((s, a) => a.value, 'b');
117
- let ref = React.useRef('c');
115
+ const [state1, setState] = React.useState('a');
116
+ const [state2, dispatch] = React.useReducer((s, a) => a.value, 'b');
117
+ const ref = React.useRef('c');
118
119
React.useLayoutEffect(effect);
120
React.useEffect(effect);
@@ -139,7 +139,7 @@ describe('ReactHooksInspectionIntegration', () => {
139
});
140
ref.current = 'C';
141
}
142
- let memoizedUpdate = React.useCallback(update, []);
142
+ const memoizedUpdate = React.useCallback(update, []);
143
return (
144
<div onClick={memoizedUpdate}>
145
{state1} {state2}
@@ -153,7 +153,7 @@ describe('ReactHooksInspectionIntegration', () => {
153
154
let childFiber = renderer.root.findByType(Foo)._currentFiber();
155
156
- let {onClick: updateStates} = renderer.root.findByType('div').props;
156
+ const {onClick: updateStates} = renderer.root.findByType('div').props;
157
158
let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
159
expect(tree).toEqual([
@@ -269,18 +269,18 @@ describe('ReactHooksInspectionIntegration', () => {
269
});
270
271
it('should inspect the value of the current provider in useContext', () => {
272
- let MyContext = React.createContext('default');
272
+ const MyContext = React.createContext('default');
273
function Foo(props) {
274
- let value = React.useContext(MyContext);
274
+ const value = React.useContext(MyContext);
275
return <div>{value}</div>;
276
}
277
- let renderer = ReactTestRenderer.create(
277
+ const renderer = ReactTestRenderer.create(
278
<MyContext.Provider value="contextual">
279
<Foo prop="prop" />
280
</MyContext.Provider>,
281
);
282
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
283
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
282
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
283
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
284
expect(tree).toEqual([
285
{
286
isStateEditable: false,
@@ -293,16 +293,16 @@ describe('ReactHooksInspectionIntegration', () => {
293
});
294
295
it('should inspect forwardRef', () => {
296
- let obj = function() {};
297
- let Foo = React.forwardRef(function(props, ref) {
296
+ const obj = function() {};
297
+ const Foo = React.forwardRef(function(props, ref) {
298
React.useImperativeHandle(ref, () => obj);
299
return <div />;
300
});
301
- let ref = React.createRef();
302
- let renderer = ReactTestRenderer.create(<Foo ref={ref} />);
301
+ const ref = React.createRef();
302
+ const renderer = ReactTestRenderer.create(<Foo ref={ref} />);
303
304
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
305
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
304
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
305
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
306
expect(tree).toEqual([
307
{
308
isStateEditable: false,
@@ -316,14 +316,14 @@ describe('ReactHooksInspectionIntegration', () => {
316
317
it('should inspect memo', () => {
318
function InnerFoo(props) {
319
- let [value] = React.useState('hello');
319
+ const [value] = React.useState('hello');
320
return <div>{value}</div>;
321
}
322
- let Foo = React.memo(InnerFoo);
323
- let renderer = ReactTestRenderer.create(<Foo />);
322
+ const Foo = React.memo(InnerFoo);
323
+ const renderer = ReactTestRenderer.create(<Foo />);
324
// TODO: Test renderer findByType is broken for memo. Have to search for the inner.
325
- let childFiber = renderer.root.findByType(InnerFoo)._currentFiber();
326
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
325
+ const childFiber = renderer.root.findByType(InnerFoo)._currentFiber();
326
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
327
expect(tree).toEqual([
328
{
329
isStateEditable: true,
@@ -337,16 +337,16 @@ describe('ReactHooksInspectionIntegration', () => {
337
338
it('should inspect custom hooks', () => {
339
function useCustom() {
340
- let [value] = React.useState('hello');
340
+ const [value] = React.useState('hello');
341
return value;
342
}
343
function Foo(props) {
344
- let value = useCustom();
344
+ const value = useCustom();
345
return <div>{value}</div>;
346
}
347
- let renderer = ReactTestRenderer.create(<Foo />);
348
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
349
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
347
+ const renderer = ReactTestRenderer.create(<Foo />);
348
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
349
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
350
expect(tree).toEqual([
351
{
352
isStateEditable: false,
@@ -373,9 +373,9 @@ describe('ReactHooksInspectionIntegration', () => {
373
const memoizedValue = React.useMemo(() => 'hello', []);
374
return <div>{memoizedValue}</div>;
375
}
376
- let renderer = ReactTestRenderer.create(<Foo />);
377
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
378
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
376
+ const renderer = ReactTestRenderer.create(<Foo />);
377
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
378
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
379
expect(tree).toEqual([
380
{
381
id: 0,
@@ -402,9 +402,9 @@ describe('ReactHooksInspectionIntegration', () => {
402
const [state] = React.useState(() => 'hello', []);
403
return <div>{state}</div>;
404
}
405
- let renderer = ReactTestRenderer.create(<Foo />);
406
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
407
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
405
+ const renderer = ReactTestRenderer.create(<Foo />);
406
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
407
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
408
expect(tree).toEqual([
409
{
410
id: 0,
@@ -427,12 +427,12 @@ describe('ReactHooksInspectionIntegration', () => {
427
describe('useDebugValue', () => {
428
it('should support inspectable values for multiple custom hooks', () => {
429
function useLabeledValue(label) {
430
- let [value] = React.useState(label);
430
+ const [value] = React.useState(label);
431
React.useDebugValue(`custom label ${label}`);
432
return value;
433
}
434
function useAnonymous(label) {
435
- let [value] = React.useState(label);
435
+ const [value] = React.useState(label);
436
return value;
437
}
438
function Example() {
@@ -442,9 +442,9 @@ describe('ReactHooksInspectionIntegration', () => {
442
useLabeledValue('d');
443
return null;
444
}
445
- let renderer = ReactTestRenderer.create(<Example />);
446
- let childFiber = renderer.root.findByType(Example)._currentFiber();
447
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
445
+ const renderer = ReactTestRenderer.create(<Example />);
446
+ const childFiber = renderer.root.findByType(Example)._currentFiber();
447
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
448
expect(tree).toEqual([
449
{
450
isStateEditable: false,
@@ -514,9 +514,9 @@ describe('ReactHooksInspectionIntegration', () => {
514
useOuter();
515
return null;
516
}
517
- let renderer = ReactTestRenderer.create(<Example />);
518
- let childFiber = renderer.root.findByType(Example)._currentFiber();
519
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
517
+ const renderer = ReactTestRenderer.create(<Example />);
518
+ const childFiber = renderer.root.findByType(Example)._currentFiber();
519
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
520
expect(tree).toEqual([
521
{
522
isStateEditable: false,
@@ -561,9 +561,9 @@ describe('ReactHooksInspectionIntegration', () => {
561
useSingleLabelCustom('two');
562
return null;
563
}
564
- let renderer = ReactTestRenderer.create(<Example />);
565
- let childFiber = renderer.root.findByType(Example)._currentFiber();
566
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
564
+ const renderer = ReactTestRenderer.create(<Example />);
565
+ const childFiber = renderer.root.findByType(Example)._currentFiber();
566
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
567
expect(tree).toEqual([
568
{
569
isStateEditable: false,
@@ -618,9 +618,9 @@ describe('ReactHooksInspectionIntegration', () => {
618
React.useDebugValue('this is invalid');
619
return null;
620
}
621
- let renderer = ReactTestRenderer.create(<Example />);
622
- let childFiber = renderer.root.findByType(Example)._currentFiber();
623
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
621
+ const renderer = ReactTestRenderer.create(<Example />);
622
+ const childFiber = renderer.root.findByType(Example)._currentFiber();
623
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
624
expect(tree).toHaveLength(0);
625
});
626
@@ -633,9 +633,9 @@ describe('ReactHooksInspectionIntegration', () => {
633
useCustom();
634
return null;
635
}
636
- let renderer = ReactTestRenderer.create(<Example />);
637
- let childFiber = renderer.root.findByType(Example)._currentFiber();
638
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
636
+ const renderer = ReactTestRenderer.create(<Example />);
637
+ const childFiber = renderer.root.findByType(Example)._currentFiber();
638
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
639
expect(tree).toEqual([
640
{
641
isStateEditable: false,
@@ -657,10 +657,10 @@ describe('ReactHooksInspectionIntegration', () => {
657
});
658
659
it('should support defaultProps and lazy', async () => {
660
- let Suspense = React.Suspense;
660
+ const Suspense = React.Suspense;
661
662
function Foo(props) {
663
- let [value] = React.useState(props.defaultValue.substr(0, 3));
663
+ const [value] = React.useState(props.defaultValue.substr(0, 3));
664
return <div>{value}</div>;
665
}
666
Foo.defaultProps = {
@@ -671,9 +671,9 @@ describe('ReactHooksInspectionIntegration', () => {
671
return {default: result};
672
}
673
674
- let LazyFoo = React.lazy(() => fakeImport(Foo));
674
+ const LazyFoo = React.lazy(() => fakeImport(Foo));
675
676
- let renderer = ReactTestRenderer.create(
676
+ const renderer = ReactTestRenderer.create(
677
<Suspense fallback="Loading...">
678
<LazyFoo />
679
</Suspense>,
@@ -683,8 +683,8 @@ describe('ReactHooksInspectionIntegration', () => {
683
684
Scheduler.unstable_flushAll();
685
686
- let childFiber = renderer.root._currentFiber();
687
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
686
+ const childFiber = renderer.root._currentFiber();
687
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
688
expect(tree).toEqual([
689
{
690
isStateEditable: true,
@@ -698,15 +698,15 @@ describe('ReactHooksInspectionIntegration', () => {
698
699
it('should support an injected dispatcher', () => {
700
function Foo(props) {
701
- let [state] = React.useState('hello world');
701
+ const [state] = React.useState('hello world');
702
return <div>{state}</div>;
703
}
704
705
- let initial = {};
705
+ const initial = {};
706
let current = initial;
707
let getterCalls = 0;
708
- let setterCalls = [];
709
- let FakeDispatcherRef = {
708
+ const setterCalls = [];
709
+ const FakeDispatcherRef = {
710
get current() {
711
getterCalls++;
712
return current;
@@ -717,8 +717,8 @@ describe('ReactHooksInspectionIntegration', () => {
717
},
718
};
719
720
- let renderer = ReactTestRenderer.create(<Foo />);
721
- let childFiber = renderer.root._currentFiber();
720
+ const renderer = ReactTestRenderer.create(<Foo />);
721
+ const childFiber = renderer.root._currentFiber();
722
expect(() => {
723
ReactDebugTools.inspectHooksOfFiber(childFiber, FakeDispatcherRef);
724
}).toThrow(
@@ -798,9 +798,9 @@ describe('ReactHooksInspectionIntegration', () => {
798
React.useMemo(() => 'memo', []);
799
return <div />;
800
}
801
- let renderer = ReactTestRenderer.create(<Foo />);
802
- let childFiber = renderer.root.findByType(Foo)._currentFiber();
803
- let tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
801
+ const renderer = ReactTestRenderer.create(<Foo />);
802
+ const childFiber = renderer.root.findByType(Foo)._currentFiber();
803
+ const tree = ReactDebugTools.inspectHooksOfFiber(childFiber);
804
expect(tree).toEqual([
805
{
806
id: 0,
packages/react-devtools-core/src/editor.js
+3
-1
@@ -156,11 +156,13 @@ export function launchEditor(
156
return;
157
}
158
159
- let [editor, ...args] = guessEditor();
159
+ const [editor, ...destructuredArgs] = guessEditor();
160
if (!editor) {
161
return;
162
}
163
164
+ let args = destructuredArgs;
165
+
166
if (lineNumber) {
167
args = args.concat(getArgumentsForLineNumber(editor, filePath, lineNumber));
168
} else {
packages/react-devtools-extensions/src/main.js
+2
-2
@@ -228,11 +228,11 @@ function createPanelIfReactLoaded() {
228
cloneStyleTags = () => {
229
const linkTags = [];
230
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
231
- for (let linkTag of document.getElementsByTagName('link')) {
231
+ for (const linkTag of document.getElementsByTagName('link')) {
232
if (linkTag.rel === 'stylesheet') {
233
const newLinkTag = document.createElement('link');
234
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
235
- for (let attribute of linkTag.attributes) {
235
+ for (const attribute of linkTag.attributes) {
236
newLinkTag.setAttribute(attribute.nodeName, attribute.nodeValue);
237
}
238
linkTags.push(newLinkTag);
packages/react-devtools-extensions/src/panel.js
+1
-1
@@ -12,7 +12,7 @@ window.injectStyles = getLinkTags => {
12
const linkTags = getLinkTags();
13
14
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
15
- for (let linkTag of linkTags) {
15
+ for (const linkTag of linkTags) {
16
document.head.appendChild(linkTag);
17
}
18
}
packages/react-devtools-shared/src/__tests__/profilingCache-test.js
+1
-1
@@ -72,7 +72,7 @@ describe('ProfilingCache', () => {
72
utils.act(() => ReactDOM.render(<Parent count={0} />, containerA));
73
utils.act(() => store.profilerStore.stopProfiling());
74
75
- let allProfilingDataForRoots = [];
75
+ const allProfilingDataForRoots = [];
76
77
function Validator({previousProfilingDataForRoot, rootID}) {
78
const profilingDataForRoot = store.profilerStore.getDataForRoot(rootID);
packages/react-devtools-shared/src/__tests__/storeStressSync-test.js
+7
-7
@@ -37,7 +37,7 @@ describe('StoreStress (Legacy Mode)', () => {
37
// We'll be manually flipping this component back and forth in the test.
38
// We only do this for a single node in order to verify that DevTools
39
// can handle a subtree switching alternates while other subtrees are memoized.
40
- let [showX, _setShowX] = React.useState(false);
40
+ const [showX, _setShowX] = React.useState(false);
41
setShowX = _setShowX;
42
return showX ? <X /> : 'c';
43
};
@@ -87,7 +87,7 @@ describe('StoreStress (Legacy Mode)', () => {
87
// These cases are picked so that rendering them sequentially in the same
88
// container results in a combination of mounts, updates, unmounts, and reorders.
89
// prettier-ignore
90
- let cases = [
90
+ const cases = [
91
[a, b, c, d, e],
92
[[a], b, c, d, e],
93
[[a, b], c, d, e],
@@ -183,7 +183,7 @@ describe('StoreStress (Legacy Mode)', () => {
183
const e = <E key="e" />;
184
185
// prettier-ignore
186
- let steps = [
186
+ const steps = [
187
a,
188
b,
189
c,
@@ -207,7 +207,7 @@ describe('StoreStress (Legacy Mode)', () => {
207
};
208
209
// 1. Capture the expected render result.
210
- let snapshots = [];
210
+ const snapshots = [];
211
let container = document.createElement('div');
212
for (let i = 0; i < steps.length; i++) {
213
act(() => ReactDOM.render(<Root>{steps[i]}</Root>, container));
@@ -308,7 +308,7 @@ describe('StoreStress (Legacy Mode)', () => {
308
309
// 1. For each step, check Suspense can render them as initial primary content.
310
// This is the only step where we use Jest snapshots.
311
- let snapshots = [];
311
+ const snapshots = [];
312
let container = document.createElement('div');
313
for (let i = 0; i < steps.length; i++) {
314
act(() =>
@@ -719,7 +719,7 @@ describe('StoreStress (Legacy Mode)', () => {
719
720
// 1. For each step, check Suspense can render them as initial primary content.
721
// This is the only step where we use Jest snapshots.
722
- let snapshots = [];
722
+ const snapshots = [];
723
let container = document.createElement('div');
724
for (let i = 0; i < steps.length; i++) {
725
act(() =>
@@ -744,7 +744,7 @@ describe('StoreStress (Legacy Mode)', () => {
744
// 2. Verify check Suspense can render same steps as initial fallback content.
745
// We don't actually assert here because the tree includes <MaybeSuspend>
746
// which is different from the snapshots above. So we take more snapshots.
747
- let fallbackSnapshots = [];
747
+ const fallbackSnapshots = [];
748
for (let i = 0; i < steps.length; i++) {
749
act(() =>
750
ReactDOM.render(
packages/react-devtools-shared/src/__tests__/storeStressTestConcurrent-test.js
+7
-7
@@ -42,7 +42,7 @@ describe('StoreStressConcurrent', () => {
42
// We'll be manually flipping this component back and forth in the test.
43
// We only do this for a single node in order to verify that DevTools
44
// can handle a subtree switching alternates while other subtrees are memoized.
45
- let [showX, _setShowX] = React.useState(false);
45
+ const [showX, _setShowX] = React.useState(false);
46
setShowX = _setShowX;
47
return showX ? <X /> : 'c';
48
};
@@ -115,7 +115,7 @@ describe('StoreStressConcurrent', () => {
115
// These cases are picked so that rendering them sequentially in the same
116
// container results in a combination of mounts, updates, unmounts, and reorders.
117
// prettier-ignore
118
- let cases = [
118
+ const cases = [
119
[a, b, c, d, e],
120
[[a], b, c, d, e],
121
[[a, b], c, d, e],
@@ -215,7 +215,7 @@ describe('StoreStressConcurrent', () => {
215
const e = <E key="e" />;
216
217
// prettier-ignore
218
- let steps = [
218
+ const steps = [
219
a,
220
b,
221
c,
@@ -239,7 +239,7 @@ describe('StoreStressConcurrent', () => {
239
};
240
241
// 1. Capture the expected render result.
242
- let snapshots = [];
242
+ const snapshots = [];
243
let container = document.createElement('div');
244
// $FlowFixMe
245
let root = ReactDOM.createRoot(container);
@@ -401,7 +401,7 @@ describe('StoreStressConcurrent', () => {
401
402
// 1. For each step, check Suspense can render them as initial primary content.
403
// This is the only step where we use Jest snapshots.
404
- let snapshots = [];
404
+ const snapshots = [];
405
let container = document.createElement('div');
406
// $FlowFixMe
407
let root = ReactDOM.createRoot(container);
@@ -890,7 +890,7 @@ describe('StoreStressConcurrent', () => {
890
891
// 1. For each step, check Suspense can render them as initial primary content.
892
// This is the only step where we use Jest snapshots.
893
- let snapshots = [];
893
+ const snapshots = [];
894
let container = document.createElement('div');
895
// $FlowFixMe
896
let root = ReactDOM.createRoot(container);
@@ -915,7 +915,7 @@ describe('StoreStressConcurrent', () => {
915
// 2. Verify check Suspense can render same steps as initial fallback content.
916
// We don't actually assert here because the tree includes <MaybeSuspend>
917
// which is different from the snapshots above. So we take more snapshots.
918
- let fallbackSnapshots = [];
918
+ const fallbackSnapshots = [];
919
for (let i = 0; i < steps.length; i++) {
920
act(() =>
921
root.render(
packages/react-devtools-shared/src/__tests__/treeContext-test.js
+4
-4
@@ -482,7 +482,7 @@ describe('TreeListContext', () => {
482
utils.act(() => (renderer = TestRenderer.create(<Contexts />)));
483
expect(state).toMatchSnapshot('1: initial state');
484
485
- let parentID = ((store.getElementIDAtIndex(1): any): number);
485
+ const parentID = ((store.getElementIDAtIndex(1): any): number);
486
utils.act(() => dispatch({type: 'SELECT_OWNER', payload: parentID}));
487
utils.act(() => renderer.update(<Contexts />));
488
expect(state).toMatchSnapshot('2: parent owners tree');
@@ -507,7 +507,7 @@ describe('TreeListContext', () => {
507
utils.act(() => (renderer = TestRenderer.create(<Contexts />)));
508
expect(state).toMatchSnapshot('1: initial state');
509
510
- let parentID = ((store.getElementIDAtIndex(1): any): number);
510
+ const parentID = ((store.getElementIDAtIndex(1): any): number);
511
utils.act(() => dispatch({type: 'SELECT_OWNER', payload: parentID}));
512
utils.act(() => renderer.update(<Contexts />));
513
expect(state).toMatchSnapshot('2: parent owners tree');
@@ -545,7 +545,7 @@ describe('TreeListContext', () => {
545
utils.act(() => (renderer = TestRenderer.create(<Contexts />)));
546
expect(state).toMatchSnapshot('1: initial state');
547
548
- let childID = ((store.getElementIDAtIndex(1): any): number);
548
+ const childID = ((store.getElementIDAtIndex(1): any): number);
549
utils.act(() => dispatch({type: 'SELECT_OWNER', payload: childID}));
550
utils.act(() => renderer.update(<Contexts />));
551
expect(state).toMatchSnapshot('2: child owners tree');
@@ -553,7 +553,7 @@ describe('TreeListContext', () => {
553
await utils.actAsync(() => ReactDOM.render(<Parent />, container));
554
expect(state).toMatchSnapshot('3: remove child');
555
556
- let parentID = ((store.getElementIDAtIndex(0): any): number);
556
+ const parentID = ((store.getElementIDAtIndex(0): any): number);
557
utils.act(() => dispatch({type: 'SELECT_OWNER', payload: parentID}));
558
utils.act(() => renderer.update(<Contexts />));
559
expect(state).toMatchSnapshot('4: parent owners tree');
packages/react-devtools-shared/src/backend/NativeStyleEditor/setupNativeStyleEditor.js
+1
-1
@@ -171,7 +171,7 @@ function measureStyle(
171
172
function shallowClone(object: Object): Object {
173
const cloned = {};
174
- for (let n in object) {
174
+ for (const n in object) {
175
cloned[n] = object[n];
176
}
177
return cloned;
packages/react-devtools-shared/src/backend/agent.js
+5
-5
@@ -211,7 +211,7 @@ export default class Agent extends EventEmitter<{|
211
}
212
213
getIDForNode(node: Object): number | null {
214
- for (let rendererID in this._rendererInterfaces) {
214
+ for (const rendererID in this._rendererInterfaces) {
215
const renderer = ((this._rendererInterfaces[
216
(rendererID: any)
217
]: any): RendererInterface);
@@ -389,7 +389,7 @@ export default class Agent extends EventEmitter<{|
389
390
setTraceUpdatesEnabled(traceUpdatesEnabled);
391
392
- for (let rendererID in this._rendererInterfaces) {
392
+ for (const rendererID in this._rendererInterfaces) {
393
const renderer = ((this._rendererInterfaces[
394
(rendererID: any)
395
]: any): RendererInterface);
@@ -413,7 +413,7 @@ export default class Agent extends EventEmitter<{|
413
startProfiling = (recordChangeDescriptions: boolean) => {
414
this._recordChangeDescriptions = recordChangeDescriptions;
415
this._isProfiling = true;
416
- for (let rendererID in this._rendererInterfaces) {
416
+ for (const rendererID in this._rendererInterfaces) {
417
const renderer = ((this._rendererInterfaces[
418
(rendererID: any)
419
]: any): RendererInterface);
@@ -425,7 +425,7 @@ export default class Agent extends EventEmitter<{|
425
stopProfiling = () => {
426
this._isProfiling = false;
427
this._recordChangeDescriptions = false;
428
- for (let rendererID in this._rendererInterfaces) {
428
+ for (const rendererID in this._rendererInterfaces) {
429
const renderer = ((this._rendererInterfaces[
430
(rendererID: any)
431
]: any): RendererInterface);
@@ -456,7 +456,7 @@ export default class Agent extends EventEmitter<{|
456
};
457
458
updateComponentFilters = (componentFilters: Array<ComponentFilter>) => {
459
- for (let rendererID in this._rendererInterfaces) {
459
+ for (const rendererID in this._rendererInterfaces) {
460
const renderer = ((this._rendererInterfaces[
461
(rendererID: any)
462
]: any): RendererInterface);
packages/react-devtools-shared/src/backend/console.js
+4
-4
@@ -27,7 +27,7 @@ const injectedRenderers: Map<
27
28
let targetConsole: Object = console;
29
let targetConsoleMethods = {};
30
-for (let method in console) {
30
+for (const method in console) {
31
targetConsoleMethods[method] = console[method];
32
}
33
@@ -40,7 +40,7 @@ export function dangerous_setTargetConsoleForTesting(
40
targetConsole = targetConsoleForTesting;
41
42
targetConsoleMethods = {};
43
- for (let method in targetConsole) {
43
+ for (const method in targetConsole) {
44
targetConsoleMethods[method] = console[method];
45
}
46
}
@@ -77,7 +77,7 @@ export function patch(): void {
77
const originalConsoleMethods = {};
78
79
unpatchFn = () => {
80
- for (let method in originalConsoleMethods) {
80
+ for (const method in originalConsoleMethods) {
81
try {
82
// $FlowFixMe property error|warn is not writable.
83
targetConsole[method] = originalConsoleMethods[method];
@@ -101,7 +101,7 @@ export function patch(): void {
101
// If there's a component stack for at least one of the injected renderers, append it.
102
// We don't handle the edge case of stacks for more than one (e.g. interleaved renderers?)
103
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
104
- for (let {
104
+ for (const {
105
getCurrentFiber,
106
getDisplayNameForFiber,
107
} of injectedRenderers.values()) {
packages/react-devtools-shared/src/backend/describeComponentFrame.js
+1
-1
@@ -21,7 +21,7 @@ export default function describeComponentFrame(
21
) {
22
let sourceInfo = '';
23
if (source) {
24
- let path = source.fileName;
24
+ const path = source.fileName;
25
let fileName = path.replace(BEFORE_SLASH_RE, '');
26
if (__DEV__) {
27
// In DEV, include code for a common special case:
packages/react-devtools-shared/src/backend/legacy/renderer.js
+7
-7
@@ -87,7 +87,7 @@ function getElementType(internalInstance: InternalInstance): ElementType {
87
}
88
89
function getChildren(internalInstance: Object): Array<any> {
90
- let children = [];
90
+ const children = [];
91
92
// If the parent is a native node without rendered children, but with
93
// multiple string children, then the `element` that gets passed in here is
@@ -106,7 +106,7 @@ function getChildren(internalInstance: Object): Array<any> {
106
}
107
} else if (internalInstance._renderedChildren) {
108
const renderedChildren = internalInstance._renderedChildren;
109
- for (let name in renderedChildren) {
109
+ for (const name in renderedChildren) {
110
const child = renderedChildren[name];
111
if (getElementType(child) !== ElementTypeOtherOrUnknown) {
112
children.push(child);
@@ -386,8 +386,8 @@ export function attach(
386
? getID(internalInstance._currentElement._owner)
387
: 0;
388
389
- let displayNameStringID = getStringID(displayName);
390
- let keyStringID = getStringID(key);
389
+ const displayNameStringID = getStringID(displayName);
390
+ const keyStringID = getStringID(key);
391
pushOperation(TREE_OPERATION_ADD);
392
pushOperation(id);
393
pushOperation(type);
@@ -447,7 +447,7 @@ export function attach(
447
renderer.Mount._instancesByReactRootID ||
448
renderer.Mount._instancesByContainerID;
449
450
- for (let key in roots) {
450
+ for (const key in roots) {
451
const internalInstance = roots[key];
452
const id = getID(internalInstance);
453
crawlAndRecordInitialMounts(id, 0, id);
@@ -455,8 +455,8 @@ export function attach(
455
}
456
}
457
458
- let pendingOperations: Array<number> = [];
459
- let pendingStringTable: Map<string, number> = new Map();
458
+ const pendingOperations: Array<number> = [];
459
+ const pendingStringTable: Map<string, number> = new Map();
460
let pendingUnmountedIDs: Array<number> = [];
461
let pendingStringTableLength: number = 0;
462
let pendingUnmountedRootID: number | null = null;
packages/react-devtools-shared/src/backend/legacy/utils.js
+1
-1
@@ -29,7 +29,7 @@ export function decorateMany(
29
}
30
31
export function restoreMany(source: Object, olds: Object): void {
32
- for (let name in olds) {
32
+ for (const name in olds) {
33
source[name] = olds[name];
34
}
35
}
packages/react-devtools-shared/src/backend/renderer.js
+22
-22
@@ -543,7 +543,7 @@ export function attach(
543
544
// Highlight updates
545
let traceUpdatesEnabled: boolean = false;
546
- let traceUpdatesForNodes: Set<NativeType> = new Set();
546
+ const traceUpdatesForNodes: Set<NativeType> = new Set();
547
548
function applyComponentFilters(componentFilters: Array<ComponentFilter>) {
549
hideElementsWithTypes.clear();
@@ -675,7 +675,7 @@ export function attach(
675
const displayName = getDisplayNameForFiber(fiber);
676
if (displayName != null) {
677
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
678
- for (let displayNameRegExp of hideElementsWithDisplayNames) {
678
+ for (const displayNameRegExp of hideElementsWithDisplayNames) {
679
if (displayNameRegExp.test(displayName)) {
680
return true;
681
}
@@ -686,7 +686,7 @@ export function attach(
686
if (_debugSource != null && hideElementsWithPaths.size > 0) {
687
const {fileName} = _debugSource;
688
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
689
- for (let pathRegExp of hideElementsWithPaths) {
689
+ for (const pathRegExp of hideElementsWithPaths) {
690
if (pathRegExp.test(fileName)) {
691
return true;
692
}
@@ -960,7 +960,7 @@ export function attach(
960
const keys = new Set([...Object.keys(prev), ...Object.keys(next)]);
961
const changedKeys = [];
962
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
963
- for (let key of keys) {
963
+ for (const key of keys) {
964
if (prev[key] !== next[key]) {
965
changedKeys.push(key);
966
}
@@ -994,11 +994,11 @@ export function attach(
994
}
995
}
996
997
- let pendingOperations: Array<number> = [];
998
- let pendingRealUnmountedIDs: Array<number> = [];
999
- let pendingSimulatedUnmountedIDs: Array<number> = [];
997
+ const pendingOperations: Array<number> = [];
998
+ const pendingRealUnmountedIDs: Array<number> = [];
999
+ const pendingSimulatedUnmountedIDs: Array<number> = [];
1000
let pendingOperationsQueue: Array<Array<number>> | null = [];
1001
- let pendingStringTable: Map<string, number> = new Map();
1001
+ const pendingStringTable: Map<string, number> = new Map();
1002
let pendingStringTableLength: number = 0;
1003
let pendingUnmountedRootID: number | null = null;
1004
@@ -1173,12 +1173,12 @@ export function attach(
1173
? getFiberID(getPrimaryFiber(parentFiber))
1174
: 0;
1175
1176
- let displayNameStringID = getStringID(displayName);
1176
+ const displayNameStringID = getStringID(displayName);
1177
1178
// This check is a guard to handle a React element that has been modified
1179
// in such a way as to bypass the default stringification of the "key" property.
1180
- let keyString = key === null ? null : '' + key;
1181
- let keyStringID = getStringID(keyString);
1180
+ const keyString = key === null ? null : '' + key;
1181
+ const keyStringID = getStringID(keyString);
1182
1183
pushOperation(TREE_OPERATION_ADD);
1184
pushOperation(id);
@@ -1974,7 +1974,7 @@ export function attach(
1974
return null;
1975
}
1976
1977
- let alternate = fiber.alternate;
1977
+ const alternate = fiber.alternate;
1978
if (!alternate) {
1979
// If there is no alternate, then we only need to check if it is mounted.
1980
const state = isFiberMountedImpl(fiber);
@@ -1992,12 +1992,12 @@ export function attach(
1992
let a: Fiber = fiber;
1993
let b: Fiber = alternate;
1994
while (true) {
1995
- let parentA = a.return;
1995
+ const parentA = a.return;
1996
if (parentA === null) {
1997
// We're at the root.
1998
break;
1999
}
2000
- let parentB = parentA.alternate;
2000
+ const parentB = parentA.alternate;
2001
if (parentB === null) {
2002
// There is no alternate. This is an unusual case. Currently, it only
2003
// happens when a Suspense component is hidden. An extra fragment fiber
@@ -2131,7 +2131,7 @@ export function attach(
2131
}
2132
2133
function prepareViewElementSource(id: number): void {
2134
- let fiber = idToFiberMap.get(id);
2134
+ const fiber = idToFiberMap.get(id);
2135
if (fiber == null) {
2136
console.warn(`Could not find Fiber with id "${id}"`);
2137
return;
@@ -2163,7 +2163,7 @@ export function attach(
2163
}
2164
2165
function getOwnersList(id: number): Array<Owner> | null {
2166
- let fiber = findCurrentFiberUsingSlowPathById(id);
2166
+ const fiber = findCurrentFiberUsingSlowPathById(id);
2167
if (fiber == null) {
2168
return null;
2169
}
@@ -2200,7 +2200,7 @@ export function attach(
2200
let instance = null;
2201
let style = null;
2202
2203
- let fiber = findCurrentFiberUsingSlowPathById(id);
2203
+ const fiber = findCurrentFiberUsingSlowPathById(id);
2204
if (fiber !== null) {
2205
instance = fiber.stateNode;
2206
@@ -2213,7 +2213,7 @@ export function attach(
2213
}
2214
2215
function inspectElementRaw(id: number): InspectedElement | null {
2216
- let fiber = findCurrentFiberUsingSlowPathById(id);
2216
+ const fiber = findCurrentFiberUsingSlowPathById(id);
2217
if (fiber == null) {
2218
return null;
2219
}
@@ -2328,7 +2328,7 @@ export function attach(
2328
const originalConsoleMethods = {};
2329
2330
// Temporarily disable all console logging before re-running the hook.
2331
- for (let method in console) {
2331
+ for (const method in console) {
2332
try {
2333
originalConsoleMethods[method] = console[method];
2334
// $FlowFixMe property error|warn is not writable.
@@ -2343,7 +2343,7 @@ export function attach(
2343
);
2344
} finally {
2345
// Restore original console functionality.
2346
- for (let method in originalConsoleMethods) {
2346
+ for (const method in originalConsoleMethods) {
2347
try {
2348
// $FlowFixMe property error|warn is not writable.
2349
console[method] = originalConsoleMethods[method];
@@ -2462,7 +2462,7 @@ export function attach(
2462
function updateSelectedElement(inspectedElement: InspectedElement): void {
2463
const {hooks, id, props} = inspectedElement;
2464
2465
- let fiber = idToFiberMap.get(id);
2465
+ const fiber = idToFiberMap.get(id);
2466
if (fiber == null) {
2467
console.warn(`Could not find Fiber with id "${id}"`);
2468
return;
@@ -2912,7 +2912,7 @@ export function attach(
2912
return false;
2913
}
2914
2915
- let forceFallbackForSuspenseIDs = new Set();
2915
+ const forceFallbackForSuspenseIDs = new Set();
2916
function shouldSuspendFiberAccordingToSet(fiber) {
2917
const id = getFiberID(getPrimaryFiber(((fiber: any): Fiber)));
2918
return forceFallbackForSuspenseIDs.has(id);
packages/react-devtools-shared/src/backend/views/Highlighter/Overlay.js
+2
-2
@@ -155,11 +155,11 @@ export default class Overlay {
155
156
constructor() {
157
// Find the root window, because overlays are positioned relative to it.
158
- let currentWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
158
+ const currentWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
159
this.window = currentWindow;
160
161
// When opened in shells/dev, the tooltip should be bound by the app iframe, not by the topmost window.
162
- let tipBoundsWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
162
+ const tipBoundsWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
163
this.tipBoundsWindow = tipBoundsWindow;
164
165
const doc = currentWindow.document;
packages/react-devtools-shared/src/backend/views/TraceUpdates/index.js
+1
-1
@@ -135,7 +135,7 @@ function measureNode(node: Object): Rect | null {
135
return null;
136
}
137
138
- let currentWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
138
+ const currentWindow = window.__REACT_DEVTOOLS_TARGET_WINDOW__ || window;
139
140
return getNestedBoundingClientRect(node, currentWindow);
141
}
packages/react-devtools-shared/src/devtools/ProfilerStore.js
+1
-1
@@ -297,7 +297,7 @@ export default class ProfilerStore extends EventEmitter<{|
297
298
// Record all renderer IDs initially too (in case of unmount)
299
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
300
- for (let rendererID of this._store.rootIDToRendererID.values()) {
300
+ for (const rendererID of this._store.rootIDToRendererID.values()) {
301
if (!this._initialRendererIDs.has(rendererID)) {
302
this._initialRendererIDs.add(rendererID);
303
}
packages/react-devtools-shared/src/devtools/store.js
+1
-1
@@ -479,7 +479,7 @@ export default class Store extends EventEmitter<{|
479
480
getOwnersListForElement(ownerID: number): Array<Element> {
481
const list = [];
482
- let element = this._idToElement.get(ownerID);
482
+ const element = this._idToElement.get(ownerID);
483
if (element != null) {
484
list.push({
485
...element,
packages/react-devtools-shared/src/devtools/utils.js
+2
-1
@@ -44,7 +44,8 @@ export function printElement(element: Element, includeWeight: boolean = false) {
44
}
45
}
46
47
- let hocs = hocDisplayNames === null ? '' : ` [${hocDisplayNames.join('][')}]`;
47
+ const hocs =
48
+ hocDisplayNames === null ? '' : ` [${hocDisplayNames.join('][')}]`;
49
50
let suffix = '';
51
if (includeWeight) {
packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js
+8
-5
@@ -76,7 +76,7 @@ const resource: Resource<
76
InspectedElementFrontend,
77
> = createResource(
78
(element: Element) => {
79
- let request = inProgressRequests.get(element);
79
+ const request = inProgressRequests.get(element);
80
if (request != null) {
81
return request.promise;
82
}
@@ -351,16 +351,19 @@ function hydrateHelper(
351
path?: Array<string | number>,
352
): Object | null {
353
if (dehydratedData !== null) {
354
- let {cleaned, data, unserializable} = dehydratedData;
354
+ const {cleaned, data, unserializable} = dehydratedData;
355
356
if (path) {
357
const {length} = path;
358
if (length > 0) {
359
// Hydration helper requires full paths, but inspection dehydrates with relative paths.
360
// In that event it's important that we adjust the "cleaned" paths to match.
361
- cleaned = cleaned.map(cleanedPath => cleanedPath.slice(length));
362
- unserializable = unserializable.map(unserializablePath =>
363
- unserializablePath.slice(length),
361
+ return hydrate(
362
+ data,
363
+ cleaned.map(cleanedPath => cleanedPath.slice(length)),
364
+ unserializable.map(unserializablePath =>
365
+ unserializablePath.slice(length),
366
+ ),
367
);
368
}
369
}
packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js
+1
-1
@@ -217,7 +217,7 @@ export default function KeyValue({
217
const hasChildren = entries.length > 0;
218
const displayName = getMetaValueLabel(value);
219
220
- let areChildrenReadOnly = isReadOnly || !!value[meta.readonly];
220
+ const areChildrenReadOnly = isReadOnly || !!value[meta.readonly];
221
children = entries.map<Element<any>>(([key, keyValue]) => (
222
<KeyValue
223
key={key}
packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js
+2
-2
@@ -57,7 +57,7 @@ const resource: Resource<
57
StyleAndLayoutFrontend,
58
> = createResource(
59
(element: Element) => {
60
- let request = inProgressRequests.get(element);
60
+ const request = inProgressRequests.get(element);
61
if (request != null) {
62
return request.promise;
63
}
@@ -108,7 +108,7 @@ function NativeStyleContextController({children}: Props) {
108
// This effect handler invalidates the suspense cache and schedules rendering updates with React.
109
useEffect(() => {
110
const onStyleAndLayout = ({id, layout, style}: StyleAndLayoutBackend) => {
111
- let element = store.getElementByID(id);
111
+ const element = store.getElementByID(id);
112
if (element !== null) {
113
const styleAndLayout: StyleAndLayoutFrontend = {
114
layout,
packages/react-devtools-shared/src/devtools/views/Components/OwnersListContext.js
+1
-1
@@ -35,7 +35,7 @@ type InProgressRequest = {|
35
const inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();
36
const resource: Resource<Element, Element, Array<Owner>> = createResource(
37
(element: Element) => {
38
- let request = inProgressRequests.get(element);
38
+ const request = inProgressRequests.get(element);
39
if (request != null) {
40
return request.promise;
41
}
packages/react-devtools-shared/src/devtools/views/Components/Tree.js
+1
-1
@@ -409,7 +409,7 @@ function updateIndentationSizeVar(
409
let maxIndentationSize: number = indentationSizeRef.current;
410
411
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
412
- for (let child of innerDiv.children) {
412
+ for (const child of innerDiv.children) {
413
const depth = parseInt(child.getAttribute('data-depth'), 10) || 0;
414
415
let childWidth: number = 0;
packages/react-devtools-shared/src/devtools/views/Components/TreeContext.js
+5
-6
@@ -157,7 +157,8 @@ type State = {|
157
|};
158
159
function reduceTreeState(store: Store, state: State, action: Action): State {
160
- let {numElements, ownerID, selectedElementIndex, selectedElementID} = state;
160
+ let {numElements, selectedElementIndex, selectedElementID} = state;
161
+ const ownerID = state.ownerID;
162
163
let lookupIDForIndex = true;
164
@@ -277,13 +278,13 @@ function reduceTreeState(store: Store, state: State, action: Action): State {
278
279
function reduceSearchState(store: Store, state: State, action: Action): State {
280
let {
280
- ownerID,
281
searchIndex,
282
searchResults,
283
searchText,
284
selectedElementID,
285
selectedElementIndex,
286
} = state;
287
+ const ownerID = state.ownerID;
288
289
const prevSearchIndex = searchIndex;
290
const prevSearchText = searchText;
@@ -452,10 +453,8 @@ function reduceOwnersState(store: Store, state: State, action: Action): State {
453
selectedElementIndex,
454
ownerID,
455
ownerFlatTree,
455
- searchIndex,
456
- searchResults,
457
- searchText,
456
} = state;
457
+ const {searchIndex, searchResults, searchText} = state;
458
459
let prevSelectedElementIndex = selectedElementIndex;
460
@@ -734,7 +733,7 @@ function TreeContextController({
733
prevSelectedElementID.current = state.selectedElementID;
734
735
if (state.selectedElementID !== null) {
737
- let element = store.getElementByID(state.selectedElementID);
736
+ const element = store.getElementByID(state.selectedElementID);
737
if (element !== null && element.parentID > 0) {
738
store.toggleIsCollapsed(element.parentID, false);
739
}
packages/react-devtools-shared/src/devtools/views/DevTools.js
+3
-1
@@ -107,11 +107,13 @@ export default function DevTools({
107
viewAttributeSourceFunction,
108
viewElementSourceFunction,
109
}: Props) {
110
- let [tab, setTab] = useLocalStorage<TabID>(
110
+ const [currentTab, setTab] = useLocalStorage<TabID>(
111
'React::DevTools::defaultTab',
112
defaultTab,
113
);
114
115
+ let tab = currentTab;
116
+
117
if (overrideTab != null) {
118
tab = overrideTab;
119
}
packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js
+1
-1
@@ -64,7 +64,7 @@ function CommitFlamegraphListItem({data, index, style}: Props) {
64
65
const row = rows[index];
66
67
- let selectedNodeOffset = scaleX(
67
+ const selectedNodeOffset = scaleX(
68
selectedChartNode !== null ? selectedChartNode.offset : 0,
69
width,
70
);
packages/react-devtools-shared/src/events.js
+1
-1
@@ -14,7 +14,7 @@ export default class EventEmitter<Events: Object> {
14
event: Event,
15
listener: (...$ElementType<Events, Event>) => any,
16
): void {
17
- let listeners = this.listenersMap.get(event);
17
+ const listeners = this.listenersMap.get(event);
18
if (listeners === undefined) {
19
this.listenersMap.set(event, [listener]);
20
} else {
packages/react-devtools-shared/src/hydration.js
+1
-1
@@ -287,7 +287,7 @@ export function dehydrate(
287
return createDehydrated(type, true, data, cleaned, path);
288
} else {
289
const object = {};
290
- for (let name in data) {
290
+ for (const name in data) {
291
object[name] = dehydrate(
292
data[name],
293
cleaned,
packages/react-devtools-shared/src/utils.js
+4
-4
@@ -49,7 +49,7 @@ const cachedDisplayNames: WeakMap<Function, string> = new WeakMap();
49
50
// On large trees, encoding takes significant time.
51
// Try to reuse the already encoded strings.
52
-let encodedStringCache = new LRU({max: 1000});
52
+const encodedStringCache = new LRU({max: 1000});
53
54
export function alphaSortKeys(a: string, b: string): number {
55
if (a > b) {
@@ -96,7 +96,7 @@ export function utfDecodeString(array: Array<number>): string {
96
}
97
98
export function utfEncodeString(string: string): Array<number> {
99
- let cached = encodedStringCache.get(string);
99
+ const cached = encodedStringCache.get(string);
100
if (cached !== undefined) {
101
return cached;
102
}
@@ -281,12 +281,12 @@ export function separateDisplayNameAndHOCs(
281
// Pulled from react-compat
282
// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349
283
export function shallowDiffers(prev: Object, next: Object): boolean {
284
- for (let attribute in prev) {
284
+ for (const attribute in prev) {
285
if (!(attribute in next)) {
286
return true;
287
}
288
}
289
- for (let attribute in next) {
289
+ for (const attribute in next) {
290
if (prev[attribute] !== next[attribute]) {
291
return true;
292
}
packages/react-devtools-shell/src/app/SuspenseTree/index.js
+3
-3
@@ -47,13 +47,13 @@ function PrimaryFallbackTest({initialSuspend}) {
47
}
48
49
function useTestSequence(label, T1, T2) {
50
- let [step, setStep] = useState(0);
51
- let next = (
50
+ const [step, setStep] = useState(0);
51
+ const next = (
52
<button onClick={() => setStep(s => (s + 1) % allSteps.length)}>
53
next {label} content
54
</button>
55
);
56
- let allSteps = [
56
+ const allSteps = [
57
<Fragment>{next}</Fragment>,
58
<Fragment>
59
{next} <T1 prop={step}>mount</T1>
packages/react-dom/src/__tests__/ReactCompositeComponentState-test.js
+4
-6
@@ -143,7 +143,7 @@ describe('ReactCompositeComponent-state', () => {
143
144
ReactDOM.unmountComponentAtNode(container);
145
146
- let expected = [
146
+ const expected = [
147
// there is no state when getInitialState() is called
148
['getInitialState', null],
149
['componentWillMount-start', 'red'],
@@ -283,8 +283,6 @@ describe('ReactCompositeComponent-state', () => {
283
});
284
285
it('should batch unmounts', () => {
286
- let outer;
287
-
286
class Inner extends React.Component {
287
render() {
288
return <div />;
@@ -306,7 +304,7 @@ describe('ReactCompositeComponent-state', () => {
304
}
305
306
const container = document.createElement('div');
309
- outer = ReactDOM.render(<Outer />, container);
307
+ const outer = ReactDOM.render(<Outer />, container);
308
expect(() => {
309
ReactDOM.unmountComponentAtNode(container);
310
}).not.toThrow();
@@ -380,7 +378,7 @@ describe('ReactCompositeComponent-state', () => {
378
});
379
380
it('should treat assigning to this.state inside cWRP as a replaceState, with a warning', () => {
383
- let ops = [];
381
+ const ops = [];
382
class Test extends React.Component {
383
state = {step: 1, extra: true};
384
UNSAFE_componentWillReceiveProps() {
@@ -423,7 +421,7 @@ describe('ReactCompositeComponent-state', () => {
421
});
422
423
it('should treat assigning to this.state inside cWM as a replaceState, with a warning', () => {
426
- let ops = [];
424
+ const ops = [];
425
class Test extends React.Component {
426
state = {step: 1, extra: true};
427
UNSAFE_componentWillMount() {
packages/react-dom/src/__tests__/ReactDOMComponent-test.js
+9
-9
@@ -564,8 +564,8 @@ describe('ReactDOMComponent', () => {
564
{'></div><script>alert("hi")</script>': 'selected'},
565
null,
566
);
567
- let result1 = ReactDOMServer.renderToString(element1);
568
- let result2 = ReactDOMServer.renderToString(element2);
567
+ const result1 = ReactDOMServer.renderToString(element1);
568
+ const result2 = ReactDOMServer.renderToString(element2);
569
expect(result1.toLowerCase()).not.toContain('onclick');
570
expect(result2.toLowerCase()).not.toContain('script');
571
}
@@ -588,8 +588,8 @@ describe('ReactDOMComponent', () => {
588
{'></x-foo-component><script>alert("hi")</script>': 'selected'},
589
null,
590
);
591
- let result1 = ReactDOMServer.renderToString(element1);
592
- let result2 = ReactDOMServer.renderToString(element2);
591
+ const result1 = ReactDOMServer.renderToString(element1);
592
+ const result2 = ReactDOMServer.renderToString(element2);
593
expect(result1.toLowerCase()).not.toContain('onclick');
594
expect(result2.toLowerCase()).not.toContain('script');
595
}
@@ -1166,7 +1166,7 @@ describe('ReactDOMComponent', () => {
1166
let realToString;
1167
try {
1168
realToString = Object.prototype.toString;
1169
- let wrappedToString = function() {
1169
+ const wrappedToString = function() {
1170
// Emulate browser behavior which is missing in jsdom
1171
if (this instanceof window.HTMLUnknownElement) {
1172
return '[object HTMLUnknownElement]';
@@ -2553,10 +2553,10 @@ describe('ReactDOMComponent', () => {
2553
});
2554
2555
it('receives events in specific order', () => {
2556
- let eventOrder = [];
2557
- let track = tag => () => eventOrder.push(tag);
2558
- let outerRef = React.createRef();
2559
- let innerRef = React.createRef();
2556
+ const eventOrder = [];
2557
+ const track = tag => () => eventOrder.push(tag);
2558
+ const outerRef = React.createRef();
2559
+ const innerRef = React.createRef();
2560
2561
function OuterReactApp() {
2562
return (
packages/react-dom/src/__tests__/ReactDOMEventListener-test.js
+1
-1
@@ -12,7 +12,7 @@
12
describe('ReactDOMEventListener', () => {
13
let React;
14
let ReactDOM;
15
- let ReactFeatureFlags = require('shared/ReactFeatureFlags');
15
+ const ReactFeatureFlags = require('shared/ReactFeatureFlags');
16
17
beforeEach(() => {
18
jest.resetModules();
packages/react-dom/src/__tests__/ReactDOMFiber-test.js
+2
-2
@@ -211,7 +211,7 @@ describe('ReactDOMFiber', () => {
211
};
212
213
const assertNamespacesMatch = function(tree) {
214
- let testContainer = document.createElement('div');
214
+ const testContainer = document.createElement('div');
215
svgEls = [];
216
htmlEls = [];
217
mathEls = [];
@@ -1224,7 +1224,7 @@ describe('ReactDOMFiber', () => {
1224
1225
// Regression test for https://github.com/facebook/react/issues/12643#issuecomment-413727104
1226
it('should not diff memoized host components', () => {
1227
- let inputRef = React.createRef();
1227
+ const inputRef = React.createRef();
1228
let didCallOnChange = false;
1229
1230
class Child extends React.Component {
packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js
+20
-20
@@ -49,7 +49,7 @@ describe('ReactDOMFiberAsync', () => {
49
});
50
51
it('flushSync batches sync updates and flushes them at the end of the batch', () => {
52
- let ops = [];
52
+ const ops = [];
53
let instance;
54
55
class Component extends React.Component {
@@ -87,7 +87,7 @@ describe('ReactDOMFiberAsync', () => {
87
});
88
89
it('flushSync flushes updates even if nested inside another flushSync', () => {
90
- let ops = [];
90
+ const ops = [];
91
let instance;
92
93
class Component extends React.Component {
@@ -156,9 +156,9 @@ describe('ReactDOMFiberAsync', () => {
156
});
157
158
it.experimental('does not perform deferred updates synchronously', () => {
159
- let inputRef = React.createRef();
160
- let asyncValueRef = React.createRef();
161
- let syncValueRef = React.createRef();
159
+ const inputRef = React.createRef();
160
+ const asyncValueRef = React.createRef();
161
+ const syncValueRef = React.createRef();
162
163
class Counter extends React.Component {
164
state = {asyncValue: '', syncValue: ''};
@@ -246,7 +246,7 @@ describe('ReactDOMFiberAsync', () => {
246
});
247
248
it.experimental('flushSync flushes updates before end of the tick', () => {
249
- let ops = [];
249
+ const ops = [];
250
let instance;
251
252
class Component extends React.Component {
@@ -317,7 +317,7 @@ describe('ReactDOMFiberAsync', () => {
317
Scheduler.unstable_flushAll();
318
expect(container.textContent).toEqual('1');
319
320
- let ops = [];
320
+ const ops = [];
321
ReactDOM.unstable_flushControlled(() => {
322
inst.increment();
323
ReactDOM.unstable_flushControlled(() => {
@@ -350,7 +350,7 @@ describe('ReactDOMFiberAsync', () => {
350
}
351
ReactDOM.render(<Counter />, container);
352
353
- let ops = [];
353
+ const ops = [];
354
ReactDOM.unstable_batchedUpdates(() => {
355
inst.increment();
356
ReactDOM.unstable_flushControlled(() => {
@@ -428,22 +428,22 @@ describe('ReactDOMFiberAsync', () => {
428
// Flush
429
Scheduler.unstable_flushAll();
430
431
- let disableButton = disableButtonRef.current;
431
+ const disableButton = disableButtonRef.current;
432
expect(disableButton.tagName).toBe('BUTTON');
433
434
// Dispatch a click event on the Disable-button.
435
- let firstEvent = document.createEvent('Event');
435
+ const firstEvent = document.createEvent('Event');
436
firstEvent.initEvent('click', true, true);
437
disableButton.dispatchEvent(firstEvent);
438
439
// There should now be a pending update to disable the form.
440
441
// This should not have flushed yet since it's in concurrent mode.
442
- let submitButton = submitButtonRef.current;
442
+ const submitButton = submitButtonRef.current;
443
expect(submitButton.tagName).toBe('BUTTON');
444
445
// In the meantime, we can dispatch a new client event on the submit button.
446
- let secondEvent = document.createEvent('Event');
446
+ const secondEvent = document.createEvent('Event');
447
secondEvent.initEvent('click', true, true);
448
// This should force the pending update to flush which disables the submit button before the event is invoked.
449
submitButton.dispatchEvent(secondEvent);
@@ -499,22 +499,22 @@ describe('ReactDOMFiberAsync', () => {
499
// Flush
500
Scheduler.unstable_flushAll();
501
502
- let disableButton = disableButtonRef.current;
502
+ const disableButton = disableButtonRef.current;
503
expect(disableButton.tagName).toBe('BUTTON');
504
505
// Dispatch a click event on the Disable-button.
506
- let firstEvent = document.createEvent('Event');
506
+ const firstEvent = document.createEvent('Event');
507
firstEvent.initEvent('click', true, true);
508
disableButton.dispatchEvent(firstEvent);
509
510
// There should now be a pending update to disable the form.
511
512
// This should not have flushed yet since it's in concurrent mode.
513
- let submitButton = submitButtonRef.current;
513
+ const submitButton = submitButtonRef.current;
514
expect(submitButton.tagName).toBe('BUTTON');
515
516
// In the meantime, we can dispatch a new client event on the submit button.
517
- let secondEvent = document.createEvent('Event');
517
+ const secondEvent = document.createEvent('Event');
518
secondEvent.initEvent('click', true, true);
519
// This should force the pending update to flush which disables the submit button before the event is invoked.
520
submitButton.dispatchEvent(secondEvent);
@@ -562,22 +562,22 @@ describe('ReactDOMFiberAsync', () => {
562
// Flush
563
Scheduler.unstable_flushAll();
564
565
- let enableButton = enableButtonRef.current;
565
+ const enableButton = enableButtonRef.current;
566
expect(enableButton.tagName).toBe('BUTTON');
567
568
// Dispatch a click event on the Enable-button.
569
- let firstEvent = document.createEvent('Event');
569
+ const firstEvent = document.createEvent('Event');
570
firstEvent.initEvent('click', true, true);
571
enableButton.dispatchEvent(firstEvent);
572
573
// There should now be a pending update to enable the form.
574
575
// This should not have flushed yet since it's in concurrent mode.
576
- let submitButton = submitButtonRef.current;
576
+ const submitButton = submitButtonRef.current;
577
expect(submitButton.tagName).toBe('BUTTON');
578
579
// In the meantime, we can dispatch a new client event on the submit button.
580
- let secondEvent = document.createEvent('Event');
580
+ const secondEvent = document.createEvent('Event');
581
secondEvent.initEvent('click', true, true);
582
// This should force the pending update to flush which enables the submit button before the event is invoked.
583
submitButton.dispatchEvent(secondEvent);
packages/react-dom/src/__tests__/ReactDOMFizzServerBrowser-test.js
+4
-4
@@ -24,10 +24,10 @@ describe('ReactDOMFizzServer', () => {
24
});
25
26
async function readResult(stream) {
27
- let reader = stream.getReader();
27
+ const reader = stream.getReader();
28
let result = '';
29
while (true) {
30
- let {done, value} = await reader.read();
30
+ const {done, value} = await reader.read();
31
if (done) {
32
return result;
33
}
@@ -36,10 +36,10 @@ describe('ReactDOMFizzServer', () => {
36
}
37
38
it('should call renderToReadableStream', async () => {
39
- let stream = ReactDOMFizzServer.renderToReadableStream(
39
+ const stream = ReactDOMFizzServer.renderToReadableStream(
40
<div>hello world</div>,
41
);
42
- let result = await readResult(stream);
42
+ const result = await readResult(stream);
43
expect(result).toBe('<div>hello world</div>');
44
});
45
});
packages/react-dom/src/__tests__/ReactDOMFizzServerNode-test.js
+2
-2
@@ -23,7 +23,7 @@ describe('ReactDOMFizzServer', () => {
23
});
24
25
function getTestWritable() {
26
- let writable = new Stream.PassThrough();
26
+ const writable = new Stream.PassThrough();
27
writable.setEncoding('utf8');
28
writable.result = '';
29
writable.on('data', chunk => (writable.result += chunk));
@@ -31,7 +31,7 @@ describe('ReactDOMFizzServer', () => {
31
}
32
33
it('should call pipeToNodeWritable', () => {
34
- let writable = getTestWritable();
34
+ const writable = getTestWritable();
35
ReactDOMFizzServer.pipeToNodeWritable(<div>hello world</div>, writable);
36
jest.runAllTimers();
37
expect(writable.result).toBe('<div>hello world</div>');
packages/react-dom/src/__tests__/ReactDOMHooks-test.js
+2
-2
@@ -32,8 +32,8 @@ describe('ReactDOMHooks', () => {
32
});
33
34
it('can ReactDOM.render() from useEffect', () => {
35
- let container2 = document.createElement('div');
36
- let container3 = document.createElement('div');
35
+ const container2 = document.createElement('div');
36
+ const container3 = document.createElement('div');
37
38
function Example1({n}) {
39
React.useEffect(() => {
packages/react-dom/src/__tests__/ReactDOMInput-test.js
+11
-11
@@ -383,7 +383,7 @@ describe('ReactDOMInput', () => {
383
});
384
385
it('should display `defaultValue` of number 0', () => {
386
- let stub = <input type="text" defaultValue={0} />;
386
+ const stub = <input type="text" defaultValue={0} />;
387
const node = ReactDOM.render(stub, container);
388
389
expect(node.getAttribute('value')).toBe('0');
@@ -415,14 +415,14 @@ describe('ReactDOMInput', () => {
415
});
416
417
it('should display "true" for `defaultValue` of `true`', () => {
418
- let stub = <input type="text" defaultValue={true} />;
418
+ const stub = <input type="text" defaultValue={true} />;
419
const node = ReactDOM.render(stub, container);
420
421
expect(node.value).toBe('true');
422
});
423
424
it('should display "false" for `defaultValue` of `false`', () => {
425
- let stub = <input type="text" defaultValue={false} />;
425
+ const stub = <input type="text" defaultValue={false} />;
426
const node = ReactDOM.render(stub, container);
427
428
expect(node.value).toBe('false');
@@ -887,7 +887,7 @@ describe('ReactDOMInput', () => {
887
});
888
889
it('should set a value on a submit input', () => {
890
- let stub = <input type="submit" value="banana" />;
890
+ const stub = <input type="submit" value="banana" />;
891
ReactDOM.render(stub, container);
892
const node = container.firstChild;
893
@@ -895,7 +895,7 @@ describe('ReactDOMInput', () => {
895
});
896
897
it('should not set an undefined value on a submit input', () => {
898
- let stub = <input type="submit" value={undefined} />;
898
+ const stub = <input type="submit" value={undefined} />;
899
ReactDOM.render(stub, container);
900
const node = container.firstChild;
901
@@ -908,7 +908,7 @@ describe('ReactDOMInput', () => {
908
});
909
910
it('should not set an undefined value on a reset input', () => {
911
- let stub = <input type="reset" value={undefined} />;
911
+ const stub = <input type="reset" value={undefined} />;
912
ReactDOM.render(stub, container);
913
const node = container.firstChild;
914
@@ -921,7 +921,7 @@ describe('ReactDOMInput', () => {
921
});
922
923
it('should not set a null value on a submit input', () => {
924
- let stub = <input type="submit" value={null} />;
924
+ const stub = <input type="submit" value={null} />;
925
expect(() => {
926
ReactDOM.render(stub, container);
927
}).toErrorDev('`value` prop on `input` should not be null');
@@ -936,7 +936,7 @@ describe('ReactDOMInput', () => {
936
});
937
938
it('should not set a null value on a reset input', () => {
939
- let stub = <input type="reset" value={null} />;
939
+ const stub = <input type="reset" value={null} />;
940
expect(() => {
941
ReactDOM.render(stub, container);
942
}).toErrorDev('`value` prop on `input` should not be null');
@@ -951,7 +951,7 @@ describe('ReactDOMInput', () => {
951
});
952
953
it('should set a value on a reset input', () => {
954
- let stub = <input type="reset" value="banana" />;
954
+ const stub = <input type="reset" value="banana" />;
955
ReactDOM.render(stub, container);
956
const node = container.firstChild;
957
@@ -959,7 +959,7 @@ describe('ReactDOMInput', () => {
959
});
960
961
it('should set an empty string value on a submit input', () => {
962
- let stub = <input type="submit" value="" />;
962
+ const stub = <input type="submit" value="" />;
963
ReactDOM.render(stub, container);
964
const node = container.firstChild;
965
@@ -967,7 +967,7 @@ describe('ReactDOMInput', () => {
967
});
968
969
it('should set an empty string value on a reset input', () => {
970
- let stub = <input type="reset" value="" />;
970
+ const stub = <input type="reset" value="" />;
971
ReactDOM.render(stub, container);
972
const node = container.firstChild;
973
packages/react-dom/src/__tests__/ReactDOMOption-test.js
+5
-5
@@ -22,7 +22,7 @@ describe('ReactDOMOption', () => {
22
});
23
24
it('should flatten children to a string', () => {
25
- let stub = (
25
+ const stub = (
26
<option>
27
{1} {'foo'}
28
</option>
@@ -50,7 +50,7 @@ describe('ReactDOMOption', () => {
50
});
51
52
it('should ignore null/undefined/false children without warning', () => {
53
- let stub = (
53
+ const stub = (
54
<option>
55
{1} {false}
56
{true}
@@ -92,7 +92,7 @@ describe('ReactDOMOption', () => {
92
it('should support element-ish child', () => {
93
// This is similar to <fbt>.
94
// It's important that we toString it.
95
- let obj = {
95
+ const obj = {
96
$$typeof: Symbol.for('react.element'),
97
type: props => props.content,
98
ref: null,
@@ -134,7 +134,7 @@ describe('ReactDOMOption', () => {
134
});
135
136
it('should be able to use dangerouslySetInnerHTML on option', () => {
137
- let stub = <option dangerouslySetInnerHTML={{__html: 'foobar'}} />;
137
+ const stub = <option dangerouslySetInnerHTML={{__html: 'foobar'}} />;
138
const node = ReactTestUtils.renderIntoDocument(stub);
139
140
expect(node.innerHTML).toBe('foobar');
@@ -153,7 +153,7 @@ describe('ReactDOMOption', () => {
153
154
it('should allow ignoring `value` on option', () => {
155
const a = 'a';
156
- let stub = (
156
+ const stub = (
157
<select value="giraffe" onChange={() => {}}>
158
<option>monkey</option>
159
<option>gir{a}ffe</option>
packages/react-dom/src/__tests__/ReactDOMSelect-test.js
+15
-15
@@ -26,7 +26,7 @@ describe('ReactDOMSelect', () => {
26
});
27
28
it('should allow setting `defaultValue`', () => {
29
- let stub = (
29
+ const stub = (
30
<select defaultValue="giraffe">
31
<option value="monkey">A monkey!</option>
32
<option value="giraffe">A giraffe!</option>
@@ -75,7 +75,7 @@ describe('ReactDOMSelect', () => {
75
});
76
77
it('should allow setting `defaultValue` with multiple', () => {
78
- let stub = (
78
+ const stub = (
79
<select multiple={true} defaultValue={['giraffe', 'gorilla']}>
80
<option value="monkey">A monkey!</option>
81
<option value="giraffe">A giraffe!</option>
@@ -104,7 +104,7 @@ describe('ReactDOMSelect', () => {
104
});
105
106
it('should allow setting `value`', () => {
107
- let stub = (
107
+ const stub = (
108
<select value="giraffe" onChange={noop}>
109
<option value="monkey">A monkey!</option>
110
<option value="giraffe">A giraffe!</option>
@@ -128,7 +128,7 @@ describe('ReactDOMSelect', () => {
128
});
129
130
it('should default to the first non-disabled option', () => {
131
- let stub = (
131
+ const stub = (
132
<select defaultValue="">
133
<option disabled={true}>Disabled</option>
134
<option disabled={true}>Still Disabled</option>
@@ -143,7 +143,7 @@ describe('ReactDOMSelect', () => {
143
});
144
145
it('should allow setting `value` to __proto__', () => {
146
- let stub = (
146
+ const stub = (
147
<select value="__proto__" onChange={noop}>
148
<option value="monkey">A monkey!</option>
149
<option value="__proto__">A giraffe!</option>
@@ -175,7 +175,7 @@ describe('ReactDOMSelect', () => {
175
});
176
177
it('should allow setting `value` with multiple', () => {
178
- let stub = (
178
+ const stub = (
179
<select multiple={true} value={['giraffe', 'gorilla']} onChange={noop}>
180
<option value="monkey">A monkey!</option>
181
<option value="giraffe">A giraffe!</option>
@@ -204,7 +204,7 @@ describe('ReactDOMSelect', () => {
204
});
205
206
it('should allow setting `value` to __proto__ with multiple', () => {
207
- let stub = (
207
+ const stub = (
208
<select multiple={true} value={['__proto__', 'gorilla']} onChange={noop}>
209
<option value="monkey">A monkey!</option>
210
<option value="__proto__">A __proto__!</option>
@@ -233,7 +233,7 @@ describe('ReactDOMSelect', () => {
233
});
234
235
it('should not select other options automatically', () => {
236
- let stub = (
236
+ const stub = (
237
<select multiple={true} value={['12']} onChange={noop}>
238
<option value="1">one</option>
239
<option value="2">two</option>
@@ -248,7 +248,7 @@ describe('ReactDOMSelect', () => {
248
});
249
250
it('should reset child options selected when they are changed and `value` is set', () => {
251
- let stub = <select multiple={true} value={['a', 'b']} onChange={noop} />;
251
+ const stub = <select multiple={true} value={['a', 'b']} onChange={noop} />;
252
const container = document.createElement('div');
253
const node = ReactDOM.render(stub, container);
254
@@ -306,7 +306,7 @@ describe('ReactDOMSelect', () => {
306
});
307
308
it('should allow switching to multiple', () => {
309
- let stub = (
309
+ const stub = (
310
<select defaultValue="giraffe">
311
<option value="monkey">A monkey!</option>
312
<option value="giraffe">A giraffe!</option>
@@ -335,7 +335,7 @@ describe('ReactDOMSelect', () => {
335
});
336
337
it('should allow switching from multiple', () => {
338
- let stub = (
338
+ const stub = (
339
<select multiple={true} defaultValue={['giraffe', 'gorilla']}>
340
<option value="monkey">A monkey!</option>
341
<option value="giraffe">A giraffe!</option>
@@ -389,7 +389,7 @@ describe('ReactDOMSelect', () => {
389
});
390
391
it('should remember value when switching to uncontrolled', () => {
392
- let stub = (
392
+ const stub = (
393
<select value={'giraffe'} onChange={noop}>
394
<option value="monkey">A monkey!</option>
395
<option value="giraffe">A giraffe!</option>
@@ -412,7 +412,7 @@ describe('ReactDOMSelect', () => {
412
});
413
414
it('should remember updated value when switching to uncontrolled', () => {
415
- let stub = (
415
+ const stub = (
416
<select value={'giraffe'} onChange={noop}>
417
<option value="monkey">A monkey!</option>
418
<option value="giraffe">A giraffe!</option>
@@ -663,7 +663,7 @@ describe('ReactDOMSelect', () => {
663
});
664
665
it('should refresh state on change', () => {
666
- let stub = (
666
+ const stub = (
667
<select value="giraffe" onChange={noop}>
668
<option value="monkey">A monkey!</option>
669
<option value="giraffe">A giraffe!</option>
@@ -725,7 +725,7 @@ describe('ReactDOMSelect', () => {
725
}
726
727
const container = document.createElement('div');
728
- let stub = (
728
+ const stub = (
729
<select value="giraffe" onChange={changeView}>
730
<option value="monkey">A monkey!</option>
731
<option value="giraffe">A giraffe!</option>
packages/react-dom/src/__tests__/ReactDOMSelection-test.internal.js
+1
-1
@@ -60,7 +60,7 @@ describe('ReactDOMSelection', () => {
60
if (i === node.childNodes.length) {
61
break;
62
}
63
- let n = node.childNodes[i];
63
+ const n = node.childNodes[i];
64
traverse(n);
65
}
66
}
packages/react-dom/src/__tests__/ReactDOMServerIntegrationBasic-test.js
+13
-13
@@ -63,37 +63,37 @@ describe('ReactDOMServerIntegration', () => {
63
});
64
65
itRenders('a string', async render => {
66
- let e = await render('Hello');
66
+ const e = await render('Hello');
67
expect(e.nodeType).toBe(3);
68
expect(e.nodeValue).toMatch('Hello');
69
});
70
71
itRenders('a number', async render => {
72
- let e = await render(42);
72
+ const e = await render(42);
73
expect(e.nodeType).toBe(3);
74
expect(e.nodeValue).toMatch('42');
75
});
76
77
itRenders('an array with one child', async render => {
78
- let e = await render([<div key={1}>text1</div>]);
79
- let parent = e.parentNode;
78
+ const e = await render([<div key={1}>text1</div>]);
79
+ const parent = e.parentNode;
80
expect(parent.childNodes[0].tagName).toBe('DIV');
81
});
82
83
itRenders('an array with several children', async render => {
84
- let Header = props => {
84
+ const Header = props => {
85
return <p>header</p>;
86
};
87
- let Footer = props => {
87
+ const Footer = props => {
88
return [<h2 key={1}>footer</h2>, <h3 key={2}>about</h3>];
89
};
90
- let e = await render([
90
+ const e = await render([
91
<div key={1}>text1</div>,
92
<span key={2}>text2</span>,
93
<Header key={3} />,
94
<Footer key={4} />,
95
]);
96
- let parent = e.parentNode;
96
+ const parent = e.parentNode;
97
expect(parent.childNodes[0].tagName).toBe('DIV');
98
expect(parent.childNodes[1].tagName).toBe('SPAN');
99
expect(parent.childNodes[2].tagName).toBe('P');
@@ -102,12 +102,12 @@ describe('ReactDOMServerIntegration', () => {
102
});
103
104
itRenders('a nested array', async render => {
105
- let e = await render([
105
+ const e = await render([
106
[<div key={1}>text1</div>],
107
<span key={1}>text2</span>,
108
[[[null, <p key={1} />], false]],
109
]);
110
- let parent = e.parentNode;
110
+ const parent = e.parentNode;
111
expect(parent.childNodes[0].tagName).toBe('DIV');
112
expect(parent.childNodes[1].tagName).toBe('SPAN');
113
expect(parent.childNodes[2].tagName).toBe('P');
@@ -128,8 +128,8 @@ describe('ReactDOMServerIntegration', () => {
128
};
129
},
130
};
131
- let e = await render(threeDivIterable);
132
- let parent = e.parentNode;
131
+ const e = await render(threeDivIterable);
132
+ const parent = e.parentNode;
133
expect(parent.childNodes.length).toBe(3);
134
expect(parent.childNodes[0].tagName).toBe('DIV');
135
expect(parent.childNodes[1].tagName).toBe('DIV');
@@ -137,7 +137,7 @@ describe('ReactDOMServerIntegration', () => {
137
});
138
139
itRenders('emptyish values', async render => {
140
- let e = await render(0);
140
+ const e = await render(0);
141
expect(e.nodeType).toBe(TEXT_NODE_TYPE);
142
expect(e.nodeValue).toMatch('0');
143
packages/react-dom/src/__tests__/ReactDOMServerIntegrationClassContextType-test.js
+1
-1
@@ -257,7 +257,7 @@ describe('ReactDOMServerIntegration', () => {
257
</LanguageConsumer>
258
</div>
259
);
260
- let e = await render(<App />);
260
+ const e = await render(<App />);
261
expect(e.querySelector('#theme1').textContent).toBe('dark');
262
expect(e.querySelector('#theme2').textContent).toBe('light');
263
expect(e.querySelector('#theme3').textContent).toBe('blue');
packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
+11
-14
@@ -128,9 +128,8 @@ describe('ReactDOMServerIntegration', () => {
128
Text<span>More Text</span>
129
</div>,
130
);
131
- let spanNode;
131
expect(e.childNodes.length).toBe(2);
133
- spanNode = e.childNodes[1];
132
+ const spanNode = e.childNodes[1];
133
expectTextNode(e.childNodes[0], 'Text');
134
expect(spanNode.tagName).toBe('SPAN');
135
expect(spanNode.childNodes.length).toBe(1);
@@ -397,7 +396,7 @@ describe('ReactDOMServerIntegration', () => {
396
});
397
398
itRenders('svg child element with an attribute', async render => {
400
- let e = await render(<svg viewBox="0 0 0 0" />);
399
+ const e = await render(<svg viewBox="0 0 0 0" />);
400
expect(e.childNodes.length).toBe(0);
401
expect(e.tagName).toBe('svg');
402
expect(e.namespaceURI).toBe('http://www.w3.org/2000/svg');
@@ -439,14 +438,14 @@ describe('ReactDOMServerIntegration', () => {
438
});
439
440
itRenders('svg element with a tabIndex attribute', async render => {
442
- let e = await render(<svg tabIndex="1" />);
441
+ const e = await render(<svg tabIndex="1" />);
442
expect(e.tabIndex).toBe(1);
443
});
444
445
itRenders(
446
'svg element with a badly cased tabIndex attribute',
447
async render => {
449
- let e = await render(<svg tabindex="1" />, 1);
448
+ const e = await render(<svg tabindex="1" />, 1);
449
expect(e.tabIndex).toBe(1);
450
},
451
);
@@ -758,11 +757,10 @@ describe('ReactDOMServerIntegration', () => {
757
</div>,
758
);
759
expect(e.id).toBe('parent');
761
- let child1, child2, textNode;
760
expect(e.childNodes.length).toBe(3);
763
- child1 = e.childNodes[0];
764
- textNode = e.childNodes[1];
765
- child2 = e.childNodes[2];
761
+ const child1 = e.childNodes[0];
762
+ const textNode = e.childNodes[1];
763
+ const child2 = e.childNodes[2];
764
expect(child1.id).toBe('child1');
765
expect(child1.childNodes.length).toBe(0);
766
expectTextNode(textNode, ' ');
@@ -776,11 +774,10 @@ describe('ReactDOMServerIntegration', () => {
774
async render => {
775
// prettier-ignore
776
const e = await render(<div id="parent"> <div id="child" /> </div>); // eslint-disable-line no-multi-spaces
779
- let textNode1, child, textNode2;
777
expect(e.childNodes.length).toBe(3);
781
- textNode1 = e.childNodes[0];
782
- child = e.childNodes[1];
783
- textNode2 = e.childNodes[2];
778
+ const textNode1 = e.childNodes[0];
779
+ const child = e.childNodes[1];
780
+ const textNode2 = e.childNodes[2];
781
expect(e.id).toBe('parent');
782
expectTextNode(textNode1, ' ');
783
expect(child.id).toBe('child');
@@ -795,7 +792,7 @@ describe('ReactDOMServerIntegration', () => {
792
<Component>{['a', 'b', [undefined], [[false, 'c']]]}</Component>,
793
);
794
798
- let parent = e.parentNode;
795
+ const parent = e.parentNode;
796
if (
797
render === serverRender ||
798
render === clientRenderOnServerString ||
packages/react-dom/src/__tests__/ReactDOMServerIntegrationFragment-test.js
+8
-8
@@ -41,20 +41,20 @@ describe('ReactDOMServerIntegration', () => {
41
42
describe('React.Fragment', () => {
43
itRenders('a fragment with one child', async render => {
44
- let e = await render(
44
+ const e = await render(
45
<>
46
<div>text1</div>
47
</>,
48
);
49
- let parent = e.parentNode;
49
+ const parent = e.parentNode;
50
expect(parent.childNodes[0].tagName).toBe('DIV');
51
});
52
53
itRenders('a fragment with several children', async render => {
54
- let Header = props => {
54
+ const Header = props => {
55
return <p>header</p>;
56
};
57
- let Footer = props => {
57
+ const Footer = props => {
58
return (
59
<>
60
<h2>footer</h2>
@@ -62,7 +62,7 @@ describe('ReactDOMServerIntegration', () => {
62
</>
63
);
64
};
65
- let e = await render(
65
+ const e = await render(
66
<>
67
<div>text1</div>
68
<span>text2</span>
@@ -70,7 +70,7 @@ describe('ReactDOMServerIntegration', () => {
70
<Footer />
71
</>,
72
);
73
- let parent = e.parentNode;
73
+ const parent = e.parentNode;
74
expect(parent.childNodes[0].tagName).toBe('DIV');
75
expect(parent.childNodes[1].tagName).toBe('SPAN');
76
expect(parent.childNodes[2].tagName).toBe('P');
@@ -79,7 +79,7 @@ describe('ReactDOMServerIntegration', () => {
79
});
80
81
itRenders('a nested fragment', async render => {
82
- let e = await render(
82
+ const e = await render(
83
<>
84
<>
85
<div>text1</div>
@@ -96,7 +96,7 @@ describe('ReactDOMServerIntegration', () => {
96
</>
97
</>,
98
);
99
- let parent = e.parentNode;
99
+ const parent = e.parentNode;
100
expect(parent.childNodes[0].tagName).toBe('DIV');
101
expect(parent.childNodes[1].tagName).toBe('SPAN');
102
expect(parent.childNodes[2].tagName).toBe('P');
packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js
+14
-14
@@ -121,7 +121,7 @@ describe('ReactDOMServerHooks', () => {
121
return <span>{children}</span>;
122
}
123
function Counter() {
124
- let [count, setCount] = useState(0);
124
+ const [count, setCount] = useState(0);
125
return (
126
<div>
127
<UpdateCount setCount={setCount} count={count}>
@@ -140,7 +140,7 @@ describe('ReactDOMServerHooks', () => {
140
async render => {
141
class Counter extends React.Component {
142
render() {
143
- let [count] = useState(0);
143
+ const [count] = useState(0);
144
return <Text text={count} />;
145
}
146
}
@@ -157,7 +157,7 @@ describe('ReactDOMServerHooks', () => {
157
158
itRenders('multiple times when an updater is called', async render => {
159
function Counter() {
160
- let [count, setCount] = useState(0);
160
+ const [count, setCount] = useState(0);
161
if (count < 12) {
162
setCount(c => c + 1);
163
setCount(c => c + 1);
@@ -172,7 +172,7 @@ describe('ReactDOMServerHooks', () => {
172
173
itRenders('until there are no more new updates', async render => {
174
function Counter() {
175
- let [count, setCount] = useState(0);
175
+ const [count, setCount] = useState(0);
176
if (count < 3) {
177
setCount(count + 1);
178
}
@@ -187,7 +187,7 @@ describe('ReactDOMServerHooks', () => {
187
'after too many iterations',
188
async render => {
189
function Counter() {
190
- let [count, setCount] = useState(0);
190
+ const [count, setCount] = useState(0);
191
setCount(count + 1);
192
return <span>{count}</span>;
193
}
@@ -204,7 +204,7 @@ describe('ReactDOMServerHooks', () => {
204
return action === 'increment' ? state + 1 : state;
205
}
206
function Counter() {
207
- let [count] = useReducer(reducer, 0);
207
+ const [count] = useReducer(reducer, 0);
208
yieldValue('Render: ' + count);
209
return <Text text={count} />;
210
}
@@ -221,7 +221,7 @@ describe('ReactDOMServerHooks', () => {
221
return action === 'increment' ? state + 1 : state;
222
}
223
function Counter() {
224
- let [count] = useReducer(reducer, 0, c => c + 1);
224
+ const [count] = useReducer(reducer, 0, c => c + 1);
225
yieldValue('Render: ' + count);
226
return <Text text={count} />;
227
}
@@ -240,7 +240,7 @@ describe('ReactDOMServerHooks', () => {
240
return action === 'increment' ? state + 1 : state;
241
}
242
function Counter() {
243
- let [count, dispatch] = useReducer(reducer, 0);
243
+ const [count, dispatch] = useReducer(reducer, 0);
244
if (count < 3) {
245
dispatch('increment');
246
}
@@ -286,8 +286,8 @@ describe('ReactDOMServerHooks', () => {
286
}
287
288
function Counter() {
289
- let [reducer, setReducer] = useState(() => reducerA);
290
- let [count, dispatch] = useReducer(reducer, 0);
289
+ const [reducer, setReducer] = useState(() => reducerA);
290
+ const [count, dispatch] = useReducer(reducer, 0);
291
if (count < 20) {
292
dispatch('increment');
293
// Swap reducers each time we increment
@@ -630,7 +630,7 @@ describe('ReactDOMServerHooks', () => {
630
const Context = React.createContext({}, () => {});
631
class Counter extends React.Component {
632
render() {
633
- let [count] = useContext(Context);
633
+ const [count] = useContext(Context);
634
return <Text text={count} />;
635
}
636
}
@@ -705,7 +705,7 @@ describe('ReactDOMServerHooks', () => {
705
);
706
707
itRenders('warns when bitmask is passed to useContext', async render => {
708
- let Context = React.createContext('Hi');
708
+ const Context = React.createContext('Hi');
709
710
function Foo() {
711
return <span>{useContext(Context, 1)}</span>;
@@ -815,12 +815,12 @@ describe('ReactDOMServerHooks', () => {
815
const Context = React.createContext(42);
816
817
function ReadInMemo(props) {
818
- let count = React.useMemo(() => readContext(Context), []);
818
+ const count = React.useMemo(() => readContext(Context), []);
819
return <Text text={count} />;
820
}
821
822
function ReadInReducer(props) {
823
- let [count, dispatch] = React.useReducer(() => readContext(Context));
823
+ const [count, dispatch] = React.useReducer(() => readContext(Context));
824
if (count !== 42) {
825
dispatch();
826
}
packages/react-dom/src/__tests__/ReactDOMServerIntegrationLegacyContextDisabled-test.internal.js
+3
-3
@@ -69,7 +69,7 @@ describe('ReactDOMServerIntegrationLegacyContextDisabled', () => {
69
}
70
}
71
72
- let lifecycleContextLog = [];
72
+ const lifecycleContextLog = [];
73
class LegacyClsConsumer extends React.Component {
74
static contextTypes = {
75
foo() {},
@@ -113,7 +113,7 @@ describe('ReactDOMServerIntegrationLegacyContextDisabled', () => {
113
});
114
115
itRenders('modern context', async render => {
116
- let Ctx = React.createContext();
116
+ const Ctx = React.createContext();
117
118
class Provider extends React.Component {
119
render() {
@@ -131,7 +131,7 @@ describe('ReactDOMServerIntegrationLegacyContextDisabled', () => {
131
}
132
}
133
134
- let lifecycleContextLog = [];
134
+ const lifecycleContextLog = [];
135
class ContextTypeConsumer extends React.Component {
136
static contextType = Ctx;
137
shouldComponentUpdate(nextProps, nextState, nextContext) {
packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js
+8
-8
@@ -41,20 +41,20 @@ describe('ReactDOMServerIntegration', () => {
41
42
describe('React.StrictMode', () => {
43
itRenders('a strict mode with one child', async render => {
44
- let e = await render(
44
+ const e = await render(
45
<React.StrictMode>
46
<div>text1</div>
47
</React.StrictMode>,
48
);
49
- let parent = e.parentNode;
49
+ const parent = e.parentNode;
50
expect(parent.childNodes[0].tagName).toBe('DIV');
51
});
52
53
itRenders('a strict mode with several children', async render => {
54
- let Header = props => {
54
+ const Header = props => {
55
return <p>header</p>;
56
};
57
- let Footer = props => {
57
+ const Footer = props => {
58
return (
59
<React.StrictMode>
60
<h2>footer</h2>
@@ -62,7 +62,7 @@ describe('ReactDOMServerIntegration', () => {
62
</React.StrictMode>
63
);
64
};
65
- let e = await render(
65
+ const e = await render(
66
<React.StrictMode>
67
<div>text1</div>
68
<span>text2</span>
@@ -70,7 +70,7 @@ describe('ReactDOMServerIntegration', () => {
70
<Footer />
71
</React.StrictMode>,
72
);
73
- let parent = e.parentNode;
73
+ const parent = e.parentNode;
74
expect(parent.childNodes[0].tagName).toBe('DIV');
75
expect(parent.childNodes[1].tagName).toBe('SPAN');
76
expect(parent.childNodes[2].tagName).toBe('P');
@@ -79,7 +79,7 @@ describe('ReactDOMServerIntegration', () => {
79
});
80
81
itRenders('a nested strict mode', async render => {
82
- let e = await render(
82
+ const e = await render(
83
<React.StrictMode>
84
<React.StrictMode>
85
<div>text1</div>
@@ -96,7 +96,7 @@ describe('ReactDOMServerIntegration', () => {
96
</React.StrictMode>
97
</React.StrictMode>,
98
);
99
- let parent = e.parentNode;
99
+ const parent = e.parentNode;
100
expect(parent.childNodes[0].tagName).toBe('DIV');
101
expect(parent.childNodes[1].tagName).toBe('SPAN');
102
expect(parent.childNodes[2].tagName).toBe('P');
packages/react-dom/src/__tests__/ReactDOMServerIntegrationNewContext-test.js
+3
-3
@@ -287,7 +287,7 @@ describe('ReactDOMServerIntegration', () => {
287
</Language.Consumer>
288
</div>
289
);
290
- let e = await render(<App />);
290
+ const e = await render(<App />);
291
expect(e.querySelector('#theme1').textContent).toBe('dark');
292
expect(e.querySelector('#theme2').textContent).toBe('light');
293
expect(e.querySelector('#theme3').textContent).toBe('blue');
@@ -442,11 +442,11 @@ describe('ReactDOMServerIntegration', () => {
442
</CurrentIndex.Provider>
443
);
444
445
- let streams = [];
445
+ const streams = [];
446
447
// Test with more than 32 streams to test that growing the thread count
448
// works properly.
449
- let streamCount = 34;
449
+ const streamCount = 34;
450
451
for (let i = 0; i < streamCount; i++) {
452
streams[i] = ReactDOMServer.renderToNodeStream(
packages/react-dom/src/__tests__/ReactDOMServerIntegrationUntrustedURL-test.internal.js
+3
-3
@@ -139,7 +139,7 @@ function runTests(itRenders, itRejectsRendering, expectToReject) {
139
);
140
141
it('rejects a javascript protocol href if it is added during an update', () => {
142
- let container = document.createElement('div');
142
+ const container = document.createElement('div');
143
ReactDOM.render(<a href="thisisfine">click me</a>, container);
144
expectToReject(() => {
145
ReactDOM.render(<a href="javascript:notfine">click me</a>, container);
@@ -244,7 +244,7 @@ describe('ReactDOMServerIntegration - Untrusted URLs - disableJavaScriptURLs', (
244
}
245
246
let toStringCalls = 0;
247
- let firstIsSafe = {
247
+ const firstIsSafe = {
248
toString() {
249
// This tries to avoid the validation by pretending to be safe
250
// the first times it is called and then becomes dangerous.
@@ -262,7 +262,7 @@ describe('ReactDOMServerIntegration - Untrusted URLs - disableJavaScriptURLs', (
262
});
263
264
it('rejects a javascript protocol href if it is added during an update twice', () => {
265
- let container = document.createElement('div');
265
+ const container = document.createElement('div');
266
ReactDOM.render(<a href="thisisfine">click me</a>, container);
267
expectToReject(() => {
268
ReactDOM.render(<a href="javascript:notfine">click me</a>, container);
packages/react-dom/src/__tests__/ReactDOMServerPartialHydration-test.internal.js
+224
-220
@@ -96,8 +96,8 @@ describe('ReactDOMServerPartialHydration', () => {
96
it('hydrates a parent even if a child Suspense boundary is blocked', async () => {
97
let suspend = false;
98
let resolve;
99
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
100
- let ref = React.createRef();
99
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
100
+ const ref = React.createRef();
101
102
function Child() {
103
if (suspend) {
@@ -123,17 +123,17 @@ describe('ReactDOMServerPartialHydration', () => {
123
// this may have suspense points on the server but here we want
124
// to test the completed HTML. Don't suspend on the server.
125
suspend = false;
126
- let finalHTML = ReactDOMServer.renderToString(<App />);
126
+ const finalHTML = ReactDOMServer.renderToString(<App />);
127
128
- let container = document.createElement('div');
128
+ const container = document.createElement('div');
129
container.innerHTML = finalHTML;
130
131
- let span = container.getElementsByTagName('span')[0];
131
+ const span = container.getElementsByTagName('span')[0];
132
133
// On the client we don't have all data yet but we want to start
134
// hydrating anyway.
135
suspend = true;
136
- let root = ReactDOM.createRoot(container, {hydrate: true});
136
+ const root = ReactDOM.createRoot(container, {hydrate: true});
137
root.render(<App />);
138
Scheduler.unstable_flushAll();
139
jest.runAllTimers();
@@ -154,7 +154,7 @@ describe('ReactDOMServerPartialHydration', () => {
154
it('calls the hydration callbacks after hydration or deletion', async () => {
155
let suspend = false;
156
let resolve;
157
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
157
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
158
function Child() {
159
if (suspend) {
160
throw promise;
@@ -164,7 +164,7 @@ describe('ReactDOMServerPartialHydration', () => {
164
}
165
166
let suspend2 = false;
167
- let promise2 = new Promise(() => {});
167
+ const promise2 = new Promise(() => {});
168
function Child2() {
169
if (suspend2) {
170
throw promise2;
@@ -191,19 +191,19 @@ describe('ReactDOMServerPartialHydration', () => {
191
// to test the completed HTML. Don't suspend on the server.
192
suspend = false;
193
suspend2 = false;
194
- let finalHTML = ReactDOMServer.renderToString(<App />);
194
+ const finalHTML = ReactDOMServer.renderToString(<App />);
195
196
- let container = document.createElement('div');
196
+ const container = document.createElement('div');
197
container.innerHTML = finalHTML;
198
199
- let hydrated = [];
200
- let deleted = [];
199
+ const hydrated = [];
200
+ const deleted = [];
201
202
// On the client we don't have all data yet but we want to start
203
// hydrating anyway.
204
suspend = true;
205
suspend2 = true;
206
- let root = ReactDOM.createRoot(container, {
206
+ const root = ReactDOM.createRoot(container, {
207
hydrate: true,
208
hydrationOptions: {
209
onHydrated(node) {
@@ -243,7 +243,7 @@ describe('ReactDOMServerPartialHydration', () => {
243
244
it('calls the onDeleted hydration callback if the parent gets deleted', async () => {
245
let suspend = false;
246
- let promise = new Promise(() => {});
246
+ const promise = new Promise(() => {});
247
function Child() {
248
if (suspend) {
249
throw promise;
@@ -266,17 +266,17 @@ describe('ReactDOMServerPartialHydration', () => {
266
}
267
268
suspend = false;
269
- let finalHTML = ReactDOMServer.renderToString(<App />);
269
+ const finalHTML = ReactDOMServer.renderToString(<App />);
270
271
- let container = document.createElement('div');
271
+ const container = document.createElement('div');
272
container.innerHTML = finalHTML;
273
274
- let deleted = [];
274
+ const deleted = [];
275
276
// On the client we don't have all data yet but we want to start
277
// hydrating anyway.
278
suspend = true;
279
- let root = ReactDOM.createRoot(container, {
279
+ const root = ReactDOM.createRoot(container, {
280
hydrate: true,
281
hydrationOptions: {
282
onDeleted(node) {
@@ -301,8 +301,8 @@ describe('ReactDOMServerPartialHydration', () => {
301
it('warns and replaces the boundary content in legacy mode', async () => {
302
let suspend = false;
303
let resolve;
304
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
305
- let ref = React.createRef();
304
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
305
+ const ref = React.createRef();
306
307
function Child() {
308
if (suspend) {
@@ -326,12 +326,12 @@ describe('ReactDOMServerPartialHydration', () => {
326
327
// Don't suspend on the server.
328
suspend = false;
329
- let finalHTML = ReactDOMServer.renderToString(<App />);
329
+ const finalHTML = ReactDOMServer.renderToString(<App />);
330
331
- let container = document.createElement('div');
331
+ const container = document.createElement('div');
332
container.innerHTML = finalHTML;
333
334
- let span = container.getElementsByTagName('span')[0];
334
+ const span = container.getElementsByTagName('span')[0];
335
336
// On the client we try to hydrate.
337
suspend = true;
@@ -353,7 +353,7 @@ describe('ReactDOMServerPartialHydration', () => {
353
// We're now in loading state.
354
expect(container.textContent).toBe('Loading...');
355
356
- let span2 = container.getElementsByTagName('span')[0];
356
+ const span2 = container.getElementsByTagName('span')[0];
357
// This is a new node.
358
expect(span).not.toBe(span2);
359
expect(ref.current).toBe(span2);
@@ -371,7 +371,7 @@ describe('ReactDOMServerPartialHydration', () => {
371
372
it('can insert siblings before the dehydrated boundary', () => {
373
let suspend = false;
374
- let promise = new Promise(() => {});
374
+ const promise = new Promise(() => {});
375
let showSibling;
376
377
function Child() {
@@ -383,7 +383,7 @@ describe('ReactDOMServerPartialHydration', () => {
383
}
384
385
function Sibling() {
386
- let [visible, setVisibilty] = React.useState(false);
386
+ const [visible, setVisibilty] = React.useState(false);
387
showSibling = () => setVisibilty(true);
388
if (visible) {
389
return <div>First</div>;
@@ -405,8 +405,8 @@ describe('ReactDOMServerPartialHydration', () => {
405
}
406
407
suspend = false;
408
- let finalHTML = ReactDOMServer.renderToString(<App />);
409
- let container = document.createElement('div');
408
+ const finalHTML = ReactDOMServer.renderToString(<App />);
409
+ const container = document.createElement('div');
410
container.innerHTML = finalHTML;
411
412
// On the client we don't have all data yet but we want to start
@@ -414,7 +414,7 @@ describe('ReactDOMServerPartialHydration', () => {
414
suspend = true;
415
416
act(() => {
417
- let root = ReactDOM.createRoot(container, {hydrate: true});
417
+ const root = ReactDOM.createRoot(container, {hydrate: true});
418
root.render(<App />);
419
});
420
@@ -429,7 +429,7 @@ describe('ReactDOMServerPartialHydration', () => {
429
430
it('can delete the dehydrated boundary before it is hydrated', () => {
431
let suspend = false;
432
- let promise = new Promise(() => {});
432
+ const promise = new Promise(() => {});
433
let hideMiddle;
434
435
function Child() {
@@ -446,7 +446,7 @@ describe('ReactDOMServerPartialHydration', () => {
446
}
447
448
function App() {
449
- let [visible, setVisibilty] = React.useState(true);
449
+ const [visible, setVisibilty] = React.useState(true);
450
hideMiddle = () => setVisibilty(false);
451
452
return (
@@ -463,15 +463,15 @@ describe('ReactDOMServerPartialHydration', () => {
463
}
464
465
suspend = false;
466
- let finalHTML = ReactDOMServer.renderToString(<App />);
467
- let container = document.createElement('div');
466
+ const finalHTML = ReactDOMServer.renderToString(<App />);
467
+ const container = document.createElement('div');
468
container.innerHTML = finalHTML;
469
470
// On the client we don't have all data yet but we want to start
471
// hydrating anyway.
472
suspend = true;
473
act(() => {
474
- let root = ReactDOM.createRoot(container, {hydrate: true});
474
+ const root = ReactDOM.createRoot(container, {hydrate: true});
475
root.render(<App />);
476
});
477
@@ -486,8 +486,8 @@ describe('ReactDOMServerPartialHydration', () => {
486
it('blocks updates to hydrate the content first if props have changed', async () => {
487
let suspend = false;
488
let resolve;
489
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
490
- let ref = React.createRef();
489
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
490
+ const ref = React.createRef();
491
492
function Child({text}) {
493
if (suspend) {
@@ -510,18 +510,18 @@ describe('ReactDOMServerPartialHydration', () => {
510
}
511
512
suspend = false;
513
- let finalHTML = ReactDOMServer.renderToString(
513
+ const finalHTML = ReactDOMServer.renderToString(
514
<App text="Hello" className="hello" />,
515
);
516
- let container = document.createElement('div');
516
+ const container = document.createElement('div');
517
container.innerHTML = finalHTML;
518
519
- let span = container.getElementsByTagName('span')[0];
519
+ const span = container.getElementsByTagName('span')[0];
520
521
// On the client we don't have all data yet but we want to start
522
// hydrating anyway.
523
suspend = true;
524
- let root = ReactDOM.createRoot(container, {hydrate: true});
524
+ const root = ReactDOM.createRoot(container, {hydrate: true});
525
root.render(<App text="Hello" className="hello" />);
526
Scheduler.unstable_flushAll();
527
jest.runAllTimers();
@@ -543,7 +543,7 @@ describe('ReactDOMServerPartialHydration', () => {
543
544
// The new span should be the same since we should have successfully hydrated
545
// before changing it.
546
- let newSpan = container.getElementsByTagName('span')[0];
546
+ const newSpan = container.getElementsByTagName('span')[0];
547
expect(span).toBe(newSpan);
548
549
// We should now have fully rendered with a ref on the new span.
@@ -557,8 +557,8 @@ describe('ReactDOMServerPartialHydration', () => {
557
it('shows the fallback if props have changed before hydration completes and is still suspended', async () => {
558
let suspend = false;
559
let resolve;
560
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
561
- let ref = React.createRef();
560
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
561
+ const ref = React.createRef();
562
563
function Child({text}) {
564
if (suspend) {
@@ -581,16 +581,16 @@ describe('ReactDOMServerPartialHydration', () => {
581
}
582
583
suspend = false;
584
- let finalHTML = ReactDOMServer.renderToString(
584
+ const finalHTML = ReactDOMServer.renderToString(
585
<App text="Hello" className="hello" />,
586
);
587
- let container = document.createElement('div');
587
+ const container = document.createElement('div');
588
container.innerHTML = finalHTML;
589
590
// On the client we don't have all data yet but we want to start
591
// hydrating anyway.
592
suspend = true;
593
- let root = ReactDOM.createRoot(container, {hydrate: true});
593
+ const root = ReactDOM.createRoot(container, {hydrate: true});
594
root.render(<App text="Hello" className="hello" />);
595
Scheduler.unstable_flushAll();
596
jest.runAllTimers();
@@ -616,7 +616,7 @@ describe('ReactDOMServerPartialHydration', () => {
616
Scheduler.unstable_flushAll();
617
jest.runAllTimers();
618
619
- let span = container.getElementsByTagName('span')[0];
619
+ const span = container.getElementsByTagName('span')[0];
620
expect(span.textContent).toBe('Hi');
621
expect(span.className).toBe('hi');
622
expect(ref.current).toBe(span);
@@ -628,8 +628,8 @@ describe('ReactDOMServerPartialHydration', () => {
628
// This should be a noop.
629
let suspend = false;
630
let resolve;
631
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
632
- let ref = React.createRef();
631
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
632
+ const ref = React.createRef();
633
634
function Child({text}) {
635
if (suspend) {
@@ -654,16 +654,16 @@ describe('ReactDOMServerPartialHydration', () => {
654
}
655
656
suspend = false;
657
- let finalHTML = ReactDOMServer.renderToString(
657
+ const finalHTML = ReactDOMServer.renderToString(
658
<App text="Hello" className="hello" />,
659
);
660
- let container = document.createElement('div');
660
+ const container = document.createElement('div');
661
container.innerHTML = finalHTML;
662
663
// On the client we don't have all data yet but we want to start
664
// hydrating anyway.
665
suspend = true;
666
- let root = ReactDOM.createRoot(container, {hydrate: true});
666
+ const root = ReactDOM.createRoot(container, {hydrate: true});
667
root.render(<App text="Hello" className="hello" />);
668
Scheduler.unstable_flushAll();
669
jest.runAllTimers();
@@ -689,7 +689,7 @@ describe('ReactDOMServerPartialHydration', () => {
689
Scheduler.unstable_flushAll();
690
jest.runAllTimers();
691
692
- let span = container.getElementsByTagName('span')[0];
692
+ const span = container.getElementsByTagName('span')[0];
693
expect(span.textContent).toBe('Hi');
694
expect(span.className).toBe('hi');
695
expect(ref.current).toBe(span);
@@ -699,8 +699,8 @@ describe('ReactDOMServerPartialHydration', () => {
699
it('clears nested suspense boundaries if they did not hydrate yet', async () => {
700
let suspend = false;
701
let resolve;
702
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
703
- let ref = React.createRef();
702
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
703
+ const ref = React.createRef();
704
705
function Child({text}) {
706
if (suspend) {
@@ -726,16 +726,16 @@ describe('ReactDOMServerPartialHydration', () => {
726
}
727
728
suspend = false;
729
- let finalHTML = ReactDOMServer.renderToString(
729
+ const finalHTML = ReactDOMServer.renderToString(
730
<App text="Hello" className="hello" />,
731
);
732
- let container = document.createElement('div');
732
+ const container = document.createElement('div');
733
container.innerHTML = finalHTML;
734
735
// On the client we don't have all data yet but we want to start
736
// hydrating anyway.
737
suspend = true;
738
- let root = ReactDOM.createRoot(container, {hydrate: true});
738
+ const root = ReactDOM.createRoot(container, {hydrate: true});
739
root.render(<App text="Hello" className="hello" />);
740
Scheduler.unstable_flushAll();
741
jest.runAllTimers();
@@ -761,7 +761,7 @@ describe('ReactDOMServerPartialHydration', () => {
761
Scheduler.unstable_flushAll();
762
jest.runAllTimers();
763
764
- let span = container.getElementsByTagName('span')[0];
764
+ const span = container.getElementsByTagName('span')[0];
765
expect(span.textContent).toBe('Hi');
766
expect(span.className).toBe('hi');
767
expect(ref.current).toBe(span);
@@ -771,8 +771,8 @@ describe('ReactDOMServerPartialHydration', () => {
771
it('hydrates first if props changed but we are able to resolve within a timeout', async () => {
772
let suspend = false;
773
let resolve;
774
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
775
- let ref = React.createRef();
774
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
775
+ const ref = React.createRef();
776
777
function Child({text}) {
778
if (suspend) {
@@ -795,18 +795,18 @@ describe('ReactDOMServerPartialHydration', () => {
795
}
796
797
suspend = false;
798
- let finalHTML = ReactDOMServer.renderToString(
798
+ const finalHTML = ReactDOMServer.renderToString(
799
<App text="Hello" className="hello" />,
800
);
801
- let container = document.createElement('div');
801
+ const container = document.createElement('div');
802
container.innerHTML = finalHTML;
803
804
- let span = container.getElementsByTagName('span')[0];
804
+ const span = container.getElementsByTagName('span')[0];
805
806
// On the client we don't have all data yet but we want to start
807
// hydrating anyway.
808
suspend = true;
809
- let root = ReactDOM.createRoot(container, {hydrate: true});
809
+ const root = ReactDOM.createRoot(container, {hydrate: true});
810
root.render(<App text="Hello" className="hello" />);
811
Scheduler.unstable_flushAll();
812
jest.runAllTimers();
@@ -837,7 +837,7 @@ describe('ReactDOMServerPartialHydration', () => {
837
838
// The new span should be the same since we should have successfully hydrated
839
// before changing it.
840
- let newSpan = container.getElementsByTagName('span')[0];
840
+ const newSpan = container.getElementsByTagName('span')[0];
841
expect(span).toBe(newSpan);
842
843
// We should now have fully rendered with a ref on the new span.
@@ -851,12 +851,12 @@ describe('ReactDOMServerPartialHydration', () => {
851
it('blocks the update to hydrate first if context has changed', async () => {
852
let suspend = false;
853
let resolve;
854
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
855
- let ref = React.createRef();
856
- let Context = React.createContext(null);
854
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
855
+ const ref = React.createRef();
856
+ const Context = React.createContext(null);
857
858
function Child() {
859
- let {text, className} = React.useContext(Context);
859
+ const {text, className} = React.useContext(Context);
860
if (suspend) {
861
throw promise;
862
} else {
@@ -879,20 +879,20 @@ describe('ReactDOMServerPartialHydration', () => {
879
});
880
881
suspend = false;
882
- let finalHTML = ReactDOMServer.renderToString(
882
+ const finalHTML = ReactDOMServer.renderToString(
883
<Context.Provider value={{text: 'Hello', className: 'hello'}}>
884
<App />
885
</Context.Provider>,
886
);
887
- let container = document.createElement('div');
887
+ const container = document.createElement('div');
888
container.innerHTML = finalHTML;
889
890
- let span = container.getElementsByTagName('span')[0];
890
+ const span = container.getElementsByTagName('span')[0];
891
892
// On the client we don't have all data yet but we want to start
893
// hydrating anyway.
894
suspend = true;
895
- let root = ReactDOM.createRoot(container, {hydrate: true});
895
+ const root = ReactDOM.createRoot(container, {hydrate: true});
896
root.render(
897
<Context.Provider value={{text: 'Hello', className: 'hello'}}>
898
<App />
@@ -921,7 +921,7 @@ describe('ReactDOMServerPartialHydration', () => {
921
jest.runAllTimers();
922
923
// Since this should have been hydrated, this should still be the same span.
924
- let newSpan = container.getElementsByTagName('span')[0];
924
+ const newSpan = container.getElementsByTagName('span')[0];
925
expect(newSpan).toBe(span);
926
927
// We should now have fully rendered with a ref on the new span.
@@ -935,12 +935,12 @@ describe('ReactDOMServerPartialHydration', () => {
935
it('shows the fallback if context has changed before hydration completes and is still suspended', async () => {
936
let suspend = false;
937
let resolve;
938
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
939
- let ref = React.createRef();
940
- let Context = React.createContext(null);
938
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
939
+ const ref = React.createRef();
940
+ const Context = React.createContext(null);
941
942
function Child() {
943
- let {text, className} = React.useContext(Context);
943
+ const {text, className} = React.useContext(Context);
944
if (suspend) {
945
throw promise;
946
} else {
@@ -963,18 +963,18 @@ describe('ReactDOMServerPartialHydration', () => {
963
});
964
965
suspend = false;
966
- let finalHTML = ReactDOMServer.renderToString(
966
+ const finalHTML = ReactDOMServer.renderToString(
967
<Context.Provider value={{text: 'Hello', className: 'hello'}}>
968
<App />
969
</Context.Provider>,
970
);
971
- let container = document.createElement('div');
971
+ const container = document.createElement('div');
972
container.innerHTML = finalHTML;
973
974
// On the client we don't have all data yet but we want to start
975
// hydrating anyway.
976
suspend = true;
977
- let root = ReactDOM.createRoot(container, {hydrate: true});
977
+ const root = ReactDOM.createRoot(container, {hydrate: true});
978
root.render(
979
<Context.Provider value={{text: 'Hello', className: 'hello'}}>
980
<App />
@@ -1008,7 +1008,7 @@ describe('ReactDOMServerPartialHydration', () => {
1008
Scheduler.unstable_flushAll();
1009
jest.runAllTimers();
1010
1011
- let span = container.getElementsByTagName('span')[0];
1011
+ const span = container.getElementsByTagName('span')[0];
1012
expect(span.textContent).toBe('Hi');
1013
expect(span.className).toBe('hi');
1014
expect(ref.current).toBe(span);
@@ -1017,8 +1017,8 @@ describe('ReactDOMServerPartialHydration', () => {
1017
1018
it('replaces the fallback with client content if it is not rendered by the server', async () => {
1019
let suspend = false;
1020
- let promise = new Promise(resolvePromise => {});
1021
- let ref = React.createRef();
1020
+ const promise = new Promise(resolvePromise => {});
1021
+ const ref = React.createRef();
1022
1023
function Child() {
1024
if (suspend) {
@@ -1044,29 +1044,29 @@ describe('ReactDOMServerPartialHydration', () => {
1044
// this may have suspense points on the server but here we want
1045
// to test the completed HTML. Don't suspend on the server.
1046
suspend = true;
1047
- let finalHTML = ReactDOMServer.renderToString(<App />);
1048
- let container = document.createElement('div');
1047
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1048
+ const container = document.createElement('div');
1049
container.innerHTML = finalHTML;
1050
1051
expect(container.getElementsByTagName('span').length).toBe(0);
1052
1053
// On the client we have the data available quickly for some reason.
1054
suspend = false;
1055
- let root = ReactDOM.createRoot(container, {hydrate: true});
1055
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1056
root.render(<App />);
1057
Scheduler.unstable_flushAll();
1058
jest.runAllTimers();
1059
1060
expect(container.textContent).toBe('Hello');
1061
1062
- let span = container.getElementsByTagName('span')[0];
1062
+ const span = container.getElementsByTagName('span')[0];
1063
expect(ref.current).toBe(span);
1064
});
1065
1066
it('replaces the fallback within the suspended time if there is a nested suspense', async () => {
1067
let suspend = false;
1068
- let promise = new Promise(resolvePromise => {});
1069
- let ref = React.createRef();
1068
+ const promise = new Promise(resolvePromise => {});
1069
+ const ref = React.createRef();
1070
1071
function Child() {
1072
if (suspend) {
@@ -1100,15 +1100,15 @@ describe('ReactDOMServerPartialHydration', () => {
1100
// this may have suspense points on the server but here we want
1101
// to test the completed HTML. Don't suspend on the server.
1102
suspend = true;
1103
- let finalHTML = ReactDOMServer.renderToString(<App />);
1104
- let container = document.createElement('div');
1103
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1104
+ const container = document.createElement('div');
1105
container.innerHTML = finalHTML;
1106
1107
expect(container.getElementsByTagName('span').length).toBe(0);
1108
1109
// On the client we have the data available quickly for some reason.
1110
suspend = false;
1111
- let root = ReactDOM.createRoot(container, {hydrate: true});
1111
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1112
root.render(<App />);
1113
Scheduler.unstable_flushAll();
1114
// This will have exceeded the suspended time so we should timeout.
@@ -1118,14 +1118,14 @@ describe('ReactDOMServerPartialHydration', () => {
1118
1119
expect(container.textContent).toBe('Hello');
1120
1121
- let span = container.getElementsByTagName('span')[0];
1121
+ const span = container.getElementsByTagName('span')[0];
1122
expect(ref.current).toBe(span);
1123
});
1124
1125
it('replaces the fallback within the suspended time if there is a nested suspense in a nested suspense', async () => {
1126
let suspend = false;
1127
- let promise = new Promise(resolvePromise => {});
1128
- let ref = React.createRef();
1127
+ const promise = new Promise(resolvePromise => {});
1128
+ const ref = React.createRef();
1129
1130
function Child() {
1131
if (suspend) {
@@ -1161,15 +1161,15 @@ describe('ReactDOMServerPartialHydration', () => {
1161
// this may have suspense points on the server but here we want
1162
// to test the completed HTML. Don't suspend on the server.
1163
suspend = true;
1164
- let finalHTML = ReactDOMServer.renderToString(<App />);
1165
- let container = document.createElement('div');
1164
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1165
+ const container = document.createElement('div');
1166
container.innerHTML = finalHTML;
1167
1168
expect(container.getElementsByTagName('span').length).toBe(0);
1169
1170
// On the client we have the data available quickly for some reason.
1171
suspend = false;
1172
- let root = ReactDOM.createRoot(container, {hydrate: true});
1172
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1173
root.render(<App />);
1174
Scheduler.unstable_flushAll();
1175
// This will have exceeded the suspended time so we should timeout.
@@ -1179,14 +1179,14 @@ describe('ReactDOMServerPartialHydration', () => {
1179
1180
expect(container.textContent).toBe('Hello');
1181
1182
- let span = container.getElementsByTagName('span')[0];
1182
+ const span = container.getElementsByTagName('span')[0];
1183
expect(ref.current).toBe(span);
1184
});
1185
1186
it('waits for pending content to come in from the server and then hydrates it', async () => {
1187
let suspend = false;
1188
- let promise = new Promise(resolvePromise => {});
1189
- let ref = React.createRef();
1188
+ const promise = new Promise(resolvePromise => {});
1189
+ const ref = React.createRef();
1190
1191
function Child() {
1192
if (suspend) {
@@ -1212,15 +1212,15 @@ describe('ReactDOMServerPartialHydration', () => {
1212
1213
// First we generate the HTML of the loading state.
1214
suspend = true;
1215
- let loadingHTML = ReactDOMServer.renderToString(<App />);
1215
+ const loadingHTML = ReactDOMServer.renderToString(<App />);
1216
// Then we generate the HTML of the final content.
1217
suspend = false;
1218
- let finalHTML = ReactDOMServer.renderToString(<App />);
1218
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1219
1220
- let container = document.createElement('div');
1220
+ const container = document.createElement('div');
1221
container.innerHTML = loadingHTML;
1222
1223
- let suspenseNode = container.firstChild.firstChild;
1223
+ const suspenseNode = container.firstChild.firstChild;
1224
expect(suspenseNode.nodeType).toBe(8);
1225
// Put the suspense node in hydration state.
1226
suspenseNode.data = '$?';
@@ -1228,11 +1228,11 @@ describe('ReactDOMServerPartialHydration', () => {
1228
// This will simulates new content streaming into the document and
1229
// replacing the fallback with final content.
1230
function streamInContent() {
1231
- let temp = document.createElement('div');
1231
+ const temp = document.createElement('div');
1232
temp.innerHTML = finalHTML;
1233
- let finalSuspenseNode = temp.firstChild.firstChild;
1234
- let fallbackContent = suspenseNode.nextSibling;
1235
- let finalContent = finalSuspenseNode.nextSibling;
1233
+ const finalSuspenseNode = temp.firstChild.firstChild;
1234
+ const fallbackContent = suspenseNode.nextSibling;
1235
+ const finalContent = finalSuspenseNode.nextSibling;
1236
suspenseNode.parentNode.replaceChild(finalContent, fallbackContent);
1237
suspenseNode.data = '$';
1238
if (suspenseNode._reactRetry) {
@@ -1245,7 +1245,7 @@ describe('ReactDOMServerPartialHydration', () => {
1245
1246
// Attempt to hydrate the content.
1247
suspend = false;
1248
- let root = ReactDOM.createRoot(container, {hydrate: true});
1248
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1249
root.render(<App />);
1250
Scheduler.unstable_flushAll();
1251
jest.runAllTimers();
@@ -1258,7 +1258,7 @@ describe('ReactDOMServerPartialHydration', () => {
1258
1259
// The final HTML is now in place.
1260
expect(container.textContent).toBe('Hello');
1261
- let span = container.getElementsByTagName('span')[0];
1261
+ const span = container.getElementsByTagName('span')[0];
1262
1263
// But it is not yet hydrated.
1264
expect(ref.current).toBe(null);
@@ -1272,8 +1272,8 @@ describe('ReactDOMServerPartialHydration', () => {
1272
1273
it('handles an error on the client if the server ends up erroring', async () => {
1274
let suspend = false;
1275
- let promise = new Promise(resolvePromise => {});
1276
- let ref = React.createRef();
1275
+ const promise = new Promise(resolvePromise => {});
1276
+ const ref = React.createRef();
1277
1278
function Child() {
1279
if (suspend) {
@@ -1314,12 +1314,12 @@ describe('ReactDOMServerPartialHydration', () => {
1314
1315
// First we generate the HTML of the loading state.
1316
suspend = true;
1317
- let loadingHTML = ReactDOMServer.renderToString(<App />);
1317
+ const loadingHTML = ReactDOMServer.renderToString(<App />);
1318
1319
- let container = document.createElement('div');
1319
+ const container = document.createElement('div');
1320
container.innerHTML = loadingHTML;
1321
1322
- let suspenseNode = container.firstChild.firstChild;
1322
+ const suspenseNode = container.firstChild.firstChild;
1323
expect(suspenseNode.nodeType).toBe(8);
1324
// Put the suspense node in hydration state.
1325
suspenseNode.data = '$?';
@@ -1338,7 +1338,7 @@ describe('ReactDOMServerPartialHydration', () => {
1338
1339
// Attempt to hydrate the content.
1340
suspend = false;
1341
- let root = ReactDOM.createRoot(container, {hydrate: true});
1341
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1342
root.render(<App />);
1343
Scheduler.unstable_flushAll();
1344
jest.runAllTimers();
@@ -1360,15 +1360,15 @@ describe('ReactDOMServerPartialHydration', () => {
1360
// Hydrating should've generated an error and replaced the suspense boundary.
1361
expect(container.textContent).toBe('Error Message');
1362
1363
- let div = container.getElementsByTagName('div')[0];
1363
+ const div = container.getElementsByTagName('div')[0];
1364
expect(ref.current).toBe(div);
1365
});
1366
1367
it('shows inserted items in a SuspenseList before content is hydrated', async () => {
1368
let suspend = false;
1369
let resolve;
1370
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1371
- let ref = React.createRef();
1370
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1371
+ const ref = React.createRef();
1372
1373
function Child({children}) {
1374
if (suspend) {
@@ -1409,14 +1409,14 @@ describe('ReactDOMServerPartialHydration', () => {
1409
}
1410
1411
suspend = false;
1412
- let html = ReactDOMServer.renderToString(<App showMore={false} />);
1412
+ const html = ReactDOMServer.renderToString(<App showMore={false} />);
1413
1414
- let container = document.createElement('div');
1414
+ const container = document.createElement('div');
1415
container.innerHTML = html;
1416
1417
- let spanB = container.getElementsByTagName('span')[1];
1417
+ const spanB = container.getElementsByTagName('span')[1];
1418
1419
- let root = ReactDOM.createRoot(container, {hydrate: true});
1419
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1420
1421
suspend = true;
1422
act(() => {
@@ -1452,8 +1452,8 @@ describe('ReactDOMServerPartialHydration', () => {
1452
it('shows is able to hydrate boundaries even if others in a list are pending', async () => {
1453
let suspend = false;
1454
let resolve;
1455
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1456
- let ref = React.createRef();
1455
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1456
+ const ref = React.createRef();
1457
1458
function Child({children}) {
1459
if (suspend) {
@@ -1463,7 +1463,7 @@ describe('ReactDOMServerPartialHydration', () => {
1463
}
1464
}
1465
1466
- let promise2 = new Promise(() => {});
1466
+ const promise2 = new Promise(() => {});
1467
function AlwaysSuspend() {
1468
throw promise2;
1469
}
@@ -1491,14 +1491,14 @@ describe('ReactDOMServerPartialHydration', () => {
1491
}
1492
1493
suspend = false;
1494
- let html = ReactDOMServer.renderToString(<App showMore={false} />);
1494
+ const html = ReactDOMServer.renderToString(<App showMore={false} />);
1495
1496
- let container = document.createElement('div');
1496
+ const container = document.createElement('div');
1497
container.innerHTML = html;
1498
1499
- let spanA = container.getElementsByTagName('span')[0];
1499
+ const spanA = container.getElementsByTagName('span')[0];
1500
1501
- let root = ReactDOM.createRoot(container, {hydrate: true});
1501
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1502
1503
suspend = true;
1504
act(() => {
@@ -1526,8 +1526,8 @@ describe('ReactDOMServerPartialHydration', () => {
1526
it('shows inserted items before pending in a SuspenseList as fallbacks', async () => {
1527
let suspend = false;
1528
let resolve;
1529
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1530
- let ref = React.createRef();
1529
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1530
+ const ref = React.createRef();
1531
1532
function Child({children}) {
1533
if (suspend) {
@@ -1568,17 +1568,17 @@ describe('ReactDOMServerPartialHydration', () => {
1568
}
1569
1570
suspend = false;
1571
- let html = ReactDOMServer.renderToString(<App showMore={false} />);
1571
+ const html = ReactDOMServer.renderToString(<App showMore={false} />);
1572
1573
- let container = document.createElement('div');
1573
+ const container = document.createElement('div');
1574
container.innerHTML = html;
1575
1576
- let suspenseNode = container.firstChild;
1576
+ const suspenseNode = container.firstChild;
1577
expect(suspenseNode.nodeType).toBe(8);
1578
// Put the suspense node in pending state.
1579
suspenseNode.data = '$?';
1580
1581
- let root = ReactDOM.createRoot(container, {hydrate: true});
1581
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1582
1583
suspend = true;
1584
act(() => {
@@ -1616,8 +1616,8 @@ describe('ReactDOMServerPartialHydration', () => {
1616
1617
it('can client render nested boundaries', async () => {
1618
let suspend = false;
1619
- let promise = new Promise(() => {});
1620
- let ref = React.createRef();
1619
+ const promise = new Promise(() => {});
1620
+ const ref = React.createRef();
1621
1622
function Child() {
1623
if (suspend) {
@@ -1647,15 +1647,15 @@ describe('ReactDOMServerPartialHydration', () => {
1647
}
1648
1649
suspend = true;
1650
- let html = ReactDOMServer.renderToString(<App />);
1650
+ const html = ReactDOMServer.renderToString(<App />);
1651
1652
- let container = document.createElement('div');
1652
+ const container = document.createElement('div');
1653
container.innerHTML = html + '<!--unrelated comment-->';
1654
1655
- let span = container.getElementsByTagName('span')[1];
1655
+ const span = container.getElementsByTagName('span')[1];
1656
1657
suspend = false;
1658
- let root = ReactDOM.createRoot(container, {hydrate: true});
1658
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1659
root.render(<App />);
1660
Scheduler.unstable_flushAll();
1661
jest.runAllTimers();
@@ -1669,8 +1669,8 @@ describe('ReactDOMServerPartialHydration', () => {
1669
});
1670
1671
it('can hydrate TWO suspense boundaries', async () => {
1672
- let ref1 = React.createRef();
1673
- let ref2 = React.createRef();
1672
+ const ref1 = React.createRef();
1673
+ const ref2 = React.createRef();
1674
1675
function App() {
1676
return (
@@ -1688,17 +1688,17 @@ describe('ReactDOMServerPartialHydration', () => {
1688
// First we render the final HTML. With the streaming renderer
1689
// this may have suspense points on the server but here we want
1690
// to test the completed HTML. Don't suspend on the server.
1691
- let finalHTML = ReactDOMServer.renderToString(<App />);
1691
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1692
1693
- let container = document.createElement('div');
1693
+ const container = document.createElement('div');
1694
container.innerHTML = finalHTML;
1695
1696
- let span1 = container.getElementsByTagName('span')[0];
1697
- let span2 = container.getElementsByTagName('span')[1];
1696
+ const span1 = container.getElementsByTagName('span')[0];
1697
+ const span2 = container.getElementsByTagName('span')[1];
1698
1699
// On the client we don't have all data yet but we want to start
1700
// hydrating anyway.
1701
- let root = ReactDOM.createRoot(container, {hydrate: true});
1701
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1702
root.render(<App />);
1703
Scheduler.unstable_flushAll();
1704
jest.runAllTimers();
@@ -1709,12 +1709,12 @@ describe('ReactDOMServerPartialHydration', () => {
1709
1710
it('regenerates if it cannot hydrate before changes to props/context expire', async () => {
1711
let suspend = false;
1712
- let promise = new Promise(resolvePromise => {});
1713
- let ref = React.createRef();
1714
- let ClassName = React.createContext(null);
1712
+ const promise = new Promise(resolvePromise => {});
1713
+ const ref = React.createRef();
1714
+ const ClassName = React.createContext(null);
1715
1716
function Child({text}) {
1717
- let className = React.useContext(ClassName);
1717
+ const className = React.useContext(ClassName);
1718
if (suspend && className !== 'hi' && text !== 'Hi') {
1719
// Never suspends on the newer data.
1720
throw promise;
@@ -1738,20 +1738,20 @@ describe('ReactDOMServerPartialHydration', () => {
1738
}
1739
1740
suspend = false;
1741
- let finalHTML = ReactDOMServer.renderToString(
1741
+ const finalHTML = ReactDOMServer.renderToString(
1742
<ClassName.Provider value={'hello'}>
1743
<App text="Hello" />
1744
</ClassName.Provider>,
1745
);
1746
- let container = document.createElement('div');
1746
+ const container = document.createElement('div');
1747
container.innerHTML = finalHTML;
1748
1749
- let span = container.getElementsByTagName('span')[0];
1749
+ const span = container.getElementsByTagName('span')[0];
1750
1751
// On the client we don't have all data yet but we want to start
1752
// hydrating anyway.
1753
suspend = true;
1754
- let root = ReactDOM.createRoot(container, {hydrate: true});
1754
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1755
root.render(
1756
<ClassName.Provider value={'hello'}>
1757
<App text="Hello" />
@@ -1777,7 +1777,7 @@ describe('ReactDOMServerPartialHydration', () => {
1777
jest.runAllTimers();
1778
1779
// This will now be a new span because we weren't able to hydrate before
1780
- let newSpan = container.getElementsByTagName('span')[0];
1780
+ const newSpan = container.getElementsByTagName('span')[0];
1781
expect(newSpan).not.toBe(span);
1782
1783
// We should now have fully rendered with a ref on the new span.
@@ -1791,7 +1791,7 @@ describe('ReactDOMServerPartialHydration', () => {
1791
it('does not invoke an event on a hydrated node until it commits', async () => {
1792
let suspend = false;
1793
let resolve;
1794
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1794
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1795
1796
function Sibling({text}) {
1797
if (suspend) {
@@ -1804,7 +1804,7 @@ describe('ReactDOMServerPartialHydration', () => {
1804
let clicks = 0;
1805
1806
function Button() {
1807
- let [clicked, setClicked] = React.useState(false);
1807
+ const [clicked, setClicked] = React.useState(false);
1808
if (clicked) {
1809
return null;
1810
}
@@ -1831,19 +1831,19 @@ describe('ReactDOMServerPartialHydration', () => {
1831
}
1832
1833
suspend = false;
1834
- let finalHTML = ReactDOMServer.renderToString(<App />);
1835
- let container = document.createElement('div');
1834
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1835
+ const container = document.createElement('div');
1836
container.innerHTML = finalHTML;
1837
1838
// We need this to be in the document since we'll dispatch events on it.
1839
document.body.appendChild(container);
1840
1841
- let a = container.getElementsByTagName('a')[0];
1841
+ const a = container.getElementsByTagName('a')[0];
1842
1843
// On the client we don't have all data yet but we want to start
1844
// hydrating anyway.
1845
suspend = true;
1846
- let root = ReactDOM.createRoot(container, {hydrate: true});
1846
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1847
root.render(<App />);
1848
Scheduler.unstable_flushAll();
1849
jest.runAllTimers();
@@ -1872,7 +1872,7 @@ describe('ReactDOMServerPartialHydration', () => {
1872
it('does not invoke an event on a hydrated EventResponder until it commits', async () => {
1873
let suspend = false;
1874
let resolve;
1875
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1875
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1876
1877
function Sibling({text}) {
1878
if (suspend) {
@@ -1892,7 +1892,7 @@ describe('ReactDOMServerPartialHydration', () => {
1892
);
1893
1894
function Button() {
1895
- let listener = React.DEPRECATED_useResponder(TestResponder, {});
1895
+ const listener = React.DEPRECATED_useResponder(TestResponder, {});
1896
return <a DEPRECATED_flareListeners={listener}>Click me</a>;
1897
}
1898
@@ -1908,19 +1908,19 @@ describe('ReactDOMServerPartialHydration', () => {
1908
}
1909
1910
suspend = false;
1911
- let finalHTML = ReactDOMServer.renderToString(<App />);
1912
- let container = document.createElement('div');
1911
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1912
+ const container = document.createElement('div');
1913
container.innerHTML = finalHTML;
1914
1915
// We need this to be in the document since we'll dispatch events on it.
1916
document.body.appendChild(container);
1917
1918
- let a = container.getElementsByTagName('a')[0];
1918
+ const a = container.getElementsByTagName('a')[0];
1919
1920
// On the client we don't have all data yet but we want to start
1921
// hydrating anyway.
1922
suspend = true;
1923
- let root = ReactDOM.createRoot(container, {hydrate: true});
1923
+ const root = ReactDOM.createRoot(container, {hydrate: true});
1924
root.render(<App />);
1925
1926
// We'll do one click before hydrating.
@@ -1953,7 +1953,7 @@ describe('ReactDOMServerPartialHydration', () => {
1953
it('invokes discrete events on nested suspense boundaries in a root (legacy system)', async () => {
1954
let suspend = false;
1955
let resolve;
1956
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
1956
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
1957
1958
let clicks = 0;
1959
@@ -1989,19 +1989,19 @@ describe('ReactDOMServerPartialHydration', () => {
1989
}
1990
1991
suspend = false;
1992
- let finalHTML = ReactDOMServer.renderToString(<App />);
1993
- let container = document.createElement('div');
1992
+ const finalHTML = ReactDOMServer.renderToString(<App />);
1993
+ const container = document.createElement('div');
1994
container.innerHTML = finalHTML;
1995
1996
// We need this to be in the document since we'll dispatch events on it.
1997
document.body.appendChild(container);
1998
1999
- let a = container.getElementsByTagName('a')[0];
1999
+ const a = container.getElementsByTagName('a')[0];
2000
2001
// On the client we don't have all data yet but we want to start
2002
// hydrating anyway.
2003
suspend = true;
2004
- let root = ReactDOM.createRoot(container, {hydrate: true});
2004
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2005
root.render(<App />);
2006
2007
// We'll do one click before hydrating.
@@ -2032,7 +2032,7 @@ describe('ReactDOMServerPartialHydration', () => {
2032
it('invokes discrete events on nested suspense boundaries in a root (responder system)', async () => {
2033
let suspend = false;
2034
let resolve;
2035
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
2035
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
2036
2037
const onEvent = jest.fn();
2038
const TestResponder = React.DEPRECATED_createResponder(
@@ -2044,7 +2044,7 @@ describe('ReactDOMServerPartialHydration', () => {
2044
);
2045
2046
function Button() {
2047
- let listener = React.DEPRECATED_useResponder(TestResponder, {});
2047
+ const listener = React.DEPRECATED_useResponder(TestResponder, {});
2048
return <a DEPRECATED_flareListeners={listener}>Click me</a>;
2049
}
2050
@@ -2069,19 +2069,19 @@ describe('ReactDOMServerPartialHydration', () => {
2069
}
2070
2071
suspend = false;
2072
- let finalHTML = ReactDOMServer.renderToString(<App />);
2073
- let container = document.createElement('div');
2072
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2073
+ const container = document.createElement('div');
2074
container.innerHTML = finalHTML;
2075
2076
// We need this to be in the document since we'll dispatch events on it.
2077
document.body.appendChild(container);
2078
2079
- let a = container.getElementsByTagName('a')[0];
2079
+ const a = container.getElementsByTagName('a')[0];
2080
2081
// On the client we don't have all data yet but we want to start
2082
// hydrating anyway.
2083
suspend = true;
2084
- let root = ReactDOM.createRoot(container, {hydrate: true});
2084
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2085
root.render(<App />);
2086
2087
// We'll do one click before hydrating.
@@ -2114,7 +2114,7 @@ describe('ReactDOMServerPartialHydration', () => {
2114
it('does not invoke the parent of dehydrated boundary event', async () => {
2115
let suspend = false;
2116
let resolve;
2117
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
2117
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
2118
2119
let clicksOnParent = 0;
2120
let clicksOnChild = 0;
@@ -2148,19 +2148,19 @@ describe('ReactDOMServerPartialHydration', () => {
2148
}
2149
2150
suspend = false;
2151
- let finalHTML = ReactDOMServer.renderToString(<App />);
2152
- let container = document.createElement('div');
2151
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2152
+ const container = document.createElement('div');
2153
container.innerHTML = finalHTML;
2154
2155
// We need this to be in the document since we'll dispatch events on it.
2156
document.body.appendChild(container);
2157
2158
- let span = container.getElementsByTagName('span')[0];
2158
+ const span = container.getElementsByTagName('span')[0];
2159
2160
// On the client we don't have all data yet but we want to start
2161
// hydrating anyway.
2162
suspend = true;
2163
- let root = ReactDOM.createRoot(container, {hydrate: true});
2163
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2164
root.render(<App />);
2165
Scheduler.unstable_flushAll();
2166
jest.runAllTimers();
@@ -2188,10 +2188,10 @@ describe('ReactDOMServerPartialHydration', () => {
2188
it('does not invoke an event on a parent tree when a subtree is dehydrated', async () => {
2189
let suspend = false;
2190
let resolve;
2191
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
2191
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
2192
2193
let clicks = 0;
2194
- let childSlotRef = React.createRef();
2194
+ const childSlotRef = React.createRef();
2195
2196
function Parent() {
2197
return <div onClick={() => clicks++} ref={childSlotRef} />;
@@ -2215,17 +2215,17 @@ describe('ReactDOMServerPartialHydration', () => {
2215
}
2216
2217
suspend = false;
2218
- let finalHTML = ReactDOMServer.renderToString(<App />);
2218
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2219
2220
- let parentContainer = document.createElement('div');
2221
- let childContainer = document.createElement('div');
2220
+ const parentContainer = document.createElement('div');
2221
+ const childContainer = document.createElement('div');
2222
2223
// We need this to be in the document since we'll dispatch events on it.
2224
document.body.appendChild(parentContainer);
2225
2226
// We're going to use a different root as a parent.
2227
// This lets us detect whether an event goes through React's event system.
2228
- let parentRoot = ReactDOM.createRoot(parentContainer);
2228
+ const parentRoot = ReactDOM.createRoot(parentContainer);
2229
parentRoot.render(<Parent />);
2230
Scheduler.unstable_flushAll();
2231
@@ -2233,12 +2233,12 @@ describe('ReactDOMServerPartialHydration', () => {
2233
2234
childContainer.innerHTML = finalHTML;
2235
2236
- let a = childContainer.getElementsByTagName('a')[0];
2236
+ const a = childContainer.getElementsByTagName('a')[0];
2237
2238
suspend = true;
2239
2240
// Hydrate asynchronously.
2241
- let root = ReactDOM.createRoot(childContainer, {hydrate: true});
2241
+ const root = ReactDOM.createRoot(childContainer, {hydrate: true});
2242
root.render(<App />);
2243
jest.runAllTimers();
2244
Scheduler.unstable_flushAll();
@@ -2265,10 +2265,10 @@ describe('ReactDOMServerPartialHydration', () => {
2265
it('blocks only on the last continuous event (legacy system)', async () => {
2266
let suspend1 = false;
2267
let resolve1;
2268
- let promise1 = new Promise(resolvePromise => (resolve1 = resolvePromise));
2268
+ const promise1 = new Promise(resolvePromise => (resolve1 = resolvePromise));
2269
let suspend2 = false;
2270
let resolve2;
2271
- let promise2 = new Promise(resolvePromise => (resolve2 = resolvePromise));
2271
+ const promise2 = new Promise(resolvePromise => (resolve2 = resolvePromise));
2272
2273
function First({text}) {
2274
if (suspend1) {
@@ -2286,7 +2286,7 @@ describe('ReactDOMServerPartialHydration', () => {
2286
}
2287
}
2288
2289
- let ops = [];
2289
+ const ops = [];
2290
2291
function App() {
2292
return (
@@ -2311,16 +2311,16 @@ describe('ReactDOMServerPartialHydration', () => {
2311
);
2312
}
2313
2314
- let finalHTML = ReactDOMServer.renderToString(<App />);
2315
- let container = document.createElement('div');
2314
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2315
+ const container = document.createElement('div');
2316
container.innerHTML = finalHTML;
2317
2318
// We need this to be in the document since we'll dispatch events on it.
2319
document.body.appendChild(container);
2320
2321
- let appDiv = container.getElementsByTagName('div')[0];
2322
- let firstSpan = appDiv.getElementsByTagName('span')[0];
2323
- let secondSpan = appDiv.getElementsByTagName('span')[1];
2321
+ const appDiv = container.getElementsByTagName('div')[0];
2322
+ const firstSpan = appDiv.getElementsByTagName('span')[0];
2323
+ const secondSpan = appDiv.getElementsByTagName('span')[1];
2324
expect(firstSpan.textContent).toBe('');
2325
expect(secondSpan.textContent).toBe('World');
2326
@@ -2328,7 +2328,7 @@ describe('ReactDOMServerPartialHydration', () => {
2328
// hydrating anyway.
2329
suspend1 = true;
2330
suspend2 = true;
2331
- let root = ReactDOM.createRoot(container, {hydrate: true});
2331
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2332
root.render(<App />);
2333
2334
Scheduler.unstable_flushAll();
@@ -2372,10 +2372,14 @@ describe('ReactDOMServerPartialHydration', () => {
2372
2373
let suspend1 = false;
2374
let resolve1;
2375
- let promise1 = new Promise(resolvePromise => (resolve1 = resolvePromise));
2375
+ const promise1 = new Promise(
2376
+ resolvePromise => (resolve1 = resolvePromise),
2377
+ );
2378
let suspend2 = false;
2379
let resolve2;
2378
- let promise2 = new Promise(resolvePromise => (resolve2 = resolvePromise));
2380
+ const promise2 = new Promise(
2381
+ resolvePromise => (resolve2 = resolvePromise),
2382
+ );
2383
2384
function First({text}) {
2385
if (suspend1) {
@@ -2393,7 +2397,7 @@ describe('ReactDOMServerPartialHydration', () => {
2397
}
2398
}
2399
2396
- let ops = [];
2400
+ const ops = [];
2401
2402
function App() {
2403
const listener1 = useHover({
@@ -2429,16 +2433,16 @@ describe('ReactDOMServerPartialHydration', () => {
2433
);
2434
}
2435
2432
- let finalHTML = ReactDOMServer.renderToString(<App />);
2433
- let container = document.createElement('div');
2436
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2437
+ const container = document.createElement('div');
2438
container.innerHTML = finalHTML;
2439
2440
// We need this to be in the document since we'll dispatch events on it.
2441
document.body.appendChild(container);
2442
2439
- let appDiv = container.getElementsByTagName('div')[0];
2440
- let firstSpan = appDiv.getElementsByTagName('span')[0];
2441
- let secondSpan = appDiv.getElementsByTagName('span')[1];
2443
+ const appDiv = container.getElementsByTagName('div')[0];
2444
+ const firstSpan = appDiv.getElementsByTagName('span')[0];
2445
+ const secondSpan = appDiv.getElementsByTagName('span')[1];
2446
expect(firstSpan.textContent).toBe('');
2447
expect(secondSpan.textContent).toBe('World');
2448
@@ -2446,7 +2450,7 @@ describe('ReactDOMServerPartialHydration', () => {
2450
// hydrating anyway.
2451
suspend1 = true;
2452
suspend2 = true;
2449
- let root = ReactDOM.createRoot(container, {hydrate: true});
2453
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2454
root.render(<App />);
2455
2456
Scheduler.unstable_flushAll();
@@ -2488,8 +2492,8 @@ describe('ReactDOMServerPartialHydration', () => {
2492
it('finishes normal pri work before continuing to hydrate a retry', async () => {
2493
let suspend = false;
2494
let resolve;
2491
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
2492
- let ref = React.createRef();
2495
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
2496
+ const ref = React.createRef();
2497
2498
function Child() {
2499
if (suspend) {
@@ -2527,14 +2531,14 @@ describe('ReactDOMServerPartialHydration', () => {
2531
}
2532
2533
suspend = false;
2530
- let finalHTML = ReactDOMServer.renderToString(<App />);
2534
+ const finalHTML = ReactDOMServer.renderToString(<App />);
2535
expect(Scheduler).toHaveYielded(['Child']);
2536
2533
- let container = document.createElement('div');
2537
+ const container = document.createElement('div');
2538
container.innerHTML = finalHTML;
2539
2540
suspend = true;
2537
- let root = ReactDOM.createRoot(container, {hydrate: true});
2541
+ const root = ReactDOM.createRoot(container, {hydrate: true});
2542
root.render(<App showSibling={false} />);
2543
expect(Scheduler).toFlushAndYield([]);
2544
packages/react-dom/src/__tests__/ReactDOMServerSelectiveHydration-test.internal.js
+68
-68
@@ -95,7 +95,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
95
beforeEach(() => {
96
jest.resetModuleRegistry();
97
98
- let ReactFeatureFlags = require('shared/ReactFeatureFlags');
98
+ const ReactFeatureFlags = require('shared/ReactFeatureFlags');
99
ReactFeatureFlags.enableDeprecatedFlareAPI = true;
100
ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false;
101
@@ -140,19 +140,19 @@ describe('ReactDOMServerSelectiveHydration', () => {
140
);
141
}
142
143
- let finalHTML = ReactDOMServer.renderToString(<App />);
143
+ const finalHTML = ReactDOMServer.renderToString(<App />);
144
145
expect(Scheduler).toHaveYielded(['App', 'A', 'B']);
146
147
- let container = document.createElement('div');
147
+ const container = document.createElement('div');
148
// We need this to be in the document since we'll dispatch events on it.
149
document.body.appendChild(container);
150
151
container.innerHTML = finalHTML;
152
153
- let span = container.getElementsByTagName('span')[1];
153
+ const span = container.getElementsByTagName('span')[1];
154
155
- let root = ReactDOM.createRoot(container, {hydrate: true});
155
+ const root = ReactDOM.createRoot(container, {hydrate: true});
156
root.render(<App />);
157
158
// Nothing has been hydrated so far.
@@ -160,7 +160,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
160
161
// This should synchronously hydrate the root App and the second suspense
162
// boundary.
163
- let result = dispatchClickEvent(span);
163
+ const result = dispatchClickEvent(span);
164
165
// The event should have been canceled because we called preventDefault.
166
expect(result).toBe(false);
@@ -177,7 +177,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
177
it('hydrates at higher pri if sync did not work first time', async () => {
178
let suspend = false;
179
let resolve;
180
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
180
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
181
182
function Child({text}) {
183
if ((text === 'A' || text === 'D') && suspend) {
@@ -215,30 +215,30 @@ describe('ReactDOMServerSelectiveHydration', () => {
215
);
216
}
217
218
- let finalHTML = ReactDOMServer.renderToString(<App />);
218
+ const finalHTML = ReactDOMServer.renderToString(<App />);
219
220
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
221
222
- let container = document.createElement('div');
222
+ const container = document.createElement('div');
223
// We need this to be in the document since we'll dispatch events on it.
224
document.body.appendChild(container);
225
226
container.innerHTML = finalHTML;
227
228
- let spanD = container.getElementsByTagName('span')[3];
228
+ const spanD = container.getElementsByTagName('span')[3];
229
230
suspend = true;
231
232
// A and D will be suspended. We'll click on D which should take
233
// priority, after we unsuspend.
234
- let root = ReactDOM.createRoot(container, {hydrate: true});
234
+ const root = ReactDOM.createRoot(container, {hydrate: true});
235
root.render(<App />);
236
237
// Nothing has been hydrated so far.
238
expect(Scheduler).toHaveYielded([]);
239
240
// This click target cannot be hydrated yet because it's suspended.
241
- let result = dispatchClickEvent(spanD);
241
+ const result = dispatchClickEvent(spanD);
242
243
expect(Scheduler).toHaveYielded(['App']);
244
@@ -261,7 +261,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
261
it('hydrates at higher pri for secondary discrete events', async () => {
262
let suspend = false;
263
let resolve;
264
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
264
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
265
266
function Child({text}) {
267
if ((text === 'A' || text === 'D') && suspend) {
@@ -299,25 +299,25 @@ describe('ReactDOMServerSelectiveHydration', () => {
299
);
300
}
301
302
- let finalHTML = ReactDOMServer.renderToString(<App />);
302
+ const finalHTML = ReactDOMServer.renderToString(<App />);
303
304
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
305
306
- let container = document.createElement('div');
306
+ const container = document.createElement('div');
307
// We need this to be in the document since we'll dispatch events on it.
308
document.body.appendChild(container);
309
310
container.innerHTML = finalHTML;
311
312
- let spanA = container.getElementsByTagName('span')[0];
313
- let spanC = container.getElementsByTagName('span')[2];
314
- let spanD = container.getElementsByTagName('span')[3];
312
+ const spanA = container.getElementsByTagName('span')[0];
313
+ const spanC = container.getElementsByTagName('span')[2];
314
+ const spanD = container.getElementsByTagName('span')[3];
315
316
suspend = true;
317
318
// A and D will be suspended. We'll click on D which should take
319
// priority, after we unsuspend.
320
- let root = ReactDOM.createRoot(container, {hydrate: true});
320
+ const root = ReactDOM.createRoot(container, {hydrate: true});
321
root.render(<App />);
322
323
// Nothing has been hydrated so far.
@@ -352,7 +352,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
352
353
if (__EXPERIMENTAL__) {
354
it('hydrates the target boundary synchronously during a click (flare)', async () => {
355
- let usePress = require('react-interactions/events/press').usePress;
355
+ const usePress = require('react-interactions/events/press').usePress;
356
357
function Child({text}) {
358
Scheduler.unstable_yieldValue(text);
@@ -379,29 +379,29 @@ describe('ReactDOMServerSelectiveHydration', () => {
379
);
380
}
381
382
- let finalHTML = ReactDOMServer.renderToString(<App />);
382
+ const finalHTML = ReactDOMServer.renderToString(<App />);
383
384
expect(Scheduler).toHaveYielded(['App', 'A', 'B']);
385
386
- let container = document.createElement('div');
386
+ const container = document.createElement('div');
387
// We need this to be in the document since we'll dispatch events on it.
388
document.body.appendChild(container);
389
390
container.innerHTML = finalHTML;
391
392
- let root = ReactDOM.createRoot(container, {hydrate: true});
392
+ const root = ReactDOM.createRoot(container, {hydrate: true});
393
root.render(<App />);
394
395
// Nothing has been hydrated so far.
396
expect(Scheduler).toHaveYielded([]);
397
398
- let span = container.getElementsByTagName('span')[1];
398
+ const span = container.getElementsByTagName('span')[1];
399
400
- let target = createEventTarget(span);
400
+ const target = createEventTarget(span);
401
402
// This should synchronously hydrate the root App and the second suspense
403
// boundary.
404
- let preventDefault = jest.fn();
404
+ const preventDefault = jest.fn();
405
target.virtualclick({preventDefault});
406
407
// The event should have been canceled because we called preventDefault.
@@ -417,10 +417,10 @@ describe('ReactDOMServerSelectiveHydration', () => {
417
});
418
419
it('hydrates at higher pri if sync did not work first time (flare)', async () => {
420
- let usePress = require('react-interactions/events/press').usePress;
420
+ const usePress = require('react-interactions/events/press').usePress;
421
let suspend = false;
422
let resolve;
423
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
423
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
424
425
function Child({text}) {
426
if ((text === 'A' || text === 'D') && suspend) {
@@ -456,30 +456,30 @@ describe('ReactDOMServerSelectiveHydration', () => {
456
);
457
}
458
459
- let finalHTML = ReactDOMServer.renderToString(<App />);
459
+ const finalHTML = ReactDOMServer.renderToString(<App />);
460
461
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
462
463
- let container = document.createElement('div');
463
+ const container = document.createElement('div');
464
// We need this to be in the document since we'll dispatch events on it.
465
document.body.appendChild(container);
466
467
container.innerHTML = finalHTML;
468
469
- let spanD = container.getElementsByTagName('span')[3];
469
+ const spanD = container.getElementsByTagName('span')[3];
470
471
suspend = true;
472
473
// A and D will be suspended. We'll click on D which should take
474
// priority, after we unsuspend.
475
- let root = ReactDOM.createRoot(container, {hydrate: true});
475
+ const root = ReactDOM.createRoot(container, {hydrate: true});
476
root.render(<App />);
477
478
// Nothing has been hydrated so far.
479
expect(Scheduler).toHaveYielded([]);
480
481
// This click target cannot be hydrated yet because it's suspended.
482
- let result = dispatchClickEvent(spanD);
482
+ const result = dispatchClickEvent(spanD);
483
484
expect(Scheduler).toHaveYielded(['App']);
485
@@ -500,10 +500,10 @@ describe('ReactDOMServerSelectiveHydration', () => {
500
});
501
502
it('hydrates at higher pri for secondary discrete events (flare)', async () => {
503
- let usePress = require('react-interactions/events/press').usePress;
503
+ const usePress = require('react-interactions/events/press').usePress;
504
let suspend = false;
505
let resolve;
506
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
506
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
507
508
function Child({text}) {
509
if ((text === 'A' || text === 'D') && suspend) {
@@ -539,25 +539,25 @@ describe('ReactDOMServerSelectiveHydration', () => {
539
);
540
}
541
542
- let finalHTML = ReactDOMServer.renderToString(<App />);
542
+ const finalHTML = ReactDOMServer.renderToString(<App />);
543
544
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
545
546
- let container = document.createElement('div');
546
+ const container = document.createElement('div');
547
// We need this to be in the document since we'll dispatch events on it.
548
document.body.appendChild(container);
549
550
container.innerHTML = finalHTML;
551
552
- let spanA = container.getElementsByTagName('span')[0];
553
- let spanC = container.getElementsByTagName('span')[2];
554
- let spanD = container.getElementsByTagName('span')[3];
552
+ const spanA = container.getElementsByTagName('span')[0];
553
+ const spanC = container.getElementsByTagName('span')[2];
554
+ const spanD = container.getElementsByTagName('span')[3];
555
556
suspend = true;
557
558
// A and D will be suspended. We'll click on D which should take
559
// priority, after we unsuspend.
560
- let root = ReactDOM.createRoot(container, {hydrate: true});
560
+ const root = ReactDOM.createRoot(container, {hydrate: true});
561
root.render(<App />);
562
563
// Nothing has been hydrated so far.
@@ -594,7 +594,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
594
it('hydrates the hovered targets as higher priority for continuous events', async () => {
595
let suspend = false;
596
let resolve;
597
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
597
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
598
599
function Child({text}) {
600
if ((text === 'A' || text === 'D') && suspend) {
@@ -636,25 +636,25 @@ describe('ReactDOMServerSelectiveHydration', () => {
636
);
637
}
638
639
- let finalHTML = ReactDOMServer.renderToString(<App />);
639
+ const finalHTML = ReactDOMServer.renderToString(<App />);
640
641
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
642
643
- let container = document.createElement('div');
643
+ const container = document.createElement('div');
644
// We need this to be in the document since we'll dispatch events on it.
645
document.body.appendChild(container);
646
647
container.innerHTML = finalHTML;
648
649
- let spanB = container.getElementsByTagName('span')[1];
650
- let spanC = container.getElementsByTagName('span')[2];
651
- let spanD = container.getElementsByTagName('span')[3];
649
+ const spanB = container.getElementsByTagName('span')[1];
650
+ const spanC = container.getElementsByTagName('span')[2];
651
+ const spanD = container.getElementsByTagName('span')[3];
652
653
suspend = true;
654
655
// A and D will be suspended. We'll click on D which should take
656
// priority, after we unsuspend.
657
- let root = ReactDOM.createRoot(container, {hydrate: true});
657
+ const root = ReactDOM.createRoot(container, {hydrate: true});
658
root.render(<App />);
659
660
// Nothing has been hydrated so far.
@@ -694,7 +694,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
694
it('hydrates the last target path first for continuous events', async () => {
695
let suspend = false;
696
let resolve;
697
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
697
+ const promise = new Promise(resolvePromise => (resolve = resolvePromise));
698
699
function Child({text}) {
700
if ((text === 'A' || text === 'D') && suspend) {
@@ -734,25 +734,25 @@ describe('ReactDOMServerSelectiveHydration', () => {
734
);
735
}
736
737
- let finalHTML = ReactDOMServer.renderToString(<App />);
737
+ const finalHTML = ReactDOMServer.renderToString(<App />);
738
739
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C', 'D']);
740
741
- let container = document.createElement('div');
741
+ const container = document.createElement('div');
742
// We need this to be in the document since we'll dispatch events on it.
743
document.body.appendChild(container);
744
745
container.innerHTML = finalHTML;
746
747
- let spanB = container.getElementsByTagName('span')[1];
748
- let spanC = container.getElementsByTagName('span')[2];
749
- let spanD = container.getElementsByTagName('span')[3];
747
+ const spanB = container.getElementsByTagName('span')[1];
748
+ const spanC = container.getElementsByTagName('span')[2];
749
+ const spanD = container.getElementsByTagName('span')[3];
750
751
suspend = true;
752
753
// A and D will be suspended. We'll click on D which should take
754
// priority, after we unsuspend.
755
- let root = ReactDOM.createRoot(container, {hydrate: true});
755
+ const root = ReactDOM.createRoot(container, {hydrate: true});
756
root.render(<App />);
757
758
// Nothing has been hydrated so far.
@@ -799,17 +799,17 @@ describe('ReactDOMServerSelectiveHydration', () => {
799
);
800
}
801
802
- let finalHTML = ReactDOMServer.renderToString(<App />);
802
+ const finalHTML = ReactDOMServer.renderToString(<App />);
803
804
expect(Scheduler).toHaveYielded(['App', 'A', 'B', 'C']);
805
806
- let container = document.createElement('div');
806
+ const container = document.createElement('div');
807
container.innerHTML = finalHTML;
808
809
- let spanB = container.getElementsByTagName('span')[1];
810
- let spanC = container.getElementsByTagName('span')[2];
809
+ const spanB = container.getElementsByTagName('span')[1];
810
+ const spanC = container.getElementsByTagName('span')[2];
811
812
- let root = ReactDOM.createRoot(container, {hydrate: true});
812
+ const root = ReactDOM.createRoot(container, {hydrate: true});
813
root.render(<App />);
814
815
// Nothing has been hydrated so far.
@@ -829,7 +829,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
829
Scheduler.unstable_yieldValue(text);
830
return <span>{text}</span>;
831
}
832
- let ChildWithBoundary = React.memo(function({text}) {
832
+ const ChildWithBoundary = React.memo(function({text}) {
833
return (
834
<Suspense fallback="Loading...">
835
<Child text={text} />
@@ -852,21 +852,21 @@ describe('ReactDOMServerSelectiveHydration', () => {
852
);
853
}
854
855
- let finalHTML = ReactDOMServer.renderToString(<App a="A" />);
855
+ const finalHTML = ReactDOMServer.renderToString(<App a="A" />);
856
857
expect(Scheduler).toHaveYielded(['App', 'A', 'a', 'B', 'b', 'C', 'c']);
858
859
- let container = document.createElement('div');
859
+ const container = document.createElement('div');
860
container.innerHTML = finalHTML;
861
862
// We need this to be in the document since we'll dispatch events on it.
863
document.body.appendChild(container);
864
865
- let spanA = container.getElementsByTagName('span')[0];
866
- let spanB = container.getElementsByTagName('span')[2];
867
- let spanC = container.getElementsByTagName('span')[4];
865
+ const spanA = container.getElementsByTagName('span')[0];
866
+ const spanB = container.getElementsByTagName('span')[2];
867
+ const spanC = container.getElementsByTagName('span')[4];
868
869
- let root = ReactDOM.createRoot(container, {hydrate: true});
869
+ const root = ReactDOM.createRoot(container, {hydrate: true});
870
ReactTestUtils.act(() => {
871
root.render(<App a="A" />);
872
@@ -923,7 +923,7 @@ describe('ReactDOMServerSelectiveHydration', () => {
923
]);
924
});
925
926
- let spanA2 = container.getElementsByTagName('span')[0];
926
+ const spanA2 = container.getElementsByTagName('span')[0];
927
// This is supposed to have been hydrated, not replaced.
928
expect(spanA).toBe(spanA2);
929
packages/react-dom/src/__tests__/ReactDOMSuspensePlaceholder-test.js
+2
-2
@@ -72,7 +72,7 @@ describe('ReactDOMSuspensePlaceholder', () => {
72
}
73
74
it('hides and unhides timed out DOM elements', async () => {
75
- let divs = [
75
+ const divs = [
76
React.createRef(null),
77
React.createRef(null),
78
React.createRef(null),
@@ -244,7 +244,7 @@ describe('ReactDOMSuspensePlaceholder', () => {
244
let suspendOnce = Promise.resolve();
245
function Suspend() {
246
if (suspendOnce) {
247
- let promise = suspendOnce;
247
+ const promise = suspendOnce;
248
suspendOnce = null;
249
throw promise;
250
}
packages/react-dom/src/__tests__/ReactDOMTextComponent-test.js
+8
-8
@@ -41,8 +41,8 @@ describe('ReactDOMTextComponent', () => {
41
);
42
let nodes = filterOutComments(inst.childNodes);
43
44
- let foo = nodes[1];
45
- let bar = nodes[2];
44
+ const foo = nodes[1];
45
+ const bar = nodes[2];
46
expect(foo.data).toBe('foo');
47
expect(bar.data).toBe('bar');
48
@@ -75,7 +75,7 @@ describe('ReactDOMTextComponent', () => {
75
);
76
77
let childNodes = filterOutComments(inst.childNodes);
78
- let childDiv = childNodes[1];
78
+ const childDiv = childNodes[1];
79
80
inst = ReactDOM.render(
81
<div>
@@ -200,8 +200,8 @@ describe('ReactDOMTextComponent', () => {
200
el,
201
);
202
203
- let childNodes = filterOutComments(inst.childNodes);
204
- let textNode = childNodes[1];
203
+ const childNodes = filterOutComments(inst.childNodes);
204
+ const textNode = childNodes[1];
205
textNode.textContent = 'foo';
206
inst.insertBefore(
207
document.createTextNode('bar'),
@@ -237,8 +237,8 @@ describe('ReactDOMTextComponent', () => {
237
el,
238
);
239
240
- let childNodes = filterOutComments(inst.childNodes);
241
- let textNode = childNodes[3];
240
+ const childNodes = filterOutComments(inst.childNodes);
241
+ const textNode = childNodes[3];
242
textNode.textContent = 'foo';
243
inst.insertBefore(
244
document.createTextNode('bar'),
@@ -248,7 +248,7 @@ describe('ReactDOMTextComponent', () => {
248
document.createTextNode('baz'),
249
childNodes[3].nextSibling,
250
);
251
- let secondTextNode = childNodes[5];
251
+ const secondTextNode = childNodes[5];
252
secondTextNode.textContent = 'bar';
253
inst.insertBefore(
254
document.createTextNode('foo'),
packages/react-dom/src/__tests__/ReactErrorBoundaries-test.internal.js
+4
-4
@@ -1043,8 +1043,8 @@ describe('ReactErrorBoundaries', () => {
1043
});
1044
1045
it('resets object refs if mounting aborts', () => {
1046
- let childRef = React.createRef();
1047
- let errorMessageRef = React.createRef();
1046
+ const childRef = React.createRef();
1047
+ const errorMessageRef = React.createRef();
1048
1049
const container = document.createElement('div');
1050
ReactDOM.render(
@@ -2073,7 +2073,7 @@ describe('ReactErrorBoundaries', () => {
2073
let err2;
2074
2075
try {
2076
- let container = document.createElement('div');
2076
+ const container = document.createElement('div');
2077
expect(() => ReactDOM.render(<X />, container)).toErrorDev(
2078
'React.createElement: type is invalid -- expected a string ' +
2079
'(for built-in components) or a class/function ' +
@@ -2083,7 +2083,7 @@ describe('ReactErrorBoundaries', () => {
2083
err1 = err;
2084
}
2085
try {
2086
- let container = document.createElement('div');
2086
+ const container = document.createElement('div');
2087
expect(() => ReactDOM.render(<Y />, container)).toErrorDev(
2088
'React.createElement: type is invalid -- expected a string ' +
2089
'(for built-in components) or a class/function ' +
packages/react-dom/src/__tests__/ReactErrorLoggingRecovery-test.js
+1
-1
@@ -39,7 +39,7 @@ class Bad extends React.Component {
39
}
40
41
describe('ReactErrorLoggingRecovery', () => {
42
- let originalConsoleError = console.error;
42
+ const originalConsoleError = console.error;
43
44
beforeEach(() => {
45
console.error = error => {
packages/react-dom/src/__tests__/ReactLegacyContextDisabled-test.internal.js
+3
-3
@@ -51,7 +51,7 @@ describe('ReactLegacyContextDisabled', () => {
51
}
52
}
53
54
- let lifecycleContextLog = [];
54
+ const lifecycleContextLog = [];
55
class LegacyClsConsumer extends React.Component {
56
static contextTypes = {
57
foo() {},
@@ -146,7 +146,7 @@ describe('ReactLegacyContextDisabled', () => {
146
});
147
148
it('renders a tree with modern context', () => {
149
- let Ctx = React.createContext();
149
+ const Ctx = React.createContext();
150
151
class Provider extends React.Component {
152
render() {
@@ -164,7 +164,7 @@ describe('ReactLegacyContextDisabled', () => {
164
}
165
}
166
167
- let lifecycleContextLog = [];
167
+ const lifecycleContextLog = [];
168
class ContextTypeConsumer extends React.Component {
169
static contextType = Ctx;
170
shouldComponentUpdate(nextProps, nextState, nextContext) {
packages/react-dom/src/__tests__/ReactLegacyErrorBoundaries-test.internal.js
+4
-4
@@ -1093,8 +1093,8 @@ describe('ReactLegacyErrorBoundaries', () => {
1093
});
1094
1095
it('resets object refs if mounting aborts', () => {
1096
- let childRef = React.createRef();
1097
- let errorMessageRef = React.createRef();
1096
+ const childRef = React.createRef();
1097
+ const errorMessageRef = React.createRef();
1098
1099
const container = document.createElement('div');
1100
ReactDOM.render(
@@ -2080,7 +2080,7 @@ describe('ReactLegacyErrorBoundaries', () => {
2080
let err2;
2081
2082
try {
2083
- let container = document.createElement('div');
2083
+ const container = document.createElement('div');
2084
expect(() => ReactDOM.render(<X />, container)).toErrorDev(
2085
'React.createElement: type is invalid -- expected a string ' +
2086
'(for built-in components) or a class/function ' +
@@ -2090,7 +2090,7 @@ describe('ReactLegacyErrorBoundaries', () => {
2090
err1 = err;
2091
}
2092
try {
2093
- let container = document.createElement('div');
2093
+ const container = document.createElement('div');
2094
expect(() => ReactDOM.render(<Y />, container)).toErrorDev(
2095
'React.createElement: type is invalid -- expected a string ' +
2096
'(for built-in components) or a class/function ' +
packages/react-dom/src/__tests__/ReactServerRendering-test.js
+1
-1
@@ -14,7 +14,7 @@ let React;
14
let ReactDOMServer;
15
let PropTypes;
16
let ReactCurrentDispatcher;
17
-let enableSuspenseServerRenderer = require('shared/ReactFeatureFlags')
17
+const enableSuspenseServerRenderer = require('shared/ReactFeatureFlags')
18
.enableSuspenseServerRenderer;
19
20
function normalizeCodeLocInfo(str) {
packages/react-dom/src/__tests__/ReactServerRenderingHydration-test.js
+7
-7
@@ -494,10 +494,10 @@ describe('ReactDOMServerHydration', () => {
494
it.experimental(
495
'does not re-enter hydration after committing the first one',
496
() => {
497
- let finalHTML = ReactDOMServer.renderToString(<div />);
498
- let container = document.createElement('div');
497
+ const finalHTML = ReactDOMServer.renderToString(<div />);
498
+ const container = document.createElement('div');
499
container.innerHTML = finalHTML;
500
- let root = ReactDOM.createRoot(container, {hydrate: true});
500
+ const root = ReactDOM.createRoot(container, {hydrate: true});
501
root.render(<div />);
502
Scheduler.unstable_flushAll();
503
root.render(null);
@@ -512,8 +512,8 @@ describe('ReactDOMServerHydration', () => {
512
it('Suspense + hydration in legacy mode', () => {
513
const element = document.createElement('div');
514
element.innerHTML = '<div>Hello World</div>';
515
- let div = element.firstChild;
516
- let ref = React.createRef();
515
+ const div = element.firstChild;
516
+ const ref = React.createRef();
517
expect(() =>
518
ReactDOM.hydrate(
519
<React.Suspense fallback={null}>
@@ -536,8 +536,8 @@ describe('ReactDOMServerHydration', () => {
536
it('Suspense + hydration in legacy mode with no fallback', () => {
537
const element = document.createElement('div');
538
element.innerHTML = '<div>Hello World</div>';
539
- let div = element.firstChild;
540
- let ref = React.createRef();
539
+ const div = element.firstChild;
540
+ const ref = React.createRef();
541
ReactDOM.hydrate(
542
<React.Suspense>
543
<div ref={ref}>Hello World</div>
packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js
+12
-12
@@ -186,7 +186,7 @@ function runActTests(label, render, unmount, rerender) {
186
187
it('flushes effects on every call', () => {
188
function App() {
189
- let [ctr, setCtr] = React.useState(0);
189
+ const [ctr, setCtr] = React.useState(0);
190
React.useEffect(() => {
191
Scheduler.unstable_yieldValue(ctr);
192
});
@@ -222,7 +222,7 @@ function runActTests(label, render, unmount, rerender) {
222
223
it("should keep flushing effects until the're done", () => {
224
function App() {
225
- let [ctr, setCtr] = React.useState(0);
225
+ const [ctr, setCtr] = React.useState(0);
226
React.useEffect(() => {
227
if (ctr < 5) {
228
setCtr(x => x + 1);
@@ -261,7 +261,7 @@ function runActTests(label, render, unmount, rerender) {
261
it('warns if a setState is called outside of act(...)', () => {
262
let setValue = null;
263
function App() {
264
- let [value, _setValue] = React.useState(0);
264
+ const [value, _setValue] = React.useState(0);
265
setValue = _setValue;
266
return value;
267
}
@@ -286,9 +286,9 @@ function runActTests(label, render, unmount, rerender) {
286
287
it('lets a ticker update', () => {
288
function App() {
289
- let [toggle, setToggle] = React.useState(0);
289
+ const [toggle, setToggle] = React.useState(0);
290
React.useEffect(() => {
291
- let timeout = setTimeout(() => {
291
+ const timeout = setTimeout(() => {
292
setToggle(1);
293
}, 200);
294
return () => clearTimeout(timeout);
@@ -308,7 +308,7 @@ function runActTests(label, render, unmount, rerender) {
308
309
it('can use the async version to catch microtasks', async () => {
310
function App() {
311
- let [toggle, setToggle] = React.useState(0);
311
+ const [toggle, setToggle] = React.useState(0);
312
React.useEffect(() => {
313
// just like the previous test, except we
314
// use a promise and schedule the update
@@ -332,7 +332,7 @@ function runActTests(label, render, unmount, rerender) {
332
// this component triggers an effect, that waits a tick,
333
// then sets state. repeats this 5 times.
334
function App() {
335
- let [state, setState] = React.useState(0);
335
+ const [state, setState] = React.useState(0);
336
async function ticker() {
337
await null;
338
setState(x => x + 1);
@@ -353,7 +353,7 @@ function runActTests(label, render, unmount, rerender) {
353
354
it('flushes immediate re-renders with act', () => {
355
function App() {
356
- let [ctr, setCtr] = React.useState(0);
356
+ const [ctr, setCtr] = React.useState(0);
357
React.useEffect(() => {
358
if (ctr === 0) {
359
setCtr(1);
@@ -408,7 +408,7 @@ function runActTests(label, render, unmount, rerender) {
408
describe('asynchronous tests', () => {
409
it('works with timeouts', async () => {
410
function App() {
411
- let [ctr, setCtr] = React.useState(0);
411
+ const [ctr, setCtr] = React.useState(0);
412
function doSomething() {
413
setTimeout(() => {
414
setCtr(1);
@@ -432,7 +432,7 @@ function runActTests(label, render, unmount, rerender) {
432
433
it('flushes microtasks before exiting', async () => {
434
function App() {
435
- let [ctr, setCtr] = React.useState(0);
435
+ const [ctr, setCtr] = React.useState(0);
436
async function someAsyncFunction() {
437
// queue a bunch of promises to be sure they all flush
438
await null;
@@ -486,7 +486,7 @@ function runActTests(label, render, unmount, rerender) {
486
487
it('async commits and effects are guaranteed to be flushed', async () => {
488
function App() {
489
- let [state, setState] = React.useState(0);
489
+ const [state, setState] = React.useState(0);
490
async function something() {
491
await null;
492
setState(1);
@@ -513,7 +513,7 @@ function runActTests(label, render, unmount, rerender) {
513
// this component triggers an effect, that waits a tick,
514
// then sets state. repeats this 5 times.
515
function App() {
516
- let [state, setState] = React.useState(0);
516
+ const [state, setState] = React.useState(0);
517
async function ticker() {
518
await null;
519
setState(x => x + 1);
packages/react-dom/src/__tests__/ReactTestUtilsActUnmockedScheduler-test.js
+3
-3
@@ -64,7 +64,7 @@ it('can use act to flush effects', () => {
64
65
it('flushes effects on every call', () => {
66
function App() {
67
- let [ctr, setCtr] = React.useState(0);
67
+ const [ctr, setCtr] = React.useState(0);
68
React.useEffect(() => {
69
yields.push(ctr);
70
});
@@ -102,7 +102,7 @@ it('flushes effects on every call', () => {
102
103
it("should keep flushing effects until the're done", () => {
104
function App() {
105
- let [ctr, setCtr] = React.useState(0);
105
+ const [ctr, setCtr] = React.useState(0);
106
React.useEffect(() => {
107
if (ctr < 5) {
108
setCtr(x => x + 1);
@@ -142,7 +142,7 @@ it('can handle cascading promises', async () => {
142
// this component triggers an effect, that waits a tick,
143
// then sets state. repeats this 5 times.
144
function App() {
145
- let [state, setState] = React.useState(0);
145
+ const [state, setState] = React.useState(0);
146
async function ticker() {
147
await null;
148
setState(x => x + 1);
packages/react-dom/src/__tests__/ReactTreeTraversal-test.js
+1
-1
@@ -11,7 +11,7 @@
11
12
let React;
13
let ReactDOM;
14
-let ReactFeatureFlags = require('shared/ReactFeatureFlags');
14
+const ReactFeatureFlags = require('shared/ReactFeatureFlags');
15
16
const ChildComponent = ({id, eventHandler}) => (
17
<div
packages/react-dom/src/__tests__/ReactUpdates-test.js
+8
-12
@@ -526,7 +526,6 @@ describe('ReactUpdates', () => {
526
527
const bContainer = document.createElement('div');
528
529
- let a;
529
let b;
530
531
let aUpdated = false;
@@ -560,7 +559,7 @@ describe('ReactUpdates', () => {
559
}
560
}
561
563
- a = ReactTestUtils.renderIntoDocument(<A />);
562
+ const a = ReactTestUtils.renderIntoDocument(<A />);
563
ReactDOM.unstable_batchedUpdates(function() {
564
a.setState({x: 1});
565
b.setState({x: 1});
@@ -733,11 +732,8 @@ describe('ReactUpdates', () => {
732
}
733
}
734
736
- let x;
737
- let y;
738
-
739
- x = ReactTestUtils.renderIntoDocument(<X />);
740
- y = ReactTestUtils.renderIntoDocument(<Y />);
735
+ const x = ReactTestUtils.renderIntoDocument(<X />);
736
+ const y = ReactTestUtils.renderIntoDocument(<Y />);
737
expect(ReactDOM.findDOMNode(x).textContent).toBe('0');
738
739
y.forceUpdate();
@@ -1102,7 +1098,7 @@ describe('ReactUpdates', () => {
1098
'in legacy mode, updates in componentWillUpdate and componentDidUpdate ' +
1099
'should both flush in the immediately subsequent commit',
1100
() => {
1105
- let ops = [];
1101
+ const ops = [];
1102
class Foo extends React.Component {
1103
state = {a: false, b: false};
1104
UNSAFE_componentWillUpdate(_, nextState) {
@@ -1145,7 +1141,7 @@ describe('ReactUpdates', () => {
1141
'in legacy mode, updates in componentWillUpdate and componentDidUpdate ' +
1142
'(on a sibling) should both flush in the immediately subsequent commit',
1143
() => {
1148
- let ops = [];
1144
+ const ops = [];
1145
class Foo extends React.Component {
1146
state = {a: false};
1147
UNSAFE_componentWillUpdate(_, nextState) {
@@ -1213,7 +1209,7 @@ describe('ReactUpdates', () => {
1209
);
1210
1211
it('uses correct base state for setState inside render phase', () => {
1216
- let ops = [];
1212
+ const ops = [];
1213
1214
class Foo extends React.Component {
1215
state = {step: 0};
@@ -1236,7 +1232,7 @@ describe('ReactUpdates', () => {
1232
});
1233
1234
it('does not re-render if state update is null', () => {
1239
- let container = document.createElement('div');
1235
+ const container = document.createElement('div');
1236
1237
let instance;
1238
let ops = [];
@@ -1626,7 +1622,7 @@ describe('ReactUpdates', () => {
1622
1623
let error = null;
1624
let stack = null;
1629
- let originalConsoleError = console.error;
1625
+ const originalConsoleError = console.error;
1626
console.error = (e, s) => {
1627
error = e;
1628
stack = s;
packages/react-dom/src/__tests__/utils/ReactDOMServerIntegrationTestUtils.js
+3
-3
@@ -145,7 +145,7 @@ module.exports = function(initModules) {
145
return await expectErrors(
146
() =>
147
new Promise(resolve => {
148
- let writable = new DrainWritable();
148
+ const writable = new DrainWritable();
149
ReactDOMServer.renderToNodeStream(reactElement).pipe(writable);
150
writable.on('finish', () => resolve(writable.buffer));
151
}),
@@ -174,7 +174,7 @@ module.exports = function(initModules) {
174
const markup = await renderIntoString(element, errorCount);
175
resetModules();
176
177
- let container = getContainerFromMarkup(element, markup);
177
+ const container = getContainerFromMarkup(element, markup);
178
let serverNode = container.firstChild;
179
180
const firstClientNode = await renderIntoDom(
@@ -205,7 +205,7 @@ module.exports = function(initModules) {
205
const clientRenderOnBadMarkup = async (element, errorCount = 0) => {
206
// First we render the top of bad mark up.
207
208
- let container = getContainerFromMarkup(
208
+ const container = getContainerFromMarkup(
209
element,
210
shouldUseDocument(element)
211
? '<html><body><div id="badIdWhichWillCauseMismatch" /></body></html>'
packages/react-dom/src/client/ReactDOMComponentTree.js
+1
-1
@@ -114,7 +114,7 @@ export function getClosestInstanceFromNode(targetNode: Node): null | Fiber {
114
// have had an internalInstanceKey on it.
115
// Let's get the fiber associated with the SuspenseComponent
116
// as the deepest instance.
117
- let targetSuspenseInst = suspenseInstance[internalInstanceKey];
117
+ const targetSuspenseInst = suspenseInstance[internalInstanceKey];
118
if (targetSuspenseInst) {
119
return targetSuspenseInst;
120
}
packages/react-dom/src/client/ReactDOMHostConfig.js
+5
-5
@@ -191,7 +191,7 @@ export function getRootHostContext(
191
case DOCUMENT_NODE:
192
case DOCUMENT_FRAGMENT_NODE: {
193
type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';
194
- let root = (rootContainerInstance: any).documentElement;
194
+ const root = (rootContainerInstance: any).documentElement;
195
namespace = root ? root.namespaceURI : getChildNamespace(null, '');
196
break;
197
}
@@ -620,10 +620,10 @@ export function clearSuspenseBoundary(
620
// deep we are and only break out when we're back on top.
621
let depth = 0;
622
do {
623
- let nextNode = node.nextSibling;
623
+ const nextNode = node.nextSibling;
624
parentInstance.removeChild(node);
625
if (nextNode && nextNode.nodeType === COMMENT_NODE) {
626
- let data = ((nextNode: any).data: string);
626
+ const data = ((nextNode: any).data: string);
627
if (data === SUSPENSE_END_DATA) {
628
if (depth === 0) {
629
parentInstance.removeChild(nextNode);
@@ -867,7 +867,7 @@ export function getNextHydratableInstanceAfterSuspenseInstance(
867
let depth = 0;
868
while (node) {
869
if (node.nodeType === COMMENT_NODE) {
870
- let data = ((node: any).data: string);
870
+ const data = ((node: any).data: string);
871
if (data === SUSPENSE_END_DATA) {
872
if (depth === 0) {
873
return getNextHydratableSibling((node: any));
@@ -901,7 +901,7 @@ export function getParentSuspenseInstance(
901
let depth = 0;
902
while (node) {
903
if (node.nodeType === COMMENT_NODE) {
904
- let data = ((node: any).data: string);
904
+ const data = ((node: any).data: string);
905
if (
906
data === SUSPENSE_START_DATA ||
907
data === SUSPENSE_FALLBACK_START_DATA ||
packages/react-dom/src/client/ReactDOMLegacy.js
+1
-1
@@ -225,7 +225,7 @@ export function findDOMNode(
225
componentOrElement: Element | ?React$Component<any, any>,
226
): null | Element | Text {
227
if (__DEV__) {
228
- let owner = (ReactCurrentOwner.current: any);
228
+ const owner = (ReactCurrentOwner.current: any);
229
if (owner !== null && owner.stateNode !== null) {
230
const warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;
231
if (!warnedAboutRefsInRender) {
packages/react-dom/src/client/ReactDOMSelect.js
+3
-3
@@ -78,8 +78,8 @@ function updateOptions(
78
const options: IndexableHTMLOptionsCollection = node.options;
79
80
if (multiple) {
81
- let selectedValues = (propValue: Array<string>);
82
- let selectedValue = {};
81
+ const selectedValues = (propValue: Array<string>);
82
+ const selectedValue = {};
83
for (let i = 0; i < selectedValues.length; i++) {
84
// Prefix to avoid chaos with special keys.
85
selectedValue['$' + selectedValues[i]] = true;
@@ -96,7 +96,7 @@ function updateOptions(
96
} else {
97
// Do not set `select.value` as exact behavior isn't consistent across all
98
// browsers for all cases.
99
- let selectedValue = toString(getToStringValue((propValue: any)));
99
+ const selectedValue = toString(getToStringValue((propValue: any)));
100
let defaultSelected = null;
101
for (let i = 0; i < options.length; i++) {
102
if (options[i].value === selectedValue) {
packages/react-dom/src/client/ReactDOMSelection.js
+1
-1
@@ -169,7 +169,7 @@ export function setOffsets(node, offsets) {
169
// IE 11 uses modern selection, but doesn't support the extend method.
170
// Flip backward selections, so we can set with a single range.
171
if (!selection.extend && start > end) {
172
- let temp = end;
172
+ const temp = end;
173
end = start;
174
start = temp;
175
}
packages/react-dom/src/client/ReactInputSelection.js
+2
-1
@@ -181,7 +181,8 @@ export function getSelection(input) {
181
* -@offsets Object of same form that is returned from get*
182
*/
183
export function setSelection(input, offsets) {
184
- let {start, end} = offsets;
184
+ const start = offsets.start;
185
+ let end = offsets.end;
186
if (end === undefined) {
187
end = start;
188
}
packages/react-dom/src/client/__tests__/trustedTypes-test.internal.js
+4
-4
@@ -54,7 +54,7 @@ describe('when Trusted Types are available in global object', () => {
54
});
55
56
it('should not stringify trusted values for dangerouslySetInnerHTML', () => {
57
- let innerHTMLDescriptor = Object.getOwnPropertyDescriptor(
57
+ const innerHTMLDescriptor = Object.getOwnPropertyDescriptor(
58
Element.prototype,
59
'innerHTML',
60
);
@@ -97,7 +97,7 @@ describe('when Trusted Types are available in global object', () => {
97
});
98
99
it('should not stringify trusted values for setAttribute (unknown attribute)', () => {
100
- let setAttribute = Element.prototype.setAttribute;
100
+ const setAttribute = Element.prototype.setAttribute;
101
try {
102
const setAttributeCalls = [];
103
Element.prototype.setAttribute = function(name, value) {
@@ -125,7 +125,7 @@ describe('when Trusted Types are available in global object', () => {
125
});
126
127
it('should not stringify trusted values for setAttribute (known attribute)', () => {
128
- let setAttribute = Element.prototype.setAttribute;
128
+ const setAttribute = Element.prototype.setAttribute;
129
try {
130
const setAttributeCalls = [];
131
Element.prototype.setAttribute = function(name, value) {
@@ -153,7 +153,7 @@ describe('when Trusted Types are available in global object', () => {
153
});
154
155
it('should not stringify trusted values for setAttributeNS', () => {
156
- let setAttributeNS = Element.prototype.setAttributeNS;
156
+ const setAttributeNS = Element.prototype.setAttributeNS;
157
try {
158
const setAttributeNSCalls = [];
159
Element.prototype.setAttributeNS = function(ns, name, value) {
packages/react-dom/src/client/setTextContent.js
+2
-2
@@ -18,9 +18,9 @@ import {TEXT_NODE} from '../shared/HTMLNodeType';
18
* @param {string} text
19
* @internal
20
*/
21
-let setTextContent = function(node: Element, text: string): void {
21
+const setTextContent = function(node: Element, text: string): void {
22
if (text) {
23
- let firstChild = node.firstChild;
23
+ const firstChild = node.firstChild;
24
25
if (
26
firstChild &&
packages/react-dom/src/client/validateDOMNesting.js
+2
-2
@@ -159,8 +159,8 @@ if (__DEV__) {
159
};
160
161
updatedAncestorInfo = function(oldInfo, tag) {
162
- let ancestorInfo = {...(oldInfo || emptyAncestorInfo)};
163
- let info = {tag};
162
+ const ancestorInfo = {...(oldInfo || emptyAncestorInfo)};
163
+ const info = {tag};
164
165
if (inScopeTags.indexOf(tag) !== -1) {
166
ancestorInfo.aTagInScope = null;
packages/react-dom/src/events/ChangeEventPlugin.js
+1
-1
@@ -234,7 +234,7 @@ function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {
234
}
235
236
function handleControlledInputBlur(node) {
237
- let state = node._wrapperState;
237
+ const state = node._wrapperState;
238
239
if (
240
!state ||
packages/react-dom/src/events/DOMModernPluginEventSystem.js
+1
-1
@@ -452,7 +452,7 @@ function getNearestRootOrPortalContainer(instance: Element): Element {
452
}
453
454
function addEventTypeToDispatchConfig(type: DOMTopLevelEventType): void {
455
- let dispatchConfig = topLevelEventsToDispatchConfig.get(type);
455
+ const dispatchConfig = topLevelEventsToDispatchConfig.get(type);
456
// If we don't have a dispatchConfig, then we're dealing with
457
// an event type that React does not know about (i.e. a custom event).
458
// We need to register an event config for this or the SimpleEventPlugin
packages/react-dom/src/events/DeprecatedDOMEventResponderSystem.js
+4
-4
@@ -175,10 +175,10 @@ const eventResponderContext: ReactDOMResponderContext = {
175
validateResponderContext();
176
for (let i = 0; i < rootEventTypes.length; i++) {
177
const rootEventType = rootEventTypes[i];
178
- let rootEventResponders = rootEventTypesToEventResponderInstances.get(
178
+ const rootEventResponders = rootEventTypesToEventResponderInstances.get(
179
rootEventType,
180
);
181
- let rootEventTypesSet = ((currentInstance: any): ReactDOMEventResponderInstance)
181
+ const rootEventTypesSet = ((currentInstance: any): ReactDOMEventResponderInstance)
182
.rootEventTypes;
183
if (rootEventTypesSet !== null) {
184
rootEventTypesSet.delete(rootEventType);
@@ -462,7 +462,7 @@ export function unmountEventResponder(
462
const responder = ((responderInstance.responder: any): ReactDOMEventResponder);
463
const onUnmount = responder.onUnmount;
464
if (onUnmount !== null) {
465
- let {props, state} = responderInstance;
465
+ const {props, state} = responderInstance;
466
const previousInstance = currentInstance;
467
currentInstance = responderInstance;
468
try {
@@ -477,7 +477,7 @@ export function unmountEventResponder(
477
478
for (let i = 0; i < rootEventTypes.length; i++) {
479
const topLevelEventType = rootEventTypes[i];
480
- let rootEventResponderInstances = rootEventTypesToEventResponderInstances.get(
480
+ const rootEventResponderInstances = rootEventTypesToEventResponderInstances.get(
481
topLevelEventType,
482
);
483
if (rootEventResponderInstances !== undefined) {
packages/react-dom/src/events/ReactDOMEventListener.js
+2
-2
@@ -424,14 +424,14 @@ export function attemptToDispatchEvent(
424
let targetInst = getClosestInstanceFromNode(nativeEventTarget);
425
426
if (targetInst !== null) {
427
- let nearestMounted = getNearestMountedFiber(targetInst);
427
+ const nearestMounted = getNearestMountedFiber(targetInst);
428
if (nearestMounted === null) {
429
// This tree has been unmounted already. Dispatch without a target.
430
targetInst = null;
431
} else {
432
const tag = nearestMounted.tag;
433
if (tag === SuspenseComponent) {
434
- let instance = getSuspenseInstanceFromFiber(nearestMounted);
434
+ const instance = getSuspenseInstanceFromFiber(nearestMounted);
435
if (instance !== null) {
436
// Queue the event to be replayed later. Abort dispatching since we
437
// don't want this event dispatched twice through the event system.
packages/react-dom/src/events/ReactDOMEventReplaying.js
+26
-26
@@ -133,18 +133,18 @@ type QueuedReplayableEvent = {|
133
let hasScheduledReplayAttempt = false;
134
135
// The queue of discrete events to be replayed.
136
-let queuedDiscreteEvents: Array<QueuedReplayableEvent> = [];
136
+const queuedDiscreteEvents: Array<QueuedReplayableEvent> = [];
137
138
// Indicates if any continuous event targets are non-null for early bailout.
139
-let hasAnyQueuedContinuousEvents: boolean = false;
139
+const hasAnyQueuedContinuousEvents: boolean = false;
140
// The last of each continuous event type. We only need to replay the last one
141
// if the last target was dehydrated.
142
let queuedFocus: null | QueuedReplayableEvent = null;
143
let queuedDrag: null | QueuedReplayableEvent = null;
144
let queuedMouse: null | QueuedReplayableEvent = null;
145
// For pointer events there can be one latest event per pointerId.
146
-let queuedPointers: Map<number, QueuedReplayableEvent> = new Map();
147
-let queuedPointerCaptures: Map<number, QueuedReplayableEvent> = new Map();
146
+const queuedPointers: Map<number, QueuedReplayableEvent> = new Map();
147
+const queuedPointerCaptures: Map<number, QueuedReplayableEvent> = new Map();
148
// We could consider replaying selectionchange and touchmoves too.
149
150
type QueuedHydrationTarget = {|
@@ -152,7 +152,7 @@ type QueuedHydrationTarget = {|
152
target: Node,
153
priority: number,
154
|};
155
-let queuedExplicitHydrationTargets: Array<QueuedHydrationTarget> = [];
155
+const queuedExplicitHydrationTargets: Array<QueuedHydrationTarget> = [];
156
157
export function hasQueuedDiscreteEvents(): boolean {
158
return queuedDiscreteEvents.length > 0;
@@ -318,7 +318,7 @@ export function queueDiscreteEvent(
318
// If this was the first discrete event, we might be able to
319
// synchronously unblock it so that preventDefault still works.
320
while (queuedEvent.blockedOn !== null) {
321
- let fiber = getInstanceFromNode(queuedEvent.blockedOn);
321
+ const fiber = getInstanceFromNode(queuedEvent.blockedOn);
322
if (fiber === null) {
323
break;
324
}
@@ -359,13 +359,13 @@ export function clearIfContinuousEvent(
359
break;
360
case TOP_POINTER_OVER:
361
case TOP_POINTER_OUT: {
362
- let pointerId = ((nativeEvent: any): PointerEvent).pointerId;
362
+ const pointerId = ((nativeEvent: any): PointerEvent).pointerId;
363
queuedPointers.delete(pointerId);
364
break;
365
}
366
case TOP_GOT_POINTER_CAPTURE:
367
case TOP_LOST_POINTER_CAPTURE: {
368
- let pointerId = ((nativeEvent: any): PointerEvent).pointerId;
368
+ const pointerId = ((nativeEvent: any): PointerEvent).pointerId;
369
queuedPointerCaptures.delete(pointerId);
370
break;
371
}
@@ -384,7 +384,7 @@ function accumulateOrCreateContinuousQueuedReplayableEvent(
384
existingQueuedEvent === null ||
385
existingQueuedEvent.nativeEvent !== nativeEvent
386
) {
387
- let queuedEvent = createQueuedReplayableEvent(
387
+ const queuedEvent = createQueuedReplayableEvent(
388
blockedOn,
389
topLevelType,
390
eventSystemFlags,
@@ -392,7 +392,7 @@ function accumulateOrCreateContinuousQueuedReplayableEvent(
392
nativeEvent,
393
);
394
if (blockedOn !== null) {
395
- let fiber = getInstanceFromNode(blockedOn);
395
+ const fiber = getInstanceFromNode(blockedOn);
396
if (fiber !== null) {
397
// Attempt to increase the priority of this target.
398
attemptContinuousHydration(fiber);
@@ -505,13 +505,13 @@ function attemptExplicitHydrationTarget(
505
// TODO: This function shares a lot of logic with attemptToDispatchEvent.
506
// Try to unify them. It's a bit tricky since it would require two return
507
// values.
508
- let targetInst = getClosestInstanceFromNode(queuedTarget.target);
508
+ const targetInst = getClosestInstanceFromNode(queuedTarget.target);
509
if (targetInst !== null) {
510
- let nearestMounted = getNearestMountedFiber(targetInst);
510
+ const nearestMounted = getNearestMountedFiber(targetInst);
511
if (nearestMounted !== null) {
512
const tag = nearestMounted.tag;
513
if (tag === SuspenseComponent) {
514
- let instance = getSuspenseInstanceFromFiber(nearestMounted);
514
+ const instance = getSuspenseInstanceFromFiber(nearestMounted);
515
if (instance !== null) {
516
// We're blocked on hydrating this boundary.
517
// Increase its priority.
@@ -537,7 +537,7 @@ function attemptExplicitHydrationTarget(
537
538
export function queueExplicitHydrationTarget(target: Node): void {
539
if (enableSelectiveHydration) {
540
- let priority = getCurrentPriorityLevel();
540
+ const priority = getCurrentPriorityLevel();
541
const queuedTarget: QueuedHydrationTarget = {
542
blockedOn: null,
543
target: target,
@@ -562,10 +562,10 @@ function attemptReplayContinuousQueuedEvent(
562
if (queuedEvent.blockedOn !== null) {
563
return false;
564
}
565
- let targetContainers = queuedEvent.targetContainers;
565
+ const targetContainers = queuedEvent.targetContainers;
566
while (targetContainers.length > 0) {
567
- let targetContainer = targetContainers[0];
568
- let nextBlockedOn = attemptToDispatchEvent(
567
+ const targetContainer = targetContainers[0];
568
+ const nextBlockedOn = attemptToDispatchEvent(
569
queuedEvent.topLevelType,
570
queuedEvent.eventSystemFlags,
571
targetContainer,
@@ -573,7 +573,7 @@ function attemptReplayContinuousQueuedEvent(
573
);
574
if (nextBlockedOn !== null) {
575
// We're still blocked. Try again later.
576
- let fiber = getInstanceFromNode(nextBlockedOn);
576
+ const fiber = getInstanceFromNode(nextBlockedOn);
577
if (fiber !== null) {
578
attemptContinuousHydration(fiber);
579
}
@@ -600,21 +600,21 @@ function replayUnblockedEvents() {
600
hasScheduledReplayAttempt = false;
601
// First replay discrete events.
602
while (queuedDiscreteEvents.length > 0) {
603
- let nextDiscreteEvent = queuedDiscreteEvents[0];
603
+ const nextDiscreteEvent = queuedDiscreteEvents[0];
604
if (nextDiscreteEvent.blockedOn !== null) {
605
// We're still blocked.
606
// Increase the priority of this boundary to unblock
607
// the next discrete event.
608
- let fiber = getInstanceFromNode(nextDiscreteEvent.blockedOn);
608
+ const fiber = getInstanceFromNode(nextDiscreteEvent.blockedOn);
609
if (fiber !== null) {
610
attemptUserBlockingHydration(fiber);
611
}
612
break;
613
}
614
- let targetContainers = nextDiscreteEvent.targetContainers;
614
+ const targetContainers = nextDiscreteEvent.targetContainers;
615
while (targetContainers.length > 0) {
616
- let targetContainer = targetContainers[0];
617
- let nextBlockedOn = attemptToDispatchEvent(
616
+ const targetContainer = targetContainers[0];
617
+ const nextBlockedOn = attemptToDispatchEvent(
618
nextDiscreteEvent.topLevelType,
619
nextDiscreteEvent.eventSystemFlags,
620
targetContainer,
@@ -674,7 +674,7 @@ export function retryIfBlockedOn(
674
// worth it because we expect very few discrete events to queue up and once
675
// we are actually fully unblocked it will be fast to replay them.
676
for (let i = 1; i < queuedDiscreteEvents.length; i++) {
677
- let queuedEvent = queuedDiscreteEvents[i];
677
+ const queuedEvent = queuedDiscreteEvents[i];
678
if (queuedEvent.blockedOn === unblocked) {
679
queuedEvent.blockedOn = null;
680
}
@@ -696,14 +696,14 @@ export function retryIfBlockedOn(
696
queuedPointerCaptures.forEach(unblock);
697
698
for (let i = 0; i < queuedExplicitHydrationTargets.length; i++) {
699
- let queuedTarget = queuedExplicitHydrationTargets[i];
699
+ const queuedTarget = queuedExplicitHydrationTargets[i];
700
if (queuedTarget.blockedOn === unblocked) {
701
queuedTarget.blockedOn = null;
702
}
703
}
704
705
while (queuedExplicitHydrationTargets.length > 0) {
706
- let nextExplicitTarget = queuedExplicitHydrationTargets[0];
706
+ const nextExplicitTarget = queuedExplicitHydrationTargets[0];
707
if (nextExplicitTarget.blockedOn !== null) {
708
// We're still blocked.
709
break;
packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js
+61
-61
@@ -28,7 +28,7 @@ function dispatchClickEvent(element) {
28
dispatchEvent(element, 'click');
29
}
30
31
-let eventListenersToClear = [];
31
+const eventListenersToClear = [];
32
33
function startNativeEventListenerClearDown() {
34
const nativeWindowEventListener = window.addEventListener;
@@ -106,7 +106,7 @@ describe('DOMModernPluginEventSystem', () => {
106
107
ReactDOM.render(<Test />, container);
108
109
- let buttonElement = buttonRef.current;
109
+ const buttonElement = buttonRef.current;
110
dispatchClickEvent(buttonElement);
111
112
expect(onClick).toHaveBeenCalledTimes(1);
@@ -114,7 +114,7 @@ describe('DOMModernPluginEventSystem', () => {
114
expect(log[0]).toEqual(['capture', buttonElement]);
115
expect(log[1]).toEqual(['bubble', buttonElement]);
116
117
- let divElement = divRef.current;
117
+ const divElement = divRef.current;
118
dispatchClickEvent(divElement);
119
expect(onClick).toHaveBeenCalledTimes(3);
120
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -159,14 +159,14 @@ describe('DOMModernPluginEventSystem', () => {
159
ReactDOM.render(<Parent />, container);
160
ReactDOM.render(<Child />, childRef.current);
161
162
- let buttonElement = buttonRef.current;
162
+ const buttonElement = buttonRef.current;
163
dispatchClickEvent(buttonElement);
164
expect(onClick).toHaveBeenCalledTimes(1);
165
expect(onClickCapture).toHaveBeenCalledTimes(1);
166
expect(log[0]).toEqual(['capture', buttonElement]);
167
expect(log[1]).toEqual(['bubble', buttonElement]);
168
169
- let divElement = divRef.current;
169
+ const divElement = divRef.current;
170
dispatchClickEvent(divElement);
171
expect(onClick).toHaveBeenCalledTimes(3);
172
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -211,14 +211,14 @@ describe('DOMModernPluginEventSystem', () => {
211
buttonRef.current.appendChild(disjointedNode);
212
ReactDOM.render(<Child />, disjointedNode);
213
214
- let buttonElement = buttonRef.current;
214
+ const buttonElement = buttonRef.current;
215
dispatchClickEvent(buttonElement);
216
expect(onClick).toHaveBeenCalledTimes(1);
217
expect(onClickCapture).toHaveBeenCalledTimes(1);
218
expect(log[0]).toEqual(['capture', buttonElement]);
219
expect(log[1]).toEqual(['bubble', buttonElement]);
220
221
- let divElement = divRef.current;
221
+ const divElement = divRef.current;
222
dispatchClickEvent(divElement);
223
expect(onClick).toHaveBeenCalledTimes(3);
224
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -266,14 +266,14 @@ describe('DOMModernPluginEventSystem', () => {
266
buttonRef.current.appendChild(disjointedNode);
267
ReactDOM.render(<Child />, disjointedNode);
268
269
- let buttonElement = buttonRef.current;
269
+ const buttonElement = buttonRef.current;
270
dispatchClickEvent(buttonElement);
271
expect(onClick).toHaveBeenCalledTimes(1);
272
expect(onClickCapture).toHaveBeenCalledTimes(1);
273
expect(log[0]).toEqual(['capture', buttonElement]);
274
expect(log[1]).toEqual(['bubble', buttonElement]);
275
276
- let divElement = divRef.current;
276
+ const divElement = divRef.current;
277
dispatchClickEvent(divElement);
278
expect(onClick).toHaveBeenCalledTimes(3);
279
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -323,14 +323,14 @@ describe('DOMModernPluginEventSystem', () => {
323
spanRef.current.appendChild(disjointedNode);
324
ReactDOM.render(<Child />, disjointedNode);
325
326
- let buttonElement = buttonRef.current;
326
+ const buttonElement = buttonRef.current;
327
dispatchClickEvent(buttonElement);
328
expect(onClick).toHaveBeenCalledTimes(1);
329
expect(onClickCapture).toHaveBeenCalledTimes(1);
330
expect(log[0]).toEqual(['capture', buttonElement]);
331
expect(log[1]).toEqual(['bubble', buttonElement]);
332
333
- let divElement = divRef.current;
333
+ const divElement = divRef.current;
334
dispatchClickEvent(divElement);
335
expect(onClick).toHaveBeenCalledTimes(3);
336
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -376,14 +376,14 @@ describe('DOMModernPluginEventSystem', () => {
376
377
ReactDOM.render(<Parent />, container);
378
379
- let buttonElement = buttonRef.current;
379
+ const buttonElement = buttonRef.current;
380
dispatchClickEvent(buttonElement);
381
expect(onClick).toHaveBeenCalledTimes(1);
382
expect(onClickCapture).toHaveBeenCalledTimes(1);
383
expect(log[0]).toEqual(['capture', buttonElement]);
384
expect(log[1]).toEqual(['bubble', buttonElement]);
385
386
- let divElement = divRef.current;
386
+ const divElement = divRef.current;
387
dispatchClickEvent(divElement);
388
expect(onClick).toHaveBeenCalledTimes(3);
389
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -437,12 +437,12 @@ describe('DOMModernPluginEventSystem', () => {
437
async () => {
438
let suspend = false;
439
let resolve;
440
- let promise = new Promise(
440
+ const promise = new Promise(
441
resolvePromise => (resolve = resolvePromise),
442
);
443
444
let clicks = 0;
445
- let childSlotRef = React.createRef();
445
+ const childSlotRef = React.createRef();
446
447
function Parent() {
448
return <div onClick={() => clicks++} ref={childSlotRef} />;
@@ -466,17 +466,17 @@ describe('DOMModernPluginEventSystem', () => {
466
}
467
468
suspend = false;
469
- let finalHTML = ReactDOMServer.renderToString(<App />);
469
+ const finalHTML = ReactDOMServer.renderToString(<App />);
470
471
- let parentContainer = document.createElement('div');
472
- let childContainer = document.createElement('div');
471
+ const parentContainer = document.createElement('div');
472
+ const childContainer = document.createElement('div');
473
474
// We need this to be in the document since we'll dispatch events on it.
475
document.body.appendChild(parentContainer);
476
477
// We're going to use a different root as a parent.
478
// This lets us detect whether an event goes through React's event system.
479
- let parentRoot = ReactDOM.createRoot(parentContainer);
479
+ const parentRoot = ReactDOM.createRoot(parentContainer);
480
parentRoot.render(<Parent />);
481
Scheduler.unstable_flushAll();
482
@@ -484,12 +484,12 @@ describe('DOMModernPluginEventSystem', () => {
484
485
childContainer.innerHTML = finalHTML;
486
487
- let a = childContainer.getElementsByTagName('a')[0];
487
+ const a = childContainer.getElementsByTagName('a')[0];
488
489
suspend = true;
490
491
// Hydrate asynchronously.
492
- let root = ReactDOM.createRoot(childContainer, {hydrate: true});
492
+ const root = ReactDOM.createRoot(childContainer, {hydrate: true});
493
root.render(<App />);
494
jest.runAllTimers();
495
Scheduler.unstable_flushAll();
@@ -641,14 +641,14 @@ describe('DOMModernPluginEventSystem', () => {
641
642
ReactDOM.render(<Parent />, container);
643
644
- let buttonElement = buttonRef.current;
644
+ const buttonElement = buttonRef.current;
645
dispatchClickEvent(buttonElement);
646
expect(onClick).toHaveBeenCalledTimes(1);
647
expect(onClickCapture).toHaveBeenCalledTimes(1);
648
expect(log[0]).toEqual(['capture', buttonElement]);
649
expect(log[1]).toEqual(['bubble', buttonElement]);
650
651
- let divElement = divRef.current;
651
+ const divElement = divRef.current;
652
dispatchClickEvent(divElement);
653
expect(onClick).toHaveBeenCalledTimes(1);
654
expect(onClickCapture).toHaveBeenCalledTimes(1);
@@ -684,14 +684,14 @@ describe('DOMModernPluginEventSystem', () => {
684
685
ReactDOM.render(<Test />, container);
686
687
- let buttonElement = buttonRef.current;
687
+ const buttonElement = buttonRef.current;
688
buttonElement.focus();
689
expect(onFocus).toHaveBeenCalledTimes(1);
690
expect(onFocusCapture).toHaveBeenCalledTimes(1);
691
expect(log[0]).toEqual(['capture', buttonElement]);
692
expect(log[1]).toEqual(['bubble', buttonElement]);
693
694
- let divElement = divRef.current;
694
+ const divElement = divRef.current;
695
divElement.focus();
696
expect(onFocus).toHaveBeenCalledTimes(3);
697
expect(onFocusCapture).toHaveBeenCalledTimes(3);
@@ -737,14 +737,14 @@ describe('DOMModernPluginEventSystem', () => {
737
ReactDOM.render(<Parent />, container);
738
ReactDOM.render(<Child />, childRef.current);
739
740
- let buttonElement = buttonRef.current;
740
+ const buttonElement = buttonRef.current;
741
buttonElement.focus();
742
expect(onFocus).toHaveBeenCalledTimes(1);
743
expect(onFocusCapture).toHaveBeenCalledTimes(1);
744
expect(log[0]).toEqual(['capture', buttonElement]);
745
expect(log[1]).toEqual(['bubble', buttonElement]);
746
747
- let divElement = divRef.current;
747
+ const divElement = divRef.current;
748
divElement.focus();
749
expect(onFocus).toHaveBeenCalledTimes(3);
750
expect(onFocusCapture).toHaveBeenCalledTimes(3);
@@ -791,14 +791,14 @@ describe('DOMModernPluginEventSystem', () => {
791
792
ReactDOM.render(<Parent />, container);
793
794
- let buttonElement = buttonRef.current;
794
+ const buttonElement = buttonRef.current;
795
buttonElement.focus();
796
expect(onFocus).toHaveBeenCalledTimes(1);
797
expect(onFocusCapture).toHaveBeenCalledTimes(1);
798
expect(log[0]).toEqual(['capture', buttonElement]);
799
expect(log[1]).toEqual(['bubble', buttonElement]);
800
801
- let divElement = divRef.current;
801
+ const divElement = divRef.current;
802
divElement.focus();
803
expect(onFocus).toHaveBeenCalledTimes(3);
804
expect(onFocusCapture).toHaveBeenCalledTimes(3);
@@ -858,14 +858,14 @@ describe('DOMModernPluginEventSystem', () => {
858
859
ReactDOM.render(<Parent />, container);
860
861
- let buttonElement = buttonRef.current;
861
+ const buttonElement = buttonRef.current;
862
buttonElement.focus();
863
expect(onFocus).toHaveBeenCalledTimes(1);
864
expect(onFocusCapture).toHaveBeenCalledTimes(1);
865
expect(log[0]).toEqual(['capture', buttonElement]);
866
expect(log[1]).toEqual(['bubble', buttonElement]);
867
868
- let divElement = divRef.current;
868
+ const divElement = divRef.current;
869
divElement.focus();
870
expect(onFocus).toHaveBeenCalledTimes(1);
871
expect(onFocusCapture).toHaveBeenCalledTimes(1);
@@ -906,7 +906,7 @@ describe('DOMModernPluginEventSystem', () => {
906
907
ReactDOM.render(<Parent />, container);
908
909
- let buttonElement = buttonRef.current;
909
+ const buttonElement = buttonRef.current;
910
buttonElement.dispatchEvent(
911
new MouseEvent('mouseover', {
912
bubbles: true,
@@ -918,7 +918,7 @@ describe('DOMModernPluginEventSystem', () => {
918
expect(onMouseLeave).toHaveBeenCalledTimes(0);
919
expect(log[0]).toEqual(buttonElement);
920
921
- let divElement = divRef.current;
921
+ const divElement = divRef.current;
922
buttonElement.dispatchEvent(
923
new MouseEvent('mouseout', {
924
bubbles: true,
@@ -977,7 +977,7 @@ describe('DOMModernPluginEventSystem', () => {
977
978
ReactDOM.render(<Parent />, container);
979
980
- let buttonElement = buttonRef.current;
980
+ const buttonElement = buttonRef.current;
981
buttonElement.dispatchEvent(
982
new MouseEvent('mouseover', {
983
bubbles: true,
@@ -989,7 +989,7 @@ describe('DOMModernPluginEventSystem', () => {
989
expect(onMouseLeave).toHaveBeenCalledTimes(0);
990
expect(log[0]).toEqual(buttonElement);
991
992
- let divElement = divRef.current;
992
+ const divElement = divRef.current;
993
buttonElement.dispatchEvent(
994
new MouseEvent('mouseout', {
995
bubbles: true,
@@ -1042,7 +1042,7 @@ describe('DOMModernPluginEventSystem', () => {
1042
);
1043
1044
function Root() {
1045
- let portalTargetRef = React.useRef(null);
1045
+ const portalTargetRef = React.useRef(null);
1046
React.useLayoutEffect(() => {
1047
portalTargetRef.current.appendChild(portalContainer);
1048
});
@@ -1056,7 +1056,7 @@ describe('DOMModernPluginEventSystem', () => {
1056
1057
ReactDOM.render(<Root />, container);
1058
1059
- let divElement = targetRef.current;
1059
+ const divElement = targetRef.current;
1060
dispatchClickEvent(divElement);
1061
expect(log).toEqual([
1062
'capture root',
@@ -1105,7 +1105,7 @@ describe('DOMModernPluginEventSystem', () => {
1105
}
1106
1107
it('should create the same event listener map', () => {
1108
- let listenerMaps = [];
1108
+ const listenerMaps = [];
1109
1110
function Test() {
1111
const listenerMap = ReactDOM.unstable_useEvent('click');
@@ -1231,7 +1231,7 @@ describe('DOMModernPluginEventSystem', () => {
1231
log = [];
1232
1233
// Clicking the button should also work
1234
- let buttonElement = buttonRef.current;
1234
+ const buttonElement = buttonRef.current;
1235
dispatchClickEvent(buttonElement);
1236
expect(log).toEqual([
1237
{
@@ -1334,7 +1334,7 @@ describe('DOMModernPluginEventSystem', () => {
1334
ReactDOM.render(<Test />, container);
1335
Scheduler.unstable_flushAll();
1336
1337
- let textNode = buttonRef.current.firstChild;
1337
+ const textNode = buttonRef.current.firstChild;
1338
dispatchClickEvent(textNode);
1339
expect(clickEvent).toBeCalledTimes(1);
1340
});
@@ -1371,7 +1371,7 @@ describe('DOMModernPluginEventSystem', () => {
1371
ReactDOM.render(<Test />, container);
1372
Scheduler.unstable_flushAll();
1373
1374
- let buttonElement = buttonRef.current;
1374
+ const buttonElement = buttonRef.current;
1375
dispatchClickEvent(buttonElement);
1376
expect(onClick).toHaveBeenCalledTimes(1);
1377
expect(onClickCapture).toHaveBeenCalledTimes(1);
@@ -1382,7 +1382,7 @@ describe('DOMModernPluginEventSystem', () => {
1382
onClick.mockClear();
1383
onClickCapture.mockClear();
1384
1385
- let divElement = divRef.current;
1385
+ const divElement = divRef.current;
1386
dispatchClickEvent(divElement);
1387
expect(onClick).toHaveBeenCalledTimes(2);
1388
expect(onClickCapture).toHaveBeenCalledTimes(2);
@@ -1427,14 +1427,14 @@ describe('DOMModernPluginEventSystem', () => {
1427
ReactDOM.render(<Test />, container);
1428
Scheduler.unstable_flushAll();
1429
1430
- let buttonElement = buttonRef.current;
1430
+ const buttonElement = buttonRef.current;
1431
dispatchClickEvent(buttonElement);
1432
expect(onClick).toHaveBeenCalledTimes(1);
1433
expect(onClickCapture).toHaveBeenCalledTimes(1);
1434
expect(log[0]).toEqual(['capture', buttonElement]);
1435
expect(log[1]).toEqual(['bubble', buttonElement]);
1436
1437
- let divElement = divRef.current;
1437
+ const divElement = divRef.current;
1438
dispatchClickEvent(divElement);
1439
expect(onClick).toHaveBeenCalledTimes(3);
1440
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -1504,7 +1504,7 @@ describe('DOMModernPluginEventSystem', () => {
1504
expect(clickEvent).toBeCalledTimes(2);
1505
1506
// Clicking the button should not work
1507
- let buttonElement = buttonRef.current;
1507
+ const buttonElement = buttonRef.current;
1508
dispatchClickEvent(buttonElement);
1509
expect(clickEvent).toBeCalledTimes(2);
1510
});
@@ -1577,7 +1577,7 @@ describe('DOMModernPluginEventSystem', () => {
1577
it('should correctly handle stopPropagation corrrectly for target events', () => {
1578
const buttonRef = React.createRef();
1579
const divRef = React.createRef();
1580
- let clickEvent = jest.fn();
1580
+ const clickEvent = jest.fn();
1581
1582
function Test() {
1583
const click1 = ReactDOM.unstable_useEvent('click', {
@@ -1602,7 +1602,7 @@ describe('DOMModernPluginEventSystem', () => {
1602
ReactDOM.render(<Test />, container);
1603
Scheduler.unstable_flushAll();
1604
1605
- let divElement = divRef.current;
1605
+ const divElement = divRef.current;
1606
dispatchClickEvent(divElement);
1607
expect(clickEvent).toHaveBeenCalledTimes(0);
1608
});
@@ -1633,7 +1633,7 @@ describe('DOMModernPluginEventSystem', () => {
1633
ReactDOM.render(<Test />, container);
1634
Scheduler.unstable_flushAll();
1635
1636
- let buttonElement = buttonRef.current;
1636
+ const buttonElement = buttonRef.current;
1637
dispatchClickEvent(buttonElement);
1638
expect(targetListerner1).toHaveBeenCalledTimes(1);
1639
expect(targetListerner2).toHaveBeenCalledTimes(1);
@@ -1671,7 +1671,7 @@ describe('DOMModernPluginEventSystem', () => {
1671
ReactDOM.render(<Test />, container);
1672
Scheduler.unstable_flushAll();
1673
1674
- let buttonElement = buttonRef.current;
1674
+ const buttonElement = buttonRef.current;
1675
dispatchClickEvent(buttonElement);
1676
expect(targetListerner1).toHaveBeenCalledTimes(1);
1677
expect(targetListerner2).toHaveBeenCalledTimes(1);
@@ -1698,7 +1698,7 @@ describe('DOMModernPluginEventSystem', () => {
1698
return <button ref={ref}>Press me</button>;
1699
}
1700
1701
- let root = ReactDOM.createRoot(container);
1701
+ const root = ReactDOM.createRoot(container);
1702
root.render(<Test counter={0} />);
1703
1704
// Dev double-render
@@ -1926,7 +1926,7 @@ describe('DOMModernPluginEventSystem', () => {
1926
ReactDOM.render(<Test />, container);
1927
Scheduler.unstable_flushAll();
1928
1929
- let buttonElement = buttonRef.current;
1929
+ const buttonElement = buttonRef.current;
1930
dispatchClickEvent(buttonElement);
1931
expect(onClick).toHaveBeenCalledTimes(2);
1932
expect(onClickCapture).toHaveBeenCalledTimes(2);
@@ -1939,7 +1939,7 @@ describe('DOMModernPluginEventSystem', () => {
1939
onClick.mockClear();
1940
onClickCapture.mockClear();
1941
1942
- let divElement = divRef.current;
1942
+ const divElement = divRef.current;
1943
dispatchClickEvent(divElement);
1944
expect(onClick).toHaveBeenCalledTimes(3);
1945
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -1981,7 +1981,7 @@ describe('DOMModernPluginEventSystem', () => {
1981
ReactDOM.render(<Test />, container);
1982
Scheduler.unstable_flushAll();
1983
1984
- let buttonElement = buttonRef.current;
1984
+ const buttonElement = buttonRef.current;
1985
dispatchClickEvent(buttonElement);
1986
expect(rootListerner1).toHaveBeenCalledTimes(1);
1987
expect(targetListerner1).toHaveBeenCalledTimes(0);
@@ -2020,7 +2020,7 @@ describe('DOMModernPluginEventSystem', () => {
2020
2021
Scheduler.unstable_flushAll();
2022
2023
- let buttonElement = buttonRef.current;
2023
+ const buttonElement = buttonRef.current;
2024
dispatchClickEvent(buttonElement);
2025
expect(rootListerner1).toHaveBeenCalledTimes(1);
2026
expect(rootListerner2).toHaveBeenCalledTimes(1);
@@ -2064,7 +2064,7 @@ describe('DOMModernPluginEventSystem', () => {
2064
ReactDOM.render(<Test />, container);
2065
Scheduler.unstable_flushAll();
2066
2067
- let buttonElement = buttonRef.current;
2067
+ const buttonElement = buttonRef.current;
2068
dispatchClickEvent(buttonElement);
2069
expect(onClick).toHaveBeenCalledTimes(3);
2070
expect(onClickCapture).toHaveBeenCalledTimes(3);
@@ -2079,7 +2079,7 @@ describe('DOMModernPluginEventSystem', () => {
2079
onClick.mockClear();
2080
onClickCapture.mockClear();
2081
2082
- let divElement = divRef.current;
2082
+ const divElement = divRef.current;
2083
dispatchClickEvent(divElement);
2084
expect(onClick).toHaveBeenCalledTimes(4);
2085
expect(onClickCapture).toHaveBeenCalledTimes(4);
@@ -2150,14 +2150,14 @@ describe('DOMModernPluginEventSystem', () => {
2150
ReactDOM.render(<Test />, container);
2151
Scheduler.unstable_flushAll();
2152
2153
- let buttonElement = buttonRef.current;
2153
+ const buttonElement = buttonRef.current;
2154
dispatchEvent(buttonElement, 'custom-event');
2155
expect(onCustomEvent).toHaveBeenCalledTimes(1);
2156
expect(onCustomEventCapture).toHaveBeenCalledTimes(1);
2157
expect(log[0]).toEqual(['capture', buttonElement]);
2158
expect(log[1]).toEqual(['bubble', buttonElement]);
2159
2160
- let divElement = divRef.current;
2160
+ const divElement = divRef.current;
2161
dispatchEvent(divElement, 'custom-event');
2162
expect(onCustomEvent).toHaveBeenCalledTimes(3);
2163
expect(onCustomEventCapture).toHaveBeenCalledTimes(3);
@@ -2283,7 +2283,7 @@ describe('DOMModernPluginEventSystem', () => {
2283
const Suspense = React.Suspense;
2284
let suspend = false;
2285
let resolve;
2286
- let promise = new Promise(
2286
+ const promise = new Promise(
2287
resolvePromise => (resolve = resolvePromise),
2288
);
2289
@@ -2319,7 +2319,7 @@ describe('DOMModernPluginEventSystem', () => {
2319
const container2 = document.createElement('div');
2320
document.body.appendChild(container2);
2321
2322
- let root = ReactDOM.createRoot(container2);
2322
+ const root = ReactDOM.createRoot(container2);
2323
2324
ReactTestUtils.act(() => {
2325
root.render(<Component />);
@@ -2506,7 +2506,7 @@ describe('DOMModernPluginEventSystem', () => {
2506
ReactDOM.render(<Test />, container);
2507
Scheduler.unstable_flushAll();
2508
2509
- let textNode = buttonRef.current.firstChild;
2509
+ const textNode = buttonRef.current.firstChild;
2510
dispatchClickEvent(textNode);
2511
// This should not work, as the target instance will be the
2512
// <button>, which is actually outside the scope.
packages/react-dom/src/events/__tests__/DeprecatedDOMEventResponderSystem-test.internal.js
+12
-12
@@ -149,7 +149,7 @@ describe('DOMEventResponderSystem', () => {
149
150
it('the event responders should fire on click event', () => {
151
let eventResponderFiredCount = 0;
152
- let eventLog = [];
152
+ const eventLog = [];
153
const buttonRef = React.createRef();
154
155
const TestResponder = createEventResponder({
@@ -208,7 +208,7 @@ describe('DOMEventResponderSystem', () => {
208
const checkPassiveEvents = require('react-dom/src/events/checkPassiveEvents');
209
checkPassiveEvents.passiveBrowserEventsSupported = true;
210
211
- let eventLog = [];
211
+ const eventLog = [];
212
const buttonRef = React.createRef();
213
214
const TestResponder = createEventResponder({
@@ -235,7 +235,7 @@ describe('DOMEventResponderSystem', () => {
235
ReactDOM.render(<Test />, container);
236
237
// Clicking the button should trigger the event responder onEvent()
238
- let buttonElement = buttonRef.current;
238
+ const buttonElement = buttonRef.current;
239
dispatchClickEvent(buttonElement);
240
expect(eventLog.length).toBe(1);
241
expect(eventLog).toEqual([
@@ -393,7 +393,7 @@ describe('DOMEventResponderSystem', () => {
393
});
394
395
it('nested event responders should fire in the correct order #2', () => {
396
- let eventLog = [];
396
+ const eventLog = [];
397
const buttonRef = React.createRef();
398
399
const TestResponder = createEventResponder({
@@ -422,14 +422,14 @@ describe('DOMEventResponderSystem', () => {
422
ReactDOM.render(<Test />, container);
423
424
// Clicking the button should trigger the event responder onEvent()
425
- let buttonElement = buttonRef.current;
425
+ const buttonElement = buttonRef.current;
426
dispatchClickEvent(buttonElement);
427
428
expect(eventLog).toEqual(['B [bubble]']);
429
});
430
431
it('custom event dispatching for click -> magicClick works', () => {
432
- let eventLog = [];
432
+ const eventLog = [];
433
const buttonRef = React.createRef();
434
435
const TestResponder = createEventResponder({
@@ -468,7 +468,7 @@ describe('DOMEventResponderSystem', () => {
468
ReactDOM.render(<Test />, container);
469
470
// Clicking the button should trigger the event responder onEvent()
471
- let buttonElement = buttonRef.current;
471
+ const buttonElement = buttonRef.current;
472
dispatchClickEvent(buttonElement);
473
474
expect(eventLog).toEqual(['magic event fired', 'magicclick', 'bubble']);
@@ -626,7 +626,7 @@ describe('DOMEventResponderSystem', () => {
626
it('the event responder target listeners should correctly fire for only their events', () => {
627
let clickEventComponent1Fired = 0;
628
let clickEventComponent2Fired = 0;
629
- let eventLog = [];
629
+ const eventLog = [];
630
const buttonRef = React.createRef();
631
632
const TestResponderA = createEventResponder({
@@ -666,7 +666,7 @@ describe('DOMEventResponderSystem', () => {
666
667
ReactDOM.render(<Test />, container);
668
669
- let buttonElement = buttonRef.current;
669
+ const buttonElement = buttonRef.current;
670
dispatchClickEvent(buttonElement);
671
672
expect(clickEventComponent1Fired).toBe(1);
@@ -698,7 +698,7 @@ describe('DOMEventResponderSystem', () => {
698
});
699
700
let handler;
701
- let buttonRef = React.createRef();
701
+ const buttonRef = React.createRef();
702
const Test = () => {
703
const listener = React.DEPRECATED_useResponder(TestResponder, {
704
onClick: handler,
@@ -811,7 +811,7 @@ describe('DOMEventResponderSystem', () => {
811
);
812
}
813
814
- let root = ReactDOM.createRoot(container);
814
+ const root = ReactDOM.createRoot(container);
815
root.render(<Test counter={0} />);
816
expect(Scheduler).toFlushAndYield(__DEV__ ? ['Test', 'Test'] : ['Test']);
817
@@ -981,7 +981,7 @@ describe('DOMEventResponderSystem', () => {
981
ReactDOM.render(<Test />, container);
982
expect(container.innerHTML).toBe('<button>Click me!</button>');
983
984
- let buttonElement = buttonRef.current;
984
+ const buttonElement = buttonRef.current;
985
dispatchClickEvent(buttonElement);
986
expect(eventResponderFiredCount).toBe(1);
987
dispatchClickEvent(buttonElement);
packages/react-dom/src/events/__tests__/EnterLeaveEventPlugin-test.js
+2
-2
@@ -40,7 +40,7 @@ describe('EnterLeaveEventPlugin', () => {
40
);
41
iframeDocument.close();
42
43
- let leaveEvents = [];
43
+ const leaveEvents = [];
44
const node = ReactDOM.render(
45
<div
46
onMouseLeave={e => {
@@ -73,7 +73,7 @@ describe('EnterLeaveEventPlugin', () => {
73
);
74
iframeDocument.close();
75
76
- let enterEvents = [];
76
+ const enterEvents = [];
77
const node = ReactDOM.render(
78
<div
79
onMouseEnter={e => {
packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js
+1
-1
@@ -184,7 +184,7 @@ describe('SimpleEventPlugin', function() {
184
container = document.createElement('div');
185
document.body.appendChild(container);
186
187
- let ops = [];
187
+ const ops = [];
188
let button;
189
class Button extends React.Component {
190
state = {count: 0};
packages/react-dom/src/events/__tests__/SyntheticEvent-test.js
+11
-22
@@ -29,7 +29,6 @@ describe('SyntheticEvent', () => {
29
});
30
31
it('should be able to `preventDefault`', () => {
32
- let node;
32
let expectedCount = 0;
33
34
const eventHandler = syntheticEvent => {
@@ -40,7 +39,7 @@ describe('SyntheticEvent', () => {
39
40
expectedCount++;
41
};
43
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
42
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
43
44
const event = document.createEvent('Event');
45
event.initEvent('click', true, true);
@@ -50,7 +49,6 @@ describe('SyntheticEvent', () => {
49
});
50
51
it('should be prevented if nativeEvent is prevented', () => {
53
- let node;
52
let expectedCount = 0;
53
54
const eventHandler = syntheticEvent => {
@@ -58,7 +56,7 @@ describe('SyntheticEvent', () => {
56
57
expectedCount++;
58
};
61
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
59
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
60
61
let event;
62
event = document.createEvent('Event');
@@ -83,7 +81,6 @@ describe('SyntheticEvent', () => {
81
});
82
83
it('should be able to `stopPropagation`', () => {
86
- let node;
84
let expectedCount = 0;
85
86
const eventHandler = syntheticEvent => {
@@ -93,7 +90,7 @@ describe('SyntheticEvent', () => {
90
91
expectedCount++;
92
};
96
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
93
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
94
95
const event = document.createEvent('Event');
96
event.initEvent('click', true, true);
@@ -103,7 +100,6 @@ describe('SyntheticEvent', () => {
100
});
101
102
it('should be able to `persist`', () => {
106
- let node;
103
let expectedCount = 0;
104
let syntheticEvent;
105
@@ -115,7 +111,7 @@ describe('SyntheticEvent', () => {
111
112
expectedCount++;
113
};
118
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
114
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
115
116
const event = document.createEvent('Event');
117
event.initEvent('click', true, true);
@@ -128,7 +124,6 @@ describe('SyntheticEvent', () => {
124
});
125
126
it('should be nullified and log warnings if the synthetic event has not been persisted', () => {
131
- let node;
127
let expectedCount = 0;
128
let syntheticEvent;
129
@@ -137,7 +132,7 @@ describe('SyntheticEvent', () => {
132
133
expectedCount++;
134
};
140
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
135
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
136
137
const event = document.createEvent('Event');
138
event.initEvent('click', true, true);
@@ -165,7 +160,6 @@ describe('SyntheticEvent', () => {
160
});
161
162
it('should warn when setting properties of a synthetic event that has not been persisted', () => {
168
- let node;
163
let expectedCount = 0;
164
let syntheticEvent;
165
@@ -174,7 +168,7 @@ describe('SyntheticEvent', () => {
168
169
expectedCount++;
170
};
177
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
171
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
172
173
const event = document.createEvent('Event');
174
event.initEvent('click', true, true);
@@ -194,7 +188,6 @@ describe('SyntheticEvent', () => {
188
});
189
190
it('should warn when calling `preventDefault` if the synthetic event has not been persisted', () => {
197
- let node;
191
let expectedCount = 0;
192
let syntheticEvent;
193
@@ -202,7 +195,7 @@ describe('SyntheticEvent', () => {
195
syntheticEvent = e;
196
expectedCount++;
197
};
205
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
198
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
199
200
const event = document.createEvent('Event');
201
event.initEvent('click', true, true);
@@ -222,7 +215,6 @@ describe('SyntheticEvent', () => {
215
});
216
217
it('should warn when calling `stopPropagation` if the synthetic event has not been persisted', () => {
225
- let node;
218
let expectedCount = 0;
219
let syntheticEvent;
220
@@ -230,7 +222,7 @@ describe('SyntheticEvent', () => {
222
syntheticEvent = e;
223
expectedCount++;
224
};
233
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
225
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
226
227
const event = document.createEvent('Event');
228
event.initEvent('click', true, true);
@@ -251,7 +243,6 @@ describe('SyntheticEvent', () => {
243
});
244
245
it('should warn when calling `isPropagationStopped` if the synthetic event has not been persisted', () => {
254
- let node;
246
let expectedCount = 0;
247
let syntheticEvent;
248
@@ -259,7 +250,7 @@ describe('SyntheticEvent', () => {
250
syntheticEvent = e;
251
expectedCount++;
252
};
262
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
253
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
254
255
const event = document.createEvent('Event');
256
event.initEvent('click', true, true);
@@ -279,7 +270,6 @@ describe('SyntheticEvent', () => {
270
});
271
272
it('should warn when calling `isDefaultPrevented` if the synthetic event has not been persisted', () => {
282
- let node;
273
let expectedCount = 0;
274
let syntheticEvent;
275
@@ -287,7 +277,7 @@ describe('SyntheticEvent', () => {
277
syntheticEvent = e;
278
expectedCount++;
279
};
290
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
280
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
281
282
const event = document.createEvent('Event');
283
event.initEvent('click', true, true);
@@ -332,7 +322,6 @@ describe('SyntheticEvent', () => {
322
// Or we might disallow this pattern altogether:
323
// https://github.com/facebook/react/issues/13224
324
xit('should warn if a property is added to the synthetic event', () => {
335
- let node;
325
let expectedCount = 0;
326
let syntheticEvent;
327
@@ -349,7 +338,7 @@ describe('SyntheticEvent', () => {
338
syntheticEvent = e;
339
expectedCount++;
340
};
352
- node = ReactDOM.render(<div onClick={eventHandler} />, container);
341
+ const node = ReactDOM.render(<div onClick={eventHandler} />, container);
342
343
const event = document.createEvent('Event');
344
event.initEvent('click', true, true);
packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js
+2
-2
@@ -466,7 +466,7 @@ describe('SyntheticKeyboardEvent', () => {
466
expect(event.isPropagationStopped()).toBe(true);
467
expectedCount++;
468
};
469
- let div = ReactDOM.render(
469
+ const div = ReactDOM.render(
470
<div
471
onKeyDown={eventHandler}
472
onKeyUp={eventHandler}
@@ -508,7 +508,7 @@ describe('SyntheticKeyboardEvent', () => {
508
expect(event.isPersistent()).toBe(true);
509
persistentEvents.push(event);
510
};
511
- let div = ReactDOM.render(
511
+ const div = ReactDOM.render(
512
<div
513
onKeyDown={eventHandler}
514
onKeyUp={eventHandler}
packages/react-dom/src/server/ReactDOMFizzServerNode.js
+1
-1
@@ -24,7 +24,7 @@ function pipeToNodeWritable(
24
children: ReactNodeList,
25
destination: Writable,
26
): void {
27
- let request = createRequest(children, destination);
27
+ const request = createRequest(children, destination);
28
destination.on('drain', createDrainHandler(destination, request));
29
startWork(request);
30
}
packages/react-dom/src/server/ReactPartialRenderer.js
+20
-20
@@ -88,9 +88,9 @@ const toArray = ((React.Children.toArray: any): toArrayType);
88
// Each entry is `this.stack` from a currently executing renderer instance.
89
// (There may be more than one because ReactDOMServer is reentrant).
90
// Each stack is an array of frames which may contain nested stacks of elements.
91
-let currentDebugStacks = [];
91
+const currentDebugStacks = [];
92
93
-let ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
93
+const ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
94
let ReactDebugCurrentFrame;
95
let prevGetCurrentStackImpl = null;
96
let getCurrentServerStackImpl = () => '';
@@ -160,7 +160,7 @@ if (__DEV__) {
160
}
161
// ReactDOMServer is reentrant so there may be multiple calls at the same time.
162
// Take the frames from the innermost call which is the last in the array.
163
- let frames = currentDebugStacks[currentDebugStacks.length - 1];
163
+ const frames = currentDebugStacks[currentDebugStacks.length - 1];
164
let stack = '';
165
// Go through every frame in the stack from the innermost one.
166
for (let i = frames.length - 1; i >= 0; i--) {
@@ -168,7 +168,7 @@ if (__DEV__) {
168
// Every frame might have more than one debug element stack entry associated with it.
169
// This is because single-child nesting doesn't create materialized frames.
170
// Instead it would push them through `pushElementToDebugStack()`.
171
- let debugElementStack = ((frame: any): FrameDev).debugElementStack;
171
+ const debugElementStack = ((frame: any): FrameDev).debugElementStack;
172
for (let ii = debugElementStack.length - 1; ii >= 0; ii--) {
173
stack += describeStackFrame(debugElementStack[ii]);
174
}
@@ -416,8 +416,8 @@ function resolve(
416
|} {
417
while (React.isValidElement(child)) {
418
// Safe because we just checked it's an element.
419
- let element: ReactElement = (child: any);
420
- let Component = element.type;
419
+ const element: ReactElement = (child: any);
420
+ const Component = element.type;
421
if (__DEV__) {
422
pushElementToDebugStack(element);
423
}
@@ -434,7 +434,7 @@ function resolve(
434
435
let queue = [];
436
let replace = false;
437
- let updater = {
437
+ const updater = {
438
isMounted: function(publicInstance) {
439
return false;
440
},
@@ -480,7 +480,7 @@ function resolve(
480
}
481
}
482
483
- let partialState = Component.getDerivedStateFromProps.call(
483
+ const partialState = Component.getDerivedStateFromProps.call(
484
null,
485
element.props,
486
inst.state,
@@ -612,8 +612,8 @@ function resolve(
612
inst.UNSAFE_componentWillMount();
613
}
614
if (queue.length) {
615
- let oldQueue = queue;
616
- let oldReplace = replace;
615
+ const oldQueue = queue;
616
+ const oldReplace = replace;
617
queue = null;
618
replace = false;
619
@@ -623,8 +623,8 @@ function resolve(
623
let nextState = oldReplace ? oldQueue[0] : inst.state;
624
let dontMutate = true;
625
for (let i = oldReplace ? 1 : 0; i < oldQueue.length; i++) {
626
- let partial = oldQueue[i];
627
- let partialState =
626
+ const partial = oldQueue[i];
627
+ const partialState =
628
typeof partial === 'function'
629
? partial.call(inst, nextState, element.props, publicContext)
630
: partial;
@@ -657,7 +657,7 @@ function resolve(
657
let childContext;
658
if (disableLegacyContext) {
659
if (__DEV__) {
660
- let childContextTypes = Component.childContextTypes;
660
+ const childContextTypes = Component.childContextTypes;
661
if (childContextTypes !== undefined) {
662
console.error(
663
'%s uses the legacy childContextTypes API which is no longer supported. ' +
@@ -668,10 +668,10 @@ function resolve(
668
}
669
} else {
670
if (typeof inst.getChildContext === 'function') {
671
- let childContextTypes = Component.childContextTypes;
671
+ const childContextTypes = Component.childContextTypes;
672
if (typeof childContextTypes === 'object') {
673
childContext = inst.getChildContext();
674
- for (let contextKey in childContext) {
674
+ for (const contextKey in childContext) {
675
invariant(
676
contextKey in childContextTypes,
677
'%s.getChildContext(): key "%s" is not defined in childContextTypes.',
@@ -843,7 +843,7 @@ class ReactDOMServerRenderer {
843
try {
844
// Markup generated within <Suspense> ends up buffered until we know
845
// nothing in that boundary suspended
846
- let out = [''];
846
+ const out = [''];
847
let suspended = false;
848
while (out[0].length < bytes) {
849
if (this.stack.length === 0) {
@@ -1112,7 +1112,7 @@ class ReactDOMServerRenderer {
1112
}
1113
case REACT_MEMO_TYPE: {
1114
const element: ReactElement = ((nextChild: any): ReactElement);
1115
- let nextChildren = [
1115
+ const nextChildren = [
1116
React.createElement(
1117
elementType.type,
1118
Object.assign({ref: element.ref}, element.props),
@@ -1245,9 +1245,9 @@ class ReactDOMServerRenderer {
1245
// Attempt to initialize lazy component regardless of whether the
1246
// suspense server-side renderer is enabled so synchronously
1247
// resolved constructors are supported.
1248
- let payload = lazyComponent._payload;
1249
- let init = lazyComponent._init;
1250
- let result = init(payload);
1248
+ const payload = lazyComponent._payload;
1249
+ const init = lazyComponent._init;
1250
+ const result = init(payload);
1251
const nextChildren = [
1252
React.createElement(
1253
result,
packages/react-dom/src/server/ReactPartialRendererContext.js
+1
-1
@@ -70,7 +70,7 @@ export function processContext(
70
const contextType = type.contextType;
71
if (__DEV__) {
72
if ('contextType' in (type: any)) {
73
- let isValid =
73
+ const isValid =
74
// Allow null for conditional declaration
75
contextType === null ||
76
(contextType !== undefined &&
packages/react-dom/src/server/ReactPartialRendererHooks.js
+2
-2
@@ -223,7 +223,7 @@ function readContext<T>(
223
context: ReactContext<T>,
224
observedBits: void | number | boolean,
225
): T {
226
- let threadID = currentThreadID;
226
+ const threadID = currentThreadID;
227
validateContextBounds(context, threadID);
228
if (__DEV__) {
229
if (isInHookUserCodeInDev) {
@@ -246,7 +246,7 @@ function useContext<T>(
246
currentHookNameInDev = 'useContext';
247
}
248
resolveCurrentlyRenderingComponent();
249
- let threadID = currentThreadID;
249
+ const threadID = currentThreadID;
250
validateContextBounds(context, threadID);
251
return context[threadID];
252
}
packages/react-dom/src/server/ReactThreadIDAllocator.js
+5
-5
@@ -22,9 +22,9 @@ for (let i = 0; i < 15; i++) {
22
nextAvailableThreadIDs[15] = 0;
23
24
function growThreadCountAndReturnNextAvailable() {
25
- let oldArray = nextAvailableThreadIDs;
26
- let oldSize = oldArray.length;
27
- let newSize = oldSize * 2;
25
+ const oldArray = nextAvailableThreadIDs;
26
+ const oldSize = oldArray.length;
27
+ const newSize = oldSize * 2;
28
invariant(
29
newSize <= 0x10000,
30
'Maximum number of concurrent React renderers exceeded. ' +
@@ -32,7 +32,7 @@ function growThreadCountAndReturnNextAvailable() {
32
'Ensure that you call .destroy() on it if you no longer want to read from it, ' +
33
'and did not read to the end. If you use .pipe() this should be automatic.',
34
);
35
- let newArray = new Uint16Array(newSize);
35
+ const newArray = new Uint16Array(newSize);
36
newArray.set(oldArray);
37
nextAvailableThreadIDs = newArray;
38
nextAvailableThreadIDs[0] = oldSize + 1;
@@ -44,7 +44,7 @@ function growThreadCountAndReturnNextAvailable() {
44
}
45
46
export function allocThreadID(): ThreadID {
47
- let nextID = nextAvailableThreadIDs[0];
47
+ const nextID = nextAvailableThreadIDs[0];
48
if (nextID === 0) {
49
return growThreadCountAndReturnNextAvailable();
50
}
packages/react-dom/src/test-utils/ReactTestUtils.js
+2
-4
@@ -90,7 +90,7 @@ function findAllInRenderedFiberTreeInternal(fiber, test) {
90
return [];
91
}
92
let node = currentParent;
93
- let ret = [];
93
+ const ret = [];
94
while (true) {
95
if (
96
node.tag === HostComponent ||
@@ -415,8 +415,6 @@ function shouldPreventMouseEvent(name, type, props) {
415
* @return {?function} The stored callback.
416
*/
417
function getListener(inst: Fiber, registrationName: string) {
418
- let listener;
419
-
418
// TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
419
// live here; needs to be moved to a better place soon
420
const stateNode = inst.stateNode;
@@ -429,7 +427,7 @@ function getListener(inst: Fiber, registrationName: string) {
427
// Work in progress.
428
return null;
429
}
432
- listener = props[registrationName];
430
+ const listener = props[registrationName];
431
if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
432
return null;
433
}
packages/react-dom/src/test-utils/ReactTestUtilsAct.js
+3
-5
@@ -83,13 +83,11 @@ function act(callback: () => Thenable<mixed>): Thenable<void> {
83
);
84
}
85
}
86
- let previousActingUpdatesScopeDepth = actingUpdatesScopeDepth;
87
- let previousIsSomeRendererActing;
88
- let previousIsThisRendererActing;
86
+ const previousActingUpdatesScopeDepth = actingUpdatesScopeDepth;
87
actingUpdatesScopeDepth++;
88
91
- previousIsSomeRendererActing = IsSomeRendererActing.current;
92
- previousIsThisRendererActing = IsThisRendererActing.current;
89
+ const previousIsSomeRendererActing = IsSomeRendererActing.current;
90
+ const previousIsThisRendererActing = IsThisRendererActing.current;
91
IsSomeRendererActing.current = true;
92
IsThisRendererActing.current = true;
93
packages/react-flight-dom-relay/src/ReactFlightDOMRelayClient.js
+1
-1
@@ -24,7 +24,7 @@ function parseModel<T>(response: Response<T>, targetObj, key, value) {
24
(value: any)[i] = parseModel(response, value, '' + i, value[i]);
25
}
26
} else {
27
- for (let innerKey in value) {
27
+ for (const innerKey in value) {
28
(value: any)[innerKey] = parseModel(
29
response,
30
value,
packages/react-flight-dom-relay/src/ReactFlightDOMRelayServer.js
+1
-1
@@ -20,7 +20,7 @@ function render(
20
destination: Destination,
21
config: BundlerConfig,
22
): void {
23
- let request = createRequest(model, destination, config);
23
+ const request = createRequest(model, destination, config);
24
startWork(request);
25
}
26
packages/react-flight-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js
+5
-5
@@ -84,17 +84,17 @@ function convertModelToJSON(
84
key: string,
85
model: ReactModel,
86
): JSONValue {
87
- let json = resolveModelToJSON(request, parent, key, model);
87
+ const json = resolveModelToJSON(request, parent, key, model);
88
if (typeof json === 'object' && json !== null) {
89
if (Array.isArray(json)) {
90
- let jsonArray: Array<JSONValue> = [];
90
+ const jsonArray: Array<JSONValue> = [];
91
for (let i = 0; i < json.length; i++) {
92
jsonArray[i] = convertModelToJSON(request, json, '' + i, json[i]);
93
}
94
return jsonArray;
95
} else {
96
- let jsonObj: {[key: string]: JSONValue} = {};
97
- for (let nextKey in json) {
96
+ const jsonObj: {[key: string]: JSONValue} = {};
97
+ for (const nextKey in json) {
98
jsonObj[nextKey] = convertModelToJSON(
99
request,
100
json,
@@ -113,7 +113,7 @@ export function processModelChunk(
113
id: number,
114
model: ReactModel,
115
): Chunk {
116
- let json = convertModelToJSON(request, {}, '', model);
116
+ const json = convertModelToJSON(request, {}, '', model);
117
return {
118
type: 'json',
119
id: id,
packages/react-flight-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js
+13
-13
@@ -27,9 +27,9 @@ describe('ReactFlightDOMRelay', () => {
27
});
28
29
function readThrough(data) {
30
- let response = ReactDOMFlightRelayClient.createResponse();
30
+ const response = ReactDOMFlightRelayClient.createResponse();
31
for (let i = 0; i < data.length; i++) {
32
- let chunk = data[i];
32
+ const chunk = data[i];
33
if (chunk.type === 'json') {
34
ReactDOMFlightRelayClient.resolveModel(response, chunk.id, chunk.json);
35
} else {
@@ -42,7 +42,7 @@ describe('ReactFlightDOMRelay', () => {
42
}
43
}
44
ReactDOMFlightRelayClient.close(response);
45
- let model = response.readRoot();
45
+ const model = response.readRoot();
46
return model;
47
}
48
@@ -51,7 +51,7 @@ describe('ReactFlightDOMRelay', () => {
51
return ReactDOMFlightRelayServerRuntime.serverBlock(render);
52
}
53
return function(...args) {
54
- let curriedLoad = () => {
54
+ const curriedLoad = () => {
55
return load(...args);
56
};
57
return ReactDOMFlightRelayServerRuntime.serverBlock(render, curriedLoad);
@@ -71,7 +71,7 @@ describe('ReactFlightDOMRelay', () => {
71
),
72
};
73
}
74
- let transport = [];
74
+ const transport = [];
75
ReactDOMFlightRelayServer.render(
76
{
77
foo: <Foo />,
@@ -79,7 +79,7 @@ describe('ReactFlightDOMRelay', () => {
79
transport,
80
);
81
82
- let model = readThrough(transport);
82
+ const model = readThrough(transport);
83
expect(model).toEqual({
84
foo: {
85
bar: (
@@ -104,20 +104,20 @@ describe('ReactFlightDOMRelay', () => {
104
</span>
105
);
106
}
107
- let loadUser = block(User, load);
108
- let model = {
107
+ const loadUser = block(User, load);
108
+ const model = {
109
User: loadUser('Seb', 'Smith'),
110
};
111
112
- let transport = [];
112
+ const transport = [];
113
ReactDOMFlightRelayServer.render(model, transport);
114
115
- let modelClient = readThrough(transport);
115
+ const modelClient = readThrough(transport);
116
117
- let container = document.createElement('div');
118
- let root = ReactDOM.createRoot(container);
117
+ const container = document.createElement('div');
118
+ const root = ReactDOM.createRoot(container);
119
act(() => {
120
- let UserClient = modelClient.User;
120
+ const UserClient = modelClient.User;
121
root.render(<UserClient greeting="Hello" />);
122
});
123
packages/react-flight-dom-webpack/src/ReactFlightClientWebpackBundlerConfig.js
+9
-9
@@ -31,14 +31,14 @@ const chunkCache: Map<string, null | Promise<any> | Error> = new Map();
31
// Start preloading the modules since we might need them soon.
32
// This function doesn't suspend.
33
export function preloadModule<T>(moduleData: ModuleReference<T>): void {
34
- let chunks = moduleData.chunks;
34
+ const chunks = moduleData.chunks;
35
for (let i = 0; i < chunks.length; i++) {
36
- let chunkId = chunks[i];
37
- let entry = chunkCache.get(chunkId);
36
+ const chunkId = chunks[i];
37
+ const entry = chunkCache.get(chunkId);
38
if (entry === undefined) {
39
- let thenable = __webpack_chunk_load__(chunkId);
40
- let resolve = chunkCache.set.bind(chunkCache, chunkId, null);
41
- let reject = chunkCache.set.bind(chunkCache, chunkId);
39
+ const thenable = __webpack_chunk_load__(chunkId);
40
+ const resolve = chunkCache.set.bind(chunkCache, chunkId, null);
41
+ const reject = chunkCache.set.bind(chunkCache, chunkId);
42
thenable.then(resolve, reject);
43
chunkCache.set(chunkId, thenable);
44
}
@@ -48,10 +48,10 @@ export function preloadModule<T>(moduleData: ModuleReference<T>): void {
48
// Actually require the module or suspend if it's not yet ready.
49
// Increase priority if necessary.
50
export function requireModule<T>(moduleData: ModuleReference<T>): T {
51
- let chunks = moduleData.chunks;
51
+ const chunks = moduleData.chunks;
52
for (let i = 0; i < chunks.length; i++) {
53
- let chunkId = chunks[i];
54
- let entry = chunkCache.get(chunkId);
53
+ const chunkId = chunks[i];
54
+ const entry = chunkCache.get(chunkId);
55
if (entry !== null) {
56
// We assume that preloadModule has been called before.
57
// So we don't expect to see entry being undefined here, that's an error.
packages/react-flight-dom-webpack/src/ReactFlightDOMClient.js
+6
-6
@@ -21,13 +21,13 @@ function startReadingFromStream<T>(
21
response: FlightResponse<T>,
22
stream: ReadableStream,
23
): void {
24
- let reader = stream.getReader();
24
+ const reader = stream.getReader();
25
function progress({done, value}) {
26
if (done) {
27
close(response);
28
return;
29
}
30
- let buffer: Uint8Array = (value: any);
30
+ const buffer: Uint8Array = (value: any);
31
processBinaryChunk(response, buffer);
32
return reader.read().then(progress, error);
33
}
@@ -40,7 +40,7 @@ function startReadingFromStream<T>(
40
function createFromReadableStream<T>(
41
stream: ReadableStream,
42
): FlightResponse<T> {
43
- let response: FlightResponse<T> = createResponse();
43
+ const response: FlightResponse<T> = createResponse();
44
startReadingFromStream(response, stream);
45
return response;
46
}
@@ -48,7 +48,7 @@ function createFromReadableStream<T>(
48
function createFromFetch<T>(
49
promiseForResponse: Promise<Response>,
50
): FlightResponse<T> {
51
- let response: FlightResponse<T> = createResponse();
51
+ const response: FlightResponse<T> = createResponse();
52
promiseForResponse.then(
53
function(r) {
54
startReadingFromStream(response, (r.body: any));
@@ -61,10 +61,10 @@ function createFromFetch<T>(
61
}
62
63
function createFromXHR<T>(request: XMLHttpRequest): FlightResponse<T> {
64
- let response: FlightResponse<T> = createResponse();
64
+ const response: FlightResponse<T> = createResponse();
65
let processedLength = 0;
66
function progress(e: ProgressEvent): void {
67
- let chunk = request.responseText;
67
+ const chunk = request.responseText;
68
processStringChunk(response, chunk, processedLength);
69
processedLength = chunk.length;
70
}
packages/react-flight-dom-webpack/src/ReactFlightDOMServerNode.js
+1
-1
@@ -26,7 +26,7 @@ function pipeToNodeWritable(
26
destination: Writable,
27
webpackMap: BundlerConfig,
28
): void {
29
- let request = createRequest(model, destination, webpackMap);
29
+ const request = createRequest(model, destination, webpackMap);
30
destination.on('drain', createDrainHandler(destination, request));
31
startWork(request);
32
}
packages/react-flight-dom-webpack/src/__tests__/ReactFlightDOM-test.js
+32
-32
@@ -47,8 +47,8 @@ describe('ReactFlightDOM', () => {
47
});
48
49
function getTestStream() {
50
- let writable = new Stream.PassThrough();
51
- let readable = new ReadableStream({
50
+ const writable = new Stream.PassThrough();
51
+ const readable = new ReadableStream({
52
start(controller) {
53
writable.on('data', chunk => {
54
controller.enqueue(chunk);
@@ -65,7 +65,7 @@ describe('ReactFlightDOM', () => {
65
}
66
67
function block(render, load) {
68
- let idx = webpackModuleIdx++;
68
+ const idx = webpackModuleIdx++;
69
webpackModules[idx] = {
70
d: render,
71
};
@@ -80,7 +80,7 @@ describe('ReactFlightDOM', () => {
80
};
81
}
82
return function(...args) {
83
- let curriedLoad = () => {
83
+ const curriedLoad = () => {
84
return load(...args);
85
};
86
return ReactFlightDOMServerRuntime.serverBlock(
@@ -118,17 +118,17 @@ describe('ReactFlightDOM', () => {
118
}
119
120
function App() {
121
- let model = {
121
+ const model = {
122
html: <HTML />,
123
};
124
return model;
125
}
126
127
- let {writable, readable} = getTestStream();
127
+ const {writable, readable} = getTestStream();
128
ReactFlightDOMServer.pipeToNodeWritable(<App />, writable, webpackMap);
129
- let response = ReactFlightDOMClient.createFromReadableStream(readable);
129
+ const response = ReactFlightDOMClient.createFromReadableStream(readable);
130
await waitForSuspense(() => {
131
- let model = response.readRoot();
131
+ const model = response.readRoot();
132
expect(model).toEqual({
133
html: (
134
<div>
@@ -141,7 +141,7 @@ describe('ReactFlightDOM', () => {
141
});
142
143
it.experimental('should resolve the root', async () => {
144
- let {Suspense} = React;
144
+ const {Suspense} = React;
145
146
// Model
147
function Text({children}) {
@@ -173,16 +173,16 @@ describe('ReactFlightDOM', () => {
173
);
174
}
175
176
- let {writable, readable} = getTestStream();
176
+ const {writable, readable} = getTestStream();
177
ReactFlightDOMServer.pipeToNodeWritable(
178
<RootModel />,
179
writable,
180
webpackMap,
181
);
182
- let response = ReactFlightDOMClient.createFromReadableStream(readable);
182
+ const response = ReactFlightDOMClient.createFromReadableStream(readable);
183
184
- let container = document.createElement('div');
185
- let root = ReactDOM.createRoot(container);
184
+ const container = document.createElement('div');
185
+ const root = ReactDOM.createRoot(container);
186
await act(async () => {
187
root.render(<App response={response} />);
188
});
@@ -192,7 +192,7 @@ describe('ReactFlightDOM', () => {
192
});
193
194
it.experimental('should not get confused by $', async () => {
195
- let {Suspense} = React;
195
+ const {Suspense} = React;
196
197
// Model
198
function RootModel() {
@@ -211,16 +211,16 @@ describe('ReactFlightDOM', () => {
211
);
212
}
213
214
- let {writable, readable} = getTestStream();
214
+ const {writable, readable} = getTestStream();
215
ReactFlightDOMServer.pipeToNodeWritable(
216
<RootModel />,
217
writable,
218
webpackMap,
219
);
220
- let response = ReactFlightDOMClient.createFromReadableStream(readable);
220
+ const response = ReactFlightDOMClient.createFromReadableStream(readable);
221
222
- let container = document.createElement('div');
223
- let root = ReactDOM.createRoot(container);
222
+ const container = document.createElement('div');
223
+ const root = ReactDOM.createRoot(container);
224
await act(async () => {
225
root.render(<App response={response} />);
226
});
@@ -228,7 +228,7 @@ describe('ReactFlightDOM', () => {
228
});
229
230
it.experimental('should not get confused by @', async () => {
231
- let {Suspense} = React;
231
+ const {Suspense} = React;
232
233
// Model
234
function RootModel() {
@@ -247,16 +247,16 @@ describe('ReactFlightDOM', () => {
247
);
248
}
249
250
- let {writable, readable} = getTestStream();
250
+ const {writable, readable} = getTestStream();
251
ReactFlightDOMServer.pipeToNodeWritable(
252
<RootModel />,
253
writable,
254
webpackMap,
255
);
256
- let response = ReactFlightDOMClient.createFromReadableStream(readable);
256
+ const response = ReactFlightDOMClient.createFromReadableStream(readable);
257
258
- let container = document.createElement('div');
259
- let root = ReactDOM.createRoot(container);
258
+ const container = document.createElement('div');
259
+ const root = ReactDOM.createRoot(container);
260
await act(async () => {
261
root.render(<App response={response} />);
262
});
@@ -264,7 +264,7 @@ describe('ReactFlightDOM', () => {
264
});
265
266
it.experimental('should progressively reveal Blocks', async () => {
267
- let {Suspense} = React;
267
+ const {Suspense} = React;
268
269
class ErrorBoundary extends React.Component {
270
state = {hasError: false, error: null};
@@ -311,7 +311,7 @@ describe('ReactFlightDOM', () => {
311
function DelayedText({children}, data) {
312
return <Text>{children}</Text>;
313
}
314
- let loadBlock = block(DelayedText, load);
314
+ const loadBlock = block(DelayedText, load);
315
return [loadBlock(), _resolve, _reject];
316
}
317
@@ -328,7 +328,7 @@ describe('ReactFlightDOM', () => {
328
games: <GamesModel>:games:</GamesModel>,
329
};
330
}
331
- let profileModel = {
331
+ const profileModel = {
332
photos: <PhotosModel>:photos:</PhotosModel>,
333
name: <NameModel>:name:</NameModel>,
334
more: <ProfileMore />,
@@ -336,7 +336,7 @@ describe('ReactFlightDOM', () => {
336
337
// View
338
function ProfileDetails({response}) {
339
- let model = response.readRoot();
339
+ const model = response.readRoot();
340
return (
341
<div>
342
{model.name}
@@ -345,7 +345,7 @@ describe('ReactFlightDOM', () => {
345
);
346
}
347
function ProfileSidebar({response}) {
348
- let model = response.readRoot();
348
+ const model = response.readRoot();
349
return (
350
<div>
351
{model.photos}
@@ -380,12 +380,12 @@ describe('ReactFlightDOM', () => {
380
);
381
}
382
383
- let {writable, readable} = getTestStream();
383
+ const {writable, readable} = getTestStream();
384
ReactFlightDOMServer.pipeToNodeWritable(profileModel, writable, webpackMap);
385
- let response = ReactFlightDOMClient.createFromReadableStream(readable);
385
+ const response = ReactFlightDOMClient.createFromReadableStream(readable);
386
387
- let container = document.createElement('div');
388
- let root = ReactDOM.createRoot(container);
387
+ const container = document.createElement('div');
388
+ const root = ReactDOM.createRoot(container);
389
await act(async () => {
390
root.render(<ProfilePage response={response} />);
391
});
packages/react-flight-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js
+4
-4
@@ -55,16 +55,16 @@ describe('ReactFlightDOMBrowser', () => {
55
}
56
57
function App() {
58
- let model = {
58
+ const model = {
59
html: <HTML />,
60
};
61
return model;
62
}
63
64
- let stream = ReactFlightDOMServer.renderToReadableStream(<App />);
65
- let response = ReactFlightDOMClient.createFromReadableStream(stream);
64
+ const stream = ReactFlightDOMServer.renderToReadableStream(<App />);
65
+ const response = ReactFlightDOMClient.createFromReadableStream(stream);
66
await waitForSuspense(() => {
67
- let model = response.readRoot();
67
+ const model = response.readRoot();
68
expect(model).toEqual({
69
html: (
70
<div>
packages/react-interactions/events/src/dom/PressLegacy.js
+3
-3
@@ -174,8 +174,7 @@ function createPressEvent(
174
({altKey, ctrlKey, metaKey, shiftKey} = nativeEvent);
175
// Only check for one property, checking for all of them is costly. We can assume
176
// if clientX exists, so do the rest.
177
- let eventObject;
178
- eventObject = (touchEvent: any) || (nativeEvent: any);
177
+ const eventObject = (touchEvent: any) || (nativeEvent: any);
178
if (eventObject) {
179
({clientX, clientY, pageX, pageY, screenX, screenY} = eventObject);
180
}
@@ -671,7 +670,8 @@ const pressResponderImpl = {
670
props: PressProps,
671
state: PressState,
672
): void {
674
- let {pointerType, target, type} = event;
673
+ const {pointerType, type} = event;
674
+ let target = event.target;
675
676
const nativeEvent: any = event.nativeEvent;
677
const isPressed = state.isPressed;
packages/react-interactions/events/src/dom/__tests__/FocusWithin-test.internal.js
+4
-2
@@ -350,7 +350,9 @@ describe.each(table)('FocusWithin responder', hasPointerEvents => {
350
const Suspense = React.Suspense;
351
let suspend = false;
352
let resolve;
353
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
353
+ const promise = new Promise(
354
+ resolvePromise => (resolve = resolvePromise),
355
+ );
356
357
function Child() {
358
if (suspend) {
@@ -378,7 +380,7 @@ describe.each(table)('FocusWithin responder', hasPointerEvents => {
380
const container2 = document.createElement('div');
381
document.body.appendChild(container2);
382
381
- let root = ReactDOM.createRoot(container2);
383
+ const root = ReactDOM.createRoot(container2);
384
root.render(<Component />);
385
Scheduler.unstable_flushAll();
386
jest.runAllTimers();
packages/react-interactions/events/src/dom/__tests__/PressLegacy-test.internal.js
+1
-1
@@ -615,7 +615,7 @@ describe.each(environmentTable)('Press responder', hasPointerEvents => {
615
});
616
617
it('press retention offset can be configured', () => {
618
- let localEvents = [];
618
+ const localEvents = [];
619
const localRef = React.createRef();
620
const createEventHandler = msg => () => {
621
localEvents.push(msg);
packages/react-native-renderer/src/ReactFabricComponentTree.js
+1
-1
@@ -12,7 +12,7 @@ function getInstanceFromInstance(instanceHandle) {
12
}
13
14
function getTagFromInstance(inst) {
15
- let nativeInstance = inst.stateNode.canonical;
15
+ const nativeInstance = inst.stateNode.canonical;
16
invariant(
17
nativeInstance._nativeTag,
18
'All native instances should have a tag.',
packages/react-native-renderer/src/ReactNativeFiberHostComponent.js
+1
-1
@@ -82,7 +82,7 @@ class ReactNativeFiberHostComponent {
82
// Already a node handle
83
relativeNode = relativeToNativeNode;
84
} else {
85
- let nativeNode: ReactNativeFiberHostComponent = (relativeToNativeNode: any);
85
+ const nativeNode: ReactNativeFiberHostComponent = (relativeToNativeNode: any);
86
if (nativeNode._nativeTag) {
87
relativeNode = nativeNode._nativeTag;
88
}
packages/react-native-renderer/src/ReactNativeRenderer.js
+1
-1
@@ -219,7 +219,7 @@ setBatchingImplementation(
219
);
220
221
function computeComponentStackForErrorReporting(reactTag: number): string {
222
- let fiber = getClosestInstanceFromNode(reactTag);
222
+ const fiber = getClosestInstanceFromNode(reactTag);
223
if (!fiber) {
224
return '';
225
}
packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js
+2
-2
@@ -28,7 +28,7 @@ function dumpSubtree(info, indent) {
28
29
const RCTFabricUIManager = {
30
__dumpChildSetForJestTestsOnly: function(childSet) {
31
- let result = [];
31
+ const result = [];
32
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
33
for (const child of childSet) {
34
result.push(dumpSubtree(child, 0));
@@ -36,7 +36,7 @@ const RCTFabricUIManager = {
36
return result.join('\n');
37
},
38
__dumpHierarchyForJestTestsOnly: function() {
39
- let result = [];
39
+ const result = [];
40
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
41
for (const [rootTag, childSet] of roots) {
42
result.push(rootTag);
packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/UIManager.js
+1
-1
@@ -15,7 +15,7 @@ import invariant from 'shared/invariant';
15
16
// Map of viewTag -> {children: [childTag], parent: ?parentTag}
17
const roots = [];
18
-let views = new Map();
18
+const views = new Map();
19
20
function autoCreateRoot(tag) {
21
// Seriously, this is how we distinguish roots in RN.
packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js
+6
-6
@@ -613,18 +613,18 @@ describe('ReactFabric', () => {
613
1,
614
);
615
616
- let [
616
+ const [
617
,
618
,
619
,
620
,
621
instanceHandle,
622
] = nativeFabricUIManager.createNode.mock.calls[0];
623
- let [
623
+ const [
624
dispatchEvent,
625
] = nativeFabricUIManager.registerEventHandler.mock.calls[0];
626
627
- let touchEvent = {
627
+ const touchEvent = {
628
touches: [],
629
changedTouches: [],
630
};
@@ -708,7 +708,7 @@ describe('ReactFabric', () => {
708
1,
709
);
710
711
- let [
711
+ const [
712
dispatchEvent,
713
] = nativeFabricUIManager.registerEventHandler.mock.calls[0];
714
@@ -894,7 +894,7 @@ describe('ReactFabric', () => {
894
uiViewClassName: 'RCTView',
895
}));
896
897
- let viewRef = React.createRef();
897
+ const viewRef = React.createRef();
898
ReactFabric.render(<View ref={viewRef} />, 11);
899
900
expect(TextInputState.blurTextInput).not.toBeCalled();
@@ -911,7 +911,7 @@ describe('ReactFabric', () => {
911
uiViewClassName: 'RCTView',
912
}));
913
914
- let viewRef = React.createRef();
914
+ const viewRef = React.createRef();
915
ReactFabric.render(<View ref={viewRef} />, 11);
916
917
expect(TextInputState.focusTextInput).not.toBeCalled();
packages/react-native-renderer/src/__tests__/ReactFabricAndNative-test.internal.js
+10
-10
@@ -40,7 +40,7 @@ describe('created with ReactFabric called with ReactNative', () => {
40
uiViewClassName: 'RCTView',
41
}));
42
43
- let ref = React.createRef();
43
+ const ref = React.createRef();
44
45
class Component extends React.Component {
46
render() {
@@ -50,7 +50,7 @@ describe('created with ReactFabric called with ReactNative', () => {
50
51
ReactFabric.render(<Component ref={ref} />, 11);
52
53
- let instance = ReactNative.findHostInstance_DEPRECATED(ref.current);
53
+ const instance = ReactNative.findHostInstance_DEPRECATED(ref.current);
54
expect(instance._nativeTag).toBe(2);
55
});
56
@@ -60,7 +60,7 @@ describe('created with ReactFabric called with ReactNative', () => {
60
uiViewClassName: 'RCTView',
61
}));
62
63
- let ref = React.createRef();
63
+ const ref = React.createRef();
64
65
class Component extends React.Component {
66
render() {
@@ -70,7 +70,7 @@ describe('created with ReactFabric called with ReactNative', () => {
70
71
ReactFabric.render(<Component ref={ref} />, 11);
72
73
- let handle = ReactNative.findNodeHandle(ref.current);
73
+ const handle = ReactNative.findNodeHandle(ref.current);
74
expect(handle).toBe(2);
75
});
76
@@ -81,7 +81,7 @@ describe('created with ReactFabric called with ReactNative', () => {
81
uiViewClassName: 'RCTView',
82
}));
83
84
- let ref = React.createRef();
84
+ const ref = React.createRef();
85
86
ReactFabric.render(<View title="bar" ref={ref} />, 11);
87
expect(nativeFabricUIManager.dispatchCommand).not.toBeCalled();
@@ -118,7 +118,7 @@ describe('created with ReactNative called with ReactFabric', () => {
118
uiViewClassName: 'RCTView',
119
}));
120
121
- let ref = React.createRef();
121
+ const ref = React.createRef();
122
123
class Component extends React.Component {
124
render() {
@@ -128,7 +128,7 @@ describe('created with ReactNative called with ReactFabric', () => {
128
129
ReactNative.render(<Component ref={ref} />, 11);
130
131
- let instance = ReactFabric.findHostInstance_DEPRECATED(ref.current);
131
+ const instance = ReactFabric.findHostInstance_DEPRECATED(ref.current);
132
expect(instance._nativeTag).toBe(3);
133
});
134
@@ -138,7 +138,7 @@ describe('created with ReactNative called with ReactFabric', () => {
138
uiViewClassName: 'RCTView',
139
}));
140
141
- let ref = React.createRef();
141
+ const ref = React.createRef();
142
143
class Component extends React.Component {
144
render() {
@@ -148,7 +148,7 @@ describe('created with ReactNative called with ReactFabric', () => {
148
149
ReactNative.render(<Component ref={ref} />, 11);
150
151
- let handle = ReactFabric.findNodeHandle(ref.current);
151
+ const handle = ReactFabric.findNodeHandle(ref.current);
152
expect(handle).toBe(3);
153
});
154
@@ -159,7 +159,7 @@ describe('created with ReactNative called with ReactFabric', () => {
159
uiViewClassName: 'RCTView',
160
}));
161
162
- let ref = React.createRef();
162
+ const ref = React.createRef();
163
164
ReactNative.render(<View title="bar" ref={ref} />, 11);
165
expect(UIManager.dispatchViewManagerCommand).not.toBeCalled();
packages/react-native-renderer/src/__tests__/ReactNativeError-test.internal.js
+2
-2
@@ -68,9 +68,9 @@ describe('ReactNativeError', () => {
68
69
ReactNative.render(<ClassComponent />, 1);
70
71
- let reactTag = ReactNative.findNodeHandle(ref.current);
71
+ const reactTag = ReactNative.findNodeHandle(ref.current);
72
73
- let componentStack = normalizeCodeLocInfo(
73
+ const componentStack = normalizeCodeLocInfo(
74
computeComponentStackForErrorReporting(reactTag),
75
);
76
packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js
+2
-2
@@ -604,7 +604,7 @@ describe('ReactNative', () => {
604
uiViewClassName: 'RCTView',
605
}));
606
607
- let viewRef = React.createRef();
607
+ const viewRef = React.createRef();
608
ReactNative.render(<View ref={viewRef} />, 11);
609
610
expect(TextInputState.blurTextInput).not.toBeCalled();
@@ -621,7 +621,7 @@ describe('ReactNative', () => {
621
uiViewClassName: 'RCTView',
622
}));
623
624
- let viewRef = React.createRef();
624
+ const viewRef = React.createRef();
625
ReactNative.render(<View ref={viewRef} />, 11);
626
627
expect(TextInputState.focusTextInput).not.toBeCalled();
packages/react-noop-renderer/flight-modules.js
+2
-2
@@ -9,11 +9,11 @@
9
10
// This file is used as temporary storage for modules generated in Flight tests.
11
let moduleIdx = 0;
12
-let modules: Map<string, Function> = new Map();
12
+const modules: Map<string, Function> = new Map();
13
14
// This simulates what the compiler will do when it replaces render functions with server blocks.
15
export function saveModule(render: Function): string {
16
- let idx = '' + moduleIdx++;
16
+ const idx = '' + moduleIdx++;
17
modules.set(idx, render);
18
return idx;
19
}
packages/react-noop-renderer/src/ReactNoopFlightClient.js
+1
-1
@@ -32,7 +32,7 @@ const {createResponse, processStringChunk, close} = ReactFlightClient({
32
});
33
34
function read<T>(source: Source): T {
35
- let response = createResponse(source);
35
+ const response = createResponse(source);
36
for (let i = 0; i < source.length; i++) {
37
processStringChunk(response, source[i], 0);
38
}
packages/react-noop-renderer/src/ReactNoopFlightServer.js
+3
-3
@@ -48,9 +48,9 @@ const ReactNoopFlightServer = ReactFlightServer({
48
});
49
50
function render(model: ReactModel): Destination {
51
- let destination: Destination = [];
52
- let bundlerConfig = undefined;
53
- let request = ReactNoopFlightServer.createRequest(
51
+ const destination: Destination = [];
52
+ const bundlerConfig = undefined;
53
+ const request = ReactNoopFlightServer.createRequest(
54
model,
55
destination,
56
bundlerConfig,
packages/react-noop-renderer/src/ReactNoopServer.js
+2
-2
@@ -41,8 +41,8 @@ const ReactNoopServer = ReactFizzServer({
41
});
42
43
function render(children: React$Element<any>): Destination {
44
- let destination: Destination = [];
45
- let request = ReactNoopServer.createRequest(children, destination);
44
+ const destination: Destination = [];
45
+ const request = ReactNoopServer.createRequest(children, destination);
46
ReactNoopServer.startWork(request);
47
return destination;
48
}
packages/react-noop-renderer/src/createReactNoop.js
+3
-3
@@ -958,7 +958,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
958
return;
959
}
960
961
- let bufferedLog = [];
961
+ const bufferedLog = [];
962
function log(...args) {
963
bufferedLog.push(...args, '\n');
964
}
@@ -988,7 +988,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
988
function logUpdateQueue(updateQueue: UpdateQueue<mixed>, depth) {
989
log(' '.repeat(depth + 1) + 'QUEUED UPDATES');
990
const first = updateQueue.firstBaseUpdate;
991
- let update = first;
991
+ const update = first;
992
if (update !== null) {
993
do {
994
log(
@@ -1001,7 +1001,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
1001
const lastPending = updateQueue.shared.pending;
1002
if (lastPending !== null) {
1003
const firstPending = lastPending.next;
1004
- let pendingUpdate = firstPending;
1004
+ const pendingUpdate = firstPending;
1005
if (pendingUpdate !== null) {
1006
do {
1007
log(
packages/react-reconciler/src/ReactChildFiber.js
+3
-3
@@ -110,7 +110,7 @@ function coerceRef(
110
current: Fiber | null,
111
element: ReactElement,
112
) {
113
- let mixedRef = element.ref;
113
+ const mixedRef = element.ref;
114
if (
115
mixedRef !== null &&
116
typeof mixedRef !== 'function' &&
@@ -271,8 +271,8 @@ function resolveLazyType<T, P>(
271
): LazyComponent<T, P> | T {
272
try {
273
// If we can, let's peek at the resulting type.
274
- let payload = lazyComponent._payload;
275
- let init = lazyComponent._init;
274
+ const payload = lazyComponent._payload;
275
+ const init = lazyComponent._init;
276
return init(payload);
277
} catch (x) {
278
// Leave it in place and let it throw again in the begin phase.
packages/react-reconciler/src/ReactFiber.js
+2
-4
@@ -528,7 +528,7 @@ export function resetWorkInProgress(
528
workInProgress.firstEffect = null;
529
workInProgress.lastEffect = null;
530
531
- let current = workInProgress.alternate;
531
+ const current = workInProgress.alternate;
532
if (current === null) {
533
// Reset to createFiber's initial values.
534
workInProgress.childExpirationTime = NoWork;
@@ -610,8 +610,6 @@ export function createFiberFromTypeAndProps(
610
mode: TypeOfMode,
611
expirationTime: ExpirationTime,
612
): Fiber {
613
- let fiber;
614
-
613
let fiberTag = IndeterminateComponent;
614
// The resolved type is set if we know what the final type will be. I.e. it's not lazy.
615
let resolvedType = type;
@@ -731,7 +729,7 @@ export function createFiberFromTypeAndProps(
729
}
730
}
731
734
- fiber = createFiber(fiberTag, pendingProps, key, mode);
732
+ const fiber = createFiber(fiberTag, pendingProps, key, mode);
733
fiber.elementType = type;
734
fiber.type = resolvedType;
735
fiber.expirationTime = expirationTime;
packages/react-reconciler/src/ReactFiberBeginWork.js
+27
-26
@@ -370,7 +370,7 @@ function updateMemoComponent(
370
renderExpirationTime: ExpirationTime,
371
): null | Fiber {
372
if (current === null) {
373
- let type = Component.type;
373
+ const type = Component.type;
374
if (
375
isSimpleFunctionComponent(type) &&
376
Component.compare === null &&
@@ -411,7 +411,7 @@ function updateMemoComponent(
411
);
412
}
413
}
414
- let child = createFiberFromTypeAndProps(
414
+ const child = createFiberFromTypeAndProps(
415
Component.type,
416
null,
417
nextProps,
@@ -438,7 +438,7 @@ function updateMemoComponent(
438
);
439
}
440
}
441
- let currentChild = ((current.child: any): Fiber); // This is always exactly one child
441
+ const currentChild = ((current.child: any): Fiber); // This is always exactly one child
442
if (updateExpirationTime < renderExpirationTime) {
443
// This will be the props with resolved defaultProps,
444
// unlike current.memoizedProps which will be the unresolved ones.
@@ -456,7 +456,7 @@ function updateMemoComponent(
456
}
457
// React DevTools reads this flag.
458
workInProgress.effectTag |= PerformedWork;
459
- let newChild = createWorkInProgress(currentChild, nextProps);
459
+ const newChild = createWorkInProgress(currentChild, nextProps);
460
newChild.ref = workInProgress.ref;
461
newChild.return = workInProgress;
462
workInProgress.child = newChild;
@@ -485,8 +485,8 @@ function updateSimpleMemoComponent(
485
// so let's just skip over it to find memo() outer wrapper.
486
// Inner props for memo are validated later.
487
const lazyComponent: LazyComponentType<any, any> = outerMemoType;
488
- let payload = lazyComponent._payload;
489
- let init = lazyComponent._init;
488
+ const payload = lazyComponent._payload;
489
+ const init = lazyComponent._init;
490
try {
491
outerMemoType = init(payload);
492
} catch (x) {
@@ -855,7 +855,7 @@ function updateClassComponent(
855
renderExpirationTime,
856
);
857
if (__DEV__) {
858
- let inst = workInProgress.stateNode;
858
+ const inst = workInProgress.stateNode;
859
if (inst.props !== nextProps) {
860
if (!didWarnAboutReassigningProps) {
861
console.error(
@@ -1015,7 +1015,7 @@ function updateHostRoot(current, workInProgress, renderExpirationTime) {
1015
// be any children to hydrate which is effectively the same thing as
1016
// not hydrating.
1017
1018
- let child = mountChildFibers(
1018
+ const child = mountChildFibers(
1019
workInProgress,
1020
null,
1021
nextChildren,
@@ -1127,9 +1127,9 @@ function mountLazyComponent(
1127
}
1128
1129
const props = workInProgress.pendingProps;
1130
- let lazyComponent: LazyComponentType<any, any> = elementType;
1131
- let payload = lazyComponent._payload;
1132
- let init = lazyComponent._init;
1130
+ const lazyComponent: LazyComponentType<any, any> = elementType;
1131
+ const payload = lazyComponent._payload;
1132
+ const init = lazyComponent._init;
1133
let Component = init(payload);
1134
// Store the unwrapped component in the type.
1135
workInProgress.type = Component;
@@ -2194,9 +2194,9 @@ function mountDehydratedSuspenseComponent(
2194
// a protocol to transfer that time, we'll just estimate it by using the current
2195
// time. This will mean that Suspense timeouts are slightly shifted to later than
2196
// they should be.
2197
- let serverDisplayTime = requestCurrentTimeForUpdate();
2197
+ const serverDisplayTime = requestCurrentTimeForUpdate();
2198
// Schedule a normal pri update to render this content.
2199
- let newExpirationTime = computeAsyncExpiration(serverDisplayTime);
2199
+ const newExpirationTime = computeAsyncExpiration(serverDisplayTime);
2200
if (enableSchedulerTracing) {
2201
markSpawnedWork(newExpirationTime);
2202
}
@@ -2252,7 +2252,7 @@ function updateDehydratedSuspenseComponent(
2252
if (suspenseState.retryTime <= renderExpirationTime) {
2253
// This render is even higher pri than we've seen before, let's try again
2254
// at even higher pri.
2255
- let attemptHydrationAtExpirationTime = renderExpirationTime + 1;
2255
+ const attemptHydrationAtExpirationTime = renderExpirationTime + 1;
2256
suspenseState.retryTime = attemptHydrationAtExpirationTime;
2257
scheduleUpdateOnFiber(current, attemptHydrationAtExpirationTime);
2258
// TODO: Early abort this render.
@@ -2332,7 +2332,7 @@ function scheduleWorkOnFiber(
2332
if (fiber.expirationTime < renderExpirationTime) {
2333
fiber.expirationTime = renderExpirationTime;
2334
}
2335
- let alternate = fiber.alternate;
2335
+ const alternate = fiber.alternate;
2336
if (alternate !== null && alternate.expirationTime < renderExpirationTime) {
2337
alternate.expirationTime = renderExpirationTime;
2338
}
@@ -2391,7 +2391,7 @@ function findLastContentRow(firstChild: null | Fiber): null | Fiber {
2391
let row = firstChild;
2392
let lastContentRow: null | Fiber = null;
2393
while (row !== null) {
2394
- let currentRow = row.alternate;
2394
+ const currentRow = row.alternate;
2395
// New rows can't be content rows.
2396
if (currentRow !== null && findFirstSuspended(currentRow) === null) {
2397
lastContentRow = row;
@@ -2483,10 +2483,11 @@ function validateTailOptions(
2483
2484
function validateSuspenseListNestedChild(childSlot: mixed, index: number) {
2485
if (__DEV__) {
2486
- let isArray = Array.isArray(childSlot);
2487
- let isIterable = !isArray && typeof getIteratorFn(childSlot) === 'function';
2486
+ const isArray = Array.isArray(childSlot);
2487
+ const isIterable =
2488
+ !isArray && typeof getIteratorFn(childSlot) === 'function';
2489
if (isArray || isIterable) {
2489
- let type = isArray ? 'array' : 'iterable';
2490
+ const type = isArray ? 'array' : 'iterable';
2491
console.error(
2492
'A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' +
2493
'an additional SuspenseList to configure its revealOrder: ' +
@@ -2521,7 +2522,7 @@ function validateSuspenseListChildren(
2522
}
2523
}
2524
} else {
2524
- let iteratorFn = getIteratorFn(children);
2525
+ const iteratorFn = getIteratorFn(children);
2526
if (typeof iteratorFn === 'function') {
2527
const childrenIterator = iteratorFn.call(children);
2528
if (childrenIterator) {
@@ -2555,7 +2556,7 @@ function initSuspenseListRenderState(
2556
tailMode: SuspenseListTailMode,
2557
lastEffectBeforeRendering: null | Fiber,
2558
): void {
2558
- let renderState: null | SuspenseListRenderState =
2559
+ const renderState: null | SuspenseListRenderState =
2560
workInProgress.memoizedState;
2561
if (renderState === null) {
2562
workInProgress.memoizedState = ({
@@ -2606,7 +2607,7 @@ function updateSuspenseListComponent(
2607
2608
let suspenseContext: SuspenseContext = suspenseStackCursor.current;
2609
2609
- let shouldForceFallback = hasSuspenseContext(
2610
+ const shouldForceFallback = hasSuspenseContext(
2611
suspenseContext,
2612
(ForceSuspenseFallback: SuspenseContext),
2613
);
@@ -2640,7 +2641,7 @@ function updateSuspenseListComponent(
2641
} else {
2642
switch (revealOrder) {
2643
case 'forwards': {
2643
- let lastContentRow = findLastContentRow(workInProgress.child);
2644
+ const lastContentRow = findLastContentRow(workInProgress.child);
2645
let tail;
2646
if (lastContentRow === null) {
2647
// The whole list is part of the tail.
@@ -2672,14 +2673,14 @@ function updateSuspenseListComponent(
2673
let row = workInProgress.child;
2674
workInProgress.child = null;
2675
while (row !== null) {
2675
- let currentRow = row.alternate;
2676
+ const currentRow = row.alternate;
2677
// New rows can't be content rows.
2678
if (currentRow !== null && findFirstSuspended(currentRow) === null) {
2679
// This is the beginning of the main content.
2680
workInProgress.child = row;
2681
break;
2682
}
2682
- let nextRow = row.sibling;
2683
+ const nextRow = row.sibling;
2684
row.sibling = tail;
2685
tail = row;
2686
row = nextRow;
@@ -3227,7 +3228,7 @@ function beginWork(
3228
// If nothing suspended before and we're rendering the same children,
3229
// then the tail doesn't matter. Anything new that suspends will work
3230
// in the "together" mode, so we can continue from the state we had.
3230
- let renderState = workInProgress.memoizedState;
3231
+ const renderState = workInProgress.memoizedState;
3232
if (renderState !== null) {
3233
// Reset to the "together" mode in case we've started a different
3234
// update in the past but didn't complete it.
packages/react-reconciler/src/ReactFiberClassComponent.js
+1
-1
@@ -540,7 +540,7 @@ function constructClassInstance(
540
541
if (__DEV__) {
542
if ('contextType' in ctor) {
543
- let isValid =
543
+ const isValid =
544
// Allow null for conditional declaration
545
contextType === null ||
546
(contextType !== undefined &&
packages/react-reconciler/src/ReactFiberCommitWork.js
+4
-4
@@ -347,7 +347,7 @@ function commitBeforeMutationLifeCycles(
347
348
function commitHookEffectListUnmount(tag: number, finishedWork: Fiber) {
349
const updateQueue: FunctionComponentUpdateQueue | null = (finishedWork.updateQueue: any);
350
- let lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
350
+ const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
351
if (lastEffect !== null) {
352
const firstEffect = lastEffect.next;
353
let effect = firstEffect;
@@ -367,7 +367,7 @@ function commitHookEffectListUnmount(tag: number, finishedWork: Fiber) {
367
368
function commitHookEffectListMount(tag: number, finishedWork: Fiber) {
369
const updateQueue: FunctionComponentUpdateQueue | null = (finishedWork.updateQueue: any);
370
- let lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
370
+ const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
371
if (lastEffect !== null) {
372
const firstEffect = lastEffect.next;
373
let effect = firstEffect;
@@ -419,7 +419,7 @@ function commitHookEffectListMount(tag: number, finishedWork: Fiber) {
419
function schedulePassiveEffects(finishedWork: Fiber) {
420
if (runAllPassiveEffectDestroysBeforeCreates) {
421
const updateQueue: FunctionComponentUpdateQueue | null = (finishedWork.updateQueue: any);
422
- let lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
422
+ const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
423
if (lastEffect !== null) {
424
const firstEffect = lastEffect.next;
425
let effect = firstEffect;
@@ -1755,7 +1755,7 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
1755
}
1756
1757
function commitSuspenseComponent(finishedWork: Fiber) {
1758
- let newState: SuspenseState | null = finishedWork.memoizedState;
1758
+ const newState: SuspenseState | null = finishedWork.memoizedState;
1759
1760
let newDidTimeout;
1761
let primaryChildParent = finishedWork;
packages/react-reconciler/src/ReactFiberCompleteWork.js
+17
-17
@@ -443,7 +443,7 @@ if (supportsMutation) {
443
// No changes, just reuse the existing instance.
444
} else {
445
const container = portalOrRoot.containerInfo;
446
- let newChildSet = createContainerChildSet(container);
446
+ const newChildSet = createContainerChildSet(container);
447
// If children might have changed, we have to add them all to the set.
448
appendAllChildrenToContainer(newChildSet, workInProgress, false, false);
449
portalOrRoot.pendingChildren = newChildSet;
@@ -489,7 +489,7 @@ if (supportsMutation) {
489
workInProgress.stateNode = currentInstance;
490
return;
491
}
492
- let newInstance = cloneInstance(
492
+ const newInstance = cloneInstance(
493
currentInstance,
494
updatePayload,
495
type,
@@ -672,7 +672,7 @@ function completeWork(
672
if (current === null || current.child === null) {
673
// If we hydrated, pop so that we can delete any remaining children
674
// that weren't hydrated.
675
- let wasHydrated = popHydrationState(workInProgress);
675
+ const wasHydrated = popHydrationState(workInProgress);
676
if (wasHydrated) {
677
// If we hydrated, then we'll need to schedule an update for
678
// the commit side-effects on the root.
@@ -722,7 +722,7 @@ function completeWork(
722
// "stack" as the parent. Then append children as we go in beginWork
723
// or completeWork depending on whether we want to add them top->down or
724
// bottom->up. Top->down is faster in IE11.
725
- let wasHydrated = popHydrationState(workInProgress);
725
+ const wasHydrated = popHydrationState(workInProgress);
726
if (wasHydrated) {
727
// TODO: Move this and createInstance step into the beginPhase
728
// to consolidate.
@@ -748,7 +748,7 @@ function completeWork(
748
}
749
}
750
} else {
751
- let instance = createInstance(
751
+ const instance = createInstance(
752
type,
753
newProps,
754
rootContainerInstance,
@@ -796,7 +796,7 @@ function completeWork(
796
return null;
797
}
798
case HostText: {
799
- let newText = newProps;
799
+ const newText = newProps;
800
if (current && workInProgress.stateNode != null) {
801
const oldText = current.memoizedProps;
802
// If we have an alternate, that means this is an update and we need
@@ -813,7 +813,7 @@ function completeWork(
813
}
814
const rootContainerInstance = getRootHostContainer();
815
const currentHostContext = getHostContext();
816
- let wasHydrated = popHydrationState(workInProgress);
816
+ const wasHydrated = popHydrationState(workInProgress);
817
if (wasHydrated) {
818
if (prepareToHydrateHostTextInstance(workInProgress)) {
819
markUpdate(workInProgress);
@@ -836,7 +836,7 @@ function completeWork(
836
if (enableSuspenseServerRenderer) {
837
if (nextState !== null && nextState.dehydrated !== null) {
838
if (current === null) {
839
- let wasHydrated = popHydrationState(workInProgress);
839
+ const wasHydrated = popHydrationState(workInProgress);
840
invariant(
841
wasHydrated,
842
'A dehydrated suspense component was completed without a hydrated node. ' +
@@ -1002,7 +1002,7 @@ function completeWork(
1002
let didSuspendAlready =
1003
(workInProgress.effectTag & DidCapture) !== NoEffect;
1004
1005
- let renderedTail = renderState.rendering;
1005
+ const renderedTail = renderState.rendering;
1006
if (renderedTail === null) {
1007
// We just rendered the head.
1008
if (!didSuspendAlready) {
@@ -1017,13 +1017,13 @@ function completeWork(
1017
// something in the previous committed pass suspended. Otherwise,
1018
// there's no chance so we can skip the expensive call to
1019
// findFirstSuspended.
1020
- let cannotBeSuspended =
1020
+ const cannotBeSuspended =
1021
renderHasNotSuspendedYet() &&
1022
(current === null || (current.effectTag & DidCapture) === NoEffect);
1023
if (!cannotBeSuspended) {
1024
let row = workInProgress.child;
1025
while (row !== null) {
1026
- let suspended = findFirstSuspended(row);
1026
+ const suspended = findFirstSuspended(row);
1027
if (suspended !== null) {
1028
didSuspendAlready = true;
1029
workInProgress.effectTag |= DidCapture;
@@ -1041,7 +1041,7 @@ function completeWork(
1041
// We might bail out of the loop before finding any but that
1042
// doesn't matter since that means that the other boundaries that
1043
// we did find already has their listeners attached.
1044
- let newThennables = suspended.updateQueue;
1044
+ const newThennables = suspended.updateQueue;
1045
if (newThennables !== null) {
1046
workInProgress.updateQueue = newThennables;
1047
workInProgress.effectTag |= Update;
@@ -1078,14 +1078,14 @@ function completeWork(
1078
} else {
1079
// Append the rendered row to the child list.
1080
if (!didSuspendAlready) {
1081
- let suspended = findFirstSuspended(renderedTail);
1081
+ const suspended = findFirstSuspended(renderedTail);
1082
if (suspended !== null) {
1083
workInProgress.effectTag |= DidCapture;
1084
didSuspendAlready = true;
1085
1086
// Ensure we transfer the update queue to the parent so that it doesn't
1087
// get lost if this row ends up dropped during a second pass.
1088
- let newThennables = suspended.updateQueue;
1088
+ const newThennables = suspended.updateQueue;
1089
if (newThennables !== null) {
1090
workInProgress.updateQueue = newThennables;
1091
workInProgress.effectTag |= Update;
@@ -1101,7 +1101,7 @@ function completeWork(
1101
// We need to delete the row we just rendered.
1102
// Reset the effect list to what it was before we rendered this
1103
// child. The nested children have already appended themselves.
1104
- let lastEffect = (workInProgress.lastEffect =
1104
+ const lastEffect = (workInProgress.lastEffect =
1105
renderState.lastEffect);
1106
// Remove any effects that were appended after this point.
1107
if (lastEffect !== null) {
@@ -1147,7 +1147,7 @@ function completeWork(
1147
renderedTail.sibling = workInProgress.child;
1148
workInProgress.child = renderedTail;
1149
} else {
1150
- let previousSibling = renderState.last;
1150
+ const previousSibling = renderState.last;
1151
if (previousSibling !== null) {
1152
previousSibling.sibling = renderedTail;
1153
} else {
@@ -1172,7 +1172,7 @@ function completeWork(
1172
// It should probably use a global start time value instead.
1173
}
1174
// Pop a row.
1175
- let next = renderState.tail;
1175
+ const next = renderState.tail;
1176
renderState.rendering = next;
1177
renderState.tail = next.sibling;
1178
renderState.lastEffect = workInProgress.lastEffect;
packages/react-reconciler/src/ReactFiberContext.js
+7
-6
@@ -31,9 +31,11 @@ if (__DEV__) {
31
}
32
33
// A cursor to the current merged context object on the stack.
34
-let contextStackCursor: StackCursor<Object> = createCursor(emptyContextObject);
34
+const contextStackCursor: StackCursor<Object> = createCursor(
35
+ emptyContextObject,
36
+);
37
// A cursor to a boolean indicating whether the context has changed.
36
-let didPerformWorkStackCursor: StackCursor<boolean> = createCursor(false);
38
+const didPerformWorkStackCursor: StackCursor<boolean> = createCursor(false);
39
// Keep track of the previous context object that was on the stack.
40
// We use this to get access to the parent context after we have already
41
// pushed the next context provider, and now need to merge their contexts.
@@ -97,7 +99,7 @@ function getMaskedContext(
99
}
100
101
const context = {};
100
- for (let key in contextTypes) {
102
+ for (const key in contextTypes) {
103
context[key] = unmaskedContext[key];
104
}
105
@@ -201,9 +203,8 @@ function processChildContext(
203
return parentContext;
204
}
205
204
- let childContext;
205
- childContext = instance.getChildContext();
206
- for (let contextKey in childContext) {
206
+ const childContext = instance.getChildContext();
207
+ for (const contextKey in childContext) {
208
invariant(
209
contextKey in childContextTypes,
210
'%s.getChildContext(): key "%s" is not defined in childContextTypes.',
packages/react-reconciler/src/ReactFiberHooks.js
+7
-6
@@ -597,7 +597,7 @@ function updateWorkInProgressHook(): Hook {
597
// the dispatcher used for mounts.
598
let nextCurrentHook: null | Hook;
599
if (currentHook === null) {
600
- let current = currentlyRenderingFiber.alternate;
600
+ const current = currentlyRenderingFiber.alternate;
601
if (current !== null) {
602
nextCurrentHook = current.memoizedState;
603
} else {
@@ -708,14 +708,14 @@ function updateReducer<S, I, A>(
708
let baseQueue = current.baseQueue;
709
710
// The last pending update that hasn't been processed yet.
711
- let pendingQueue = queue.pending;
711
+ const pendingQueue = queue.pending;
712
if (pendingQueue !== null) {
713
// We have new updates that haven't been processed yet.
714
// We'll add them to the base queue.
715
if (baseQueue !== null) {
716
// Merge the pending queue and the base queue.
717
- let baseFirst = baseQueue.next;
718
- let pendingFirst = pendingQueue.next;
717
+ const baseFirst = baseQueue.next;
718
+ const pendingFirst = pendingQueue.next;
719
baseQueue.next = pendingFirst;
720
pendingQueue.next = baseFirst;
721
}
@@ -735,7 +735,7 @@ function updateReducer<S, I, A>(
735
736
if (baseQueue !== null) {
737
// We have a queue to process.
738
- let first = baseQueue.next;
738
+ const first = baseQueue.next;
739
let newState = current.baseState;
740
741
let newBaseState = null;
@@ -972,9 +972,10 @@ function useMutableSource<Source, Snapshot>(
972
973
const dispatcher = ReactCurrentDispatcher.current;
974
975
- let [snapshot, setSnapshot] = dispatcher.useState(() =>
975
+ const [currentSnapshot, setSnapshot] = dispatcher.useState(() =>
976
readFromUnsubcribedMutableSource(root, source, getSnapshot),
977
);
978
+ let snapshot = currentSnapshot;
979
980
// Grab a handle to the state hook as well.
981
// We use it to clear the pending update queue if we have a new source.
packages/react-reconciler/src/ReactFiberHostContext.js
+5
-5
@@ -19,15 +19,15 @@ import {createCursor, push, pop} from './ReactFiberStack';
19
declare class NoContextT {}
20
const NO_CONTEXT: NoContextT = ({}: any);
21
22
-let contextStackCursor: StackCursor<HostContext | NoContextT> = createCursor(
22
+const contextStackCursor: StackCursor<HostContext | NoContextT> = createCursor(
23
NO_CONTEXT,
24
);
25
-let contextFiberStackCursor: StackCursor<Fiber | NoContextT> = createCursor(
26
- NO_CONTEXT,
27
-);
28
-let rootInstanceStackCursor: StackCursor<Container | NoContextT> = createCursor(
25
+const contextFiberStackCursor: StackCursor<Fiber | NoContextT> = createCursor(
26
NO_CONTEXT,
27
);
28
+const rootInstanceStackCursor: StackCursor<
29
+ Container | NoContextT,
30
+> = createCursor(NO_CONTEXT);
31
32
function requiredContext<Value>(c: Value | NoContextT): Value {
33
invariant(
packages/react-reconciler/src/ReactFiberHotReloading.js
+6
-6
@@ -62,7 +62,7 @@ let resolveFamily: RefreshHandler | null = null;
62
// $FlowFixMe Flow gets confused by a WeakSet feature check below.
63
let failedBoundaries: WeakSet<Fiber> | null = null;
64
65
-export let setRefreshHandler = (handler: RefreshHandler | null): void => {
65
+export const setRefreshHandler = (handler: RefreshHandler | null): void => {
66
if (__DEV__) {
67
resolveFamily = handler;
68
}
@@ -74,7 +74,7 @@ export function resolveFunctionForHotReloading(type: any): any {
74
// Hot reloading is disabled.
75
return type;
76
}
77
- let family = resolveFamily(type);
77
+ const family = resolveFamily(type);
78
if (family === undefined) {
79
return type;
80
}
@@ -96,7 +96,7 @@ export function resolveForwardRefForHotReloading(type: any): any {
96
// Hot reloading is disabled.
97
return type;
98
}
99
- let family = resolveFamily(type);
99
+ const family = resolveFamily(type);
100
if (family === undefined) {
101
// Check if we're dealing with a real forwardRef. Don't want to crash early.
102
if (
@@ -225,7 +225,7 @@ export function markFailedErrorBoundaryForHotReloading(fiber: Fiber) {
225
}
226
}
227
228
-export let scheduleRefresh: ScheduleRefresh = (
228
+export const scheduleRefresh: ScheduleRefresh = (
229
root: FiberRoot,
230
update: RefreshUpdate,
231
): void => {
@@ -246,7 +246,7 @@ export let scheduleRefresh: ScheduleRefresh = (
246
}
247
};
248
249
-export let scheduleRoot: ScheduleRoot = (
249
+export const scheduleRoot: ScheduleRoot = (
250
root: FiberRoot,
251
element: ReactNodeList,
252
): void => {
@@ -338,7 +338,7 @@ function scheduleFibersWithFamiliesRecursively(
338
}
339
}
340
341
-export let findHostInstancesForRefresh: FindHostInstancesForRefresh = (
341
+export const findHostInstancesForRefresh: FindHostInstancesForRefresh = (
342
root: FiberRoot,
343
families: Array<Family>,
344
): Set<Instance> => {
packages/react-reconciler/src/ReactFiberHydrationContext.js
+4
-4
@@ -381,8 +381,8 @@ function prepareToHydrateHostSuspenseInstance(fiber: Fiber): void {
381
);
382
}
383
384
- let suspenseState: null | SuspenseState = fiber.memoizedState;
385
- let suspenseInstance: null | SuspenseInstance =
384
+ const suspenseState: null | SuspenseState = fiber.memoizedState;
385
+ const suspenseInstance: null | SuspenseInstance =
386
suspenseState !== null ? suspenseState.dehydrated : null;
387
invariant(
388
suspenseInstance,
@@ -402,8 +402,8 @@ function skipPastDehydratedSuspenseInstance(
402
'This error is likely caused by a bug in React. Please file an issue.',
403
);
404
}
405
- let suspenseState: null | SuspenseState = fiber.memoizedState;
406
- let suspenseInstance: null | SuspenseInstance =
405
+ const suspenseState: null | SuspenseState = fiber.memoizedState;
406
+ const suspenseInstance: null | SuspenseInstance =
407
suspenseState !== null ? suspenseState.dehydrated : null;
408
invariant(
409
suspenseInstance,
packages/react-reconciler/src/ReactFiberLazyComponent.js
+1
-1
@@ -12,7 +12,7 @@ export function resolveDefaultProps(Component: any, baseProps: Object): Object {
12
// Resolve default props. Taken from ReactElement
13
const props = Object.assign({}, baseProps);
14
const defaultProps = Component.defaultProps;
15
- for (let propName in defaultProps) {
15
+ for (const propName in defaultProps) {
16
if (props[propName] === undefined) {
17
props[propName] = defaultProps[propName];
18
}
packages/react-reconciler/src/ReactFiberNewContext.js
+6
-6
@@ -164,7 +164,7 @@ export function scheduleWorkOnParentPath(
164
// the alternates.
165
let node = parent;
166
while (node !== null) {
167
- let alternate = node.alternate;
167
+ const alternate = node.alternate;
168
if (node.childExpirationTime < renderExpirationTime) {
169
node.childExpirationTime = renderExpirationTime;
170
if (
@@ -229,7 +229,7 @@ export function propagateContextChange(
229
if (fiber.expirationTime < renderExpirationTime) {
230
fiber.expirationTime = renderExpirationTime;
231
}
232
- let alternate = fiber.alternate;
232
+ const alternate = fiber.alternate;
233
if (
234
alternate !== null &&
235
alternate.expirationTime < renderExpirationTime
@@ -260,7 +260,7 @@ export function propagateContextChange(
260
// If a dehydrated suspense bounudary is in this subtree, we don't know
261
// if it will have any context consumers in it. The best we can do is
262
// mark it as having updates.
263
- let parentSuspense = fiber.return;
263
+ const parentSuspense = fiber.return;
264
invariant(
265
parentSuspense !== null,
266
'We just came from a parent so we must have had a parent. This is a bug in React.',
@@ -268,7 +268,7 @@ export function propagateContextChange(
268
if (parentSuspense.expirationTime < renderExpirationTime) {
269
parentSuspense.expirationTime = renderExpirationTime;
270
}
271
- let alternate = parentSuspense.alternate;
271
+ const alternate = parentSuspense.alternate;
272
if (
273
alternate !== null &&
274
alternate.expirationTime < renderExpirationTime
@@ -298,7 +298,7 @@ export function propagateContextChange(
298
nextFiber = null;
299
break;
300
}
301
- let sibling = nextFiber.sibling;
301
+ const sibling = nextFiber.sibling;
302
if (sibling !== null) {
303
// Set the return pointer of the sibling to the work-in-progress fiber.
304
sibling.return = nextFiber.return;
@@ -369,7 +369,7 @@ export function readContext<T>(
369
resolvedObservedBits = observedBits;
370
}
371
372
- let contextItem = {
372
+ const contextItem = {
373
context: ((context: any): ReactContext<mixed>),
374
observedBits: resolvedObservedBits,
375
next: null,
packages/react-reconciler/src/ReactFiberReconciler.old.js
+8
-10
@@ -331,7 +331,7 @@ export function getPublicRootInstance(
331
export function attemptSynchronousHydration(fiber: Fiber): void {
332
switch (fiber.tag) {
333
case HostRoot:
334
- let root: FiberRoot = fiber.stateNode;
334
+ const root: FiberRoot = fiber.stateNode;
335
if (root.hydrate) {
336
// Flush the first scheduled "update".
337
flushRoot(root, root.firstPendingTime);
@@ -342,7 +342,7 @@ export function attemptSynchronousHydration(fiber: Fiber): void {
342
// If we're still blocked after this, we need to increase
343
// the priority of any promises resolving within this
344
// boundary so that they next attempt also has higher pri.
345
- let retryExpTime = computeInteractiveExpiration(
345
+ const retryExpTime = computeInteractiveExpiration(
346
requestCurrentTimeForUpdate(),
347
);
348
markRetryTimeIfNotHydrated(fiber, retryExpTime);
@@ -351,7 +351,7 @@ export function attemptSynchronousHydration(fiber: Fiber): void {
351
}
352
353
function markRetryTimeImpl(fiber: Fiber, retryTime: ExpirationTime) {
354
- let suspenseState: null | SuspenseState = fiber.memoizedState;
354
+ const suspenseState: null | SuspenseState = fiber.memoizedState;
355
if (suspenseState !== null && suspenseState.dehydrated !== null) {
356
if (suspenseState.retryTime < retryTime) {
357
suspenseState.retryTime = retryTime;
@@ -362,7 +362,7 @@ function markRetryTimeImpl(fiber: Fiber, retryTime: ExpirationTime) {
362
// Increases the priority of thennables when they resolve within this boundary.
363
function markRetryTimeIfNotHydrated(fiber: Fiber, retryTime: ExpirationTime) {
364
markRetryTimeImpl(fiber, retryTime);
365
- let alternate = fiber.alternate;
365
+ const alternate = fiber.alternate;
366
if (alternate) {
367
markRetryTimeImpl(alternate, retryTime);
368
}
@@ -376,7 +376,7 @@ export function attemptUserBlockingHydration(fiber: Fiber): void {
376
// Suspense.
377
return;
378
}
379
- let expTime = computeInteractiveExpiration(requestCurrentTimeForUpdate());
379
+ const expTime = computeInteractiveExpiration(requestCurrentTimeForUpdate());
380
scheduleUpdateOnFiber(fiber, expTime);
381
markRetryTimeIfNotHydrated(fiber, expTime);
382
}
@@ -591,13 +591,11 @@ export function act(callback: () => Thenable<mixed>): Thenable<void> {
591
}
592
}
593
594
- let previousActingUpdatesScopeDepth = actingUpdatesScopeDepth;
595
- let previousIsSomeRendererActing;
596
- let previousIsThisRendererActing;
594
+ const previousActingUpdatesScopeDepth = actingUpdatesScopeDepth;
595
actingUpdatesScopeDepth++;
596
599
- previousIsSomeRendererActing = IsSomeRendererActing.current;
600
- previousIsThisRendererActing = IsThisRendererActing.current;
597
+ const previousIsSomeRendererActing = IsSomeRendererActing.current;
598
+ const previousIsThisRendererActing = IsThisRendererActing.current;
599
IsSomeRendererActing.current = true;
600
IsThisRendererActing.current = true;
601
packages/react-reconciler/src/ReactFiberSuspenseComponent.js
+1
-1
@@ -120,7 +120,7 @@ export function findFirstSuspended(row: Fiber): null | Fiber {
120
// keep track of whether it suspended or not.
121
node.memoizedProps.revealOrder !== undefined
122
) {
123
- let didSuspend = (node.effectTag & DidCapture) !== NoEffect;
123
+ const didSuspend = (node.effectTag & DidCapture) !== NoEffect;
124
if (didSuspend) {
125
return node;
126
}
packages/react-reconciler/src/ReactFiberThrow.js
+3
-3
@@ -164,7 +164,7 @@ function attachPingListener(
164
if (!threadIDs.has(renderExpirationTime)) {
165
// Memoize using the thread ID to prevent redundant listeners.
166
threadIDs.add(renderExpirationTime);
167
- let ping = pingSuspendedRoot.bind(
167
+ const ping = pingSuspendedRoot.bind(
168
null,
169
root,
170
wakeable,
@@ -197,7 +197,7 @@ function throwException(
197
if ((sourceFiber.mode & BlockingMode) === NoMode) {
198
// Reset the memoizedState to what it was before we attempted
199
// to render it.
200
- let currentSource = sourceFiber.alternate;
200
+ const currentSource = sourceFiber.alternate;
201
if (currentSource) {
202
sourceFiber.updateQueue = currentSource.updateQueue;
203
sourceFiber.memoizedState = currentSource.memoizedState;
@@ -208,7 +208,7 @@ function throwException(
208
}
209
}
210
211
- let hasInvisibleParentBoundary = hasSuspenseContext(
211
+ const hasInvisibleParentBoundary = hasSuspenseContext(
212
suspenseStackCursor.current,
213
(InvisibleParentSuspenseContext: SuspenseContext),
214
);
packages/react-reconciler/src/ReactFiberTreeReflection.js
+3
-3
@@ -125,7 +125,7 @@ function assertIsMounted(fiber) {
125
}
126
127
export function findCurrentFiberUsingSlowPath(fiber: Fiber): Fiber | null {
128
- let alternate = fiber.alternate;
128
+ const alternate = fiber.alternate;
129
if (!alternate) {
130
// If there is no alternate, then we only need to check if it is mounted.
131
const nearestMounted = getNearestMountedFiber(fiber);
@@ -144,12 +144,12 @@ export function findCurrentFiberUsingSlowPath(fiber: Fiber): Fiber | null {
144
let a: Fiber = fiber;
145
let b: Fiber = alternate;
146
while (true) {
147
- let parentA = a.return;
147
+ const parentA = a.return;
148
if (parentA === null) {
149
// We're at the root.
150
break;
151
}
152
- let parentB = parentA.alternate;
152
+ const parentB = parentA.alternate;
153
if (parentB === null) {
154
// There is no alternate. This is an unusual case. Currently, it only
155
// happens when a Suspense component is hidden. An extra fragment fiber
packages/react-reconciler/src/ReactFiberWorkLoop.js
+6
-6
@@ -740,7 +740,7 @@ function finishConcurrentRender(
740
// and after that's fixed it can only be a retry. We're going to
741
// throttle committing retries so that we don't show too many
742
// loading states too quickly.
743
- let msUntilTimeout =
743
+ const msUntilTimeout =
744
globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now();
745
// Don't bother with a very short suspense time.
746
if (msUntilTimeout > 10) {
@@ -2064,7 +2064,7 @@ function commitMutationEffects(root: FiberRoot, renderPriorityLevel) {
2064
// updates, and deletions. To avoid needing to add a case for every possible
2065
// bitmap value, we remove the secondary effects from the effect tag and
2066
// switch on that value.
2067
- let primaryEffectTag =
2067
+ const primaryEffectTag =
2068
effectTag & (Placement | Update | Deletion | Hydrating);
2069
switch (primaryEffectTag) {
2070
case Placement: {
@@ -2238,7 +2238,7 @@ function flushPassiveEffectsImpl() {
2238
// Layout effects have the same constraint.
2239
2240
// First pass: Destroy stale passive effects.
2241
- let unmountEffects = pendingPassiveHookEffectsUnmount;
2241
+ const unmountEffects = pendingPassiveHookEffectsUnmount;
2242
pendingPassiveHookEffectsUnmount = [];
2243
for (let i = 0; i < unmountEffects.length; i += 2) {
2244
const effect = ((unmountEffects[i]: any): HookEffect);
@@ -2289,7 +2289,7 @@ function flushPassiveEffectsImpl() {
2289
}
2290
}
2291
// Second pass: Create new passive effects.
2292
- let mountEffects = pendingPassiveHookEffectsMount;
2292
+ const mountEffects = pendingPassiveHookEffectsMount;
2293
pendingPassiveHookEffectsMount = [];
2294
for (let i = 0; i < mountEffects.length; i += 2) {
2295
const effect = ((mountEffects[i]: any): HookEffect);
@@ -2368,7 +2368,7 @@ function flushPassiveEffectsImpl() {
2368
}
2369
2370
if (enableProfilerTimer && enableProfilerCommitHooks) {
2371
- let profilerEffects = pendingPassiveProfilerEffects;
2371
+ const profilerEffects = pendingPassiveProfilerEffects;
2372
pendingPassiveProfilerEffects = [];
2373
for (let i = 0; i < profilerEffects.length; i++) {
2374
const fiber = ((profilerEffects[i]: any): Fiber);
@@ -2765,7 +2765,7 @@ function warnAboutUpdateOnUnmountedFiberInDEV(fiber) {
2765
2766
let beginWork;
2767
if (__DEV__ && replayFailedUnitOfWorkWithInvokeGuardedCallback) {
2768
- let dummyFiber = null;
2768
+ const dummyFiber = null;
2769
beginWork = (current, unitOfWork, expirationTime) => {
2770
// If a component throws an error, we replay it again in a synchronously
2771
// dispatched event, so that the debugger will treat it as an uncaught
packages/react-reconciler/src/ReactMutableSource.js
+2
-2
@@ -17,8 +17,8 @@ import {NoWork} from './ReactFiberExpirationTime';
17
// Work in progress version numbers only apply to a single render,
18
// and should be reset before starting a new render.
19
// This tracks which mutable sources need to be reset after a render.
20
-let workInProgressPrimarySources: Array<MutableSource<any>> = [];
21
-let workInProgressSecondarySources: Array<MutableSource<any>> = [];
20
+const workInProgressPrimarySources: Array<MutableSource<any>> = [];
21
+const workInProgressSecondarySources: Array<MutableSource<any>> = [];
22
23
let rendererSigil;
24
if (__DEV__) {
packages/react-reconciler/src/ReactUpdateQueue.js
+2
-2
@@ -188,7 +188,7 @@ export function createUpdate(
188
expirationTime: ExpirationTime,
189
suspenseConfig: null | SuspenseConfig,
190
): Update<*> {
191
- let update: Update<*> = {
191
+ const update: Update<*> = {
192
expirationTime,
193
suspenseConfig,
194
@@ -524,7 +524,7 @@ export function processUpdateQueue<State>(
524
const callback = update.callback;
525
if (callback !== null) {
526
workInProgress.effectTag |= Callback;
527
- let effects = queue.effects;
527
+ const effects = queue.effects;
528
if (effects === null) {
529
queue.effects = [update];
530
} else {
packages/react-reconciler/src/SchedulerWithReactIntegration.js
+1
-1
@@ -69,7 +69,7 @@ export const requestPaint =
69
let syncQueue: Array<SchedulerCallback> | null = null;
70
let immediateQueueCallbackNode: mixed | null = null;
71
let isFlushingSyncQueue: boolean = false;
72
-let initialTimeMs: number = Scheduler_now();
72
+const initialTimeMs: number = Scheduler_now();
73
74
// If the initial timestamp is reasonably small, use Scheduler's `now` directly.
75
// This will be the case for modern browsers that support `performance.now`. In
packages/react-reconciler/src/__tests__/ReactBlocks-test.js
+9
-9
@@ -27,7 +27,7 @@ describe('ReactBlocks', () => {
27
block = React.block;
28
useState = React.useState;
29
Suspense = React.Suspense;
30
- let cache = new Map();
30
+ const cache = new Map();
31
readString = function(text) {
32
let entry = cache.get(text);
33
if (!entry) {
@@ -62,7 +62,7 @@ describe('ReactBlocks', () => {
62
);
63
}
64
65
- let loadUser = block(User);
65
+ const loadUser = block(User);
66
67
ReactNoop.act(() => {
68
ReactNoop.render(<App Component={loadUser()} />);
@@ -79,7 +79,7 @@ describe('ReactBlocks', () => {
79
}
80
81
function User(props, data) {
82
- let array = [<span>{data.name}</span>];
82
+ const array = [<span>{data.name}</span>];
83
return <div>{array}</div>;
84
}
85
@@ -91,7 +91,7 @@ describe('ReactBlocks', () => {
91
);
92
}
93
94
- let loadUser = block(User, load);
94
+ const loadUser = block(User, load);
95
96
expect(() => {
97
ReactNoop.act(() => {
@@ -124,7 +124,7 @@ describe('ReactBlocks', () => {
124
);
125
}
126
127
- let loadUser = block(Render, load);
127
+ const loadUser = block(Render, load);
128
129
function App({User}) {
130
return (
@@ -165,7 +165,7 @@ describe('ReactBlocks', () => {
165
);
166
}
167
168
- let loadUser = block(Render, load);
168
+ const loadUser = block(Render, load);
169
170
function App({User}) {
171
return (
@@ -176,7 +176,7 @@ describe('ReactBlocks', () => {
176
}
177
178
let resolveLazy;
179
- let LazyUser = React.lazy(
179
+ const LazyUser = React.lazy(
180
() =>
181
new Promise(resolve => {
182
resolveLazy = function() {
@@ -216,7 +216,7 @@ describe('ReactBlocks', () => {
216
}
217
218
function Render(props, data) {
219
- let [initialName] = useState(data.name);
219
+ const [initialName] = useState(data.name);
220
return (
221
<>
222
<span>Initial name: {initialName}</span>
@@ -225,7 +225,7 @@ describe('ReactBlocks', () => {
225
);
226
}
227
228
- let loadUser = block(Render, load);
228
+ const loadUser = block(Render, load);
229
230
function App({User}) {
231
return (
packages/react-reconciler/src/__tests__/ReactDisableSchedulerTimeoutBasedOnReactExpirationTime-test.internal.js
+2
-2
@@ -29,14 +29,14 @@ describe('ReactSuspenseList', () => {
29
30
function createAsyncText(text) {
31
let resolved = false;
32
- let Component = function() {
32
+ const Component = function() {
33
if (!resolved) {
34
Scheduler.unstable_yieldValue('Suspend! [' + text + ']');
35
throw promise;
36
}
37
return <Text text={text} />;
38
};
39
- let promise = new Promise(resolve => {
39
+ const promise = new Promise(resolve => {
40
Component.resolve = function() {
41
resolved = true;
42
return resolve();
packages/react-reconciler/src/__tests__/ReactExpiration-test.internal.js
+2
-2
@@ -182,8 +182,8 @@ describe('ReactExpiration', () => {
182
);
183
184
it('cannot update at the same expiration time that is already rendering', () => {
185
- let store = {text: 'initial'};
186
- let subscribers = [];
185
+ const store = {text: 'initial'};
186
+ const subscribers = [];
187
class Connected extends React.Component {
188
state = {text: store.text};
189
componentDidMount() {
packages/react-reconciler/src/__tests__/ReactFiberHostContext-test.internal.js
+1
-1
@@ -72,7 +72,7 @@ describe('ReactFiberHostContext', () => {
72
});
73
74
it('should send the context to prepareForCommit and resetAfterCommit', () => {
75
- let rootContext = {};
75
+ const rootContext = {};
76
const Renderer = ReactFiberReconciler({
77
prepareForCommit: function(hostContext) {
78
expect(hostContext).toBe(rootContext);
packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
+7
-7
@@ -1287,7 +1287,7 @@ describe('ReactHooks', () => {
1287
};
1288
}
1289
1290
- let renderer = ReactTestRenderer.create(null);
1290
+ const renderer = ReactTestRenderer.create(null);
1291
1292
renderCount = 0;
1293
renderer.update(<NoHooks />);
@@ -1485,7 +1485,7 @@ describe('ReactHooks', () => {
1485
// We don't include useImperativeHandleHelper in this set,
1486
// because it generates an additional warning about the inputs length changing.
1487
// We test it below with its own test.
1488
- let orderedHooks = [
1488
+ const orderedHooks = [
1489
useCallbackHelper,
1490
useContextHelper,
1491
useDebugValueHelper,
@@ -1499,7 +1499,7 @@ describe('ReactHooks', () => {
1499
1500
// We don't include useContext or useDebugValue in this set,
1501
// because they aren't added to the hooks list and so won't throw.
1502
- let hooksInList = [
1502
+ const hooksInList = [
1503
useCallbackHelper,
1504
useEffectHelper,
1505
useImperativeHandleHelper,
@@ -1692,7 +1692,7 @@ describe('ReactHooks', () => {
1692
return null;
1693
/* eslint-enable no-unused-vars */
1694
}
1695
- let root = ReactTestRenderer.create(<App update={false} />);
1695
+ const root = ReactTestRenderer.create(<App update={false} />);
1696
expect(() => {
1697
try {
1698
root.update(<App update={true} />);
@@ -1738,7 +1738,7 @@ describe('ReactHooks', () => {
1738
return null;
1739
/* eslint-enable no-unused-vars */
1740
}
1741
- let root = ReactTestRenderer.create(<App update={false} />);
1741
+ const root = ReactTestRenderer.create(<App update={false} />);
1742
expect(() => {
1743
expect(() => root.update(<App update={true} />)).toThrow(
1744
'custom error',
@@ -1757,7 +1757,7 @@ describe('ReactHooks', () => {
1757
1758
// Regression test for #14674
1759
it('does not swallow original error when updating another component in render phase', async () => {
1760
- let {useState} = React;
1760
+ const {useState} = React;
1761
spyOnDev(console, 'error');
1762
1763
let _setState;
@@ -1795,7 +1795,7 @@ describe('ReactHooks', () => {
1795
1796
// Regression test for https://github.com/facebook/react/issues/15057
1797
it('does not fire a false positive warning when previous effect unmounts the component', () => {
1798
- let {useState, useEffect} = React;
1798
+ const {useState, useEffect} = React;
1799
let globalListener;
1800
1801
function A() {
packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.internal.js
+18
-18
@@ -299,7 +299,7 @@ describe('ReactHooksWithNoopRenderer', () => {
299
});
300
301
it('returns the same updater function every time', () => {
302
- let updaters = [];
302
+ const updaters = [];
303
function Counter() {
304
const [count, updateCount] = useState(0);
305
updaters.push(updateCount);
@@ -403,8 +403,8 @@ describe('ReactHooksWithNoopRenderer', () => {
403
describe('updates during the render phase', () => {
404
it('restarts the render function and applies the new updates on top', () => {
405
function ScrollView({row: newRow}) {
406
- let [isScrollingDown, setIsScrollingDown] = useState(false);
407
- let [row, setRow] = useState(null);
406
+ const [isScrollingDown, setIsScrollingDown] = useState(false);
407
+ const [row, setRow] = useState(null);
408
409
if (row !== newRow) {
410
// Row changed since last render. Update isScrollingDown.
@@ -497,7 +497,7 @@ describe('ReactHooksWithNoopRenderer', () => {
497
498
it('keeps restarting until there are no more new updates', () => {
499
function Counter({row: newRow}) {
500
- let [count, setCount] = useState(0);
500
+ const [count, setCount] = useState(0);
501
if (count < 3) {
502
setCount(count + 1);
503
}
@@ -518,7 +518,7 @@ describe('ReactHooksWithNoopRenderer', () => {
518
519
it('updates multiple times within same render function', () => {
520
function Counter({row: newRow}) {
521
- let [count, setCount] = useState(0);
521
+ const [count, setCount] = useState(0);
522
if (count < 12) {
523
setCount(c => c + 1);
524
setCount(c => c + 1);
@@ -543,7 +543,7 @@ describe('ReactHooksWithNoopRenderer', () => {
543
544
it('throws after too many iterations', () => {
545
function Counter({row: newRow}) {
546
- let [count, setCount] = useState(0);
546
+ const [count, setCount] = useState(0);
547
setCount(count + 1);
548
Scheduler.unstable_yieldValue('Render: ' + count);
549
return <Text text={count} />;
@@ -560,7 +560,7 @@ describe('ReactHooksWithNoopRenderer', () => {
560
return action === 'increment' ? state + 1 : state;
561
}
562
function Counter({row: newRow}) {
563
- let [count, dispatch] = useReducer(reducer, 0);
563
+ const [count, dispatch] = useReducer(reducer, 0);
564
if (count < 3) {
565
dispatch('increment');
566
}
@@ -601,8 +601,8 @@ describe('ReactHooksWithNoopRenderer', () => {
601
}
602
603
function Counter({row: newRow}, ref) {
604
- let [reducer, setReducer] = useState(() => reducerA);
605
- let [count, dispatch] = useReducer(reducer, 0);
604
+ const [reducer, setReducer] = useState(() => reducerA);
605
+ const [count, dispatch] = useReducer(reducer, 0);
606
useImperativeHandle(ref, () => ({dispatch}));
607
if (count < 20) {
608
dispatch('increment');
@@ -658,8 +658,8 @@ describe('ReactHooksWithNoopRenderer', () => {
658
}
659
660
function Bar({signal: newSignal}) {
661
- let [counter, setCounter] = useState(0);
662
- let [signal, setSignal] = useState(true);
661
+ const [counter, setCounter] = useState(0);
662
+ const [signal, setSignal] = useState(true);
663
664
// Increment a counter every time the signal changes
665
if (signal !== newSignal) {
@@ -703,7 +703,7 @@ describe('ReactHooksWithNoopRenderer', () => {
703
704
let setLabel;
705
function Bar({signal: newSignal}) {
706
- let [counter, setCounter] = useState(0);
706
+ const [counter, setCounter] = useState(0);
707
708
if (counter === 1) {
709
// We're suspending during a render that includes render phase
@@ -712,7 +712,7 @@ describe('ReactHooksWithNoopRenderer', () => {
712
throw thenable;
713
}
714
715
- let [signal, setSignal] = useState(true);
715
+ const [signal, setSignal] = useState(true);
716
717
// Increment a counter every time the signal changes
718
if (signal !== newSignal) {
@@ -720,7 +720,7 @@ describe('ReactHooksWithNoopRenderer', () => {
720
setSignal(newSignal);
721
}
722
723
- let [label, _setLabel] = useState('A');
723
+ const [label, _setLabel] = useState('A');
724
setLabel = _setLabel;
725
726
return <Text text={`${label}:${counter}`} />;
@@ -754,8 +754,8 @@ describe('ReactHooksWithNoopRenderer', () => {
754
it.experimental('calling startTransition inside render phase', async () => {
755
let startTransition;
756
function App() {
757
- let [counter, setCounter] = useState(0);
758
- let [_startTransition] = useTransition();
757
+ const [counter, setCounter] = useState(0);
758
+ const [_startTransition] = useTransition();
759
startTransition = _startTransition;
760
761
if (counter === 0) {
@@ -937,7 +937,7 @@ describe('ReactHooksWithNoopRenderer', () => {
937
}, []);
938
return <Text text="Passive" />;
939
}
940
- let passive = <PassiveEffect key="p" />;
940
+ const passive = <PassiveEffect key="p" />;
941
act(() => {
942
ReactNoop.render([<LayoutEffect key="l" />, passive]);
943
expect(Scheduler).toFlushAndYieldThrough([
@@ -967,7 +967,7 @@ describe('ReactHooksWithNoopRenderer', () => {
967
return <Text text="Passive" />;
968
}
969
function LayoutEffect(props) {
970
- let [count, setCount] = useState(0);
970
+ const [count, setCount] = useState(0);
971
useLayoutEffect(() => {
972
// Scheduling work shouldn't interfere with the queued passive effect
973
if (count === 0) {
packages/react-reconciler/src/__tests__/ReactIncremental-test.internal.js
+8
-8
@@ -2476,10 +2476,10 @@ describe('ReactIncremental', () => {
2476
});
2477
2478
xit('should reuse memoized work if pointers are updated before calling lifecycles', () => {
2479
- let cduNextProps = [];
2480
- let cduPrevProps = [];
2481
- let scuNextProps = [];
2482
- let scuPrevProps = [];
2479
+ const cduNextProps = [];
2480
+ const cduPrevProps = [];
2481
+ const scuNextProps = [];
2482
+ const scuPrevProps = [];
2483
let renderCounter = 0;
2484
2485
function SecondChild(props) {
@@ -2559,7 +2559,7 @@ describe('ReactIncremental', () => {
2559
});
2560
2561
it('updates descendants with new context values', () => {
2562
- let rendered = [];
2562
+ const rendered = [];
2563
let instance;
2564
2565
class TopContextProvider extends React.Component {
@@ -2616,7 +2616,7 @@ describe('ReactIncremental', () => {
2616
});
2617
2618
it('updates descendants with multiple context-providing ancestors with new context values', () => {
2619
- let rendered = [];
2619
+ const rendered = [];
2620
let instance;
2621
2622
class TopContextProvider extends React.Component {
@@ -2679,7 +2679,7 @@ describe('ReactIncremental', () => {
2679
});
2680
2681
it('should not update descendants with new context values if shouldComponentUpdate returns false', () => {
2682
- let rendered = [];
2682
+ const rendered = [];
2683
let instance;
2684
2685
class TopContextProvider extends React.Component {
@@ -2751,7 +2751,7 @@ describe('ReactIncremental', () => {
2751
});
2752
2753
it('should update descendants with new context values if setState() is called in the middle of the tree', () => {
2754
- let rendered = [];
2754
+ const rendered = [];
2755
let middleInstance;
2756
let topInstance;
2757
packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.internal.js
+1
-1
@@ -1451,7 +1451,7 @@ describe('ReactIncrementalErrorHandling', () => {
1451
it('error boundaries capture non-errors', () => {
1452
spyOnProd(console, 'error');
1453
spyOnDev(console, 'error');
1454
- let ops = [];
1454
+ const ops = [];
1455
1456
class ErrorBoundary extends React.Component {
1457
state = {error: null};
packages/react-reconciler/src/__tests__/ReactIncrementalErrorReplay-test.internal.js
+1
-1
@@ -32,7 +32,7 @@ describe('ReactIncrementalErrorReplay-test', () => {
32
expect(realFiber).toEqual(stash);
33
34
// Mutate the original.
35
- for (let key in realFiber) {
35
+ for (const key in realFiber) {
36
realFiber[key] = key + '_' + Math.random();
37
}
38
expect(realFiber).not.toEqual(stash);
packages/react-reconciler/src/__tests__/ReactIncrementalReflection-test.internal.js
+1
-1
@@ -143,7 +143,7 @@ describe('ReactIncrementalReflection', () => {
143
// We ignore warnings fired by findInstance because we are testing
144
// that the actual behavior still works as expected even though it
145
// is deprecated.
146
- let oldConsoleError = console.error;
146
+ const oldConsoleError = console.error;
147
console.error = jest.fn();
148
try {
149
return ReactNoop.findInstance(inst);
packages/react-reconciler/src/__tests__/ReactIncrementalScheduling-test.internal.js
+1
-1
@@ -324,7 +324,7 @@ describe('ReactIncrementalScheduling', () => {
324
325
it('nested updates are always deferred, even inside unbatchedUpdates', () => {
326
let instance;
327
- let ops = [];
327
+ const ops = [];
328
class Foo extends React.Component {
329
state = {step: 0};
330
componentDidUpdate() {
packages/react-reconciler/src/__tests__/ReactIncrementalTriangle-test.internal.js
+7
-7
@@ -167,7 +167,7 @@ describe('ReactIncrementalTriangle', () => {
167
}
168
169
function randomActions(n) {
170
- let actions = [];
170
+ const actions = [];
171
for (let i = 0; i < n; i++) {
172
actions.push(randomAction());
173
}
@@ -180,7 +180,7 @@ describe('ReactIncrementalTriangle', () => {
180
181
let triangles = [];
182
let leafTriangles = [];
183
- let yieldAfterEachRender = false;
183
+ const yieldAfterEachRender = false;
184
class Triangle extends React.Component {
185
constructor(props) {
186
super();
@@ -325,7 +325,7 @@ describe('ReactIncrementalTriangle', () => {
325
let expectedCounter = counter;
326
327
for (let i = 0; i < children.length; i++) {
328
- let child = children[i];
328
+ const child = children[i];
329
330
const output = JSON.parse(child.prop);
331
const prop = output.prop;
@@ -376,8 +376,8 @@ describe('ReactIncrementalTriangle', () => {
376
const app = reset();
377
let expectedCounterAtEnd = app.state.counter;
378
379
- let activeIndices = new Set();
380
- let activeLeafIndices = new Set();
379
+ const activeIndices = new Set();
380
+ const activeLeafIndices = new Set();
381
let action;
382
while (true) {
383
action = yield;
@@ -441,7 +441,7 @@ describe('ReactIncrementalTriangle', () => {
441
// Call this once to prepare the generator
442
gen.next();
443
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
444
- for (let action of actions) {
444
+ for (const action of actions) {
445
gen.next(action);
446
}
447
gen.next(STOP);
@@ -528,7 +528,7 @@ ${formatActions(actions)}
528
function simulateMultipleRoots(...actions) {
529
const roots = new Map();
530
// eslint-disable-next-line no-for-of-loops/no-for-of-loops
531
- for (let rootID of rootIDs) {
531
+ for (const rootID of rootIDs) {
532
const simulator = TriangleSimulator(rootID);
533
const generator = simulator.simulateAndYield();
534
// Call this once to prepare the generator
packages/react-reconciler/src/__tests__/ReactIncrementalUpdates-test.internal.js
+2
-2
@@ -298,7 +298,7 @@ describe('ReactIncrementalUpdates', () => {
298
});
299
300
it('does not call callbacks that are scheduled by another callback until a later commit', () => {
301
- let ops = [];
301
+ const ops = [];
302
class Foo extends React.Component {
303
state = {};
304
componentDidMount() {
@@ -366,7 +366,7 @@ describe('ReactIncrementalUpdates', () => {
366
367
it('enqueues setState inside an updater function as if the in-progress update is progressed (and warns)', () => {
368
let instance;
369
- let ops = [];
369
+ const ops = [];
370
class Foo extends React.Component {
371
state = {};
372
render() {
packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js
+1
-1
@@ -1673,7 +1673,7 @@ describe('ReactNewContext', () => {
1673
}
1674
1675
function randomActions(n) {
1676
- let actions = [];
1676
+ const actions = [];
1677
for (let i = 0; i < n; i++) {
1678
actions.push(randomAction());
1679
}
packages/react-reconciler/src/__tests__/ReactNoopRendererAct-test.js
+2
-2
@@ -21,7 +21,7 @@ describe('ReactNoop.act()', () => {
21
return null;
22
}
23
24
- let calledLog = [];
24
+ const calledLog = [];
25
ReactNoop.act(() => {
26
ReactNoop.render(
27
<App
@@ -37,7 +37,7 @@ describe('ReactNoop.act()', () => {
37
38
it('should work with async/await', async () => {
39
function App() {
40
- let [ctr, setCtr] = React.useState(0);
40
+ const [ctr, setCtr] = React.useState(0);
41
async function someAsyncFunction() {
42
Scheduler.unstable_yieldValue('stage 1');
43
await null;
packages/react-reconciler/src/__tests__/ReactScope-test.internal.js
+4
-4
@@ -345,17 +345,17 @@ describe('ReactScope', () => {
345
// this may have suspense points on the server but here we want
346
// to test the completed HTML. Don't suspend on the server.
347
suspend = false;
348
- let finalHTML = ReactDOMServer.renderToString(<App />);
348
+ const finalHTML = ReactDOMServer.renderToString(<App />);
349
350
- let container2 = document.createElement('div');
350
+ const container2 = document.createElement('div');
351
container2.innerHTML = finalHTML;
352
353
- let span = container2.getElementsByTagName('span')[0];
353
+ const span = container2.getElementsByTagName('span')[0];
354
355
// On the client we don't have all data yet but we want to start
356
// hydrating anyway.
357
suspend = true;
358
- let root = ReactDOM.createRoot(container2, {hydrate: true});
358
+ const root = ReactDOM.createRoot(container2, {hydrate: true});
359
root.render(<App />);
360
Scheduler.unstable_flushAll();
361
jest.runAllTimers();
packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+1
-1
@@ -199,7 +199,7 @@ describe('ReactSuspense', () => {
199
200
it('interrupts current render if promise resolves before current render phase', () => {
201
let didResolve = false;
202
- let listeners = [];
202
+ const listeners = [];
203
204
const thenable = {
205
then(resolve) {
packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js
+4
-4
@@ -32,7 +32,7 @@ describe('ReactSuspense', () => {
32
function createThenable() {
33
let completed = false;
34
const resolveRef = {current: null};
35
- let promise = {
35
+ const promise = {
36
then(resolve, reject) {
37
resolveRef.current = () => {
38
completed = true;
@@ -149,11 +149,11 @@ describe('ReactSuspense', () => {
149
it('nested suspense promises are reported only for their tier', () => {
150
const {promise, PromiseComp} = createThenable();
151
152
- let ops1 = [];
152
+ const ops1 = [];
153
const suspenseCallback1 = thenables => {
154
ops1.push(thenables);
155
};
156
- let ops2 = [];
156
+ const ops2 = [];
157
const suspenseCallback2 = thenables => {
158
ops2.push(thenables);
159
};
@@ -250,7 +250,7 @@ describe('ReactSuspense', () => {
250
// you can probably just delete it. It's not worth the hassle.
251
jest.resetModules();
252
253
- let errors = [];
253
+ const errors = [];
254
let hasCaughtError = false;
255
jest.mock('shared/ReactErrorUtils', () => ({
256
invokeGuardedCallback(name, fn, context, ...args) {
packages/react-reconciler/src/__tests__/ReactSuspenseFuzz-test.internal.js
+2
-2
@@ -226,7 +226,7 @@ describe('ReactSuspenseFuzz', () => {
226
{value: 2, weight: 1},
227
]);
228
229
- let updates = [];
229
+ const updates = [];
230
for (let i = 0; i < numberOfUpdates; i++) {
231
updates.push({
232
beginAfter: rand.intBetween(0, 10000),
@@ -249,7 +249,7 @@ describe('ReactSuspenseFuzz', () => {
249
{value: 2, weight: 1},
250
]);
251
252
- let updates = [];
252
+ const updates = [];
253
for (let i = 0; i < numberOfUpdates; i++) {
254
updates.push({
255
remountAfter: rand.intBetween(0, 10000),
packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js
+88
-88
@@ -31,14 +31,14 @@ describe('ReactSuspenseList', () => {
31
32
function createAsyncText(text) {
33
let resolved = false;
34
- let Component = function() {
34
+ const Component = function() {
35
if (!resolved) {
36
Scheduler.unstable_yieldValue('Suspend! [' + text + ']');
37
throw promise;
38
}
39
return <Text text={text} />;
40
};
41
- let promise = new Promise(resolve => {
41
+ const promise = new Promise(resolve => {
42
Component.resolve = function() {
43
resolved = true;
44
return resolve();
@@ -185,9 +185,9 @@ describe('ReactSuspenseList', () => {
185
});
186
187
it('shows content independently by default', async () => {
188
- let A = createAsyncText('A');
189
- let B = createAsyncText('B');
190
- let C = createAsyncText('C');
188
+ const A = createAsyncText('A');
189
+ const B = createAsyncText('B');
190
+ const C = createAsyncText('C');
191
192
function Foo() {
193
return (
@@ -251,9 +251,9 @@ describe('ReactSuspenseList', () => {
251
});
252
253
it('shows content independently in legacy mode regardless of option', async () => {
254
- let A = createAsyncText('A');
255
- let B = createAsyncText('B');
256
- let C = createAsyncText('C');
254
+ const A = createAsyncText('A');
255
+ const B = createAsyncText('B');
256
+ const C = createAsyncText('C');
257
258
function Foo() {
259
return (
@@ -323,9 +323,9 @@ describe('ReactSuspenseList', () => {
323
});
324
325
it('displays all "together"', async () => {
326
- let A = createAsyncText('A');
327
- let B = createAsyncText('B');
328
- let C = createAsyncText('C');
326
+ const A = createAsyncText('A');
327
+ const B = createAsyncText('B');
328
+ const C = createAsyncText('C');
329
330
function Foo() {
331
return (
@@ -392,9 +392,9 @@ describe('ReactSuspenseList', () => {
392
});
393
394
it('displays all "together" even when nested as siblings', async () => {
395
- let A = createAsyncText('A');
396
- let B = createAsyncText('B');
397
- let C = createAsyncText('C');
395
+ const A = createAsyncText('A');
396
+ const B = createAsyncText('B');
397
+ const C = createAsyncText('C');
398
399
function Foo() {
400
return (
@@ -477,9 +477,9 @@ describe('ReactSuspenseList', () => {
477
});
478
479
it('displays all "together" in nested SuspenseLists', async () => {
480
- let A = createAsyncText('A');
481
- let B = createAsyncText('B');
482
- let C = createAsyncText('C');
480
+ const A = createAsyncText('A');
481
+ const B = createAsyncText('B');
482
+ const C = createAsyncText('C');
483
484
function Foo() {
485
return (
@@ -538,9 +538,9 @@ describe('ReactSuspenseList', () => {
538
});
539
540
it('displays all "together" in nested SuspenseLists where the inner is default', async () => {
541
- let A = createAsyncText('A');
542
- let B = createAsyncText('B');
543
- let C = createAsyncText('C');
541
+ const A = createAsyncText('A');
542
+ const B = createAsyncText('B');
543
+ const C = createAsyncText('C');
544
545
function Foo() {
546
return (
@@ -597,10 +597,10 @@ describe('ReactSuspenseList', () => {
597
});
598
599
it('displays all "together" during an update', async () => {
600
- let A = createAsyncText('A');
601
- let B = createAsyncText('B');
602
- let C = createAsyncText('C');
603
- let D = createAsyncText('D');
600
+ const A = createAsyncText('A');
601
+ const B = createAsyncText('B');
602
+ const C = createAsyncText('C');
603
+ const D = createAsyncText('D');
604
605
function Foo({step}) {
606
return (
@@ -681,9 +681,9 @@ describe('ReactSuspenseList', () => {
681
});
682
683
it('avoided boundaries can be coordinate with SuspenseList', async () => {
684
- let A = createAsyncText('A');
685
- let B = createAsyncText('B');
686
- let C = createAsyncText('C');
684
+ const A = createAsyncText('A');
685
+ const B = createAsyncText('B');
686
+ const C = createAsyncText('C');
687
688
function Foo({showMore}) {
689
return (
@@ -779,9 +779,9 @@ describe('ReactSuspenseList', () => {
779
});
780
781
it('displays each items in "forwards" order', async () => {
782
- let A = createAsyncText('A');
783
- let B = createAsyncText('B');
784
- let C = createAsyncText('C');
782
+ const A = createAsyncText('A');
783
+ const B = createAsyncText('B');
784
+ const C = createAsyncText('C');
785
786
function Foo() {
787
return (
@@ -844,9 +844,9 @@ describe('ReactSuspenseList', () => {
844
});
845
846
it('displays each items in "backwards" order', async () => {
847
- let A = createAsyncText('A');
848
- let B = createAsyncText('B');
849
- let C = createAsyncText('C');
847
+ const A = createAsyncText('A');
848
+ const B = createAsyncText('B');
849
+ const C = createAsyncText('C');
850
851
function Foo() {
852
return (
@@ -909,12 +909,12 @@ describe('ReactSuspenseList', () => {
909
});
910
911
it('displays added row at the top "together" and the bottom in "forwards" order', async () => {
912
- let A = createAsyncText('A');
913
- let B = createAsyncText('B');
914
- let C = createAsyncText('C');
915
- let D = createAsyncText('D');
916
- let E = createAsyncText('E');
917
- let F = createAsyncText('F');
912
+ const A = createAsyncText('A');
913
+ const B = createAsyncText('B');
914
+ const C = createAsyncText('C');
915
+ const D = createAsyncText('D');
916
+ const E = createAsyncText('E');
917
+ const F = createAsyncText('F');
918
919
function Foo({items}) {
920
return (
@@ -1063,10 +1063,10 @@ describe('ReactSuspenseList', () => {
1063
});
1064
1065
it('displays added row at the top "together" and the bottom in "backwards" order', async () => {
1066
- let A = createAsyncText('A');
1067
- let B = createAsyncText('B');
1068
- let D = createAsyncText('D');
1069
- let F = createAsyncText('F');
1066
+ const A = createAsyncText('A');
1067
+ const B = createAsyncText('B');
1068
+ const D = createAsyncText('D');
1069
+ const F = createAsyncText('F');
1070
1071
function createSyncText(text) {
1072
return function() {
@@ -1074,12 +1074,12 @@ describe('ReactSuspenseList', () => {
1074
};
1075
}
1076
1077
- let As = createSyncText('A');
1078
- let Bs = createSyncText('B');
1079
- let Cs = createSyncText('C');
1080
- let Ds = createSyncText('D');
1081
- let Es = createSyncText('E');
1082
- let Fs = createSyncText('F');
1077
+ const As = createSyncText('A');
1078
+ const Bs = createSyncText('B');
1079
+ const Cs = createSyncText('C');
1080
+ const Ds = createSyncText('D');
1081
+ const Es = createSyncText('E');
1082
+ const Fs = createSyncText('F');
1083
1084
function Foo({items}) {
1085
return (
@@ -1309,9 +1309,9 @@ describe('ReactSuspenseList', () => {
1309
});
1310
1311
it('only shows one loading state at a time for "collapsed" tail insertions', async () => {
1312
- let A = createAsyncText('A');
1313
- let B = createAsyncText('B');
1314
- let C = createAsyncText('C');
1312
+ const A = createAsyncText('A');
1313
+ const B = createAsyncText('B');
1314
+ const C = createAsyncText('C');
1315
1316
function Foo() {
1317
return (
@@ -1484,12 +1484,12 @@ describe('ReactSuspenseList', () => {
1484
});
1485
1486
it('adding to the middle does not collapse insertions (forwards)', async () => {
1487
- let A = createAsyncText('A');
1488
- let B = createAsyncText('B');
1489
- let C = createAsyncText('C');
1490
- let D = createAsyncText('D');
1491
- let E = createAsyncText('E');
1492
- let F = createAsyncText('F');
1487
+ const A = createAsyncText('A');
1488
+ const B = createAsyncText('B');
1489
+ const C = createAsyncText('C');
1490
+ const D = createAsyncText('D');
1491
+ const E = createAsyncText('E');
1492
+ const F = createAsyncText('F');
1493
1494
function Foo({items}) {
1495
return (
@@ -1626,12 +1626,12 @@ describe('ReactSuspenseList', () => {
1626
});
1627
1628
it('adding to the middle does not collapse insertions (backwards)', async () => {
1629
- let A = createAsyncText('A');
1630
- let B = createAsyncText('B');
1631
- let C = createAsyncText('C');
1632
- let D = createAsyncText('D');
1633
- let E = createAsyncText('E');
1634
- let F = createAsyncText('F');
1629
+ const A = createAsyncText('A');
1630
+ const B = createAsyncText('B');
1631
+ const C = createAsyncText('C');
1632
+ const D = createAsyncText('D');
1633
+ const E = createAsyncText('E');
1634
+ const F = createAsyncText('F');
1635
1636
function Foo({items}) {
1637
return (
@@ -1773,12 +1773,12 @@ describe('ReactSuspenseList', () => {
1773
});
1774
1775
it('adding to the middle of committed tail does not collapse insertions', async () => {
1776
- let A = createAsyncText('A');
1777
- let B = createAsyncText('B');
1778
- let C = createAsyncText('C');
1779
- let D = createAsyncText('D');
1780
- let E = createAsyncText('E');
1781
- let F = createAsyncText('F');
1776
+ const A = createAsyncText('A');
1777
+ const B = createAsyncText('B');
1778
+ const C = createAsyncText('C');
1779
+ const D = createAsyncText('D');
1780
+ const E = createAsyncText('E');
1781
+ const F = createAsyncText('F');
1782
1783
function SyncD() {
1784
return <Text text="D" />;
@@ -1930,9 +1930,9 @@ describe('ReactSuspenseList', () => {
1930
});
1931
1932
it('only shows no initial loading state "hidden" tail insertions', async () => {
1933
- let A = createAsyncText('A');
1934
- let B = createAsyncText('B');
1935
- let C = createAsyncText('C');
1933
+ const A = createAsyncText('A');
1934
+ const B = createAsyncText('B');
1935
+ const C = createAsyncText('C');
1936
1937
function Foo() {
1938
return (
@@ -1993,7 +1993,7 @@ describe('ReactSuspenseList', () => {
1993
});
1994
1995
it('eventually resolves a nested forwards suspense list', async () => {
1996
- let B = createAsyncText('B');
1996
+ const B = createAsyncText('B');
1997
1998
function Foo() {
1999
return (
@@ -2055,7 +2055,7 @@ describe('ReactSuspenseList', () => {
2055
});
2056
2057
it('eventually resolves a nested forwards suspense list with a hidden tail', async () => {
2058
- let B = createAsyncText('B');
2058
+ const B = createAsyncText('B');
2059
2060
function Foo() {
2061
return (
@@ -2101,7 +2101,7 @@ describe('ReactSuspenseList', () => {
2101
});
2102
2103
it('eventually resolves two nested forwards suspense lists with a hidden tail', async () => {
2104
- let B = createAsyncText('B');
2104
+ const B = createAsyncText('B');
2105
2106
function Foo({showB}) {
2107
return (
@@ -2170,7 +2170,7 @@ describe('ReactSuspenseList', () => {
2170
it('can do unrelated adjacent updates', async () => {
2171
let updateAdjacent;
2172
function Adjacent() {
2173
- let [text, setText] = React.useState('-');
2173
+ const [text, setText] = React.useState('-');
2174
updateAdjacent = setText;
2175
return <Text text={text} />;
2176
}
@@ -2214,12 +2214,12 @@ describe('ReactSuspenseList', () => {
2214
});
2215
2216
it('is able to re-suspend the last rows during an update with hidden', async () => {
2217
- let AsyncB = createAsyncText('B');
2217
+ const AsyncB = createAsyncText('B');
2218
2219
let setAsyncB;
2220
2221
function B() {
2222
- let [shouldBeAsync, setAsync] = React.useState(false);
2222
+ const [shouldBeAsync, setAsync] = React.useState(false);
2223
setAsyncB = setAsync;
2224
2225
return shouldBeAsync ? (
@@ -2253,7 +2253,7 @@ describe('ReactSuspenseList', () => {
2253
</>,
2254
);
2255
2256
- let previousInst = setAsyncB;
2256
+ const previousInst = setAsyncB;
2257
2258
// During an update we suspend on B.
2259
ReactNoop.act(() => setAsyncB(true));
@@ -2302,12 +2302,12 @@ describe('ReactSuspenseList', () => {
2302
});
2303
2304
it('is able to re-suspend the last rows during an update with hidden', async () => {
2305
- let AsyncB = createAsyncText('B');
2305
+ const AsyncB = createAsyncText('B');
2306
2307
let setAsyncB;
2308
2309
function B() {
2310
- let [shouldBeAsync, setAsync] = React.useState(false);
2310
+ const [shouldBeAsync, setAsync] = React.useState(false);
2311
setAsyncB = setAsync;
2312
2313
return shouldBeAsync ? (
@@ -2341,7 +2341,7 @@ describe('ReactSuspenseList', () => {
2341
</>,
2342
);
2343
2344
- let previousInst = setAsyncB;
2344
+ const previousInst = setAsyncB;
2345
2346
// During an update we suspend on B.
2347
ReactNoop.act(() => setAsyncB(true));
@@ -2390,19 +2390,19 @@ describe('ReactSuspenseList', () => {
2390
});
2391
2392
it('is able to interrupt a partially rendered tree and continue later', async () => {
2393
- let AsyncA = createAsyncText('A');
2393
+ const AsyncA = createAsyncText('A');
2394
2395
let updateLowPri;
2396
let updateHighPri;
2397
2398
function Bar() {
2399
- let [highPriState, setHighPriState] = React.useState(false);
2399
+ const [highPriState, setHighPriState] = React.useState(false);
2400
updateHighPri = setHighPriState;
2401
return highPriState ? <AsyncA /> : null;
2402
}
2403
2404
function Foo() {
2405
- let [lowPriState, setLowPriState] = React.useState(false);
2405
+ const [lowPriState, setLowPriState] = React.useState(false);
2406
updateLowPri = setLowPriState;
2407
return (
2408
<SuspenseList revealOrder="forwards" tail="hidden">
@@ -2487,8 +2487,8 @@ describe('ReactSuspenseList', () => {
2487
});
2488
2489
it('can resume class components when revealed together', async () => {
2490
- let A = createAsyncText('A');
2491
- let B = createAsyncText('B');
2490
+ const A = createAsyncText('A');
2491
+ const B = createAsyncText('B');
2492
2493
class ClassComponent extends React.Component {
2494
render() {
packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.internal.js
+9
-9
@@ -1467,7 +1467,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
1467
});
1468
1469
it('does not drop mounted effects', async () => {
1470
- let never = {then() {}};
1470
+ const never = {then() {}};
1471
1472
let setShouldSuspend;
1473
function App() {
@@ -1974,7 +1974,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
1974
it('does not warn when a low priority update suspends inside a high priority update for functional components', async () => {
1975
let _setShow;
1976
function App() {
1977
- let [show, setShow] = React.useState(false);
1977
+ const [show, setShow] = React.useState(false);
1978
_setShow = setShow;
1979
return (
1980
<Suspense fallback="Loading...">
@@ -2121,7 +2121,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
2121
it('normal priority updates suspending do not warn for functional components', async () => {
2122
let _setShow;
2123
function App() {
2124
- let [show, setShow] = React.useState(false);
2124
+ const [show, setShow] = React.useState(false);
2125
_setShow = setShow;
2126
return (
2127
<Suspense fallback="Loading...">
@@ -2388,7 +2388,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
2388
it('hooks', async () => {
2389
let transitionToPage;
2390
function App() {
2391
- let [page, setPage] = React.useState('none');
2391
+ const [page, setPage] = React.useState('none');
2392
transitionToPage = setPage;
2393
if (page === 'none') {
2394
return null;
@@ -2458,7 +2458,7 @@ describe('ReactSuspenseWithNoopRenderer', () => {
2458
state = {page: 'none'};
2459
render() {
2460
transitionToPage = page => this.setState({page});
2461
- let page = this.state.page;
2461
+ const page = this.state.page;
2462
if (page === 'none') {
2463
return null;
2464
}
@@ -2699,8 +2699,8 @@ describe('ReactSuspenseWithNoopRenderer', () => {
2699
2700
it('supports delaying a busy spinner from disappearing', async () => {
2701
function useLoadingIndicator(config) {
2702
- let [isLoading, setLoading] = React.useState(false);
2703
- let start = React.useCallback(
2702
+ const [isLoading, setLoading] = React.useState(false);
2703
+ const start = React.useCallback(
2704
cb => {
2705
setLoading(true);
2706
Scheduler.unstable_next(() =>
@@ -2724,8 +2724,8 @@ describe('ReactSuspenseWithNoopRenderer', () => {
2724
let transitionToPage;
2725
2726
function App() {
2727
- let [page, setPage] = React.useState('A');
2728
- let [isLoading, startLoading] = useLoadingIndicator(SUSPENSE_CONFIG);
2727
+ const [page, setPage] = React.useState('A');
2728
+ const [isLoading, startLoading] = useLoadingIndicator(SUSPENSE_CONFIG);
2729
transitionToPage = nextPage => startLoading(() => setPage(nextPage));
2730
return (
2731
<Fragment>
packages/react-reconciler/src/__tests__/ReactTransition-test.internal.js
+2
-2
@@ -43,14 +43,14 @@ describe('ReactTransition', () => {
43
44
function createAsyncText(text) {
45
let resolved = false;
46
- let Component = function() {
46
+ const Component = function() {
47
if (!resolved) {
48
Scheduler.unstable_yieldValue('Suspend! [' + text + ']');
49
throw promise;
50
}
51
return <Text text={text} />;
52
};
53
- let promise = new Promise(resolve => {
53
+ const promise = new Promise(resolve => {
54
Component.resolve = function() {
55
resolved = true;
56
return resolve();
packages/react-refresh/src/ReactFreshBabelPlugin.js
+7
-7
@@ -251,7 +251,7 @@ export default function(babel, opts = {}) {
251
};
252
}
253
254
- let hasForceResetCommentByFile = new WeakMap();
254
+ const hasForceResetCommentByFile = new WeakMap();
255
256
// We let user do /* @refresh reset */ to reset state in the whole file.
257
function hasForceResetComment(path) {
@@ -279,7 +279,7 @@ export default function(babel, opts = {}) {
279
const {key, customHooks} = signature;
280
281
let forceReset = hasForceResetComment(scope.path);
282
- let customHooksInScope = [];
282
+ const customHooksInScope = [];
283
customHooks.forEach(callee => {
284
// Check if a corresponding binding exists where we emit the signature.
285
let bindingName;
@@ -335,11 +335,11 @@ export default function(babel, opts = {}) {
335
return args;
336
}
337
338
- let seenForRegistration = new WeakSet();
339
- let seenForSignature = new WeakSet();
340
- let seenForOutro = new WeakSet();
338
+ const seenForRegistration = new WeakSet();
339
+ const seenForSignature = new WeakSet();
340
+ const seenForOutro = new WeakSet();
341
342
- let hookCalls = new WeakMap();
342
+ const hookCalls = new WeakMap();
343
const HookCallsVisitor = {
344
CallExpression(path) {
345
const node = path.node;
@@ -370,7 +370,7 @@ export default function(babel, opts = {}) {
370
if (!hookCalls.has(fnNode)) {
371
hookCalls.set(fnNode, []);
372
}
373
- let hookCallsForFn = hookCalls.get(fnNode);
373
+ const hookCallsForFn = hookCalls.get(fnNode);
374
let key = '';
375
if (path.parent.type === 'VariableDeclarator') {
376
// TODO: if there is no LHS, consider some other heuristic.
packages/react-refresh/src/ReactFreshRuntime.js
+11
-11
@@ -62,20 +62,20 @@ WeakMap<any, Family> | Map<any, Family> = new PossiblyWeakMap();
62
let pendingUpdates: Array<[Family, any]> = [];
63
64
// This is injected by the renderer via DevTools global hook.
65
-let helpersByRendererID: Map<number, RendererHelpers> = new Map();
65
+const helpersByRendererID: Map<number, RendererHelpers> = new Map();
66
67
-let helpersByRoot: Map<FiberRoot, RendererHelpers> = new Map();
67
+const helpersByRoot: Map<FiberRoot, RendererHelpers> = new Map();
68
69
// We keep track of mounted roots so we can schedule updates.
70
-let mountedRoots: Set<FiberRoot> = new Set();
70
+const mountedRoots: Set<FiberRoot> = new Set();
71
// If a root captures an error, we remember it so we can retry on edit.
72
-let failedRoots: Set<FiberRoot> = new Set();
72
+const failedRoots: Set<FiberRoot> = new Set();
73
74
// In environments that support WeakMap, we also remember the last element for every root.
75
// It needs to be weak because we do this even for roots that failed to mount.
76
// If there is no WeakMap, we won't attempt to do retrying.
77
// $FlowIssue
78
-let rootElements: WeakMap<any, ReactNodeList> | null = // $FlowIssue
78
+const rootElements: WeakMap<any, ReactNodeList> | null = // $FlowIssue
79
typeof WeakMap === 'function' ? new WeakMap() : null;
80
81
let isPerformingRefresh = false;
@@ -164,14 +164,14 @@ function resolveFamily(type) {
164
165
// If we didn't care about IE11, we could use new Map/Set(iterable).
166
function cloneMap<K, V>(map: Map<K, V>): Map<K, V> {
167
- let clone = new Map();
167
+ const clone = new Map();
168
map.forEach((value, key) => {
169
clone.set(key, value);
170
});
171
return clone;
172
}
173
function cloneSet<T>(set: Set<T>): Set<T> {
174
- let clone = new Set();
174
+ const clone = new Set();
175
set.forEach(value => {
176
clone.add(value);
177
});
@@ -233,9 +233,9 @@ export function performReactRefresh(): RefreshUpdate | null {
233
// If we don't do this, there is a risk they will be mutated while
234
// we iterate over them. For example, trying to recover a failed root
235
// may cause another root to be added to the failed list -- an infinite loop.
236
- let failedRootsSnapshot = cloneSet(failedRoots);
237
- let mountedRootsSnapshot = cloneSet(mountedRoots);
238
- let helpersByRootSnapshot = cloneMap(helpersByRoot);
236
+ const failedRootsSnapshot = cloneSet(failedRoots);
237
+ const mountedRootsSnapshot = cloneSet(mountedRoots);
238
+ const helpersByRootSnapshot = cloneMap(helpersByRoot);
239
240
failedRootsSnapshot.forEach(root => {
241
const helpers = helpersByRootSnapshot.get(root);
@@ -397,7 +397,7 @@ export function findAffectedHostInstances(
397
families: Array<Family>,
398
): Set<Instance> {
399
if (__DEV__) {
400
- let affectedInstances = new Set();
400
+ const affectedInstances = new Set();
401
mountedRoots.forEach(root => {
402
const helpers = helpersByRoot.get(root);
403
if (helpers === undefined) {
packages/react-refresh/src/__tests__/ReactFresh-test.js
+43
-43
@@ -77,7 +77,7 @@ describe('ReactFresh', () => {
77
78
it('can preserve state for compatible types', () => {
79
if (__DEV__) {
80
- let HelloV1 = render(() => {
80
+ const HelloV1 = render(() => {
81
function Hello() {
82
const [val, setVal] = React.useState(0);
83
return (
@@ -100,7 +100,7 @@ describe('ReactFresh', () => {
100
expect(el.textContent).toBe('1');
101
102
// Perform a hot update.
103
- let HelloV2 = patch(() => {
103
+ const HelloV2 = patch(() => {
104
function Hello() {
105
const [val, setVal] = React.useState(0);
106
return (
@@ -167,7 +167,7 @@ describe('ReactFresh', () => {
167
168
it('can preserve state for forwardRef', () => {
169
if (__DEV__) {
170
- let OuterV1 = render(() => {
170
+ const OuterV1 = render(() => {
171
function Hello() {
172
const [val, setVal] = React.useState(0);
173
return (
@@ -193,7 +193,7 @@ describe('ReactFresh', () => {
193
expect(el.textContent).toBe('1');
194
195
// Perform a hot update.
196
- let OuterV2 = patch(() => {
196
+ const OuterV2 = patch(() => {
197
function Hello() {
198
const [val, setVal] = React.useState(0);
199
return (
@@ -257,7 +257,7 @@ describe('ReactFresh', () => {
257
258
it('should not consider two forwardRefs around the same type to be equivalent', () => {
259
if (__DEV__) {
260
- let ParentV1 = render(
260
+ const ParentV1 = render(
261
() => {
262
function Hello() {
263
const [val, setVal] = React.useState(0);
@@ -274,9 +274,9 @@ describe('ReactFresh', () => {
274
}
275
// Both of these are wrappers around the same inner function.
276
// They should be treated as distinct types across reloads.
277
- let ForwardRefA = React.forwardRef(renderInner);
277
+ const ForwardRefA = React.forwardRef(renderInner);
278
$RefreshReg$(ForwardRefA, 'ForwardRefA');
279
- let ForwardRefB = React.forwardRef(renderInner);
279
+ const ForwardRefB = React.forwardRef(renderInner);
280
$RefreshReg$(ForwardRefB, 'ForwardRefB');
281
282
function Parent({cond}) {
@@ -324,7 +324,7 @@ describe('ReactFresh', () => {
324
expect(el.textContent).toBe('1');
325
326
// Patch to change the color.
327
- let ParentV2 = patch(() => {
327
+ const ParentV2 = patch(() => {
328
function Hello() {
329
const [val, setVal] = React.useState(0);
330
return (
@@ -340,9 +340,9 @@ describe('ReactFresh', () => {
340
}
341
// Both of these are wrappers around the same inner function.
342
// They should be treated as distinct types across reloads.
343
- let ForwardRefA = React.forwardRef(renderInner);
343
+ const ForwardRefA = React.forwardRef(renderInner);
344
$RefreshReg$(ForwardRefA, 'ForwardRefA');
345
- let ForwardRefB = React.forwardRef(renderInner);
345
+ const ForwardRefB = React.forwardRef(renderInner);
346
$RefreshReg$(ForwardRefB, 'ForwardRefB');
347
348
function Parent({cond}) {
@@ -493,7 +493,7 @@ describe('ReactFresh', () => {
493
494
it('can preserve state for simple memo', () => {
495
if (__DEV__) {
496
- let OuterV1 = render(() => {
496
+ const OuterV1 = render(() => {
497
function Hello() {
498
const [val, setVal] = React.useState(0);
499
return (
@@ -519,7 +519,7 @@ describe('ReactFresh', () => {
519
expect(el.textContent).toBe('1');
520
521
// Perform a hot update.
522
- let OuterV2 = patch(() => {
522
+ const OuterV2 = patch(() => {
523
function Hello() {
524
const [val, setVal] = React.useState(0);
525
return (
@@ -583,7 +583,7 @@ describe('ReactFresh', () => {
583
584
it('can preserve state for memo with custom comparison', () => {
585
if (__DEV__) {
586
- let OuterV1 = render(() => {
586
+ const OuterV1 = render(() => {
587
function Hello() {
588
const [val, setVal] = React.useState(0);
589
return (
@@ -608,7 +608,7 @@ describe('ReactFresh', () => {
608
expect(el.textContent).toBe('1');
609
610
// Perform a hot update.
611
- let OuterV2 = patch(() => {
611
+ const OuterV2 = patch(() => {
612
function Hello() {
613
const [val, setVal] = React.useState(0);
614
return (
@@ -718,7 +718,7 @@ describe('ReactFresh', () => {
718
719
it('can preserve state for memo(forwardRef)', () => {
720
if (__DEV__) {
721
- let OuterV1 = render(() => {
721
+ const OuterV1 = render(() => {
722
function Hello() {
723
const [val, setVal] = React.useState(0);
724
return (
@@ -744,7 +744,7 @@ describe('ReactFresh', () => {
744
expect(el.textContent).toBe('1');
745
746
// Perform a hot update.
747
- let OuterV2 = patch(() => {
747
+ const OuterV2 = patch(() => {
748
function Hello() {
749
const [val, setVal] = React.useState(0);
750
return (
@@ -808,7 +808,7 @@ describe('ReactFresh', () => {
808
809
it('can preserve state for lazy after resolution', async () => {
810
if (__DEV__) {
811
- let AppV1 = render(() => {
811
+ const AppV1 = render(() => {
812
function Hello() {
813
const [val, setVal] = React.useState(0);
814
return (
@@ -855,7 +855,7 @@ describe('ReactFresh', () => {
855
expect(el.textContent).toBe('1');
856
857
// Perform a hot update.
858
- let AppV2 = patch(() => {
858
+ const AppV2 = patch(() => {
859
function Hello() {
860
const [val, setVal] = React.useState(0);
861
return (
@@ -1627,7 +1627,7 @@ describe('ReactFresh', () => {
1627
1628
it('can force remount by changing signature', () => {
1629
if (__DEV__) {
1630
- let HelloV1 = render(() => {
1630
+ const HelloV1 = render(() => {
1631
function Hello() {
1632
const [val, setVal] = React.useState(0);
1633
return (
@@ -1652,7 +1652,7 @@ describe('ReactFresh', () => {
1652
expect(el.textContent).toBe('1');
1653
1654
// Perform a hot update.
1655
- let HelloV2 = patch(() => {
1655
+ const HelloV2 = patch(() => {
1656
function Hello() {
1657
const [val, setVal] = React.useState(0);
1658
return (
@@ -1673,7 +1673,7 @@ describe('ReactFresh', () => {
1673
expect(el.style.color).toBe('red');
1674
1675
// Perform a hot update.
1676
- let HelloV3 = patch(() => {
1676
+ const HelloV3 = patch(() => {
1677
function Hello() {
1678
const [val, setVal] = React.useState(0);
1679
return (
@@ -1758,7 +1758,7 @@ describe('ReactFresh', () => {
1758
1759
it('keeps a valid tree when forcing remount', () => {
1760
if (__DEV__) {
1761
- let HelloV1 = prepare(() => {
1761
+ const HelloV1 = prepare(() => {
1762
function Hello() {
1763
return null;
1764
}
@@ -1773,7 +1773,7 @@ describe('ReactFresh', () => {
1773
1774
// Each of those renders three instances of HelloV1,
1775
// but in different ways.
1776
- let trees = [
1776
+ const trees = [
1777
<div>
1778
<HelloV1 />
1779
<div>
@@ -2914,7 +2914,7 @@ describe('ReactFresh', () => {
2914
expect(container.innerHTML).toBe('<h1>Fixed!</h1>');
2915
2916
// Verify next hot reload doesn't remount anything.
2917
- let helloNode = container.firstChild;
2917
+ const helloNode = container.firstChild;
2918
patch(() => {
2919
function Hello() {
2920
return <h1>Nice.</h1>;
@@ -2993,15 +2993,15 @@ describe('ReactFresh', () => {
2993
2994
it('regression test: does not get into an infinite loop', () => {
2995
if (__DEV__) {
2996
- let containerA = document.createElement('div');
2997
- let containerB = document.createElement('div');
2996
+ const containerA = document.createElement('div');
2997
+ const containerB = document.createElement('div');
2998
2999
// Initially, nothing interesting.
3000
- let RootAV1 = () => {
3000
+ const RootAV1 = () => {
3001
return 'A1';
3002
};
3003
$RefreshReg$(RootAV1, 'RootA');
3004
- let RootBV1 = () => {
3004
+ const RootBV1 = () => {
3005
return 'B1';
3006
};
3007
$RefreshReg$(RootBV1, 'RootB');
@@ -3014,7 +3014,7 @@ describe('ReactFresh', () => {
3014
expect(containerB.innerHTML).toBe('B1');
3015
3016
// Then make the first root fail.
3017
- let RootAV2 = () => {
3017
+ const RootAV2 = () => {
3018
throw new Error('A2!');
3019
};
3020
$RefreshReg$(RootAV2, 'RootA');
@@ -3025,7 +3025,7 @@ describe('ReactFresh', () => {
3025
// Then patch the first root, but make it fail in the commit phase.
3026
// This used to trigger an infinite loop due to a list of failed roots
3027
// being mutated while it was being iterated on.
3028
- let RootAV3 = () => {
3028
+ const RootAV3 = () => {
3029
React.useLayoutEffect(() => {
3030
throw new Error('A3!');
3031
}, []);
@@ -3036,7 +3036,7 @@ describe('ReactFresh', () => {
3036
expect(containerA.innerHTML).toBe('');
3037
expect(containerB.innerHTML).toBe('B1');
3038
3039
- let RootAV4 = () => {
3039
+ const RootAV4 = () => {
3040
return 'A4';
3041
};
3042
$RefreshReg$(RootAV4, 'RootA');
@@ -3048,7 +3048,7 @@ describe('ReactFresh', () => {
3048
3049
it('remounts classes on every edit', () => {
3050
if (__DEV__) {
3051
- let HelloV1 = render(() => {
3051
+ const HelloV1 = render(() => {
3052
class Hello extends React.Component {
3053
state = {count: 0};
3054
handleClick = () => {
@@ -3083,7 +3083,7 @@ describe('ReactFresh', () => {
3083
expect(el.textContent).toBe('1');
3084
3085
// Perform a hot update.
3086
- let HelloV2 = patch(() => {
3086
+ const HelloV2 = patch(() => {
3087
class Hello extends React.Component {
3088
state = {count: 0};
3089
handleClick = () => {
@@ -3120,7 +3120,7 @@ describe('ReactFresh', () => {
3120
expect(newEl.style.color).toBe('red');
3121
expect(newEl.textContent).toBe('1');
3122
3123
- let HelloV3 = patch(() => {
3123
+ const HelloV3 = patch(() => {
3124
class Hello extends React.Component {
3125
state = {count: 0};
3126
handleClick = () => {
@@ -3235,7 +3235,7 @@ describe('ReactFresh', () => {
3235
3236
it('remounts on conversion from class to function and back', () => {
3237
if (__DEV__) {
3238
- let HelloV1 = render(() => {
3238
+ const HelloV1 = render(() => {
3239
function Hello() {
3240
const [val, setVal] = React.useState(0);
3241
return (
@@ -3258,7 +3258,7 @@ describe('ReactFresh', () => {
3258
expect(el.textContent).toBe('1');
3259
3260
// Perform a hot update that turns it into a class.
3261
- let HelloV2 = patch(() => {
3261
+ const HelloV2 = patch(() => {
3262
class Hello extends React.Component {
3263
state = {count: 0};
3264
handleClick = () => {
@@ -3296,7 +3296,7 @@ describe('ReactFresh', () => {
3296
expect(newEl.textContent).toBe('1');
3297
3298
// Now convert it back to a function.
3299
- let HelloV3 = patch(() => {
3299
+ const HelloV3 = patch(() => {
3300
function Hello() {
3301
const [val, setVal] = React.useState(0);
3302
return (
@@ -3479,9 +3479,9 @@ describe('ReactFresh', () => {
3479
ReactFreshRuntime.performReactRefresh();
3480
3481
// Mount three roots.
3482
- let cont1 = document.createElement('div');
3483
- let cont2 = document.createElement('div');
3484
- let cont3 = document.createElement('div');
3482
+ const cont1 = document.createElement('div');
3483
+ const cont2 = document.createElement('div');
3484
+ const cont3 = document.createElement('div');
3485
document.body.appendChild(cont1);
3486
document.body.appendChild(cont2);
3487
document.body.appendChild(cont3);
@@ -3601,10 +3601,10 @@ describe('ReactFresh', () => {
3601
expect(ReactFreshRuntime.isLikelyComponentType(useTheme)).toBe(false);
3602
3603
// These seem like function components.
3604
- let Button = () => {};
3604
+ const Button = () => {};
3605
expect(ReactFreshRuntime.isLikelyComponentType(Button)).toBe(true);
3606
expect(ReactFreshRuntime.isLikelyComponentType(Widget)).toBe(true);
3607
- let anon = (() => () => {})();
3607
+ const anon = (() => () => {})();
3608
anon.displayName = 'Foo';
3609
expect(ReactFreshRuntime.isLikelyComponentType(anon)).toBe(true);
3610
@@ -3717,7 +3717,7 @@ describe('ReactFresh', () => {
3717
// This is a minimal shim for the global hook installed by DevTools.
3718
// The real one is in packages/react-devtools-shared/src/hook.js.
3719
let idCounter = 0;
3720
- let renderers = new Map();
3720
+ const renderers = new Map();
3721
global.__REACT_DEVTOOLS_GLOBAL_HOOK__ = {
3722
renderers,
3723
supportsFiber: true,
packages/react-refresh/src/__tests__/ReactFreshBabelPlugin-test.js
+3
-3
@@ -7,9 +7,9 @@
7
8
'use strict';
9
10
-let babel = require('@babel/core');
11
-let {wrap} = require('jest-snapshot-serializer-raw');
12
-let freshPlugin = require('react-refresh/babel');
10
+const babel = require('@babel/core');
11
+const {wrap} = require('jest-snapshot-serializer-raw');
12
+const freshPlugin = require('react-refresh/babel');
13
14
function transform(input, options = {}) {
15
return wrap(
packages/react-refresh/src/__tests__/ReactFreshIntegration-test.js
+3
-3
@@ -16,8 +16,8 @@ let ReactDOM;
16
let ReactFreshRuntime;
17
let act;
18
19
-let babel = require('@babel/core');
20
-let freshPlugin = require('react-refresh/babel');
19
+const babel = require('@babel/core');
20
+const freshPlugin = require('react-refresh/babel');
21
22
describe('ReactFreshIntegration', () => {
23
let container;
@@ -100,7 +100,7 @@ describe('ReactFreshIntegration', () => {
100
// (In a real module system we'd do this for *all* exports.)
101
// For example, this can happen if you convert a class to a function.
102
// Or if you wrap something in a HOC.
103
- let didExportsChange =
103
+ const didExportsChange =
104
ReactFreshRuntime.getFamilyByType(prevExports.default) !==
105
ReactFreshRuntime.getFamilyByType(nextExports.default);
106
if (didExportsChange) {
packages/react-refresh/src/__tests__/ReactFreshMultipleRenderer-test.internal.js
+9
-9
@@ -10,18 +10,18 @@
10
'use strict';
11
12
jest.resetModules();
13
-let React = require('react');
13
+const React = require('react');
14
let ReactFreshRuntime;
15
if (__DEV__) {
16
ReactFreshRuntime = require('react-refresh/runtime');
17
ReactFreshRuntime.injectIntoGlobalHook(global);
18
}
19
-let ReactDOM = require('react-dom');
19
+const ReactDOM = require('react-dom');
20
21
jest.resetModules();
22
-let ReactART = require('react-art');
23
-let ARTSVGMode = require('art/modes/svg');
24
-let ARTCurrentMode = require('art/modes/current');
22
+const ReactART = require('react-art');
23
+const ARTSVGMode = require('art/modes/svg');
24
+const ARTCurrentMode = require('art/modes/current');
25
ARTCurrentMode.setCurrent(ARTSVGMode);
26
27
describe('ReactFresh', () => {
@@ -43,12 +43,12 @@ describe('ReactFresh', () => {
43
44
it('can update components managd by different renderers independently', () => {
45
if (__DEV__) {
46
- let InnerV1 = function() {
46
+ const InnerV1 = function() {
47
return <ReactART.Shape fill="blue" />;
48
};
49
ReactFreshRuntime.register(InnerV1, 'Inner');
50
51
- let OuterV1 = function() {
51
+ const OuterV1 = function() {
52
return (
53
<div style={{color: 'blue'}}>
54
<ReactART.Surface>
@@ -66,7 +66,7 @@ describe('ReactFresh', () => {
66
expect(pathEl.getAttributeNS(null, 'fill')).toBe('rgb(0, 0, 255)');
67
68
// Perform a hot update to the ART-rendered component.
69
- let InnerV2 = function() {
69
+ const InnerV2 = function() {
70
return <ReactART.Shape fill="red" />;
71
};
72
ReactFreshRuntime.register(InnerV2, 'Inner');
@@ -78,7 +78,7 @@ describe('ReactFresh', () => {
78
expect(pathEl.getAttributeNS(null, 'fill')).toBe('rgb(255, 0, 0)');
79
80
// Perform a hot update to the DOM-rendered component.
81
- let OuterV2 = function() {
81
+ const OuterV2 = function() {
82
return (
83
<div style={{color: 'red'}}>
84
<ReactART.Surface>
packages/react-server/src/ReactFizzServer.js
+6
-6
@@ -37,13 +37,13 @@ export function createRequest(
37
}
38
39
function performWork(request: OpaqueRequest): void {
40
- let element = (request.children: any);
40
+ const element = (request.children: any);
41
request.children = null;
42
if (element && element.$$typeof !== REACT_ELEMENT_TYPE) {
43
return;
44
}
45
- let type = element.type;
46
- let props = element.props;
45
+ const type = element.type;
46
+ const props = element.props;
47
if (typeof type !== 'string') {
48
return;
49
}
@@ -56,14 +56,14 @@ function performWork(request: OpaqueRequest): void {
56
}
57
58
function flushCompletedChunks(request: OpaqueRequest) {
59
- let destination = request.destination;
60
- let chunks = request.completedChunks;
59
+ const destination = request.destination;
60
+ const chunks = request.completedChunks;
61
request.completedChunks = [];
62
63
beginWriting(destination);
64
try {
65
for (let i = 0; i < chunks.length; i++) {
66
- let chunk = chunks[i];
66
+ const chunk = chunks[i];
67
writeChunk(destination, chunk);
68
}
69
} finally {
packages/react-server/src/ReactFlightServer.js
+28
-28
@@ -79,8 +79,8 @@ export function createRequest(
79
destination: Destination,
80
bundlerConfig: BundlerConfig,
81
): Request {
82
- let pingedSegments = [];
83
- let request = {
82
+ const pingedSegments = [];
83
+ const request = {
84
destination,
85
bundlerConfig,
86
nextChunkId: 0,
@@ -94,14 +94,14 @@ export function createRequest(
94
},
95
};
96
request.pendingChunks++;
97
- let rootSegment = createSegment(request, () => model);
97
+ const rootSegment = createSegment(request, () => model);
98
pingedSegments.push(rootSegment);
99
return request;
100
}
101
102
function attemptResolveElement(element: React$Element<any>): ReactModel {
103
- let type = element.type;
104
- let props = element.props;
103
+ const type = element.type;
104
+ const props = element.props;
105
if (typeof type === 'function') {
106
// This is a server-side component.
107
return type(props);
@@ -118,7 +118,7 @@ function attemptResolveElement(element: React$Element<any>): ReactModel {
118
}
119
120
function pingSegment(request: Request, segment: Segment): void {
121
- let pingedSegments = request.pingedSegments;
121
+ const pingedSegments = request.pingedSegments;
122
pingedSegments.push(segment);
123
if (pingedSegments.length === 1) {
124
scheduleWork(() => performWork(request));
@@ -126,8 +126,8 @@ function pingSegment(request: Request, segment: Segment): void {
126
}
127
128
function createSegment(request: Request, query: () => ReactModel): Segment {
129
- let id = request.nextChunkId++;
130
- let segment = {
129
+ const id = request.nextChunkId++;
130
+ const segment = {
131
id,
132
query,
133
ping: () => pingSegment(request, segment),
@@ -176,23 +176,23 @@ export function resolveModelToJSON(
176
switch (key) {
177
case '1': {
178
// Module reference
179
- let moduleReference: ModuleReference<any> = (value: any);
179
+ const moduleReference: ModuleReference<any> = (value: any);
180
try {
181
- let moduleMetaData: ModuleMetaData = resolveModuleMetaData(
181
+ const moduleMetaData: ModuleMetaData = resolveModuleMetaData(
182
request.bundlerConfig,
183
moduleReference,
184
);
185
return (moduleMetaData: ReactJSONValue);
186
} catch (x) {
187
request.pendingChunks++;
188
- let errorId = request.nextChunkId++;
188
+ const errorId = request.nextChunkId++;
189
emitErrorChunk(request, errorId, x);
190
return serializeIDRef(errorId);
191
}
192
}
193
case '2': {
194
// Load function
195
- let load: () => ReactModel = (value: any);
195
+ const load: () => ReactModel = (value: any);
196
try {
197
// Attempt to resolve the data.
198
return load();
@@ -204,14 +204,14 @@ export function resolveModelToJSON(
204
) {
205
// Something suspended, we'll need to create a new segment and resolve it later.
206
request.pendingChunks++;
207
- let newSegment = createSegment(request, load);
208
- let ping = newSegment.ping;
207
+ const newSegment = createSegment(request, load);
208
+ const ping = newSegment.ping;
209
x.then(ping, ping);
210
return serializeIDRef(newSegment.id);
211
} else {
212
// This load failed, encode the error as a separate row and reference that.
213
request.pendingChunks++;
214
- let errorId = request.nextChunkId++;
214
+ const errorId = request.nextChunkId++;
215
emitErrorChunk(request, errorId, x);
216
return serializeIDRef(errorId);
217
}
@@ -238,7 +238,7 @@ export function resolveModelToJSON(
238
) {
239
// TODO: Concatenate keys of parents onto children.
240
// TODO: Allow elements to suspend independently and serialize as references to future elements.
241
- let element: React$Element<any> = (value: any);
241
+ const element: React$Element<any> = (value: any);
242
value = attemptResolveElement(element);
243
}
244
@@ -262,20 +262,20 @@ function emitErrorChunk(request: Request, id: number, error: mixed): void {
262
message = 'An error occurred but serializing the error message failed.';
263
}
264
265
- let processedChunk = processErrorChunk(request, id, message, stack);
265
+ const processedChunk = processErrorChunk(request, id, message, stack);
266
request.completedErrorChunks.push(processedChunk);
267
}
268
269
function retrySegment(request: Request, segment: Segment): void {
270
- let query = segment.query;
270
+ const query = segment.query;
271
try {
272
- let value = query();
273
- let processedChunk = processModelChunk(request, segment.id, value);
272
+ const value = query();
273
+ const processedChunk = processModelChunk(request, segment.id, value);
274
request.completedJSONChunks.push(processedChunk);
275
} catch (x) {
276
if (typeof x === 'object' && x !== null && typeof x.then === 'function') {
277
// Something suspended again, let's pick it back up later.
278
- let ping = segment.ping;
278
+ const ping = segment.ping;
279
x.then(ping, ping);
280
return;
281
} else {
@@ -286,10 +286,10 @@ function retrySegment(request: Request, segment: Segment): void {
286
}
287
288
function performWork(request: Request): void {
289
- let pingedSegments = request.pingedSegments;
289
+ const pingedSegments = request.pingedSegments;
290
request.pingedSegments = [];
291
for (let i = 0; i < pingedSegments.length; i++) {
292
- let segment = pingedSegments[i];
292
+ const segment = pingedSegments[i];
293
retrySegment(request, segment);
294
}
295
if (request.flowing) {
@@ -303,14 +303,14 @@ function flushCompletedChunks(request: Request): void {
303
return;
304
}
305
reentrant = true;
306
- let destination = request.destination;
306
+ const destination = request.destination;
307
beginWriting(destination);
308
try {
309
- let jsonChunks = request.completedJSONChunks;
309
+ const jsonChunks = request.completedJSONChunks;
310
let i = 0;
311
for (; i < jsonChunks.length; i++) {
312
request.pendingChunks--;
313
- let chunk = jsonChunks[i];
313
+ const chunk = jsonChunks[i];
314
if (!writeChunk(destination, chunk)) {
315
request.flowing = false;
316
i++;
@@ -318,11 +318,11 @@ function flushCompletedChunks(request: Request): void {
318
}
319
}
320
jsonChunks.splice(0, i);
321
- let errorChunks = request.completedErrorChunks;
321
+ const errorChunks = request.completedErrorChunks;
322
i = 0;
323
for (; i < errorChunks.length; i++) {
324
request.pendingChunks--;
325
- let chunk = errorChunks[i];
325
+ const chunk = errorChunks[i];
326
if (!writeChunk(destination, chunk)) {
327
request.flowing = false;
328
i++;
packages/react-server/src/ReactFlightServerConfigStream.js
+3
-3
@@ -84,8 +84,8 @@ export function processErrorChunk(
84
message: string,
85
stack: string,
86
): Chunk {
87
- let errorInfo = {message, stack};
88
- let row = serializeRowHeader('E', id) + stringify(errorInfo) + '\n';
87
+ const errorInfo = {message, stack};
88
+ const row = serializeRowHeader('E', id) + stringify(errorInfo) + '\n';
89
return convertStringToBuffer(row);
90
}
91
@@ -94,7 +94,7 @@ export function processModelChunk(
94
id: number,
95
model: ReactModel,
96
): Chunk {
97
- let json = stringify(model, request.toJSON);
97
+ const json = stringify(model, request.toJSON);
98
let row;
99
if (id === 0) {
100
row = json + '\n';
packages/react-server/src/ReactFlightServerRuntime.js
+2
-2
@@ -30,7 +30,7 @@ export function serverBlock<Props, Data>(
30
moduleReference: ModuleReference<BlockRenderFunction<Props, Data>>,
31
loadData: () => Data,
32
): ServerBlock<Props> {
33
- let blockComponent: ServerBlockComponent<Props, Data> = [
33
+ const blockComponent: ServerBlockComponent<Props, Data> = [
34
REACT_SERVER_BLOCK_TYPE,
35
moduleReference,
36
loadData,
@@ -43,7 +43,7 @@ export function serverBlock<Props, Data>(
43
export function serverBlockNoData<Props>(
44
moduleReference: ModuleReference<BlockRenderFunction<Props, void>>,
45
): ServerBlock<Props> {
46
- let blockComponent: ServerBlockComponent<Props, void> = [
46
+ const blockComponent: ServerBlockComponent<Props, void> = [
47
REACT_SERVER_BLOCK_TYPE,
48
moduleReference,
49
];
packages/react-server/src/ReactServerStreamConfigNode.js
+1
-1
@@ -46,7 +46,7 @@ export function writeChunk(
46
destination: Destination,
47
buffer: Uint8Array,
48
): boolean {
49
- let nodeBuffer = ((buffer: any): Buffer); // close enough
49
+ const nodeBuffer = ((buffer: any): Buffer); // close enough
50
return destination.write(nodeBuffer);
51
}
52
packages/react-server/src/__tests__/ReactServer-test.js
+1
-1
@@ -22,7 +22,7 @@ describe('ReactServer', () => {
22
});
23
24
it('can call render', () => {
25
- let result = ReactNoopServer.render(<div>hello world</div>);
25
+ const result = ReactNoopServer.render(<div>hello world</div>);
26
expect(result).toEqual([{type: 'div', props: {children: 'hello world'}}]);
27
});
28
});
packages/react-test-renderer/src/__tests__/ReactShallowRenderer-test.js
+2
-2
@@ -930,7 +930,7 @@ describe('ReactShallowRenderer', () => {
930
let result = shallowRenderer.render(<SimpleComponent />);
931
expect(result).toEqual(<div>value:0</div>);
932
933
- let instance = shallowRenderer.getMountedInstance();
933
+ const instance = shallowRenderer.getMountedInstance();
934
instance.updateState();
935
result = shallowRenderer.getRenderOutput();
936
expect(result).toEqual(<div>value:1</div>);
@@ -1170,7 +1170,7 @@ describe('ReactShallowRenderer', () => {
1170
}
1171
1172
const shallowRenderer = createRenderer();
1173
- let result = shallowRenderer.render(<SimpleComponent />, {
1173
+ const result = shallowRenderer.render(<SimpleComponent />, {
1174
foo: 'foo',
1175
bar: 'bar',
1176
});
packages/react-test-renderer/src/__tests__/ReactShallowRendererHooks-test.js
+9
-9
@@ -216,7 +216,7 @@ describe('ReactShallowRenderer with hooks', () => {
216
}
217
218
const shallowRenderer = createRenderer();
219
- let result = shallowRenderer.render(<SomeComponent initialCount={0} />);
219
+ const result = shallowRenderer.render(<SomeComponent initialCount={0} />);
220
221
expect(result).toEqual(
222
<div>
@@ -228,7 +228,7 @@ describe('ReactShallowRenderer with hooks', () => {
228
});
229
230
it('should not trigger effects', () => {
231
- let effectsCalled = [];
231
+ const effectsCalled = [];
232
233
function SomeComponent({defaultName}) {
234
React.useEffect(() => {
@@ -260,8 +260,8 @@ describe('ReactShallowRenderer with hooks', () => {
260
}
261
262
const shallowRenderer = createRenderer();
263
- let firstResult = shallowRenderer.render(<SomeComponent />);
264
- let secondResult = shallowRenderer.render(<SomeComponent />);
263
+ const firstResult = shallowRenderer.render(<SomeComponent />);
264
+ const secondResult = shallowRenderer.render(<SomeComponent />);
265
266
expect(firstResult).toEqual(secondResult);
267
});
@@ -280,8 +280,8 @@ describe('ReactShallowRenderer with hooks', () => {
280
}
281
282
const shallowRenderer = createRenderer();
283
- let firstResult = shallowRenderer.render(<SomeComponent />);
284
- let secondResult = shallowRenderer.render(<SomeComponent />);
283
+ const firstResult = shallowRenderer.render(<SomeComponent />);
284
+ const secondResult = shallowRenderer.render(<SomeComponent />);
285
286
expect(firstResult).toEqual(secondResult);
287
});
@@ -300,7 +300,7 @@ describe('ReactShallowRenderer with hooks', () => {
300
}
301
302
const shallowRenderer = createRenderer();
303
- let result = shallowRenderer.render(<SomeComponent />);
303
+ const result = shallowRenderer.render(<SomeComponent />);
304
305
expect(result).toEqual(
306
<div>
@@ -368,8 +368,8 @@ describe('ReactShallowRenderer with hooks', () => {
368
});
369
370
const shallowRenderer = createRenderer();
371
- let firstResult = shallowRenderer.render(<SomeComponent />);
372
- let secondResult = shallowRenderer.render(<SomeComponent />);
371
+ const firstResult = shallowRenderer.render(<SomeComponent />);
372
+ const secondResult = shallowRenderer.render(<SomeComponent />);
373
374
expect(firstResult).toEqual(secondResult);
375
});
packages/react-test-renderer/src/__tests__/ReactShallowRendererMemo-test.js
+2
-2
@@ -957,7 +957,7 @@ describe('ReactShallowRendererMemo', () => {
957
let result = shallowRenderer.render(<SimpleComponent />);
958
expect(result).toEqual(<div>value:0</div>);
959
960
- let instance = shallowRenderer.getMountedInstance();
960
+ const instance = shallowRenderer.getMountedInstance();
961
instance.updateState();
962
result = shallowRenderer.getRenderOutput();
963
expect(result).toEqual(<div>value:1</div>);
@@ -1215,7 +1215,7 @@ describe('ReactShallowRendererMemo', () => {
1215
);
1216
1217
const shallowRenderer = createRenderer();
1218
- let result = shallowRenderer.render(<SimpleComponent />, {
1218
+ const result = shallowRenderer.render(<SimpleComponent />, {
1219
foo: 'foo',
1220
bar: 'bar',
1221
});
packages/react-test-renderer/src/__tests__/ReactTestRendererAct-test.js
+4
-4
@@ -15,14 +15,14 @@ describe('ReactTestRenderer.act()', () => {
15
});
16
it('can use .act() to flush effects', () => {
17
function App(props) {
18
- let [ctr, setCtr] = React.useState(0);
18
+ const [ctr, setCtr] = React.useState(0);
19
React.useEffect(() => {
20
props.callback();
21
setCtr(1);
22
}, []);
23
return ctr;
24
}
25
- let calledLog = [];
25
+ const calledLog = [];
26
let root;
27
act(() => {
28
root = ReactTestRenderer.create(
@@ -41,7 +41,7 @@ describe('ReactTestRenderer.act()', () => {
41
it("warns if you don't use .act", () => {
42
let setCtr;
43
function App(props) {
44
- let [ctr, _setCtr] = React.useState(0);
44
+ const [ctr, _setCtr] = React.useState(0);
45
setCtr = _setCtr;
46
return ctr;
47
}
@@ -63,7 +63,7 @@ describe('ReactTestRenderer.act()', () => {
63
});
64
}
65
function App() {
66
- let [details, setDetails] = React.useState(0);
66
+ const [details, setDetails] = React.useState(0);
67
68
React.useEffect(() => {
69
async function fetchDetails() {
packages/react/src/ReactBlock.js
+5
-5
@@ -99,7 +99,7 @@ export function block<Args: Iterable<any>, Props, Data>(
99
100
if (load === undefined) {
101
return function(): Block<Props> {
102
- let blockComponent: BlockComponent<Props, void> = {
102
+ const blockComponent: BlockComponent<Props, void> = {
103
$$typeof: REACT_BLOCK_TYPE,
104
_data: undefined,
105
// $FlowFixMe: Data must be void in this scenario.
@@ -112,18 +112,18 @@ export function block<Args: Iterable<any>, Props, Data>(
112
}
113
114
// Trick to let Flow refine this.
115
- let loadFn = load;
115
+ const loadFn = load;
116
117
return function(): Block<Props> {
118
- let args: Args = arguments;
118
+ const args: Args = arguments;
119
120
- let payload: Payload<Props, Args, Data> = {
120
+ const payload: Payload<Props, Args, Data> = {
121
load: loadFn,
122
args: args,
123
render: render,
124
};
125
126
- let lazyType: LazyComponent<
126
+ const lazyType: LazyComponent<
127
BlockComponent<Props, Data>,
128
Payload<Props, Args, Data>,
129
> = {
packages/react/src/ReactChildren.js
+1
-1
@@ -109,7 +109,7 @@ function mapIntoArray(
109
let mappedChild = callback(child);
110
// If it's the only child, treat the name as if it was wrapped in an array
111
// so that it's consistent if the number of children grows:
112
- let childKey =
112
+ const childKey =
113
nameSoFar === '' ? SEPARATOR + getElementKey(child, 0) : nameSoFar;
114
if (Array.isArray(mappedChild)) {
115
let escapedChildKey = '';
packages/react/src/ReactLazy.js
+2
-2
@@ -98,13 +98,13 @@ function lazyInitializer<T>(payload: Payload<T>): T {
98
export function lazy<T>(
99
ctor: () => Thenable<{default: T, ...}>,
100
): LazyComponent<T, Payload<T>> {
101
- let payload: Payload<T> = {
101
+ const payload: Payload<T> = {
102
// We use these fields to store the result.
103
_status: -1,
104
_result: ctor,
105
};
106
107
- let lazyType: LazyComponent<T, Payload<T>> = {
107
+ const lazyType: LazyComponent<T, Payload<T>> = {
108
$$typeof: REACT_LAZY_TYPE,
109
_payload: payload,
110
_init: lazyInitializer,
packages/react/src/__tests__/ReactDOMTracing-test.internal.js
+7
-5
@@ -600,7 +600,7 @@ describe('ReactDOMTracing', () => {
600
601
describe('hydration', () => {
602
it('traces interaction across hydration', async done => {
603
- let ref = React.createRef();
603
+ const ref = React.createRef();
604
605
function Child() {
606
return 'Hello';
@@ -651,8 +651,10 @@ describe('ReactDOMTracing', () => {
651
it('traces interaction across suspended hydration', async done => {
652
let suspend = false;
653
let resolve;
654
- let promise = new Promise(resolvePromise => (resolve = resolvePromise));
655
- let ref = React.createRef();
654
+ const promise = new Promise(
655
+ resolvePromise => (resolve = resolvePromise),
656
+ );
657
+ const ref = React.createRef();
658
659
function Child() {
660
if (suspend) {
@@ -720,8 +722,8 @@ describe('ReactDOMTracing', () => {
722
723
it('traces interaction across client-rendered hydration', async done => {
724
let suspend = false;
723
- let promise = new Promise(() => {});
724
- let ref = React.createRef();
725
+ const promise = new Promise(() => {});
726
+ const ref = React.createRef();
727
728
function Child() {
729
if (suspend) {
packages/react/src/__tests__/ReactProfiler-test.internal.js
+5
-5
@@ -818,7 +818,7 @@ describe('Profiler', () => {
818
// The initial work was thrown away in this case,
819
// So the actual and base times should only include the final rendered tree times.
820
expect(callback).toHaveBeenCalledTimes(1);
821
- let call = callback.mock.calls[0];
821
+ const call = callback.mock.calls[0];
822
expect(call[2]).toBe(5); // actual time
823
expect(call[3]).toBe(5); // base time
824
expect(call[4]).toBe(115); // start time
@@ -1075,7 +1075,7 @@ describe('Profiler', () => {
1075
expect(callback).toHaveBeenCalledTimes(2);
1076
1077
// Callbacks bubble (reverse order).
1078
- let [mountCall, updateCall] = callback.mock.calls;
1078
+ const [mountCall, updateCall] = callback.mock.calls;
1079
1080
// The initial mount only includes the ErrorBoundary (which takes 2)
1081
// But it spends time rendering all of the failed subtree also.
@@ -1154,7 +1154,7 @@ describe('Profiler', () => {
1154
expect(callback).toHaveBeenCalledTimes(1);
1155
1156
// Callbacks bubble (reverse order).
1157
- let [mountCall] = callback.mock.calls;
1157
+ const [mountCall] = callback.mock.calls;
1158
1159
// The initial mount includes the ErrorBoundary's error state,
1160
// But it also spends actual time rendering UI that fails and isn't included.
@@ -3500,7 +3500,7 @@ describe('Profiler', () => {
3500
expect(onPostCommit).not.toHaveBeenCalled();
3501
expect(Scheduler).toFlushAndYield(['Child:1', 'onPostCommit']);
3502
expect(onPostCommit).toHaveBeenCalledTimes(1);
3503
- let call = onPostCommit.mock.calls[0];
3503
+ const call = onPostCommit.mock.calls[0];
3504
expect(call[0]).toEqual('test-profiler');
3505
expect(call[4]).toMatchInteractions(
3506
ReactFeatureFlags.enableSchedulerTracing ? [interaction] : [],
@@ -3934,7 +3934,7 @@ describe('Profiler', () => {
3934
it('handles high-pri renderers between suspended and resolved (async) trees', async () => {
3935
// Set up an initial shell. We need to set this up before the test sceanrio
3936
// because we want initial render to suspend on navigation to the initial state.
3937
- let renderer = ReactTestRenderer.create(
3937
+ const renderer = ReactTestRenderer.create(
3938
<React.Profiler id="app" onRender={() => {}}>
3939
<React.Suspense fallback={<Text text="loading" />} />
3940
</React.Profiler>,
packages/scheduler/src/Scheduler.js
+1
-1
@@ -206,7 +206,7 @@ function workLoop(hasTimeRemaining, initialTime) {
206
if (currentTask !== null) {
207
return true;
208
} else {
209
- let firstTimer = peek(timerQueue);
209
+ const firstTimer = peek(timerQueue);
210
if (firstTimer !== null) {
211
requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
212
}
packages/scheduler/src/__tests__/SchedulerBrowser-test.js
+1
-1
@@ -252,7 +252,7 @@ describe('SchedulerBrowser', () => {
252
});
253
254
it('schedule new task after a cancellation', () => {
255
- let handle = scheduleCallback(NormalPriority, () => {
255
+ const handle = scheduleCallback(NormalPriority, () => {
256
runtime.log('A');
257
});
258
packages/scheduler/src/__tests__/SchedulerNoDOM-test.js
+2
-2
@@ -39,7 +39,7 @@ describe('SchedulerNoDOM', () => {
39
});
40
41
it('runAllTimers flushes all scheduled callbacks', () => {
42
- let log = [];
42
+ const log = [];
43
scheduleCallback(NormalPriority, () => {
44
log.push('A');
45
});
@@ -55,7 +55,7 @@ describe('SchedulerNoDOM', () => {
55
});
56
57
it('executes callbacks in order of priority', () => {
58
- let log = [];
58
+ const log = [];
59
60
scheduleCallback(NormalPriority, () => {
61
log.push('A');
packages/scheduler/src/forks/SchedulerHostConfig.default.js
+1
-1
@@ -121,7 +121,7 @@ if (
121
122
// TODO: Make this configurable
123
// TODO: Adjust this based on priority?
124
- let maxYieldInterval = 300;
124
+ const maxYieldInterval = 300;
125
let needsPaint = false;
126
127
if (
packages/shared/__tests__/ReactErrorUtils-test.internal.js
+2
-3
@@ -82,7 +82,6 @@ describe('ReactErrorUtils', () => {
82
const err1 = new Error();
83
let err2;
84
const err3 = new Error();
85
- let err4;
85
ReactErrorUtils.invokeGuardedCallback(
86
'foo',
87
function() {
@@ -98,7 +97,7 @@ describe('ReactErrorUtils', () => {
97
},
98
null,
99
);
101
- err4 = ReactErrorUtils.clearCaughtError();
100
+ const err4 = ReactErrorUtils.clearCaughtError();
101
102
expect(err2).toBe(err1);
103
expect(err4).toBe(err3);
@@ -133,7 +132,7 @@ describe('ReactErrorUtils', () => {
132
const ReactErrorUtils2 = require('shared/ReactErrorUtils');
133
expect(ReactErrorUtils1).not.toEqual(ReactErrorUtils2);
134
136
- let ops = [];
135
+ const ops = [];
136
137
ReactErrorUtils1.invokeGuardedCallback(
138
null,
packages/shared/__tests__/describeComponentFrame-test.js
+1
-1
@@ -96,7 +96,7 @@ describe('Component stack trace displaying', () => {
96
if (__DEV__) {
97
let i = 0;
98
expect(console.error.calls.count()).toBe(Object.keys(fileNames).length);
99
- for (let fileName in fileNames) {
99
+ for (const fileName in fileNames) {
100
if (!fileNames.hasOwnProperty(fileName)) {
101
continue;
102
}
packages/shared/checkPropTypes.js
+4
-4
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-let loggedTypeFailures = {};
10
+const loggedTypeFailures = {};
11
12
export default function checkPropTypes(
13
typeSpecs: Object,
@@ -17,8 +17,8 @@ export default function checkPropTypes(
17
): void {
18
if (__DEV__) {
19
// $FlowFixMe This is okay but Flow doesn't know it.
20
- let has = Function.call.bind(Object.prototype.hasOwnProperty);
21
- for (let typeSpecName in typeSpecs) {
20
+ const has = Function.call.bind(Object.prototype.hasOwnProperty);
21
+ for (const typeSpecName in typeSpecs) {
22
if (has(typeSpecs, typeSpecName)) {
23
let error;
24
// Prop type validation may throw. In case they do, we don't want to
@@ -28,7 +28,7 @@ export default function checkPropTypes(
28
// This is intentionally an invariant that gets caught. It's the same
29
// behavior as without this statement except with a better message.
30
if (typeof typeSpecs[typeSpecName] !== 'function') {
31
- let err = Error(
31
+ const err = Error(
32
(componentName || 'React class') +
33
': ' +
34
location +
packages/shared/describeComponentFrame.js
+1
-1
@@ -16,7 +16,7 @@ export default function(
16
) {
17
let sourceInfo = '';
18
if (source) {
19
- let path = source.fileName;
19
+ const path = source.fileName;
20
let fileName = path.replace(BEFORE_SLASH_RE, '');
21
if (__DEV__) {
22
// In DEV, include code for a common special case:
packages/shared/enqueueTask.js
+2
-2
@@ -15,8 +15,8 @@ export default function enqueueTask(task: () => void) {
15
try {
16
// read require off the module object to get around the bundlers.
17
// we don't want them to detect a require and bundle a Node polyfill.
18
- let requireString = ('require' + Math.random()).slice(0, 7);
19
- let nodeRequire = module && module[requireString];
18
+ const requireString = ('require' + Math.random()).slice(0, 7);
19
+ const nodeRequire = module && module[requireString];
20
// assuming we're in node, let's try to get node's
21
// version of setImmediate, bypassing fake timers if any.
22
enqueueTaskImpl = nodeRequire('timers').setImmediate;
packages/shared/forks/invokeGuardedCallbackImpl.www.js
+1
-1
@@ -14,7 +14,7 @@ invariant(
14
'Expected ReactFbErrorUtils.invokeGuardedCallback to be a function.',
15
);
16
17
-let invokeGuardedCallbackImpl = function<A, B, C, D, E, F, Context>(
17
+const invokeGuardedCallbackImpl = function<A, B, C, D, E, F, Context>(
18
name: string | null,
19
func: (a: A, b: B, c: C, d: D, e: E, f: F) => mixed,
20
context: Context,
packages/shared/forks/object-assign.inline-umd.js
+1
-1
@@ -5,7 +5,7 @@
5
const hasOwnProperty = Object.prototype.hasOwnProperty;
6
7
const _assign = function(to, from) {
8
- for (let key in from) {
8
+ for (const key in from) {
9
if (hasOwnProperty.call(from, key)) {
10
to[key] = from[key];
11
}
packages/shared/getComponentName.js
+2
-2
@@ -90,8 +90,8 @@ function getComponentName(type: mixed): string | null {
90
return getComponentName(type._render);
91
case REACT_LAZY_TYPE: {
92
const lazyComponent: LazyComponent<any, any> = (type: any);
93
- let payload = lazyComponent._payload;
94
- let init = lazyComponent._init;
93
+ const payload = lazyComponent._payload;
94
+ const init = lazyComponent._init;
95
try {
96
return getComponentName(init(payload));
97
} catch (x) {
packages/shared/invokeGuardedCallbackImpl.js
+1
-1
@@ -96,7 +96,7 @@ if (__DEV__) {
96
// Keeps track of the value of window.event so that we can reset it
97
// during the callback to let user code access window.event in the
98
// browsers that support it.
99
- let windowEvent = window.event;
99
+ const windowEvent = window.event;
100
101
// Keeps track of the descriptor of window.event to restore it after event
102
// dispatching: https://github.com/facebook/react/issues/13688
packages/use-subscription/src/__tests__/useSubscription-test.internal.js
+2
-2
@@ -152,7 +152,7 @@ describe('useSubscription', () => {
152
return null;
153
}
154
155
- let subscriptions = [];
155
+ const subscriptions = [];
156
157
function Subscription({source}) {
158
const value = useSubscription(
@@ -213,7 +213,7 @@ describe('useSubscription', () => {
213
return null;
214
}
215
216
- let subscriptions = [];
216
+ const subscriptions = [];
217
218
function Subscription({source}) {
219
const value = useSubscription({
scripts/flow/createFlowConfigs.js
+1
-1
@@ -24,7 +24,7 @@ function writeConfig(renderer, rendererInfo, isServerSupported) {
24
25
const serverRenderer = isServerSupported ? renderer : 'custom';
26
27
- let ignoredPaths = [];
27
+ const ignoredPaths = [];
28
29
inlinedHostConfigs.forEach(otherRenderer => {
30
if (otherRenderer === rendererInfo) {