Skip to content

Commit 0fe1bfa

Browse files
committed
Revert "[Flight] Serialize weird numbers (facebook#26623)"
This reverts commit ab2385f.
1 parent 0b2f3cf commit 0fe1bfa

File tree

6 files changed

+2
-114
lines changed

6 files changed

+2
-114
lines changed

packages/react-client/src/ReactFlightClient.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -559,22 +559,6 @@ export function parseModelString(
559559
throw chunk.reason;
560560
}
561561
}
562-
case 'I': {
563-
// $Infinity
564-
return Infinity;
565-
}
566-
case '-': {
567-
// $-0 or $-Infinity
568-
if (value[2] === '0') {
569-
return -0;
570-
} else {
571-
return -Infinity;
572-
}
573-
}
574-
case 'N': {
575-
// $NaN
576-
return NaN;
577-
}
578562
case 'u': {
579563
// matches "$undefined"
580564
// Special encoding for `undefined` which can't be serialized as JSON otherwise.

packages/react-client/src/ReactFlightReplyClient.js

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,6 @@ function serializeSymbolReference(name: string): string {
7474
return '$S' + name;
7575
}
7676

77-
function serializeNumber(number: number): string | number {
78-
if (Number.isFinite(number)) {
79-
if (number === 0 && 1 / number === -Infinity) {
80-
return '$-0';
81-
} else {
82-
return number;
83-
}
84-
} else {
85-
if (number === Infinity) {
86-
return '$Infinity';
87-
} else if (number === -Infinity) {
88-
return '$-Infinity';
89-
} else {
90-
return '$NaN';
91-
}
92-
}
93-
}
94-
9577
function serializeUndefined(): string {
9678
return '$undefined';
9779
}
@@ -245,14 +227,10 @@ export function processReply(
245227
return escapeStringValue(value);
246228
}
247229

248-
if (typeof value === 'boolean') {
230+
if (typeof value === 'boolean' || typeof value === 'number') {
249231
return value;
250232
}
251233

252-
if (typeof value === 'number') {
253-
return serializeNumber(value);
254-
}
255-
256234
if (typeof value === 'undefined') {
257235
return serializeUndefined();
258236
}

packages/react-client/src/__tests__/ReactFlight-test.js

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -263,30 +263,6 @@ describe('ReactFlight', () => {
263263
expect(ReactNoop).toMatchRenderedOutput(null);
264264
});
265265

266-
it('can transport weird numbers', async () => {
267-
const nums = [0, -0, Infinity, -Infinity, NaN];
268-
function ComponentClient({prop}) {
269-
expect(prop).not.toBe(nums);
270-
expect(prop).toEqual(nums);
271-
expect(prop.every((p, i) => Object.is(p, nums[i]))).toBe(true);
272-
return `prop: ${prop}`;
273-
}
274-
const Component = clientReference(ComponentClient);
275-
276-
const model = <Component prop={nums} />;
277-
278-
const transport = ReactNoopFlightServer.render(model);
279-
280-
await act(async () => {
281-
ReactNoop.render(await ReactNoopFlightClient.read(transport));
282-
});
283-
284-
expect(ReactNoop).toMatchRenderedOutput(
285-
// already checked -0 with expects above
286-
'prop: 0,0,Infinity,-Infinity,NaN',
287-
);
288-
});
289-
290266
it('can transport BigInt', async () => {
291267
function ComponentClient({prop}) {
292268
return `prop: ${prop} (${typeof prop})`;

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReply-test.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,6 @@ describe('ReactFlightDOMReply', () => {
7676
expect(items).toEqual(['A', 'B', 'C']);
7777
});
7878

79-
it('can pass weird numbers as a reply', async () => {
80-
const nums = [0, -0, Infinity, -Infinity, NaN];
81-
const body = await ReactServerDOMClient.encodeReply(nums);
82-
const nums2 = await ReactServerDOMServer.decodeReply(
83-
body,
84-
webpackServerMap,
85-
);
86-
87-
expect(nums).toEqual(nums2);
88-
expect(nums.every((n, i) => Object.is(n, nums2[i]))).toBe(true);
89-
});
90-
9179
it('can pass a BigInt as a reply', async () => {
9280
const body = await ReactServerDOMClient.encodeReply(90071992547409910000n);
9381
const n = await ReactServerDOMServer.decodeReply(body, webpackServerMap);

packages/react-server/src/ReactFlightReplyServer.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -397,22 +397,6 @@ function parseModelString(
397397
key,
398398
);
399399
}
400-
case 'I': {
401-
// $Infinity
402-
return Infinity;
403-
}
404-
case '-': {
405-
// $-0 or $-Infinity
406-
if (value[2] === '0') {
407-
return -0;
408-
} else {
409-
return -Infinity;
410-
}
411-
}
412-
case 'N': {
413-
// $NaN
414-
return NaN;
415-
}
416400
case 'u': {
417401
// matches "$undefined"
418402
// Special encoding for `undefined` which can't be serialized as JSON otherwise.

packages/react-server/src/ReactFlightServer.js

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -549,24 +549,6 @@ function serializeProviderReference(name: string): string {
549549
return '$P' + name;
550550
}
551551

552-
function serializeNumber(number: number): string | number {
553-
if (Number.isFinite(number)) {
554-
if (number === 0 && 1 / number === -Infinity) {
555-
return '$-0';
556-
} else {
557-
return number;
558-
}
559-
} else {
560-
if (number === Infinity) {
561-
return '$Infinity';
562-
} else if (number === -Infinity) {
563-
return '$-Infinity';
564-
} else {
565-
return '$NaN';
566-
}
567-
}
568-
}
569-
570552
function serializeUndefined(): string {
571553
return '$undefined';
572554
}
@@ -895,14 +877,10 @@ export function resolveModelToJSON(
895877
return escapeStringValue(value);
896878
}
897879

898-
if (typeof value === 'boolean') {
880+
if (typeof value === 'boolean' || typeof value === 'number') {
899881
return value;
900882
}
901883

902-
if (typeof value === 'number') {
903-
return serializeNumber(value);
904-
}
905-
906884
if (typeof value === 'undefined') {
907885
return serializeUndefined();
908886
}

0 commit comments

Comments
 (0)