Skip to content

Commit 466ec82

Browse files
committed
Fix snapshots and promise closure
1 parent 32444b3 commit 466ec82

36 files changed

+682
-636
lines changed

packages/plugins/tests/web/__snapshots__/abort-signal.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@ exports[`AbortSignal > crossSerializeAsync > supports aborted AbortSignal 1`] =
1717
exports[`AbortSignal > crossSerializeAsync > supports future AbortSignal 1`] = `"$R[0]=AbortSignal.abort("aborted!")"`;
1818

1919
exports[`AbortSignal > crossSerializeStream > scoped > supports aborted AbortSignal 1`] = `
20-
"($R=>$R[0]=($R[2]=(resolver) => {
20+
"($R=>$R[0]=($R[1]=($R[2]=() => {
21+
const resolver = { p: 0, s: 0, f: 0 };
2122
resolver.p = new Promise((resolve, reject) => {
2223
resolver.s = resolve;
2324
resolver.f = reject;
2425
});
25-
return resolver.p;
26-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
26+
return resolver;
27+
})()).p)($R["example"])"
2728
`;
2829

2930
exports[`AbortSignal > crossSerializeStream > scoped > supports aborted AbortSignal 2`] = `
@@ -39,13 +40,14 @@ exports[`AbortSignal > crossSerializeStream > scoped > supports future AbortSign
3940
exports[`AbortSignal > crossSerializeStream > scoped > supports future AbortSignal 2`] = `"($R=>$R[2]=$R[1].abort("aborted!"))($R["example"])"`;
4041

4142
exports[`AbortSignal > crossSerializeStream > supports aborted AbortSignal 1`] = `
42-
"$R[0]=($R[2]=(resolver) => {
43+
"$R[0]=($R[1]=($R[2]=() => {
44+
const resolver = { p: 0, s: 0, f: 0 };
4345
resolver.p = new Promise((resolve, reject) => {
4446
resolver.s = resolve;
4547
resolver.f = reject;
4648
});
47-
return resolver.p;
48-
})($R[1]={p:0,s:0,f:0})"
49+
return resolver;
50+
})()).p"
4951
`;
5052

5153
exports[`AbortSignal > crossSerializeStream > supports aborted AbortSignal 2`] = `

packages/plugins/tests/web/__snapshots__/custom-event.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`CustomEvent > crossSerializeAsync > scoped > supports CustomEvent 1`] =
99
exports[`CustomEvent > crossSerializeAsync > supports CustomEvent 1`] = `"($R[0]=Promise.resolve($R[1]=new CustomEvent("example",$R[2]={detail:$R[3]={},bubbles:!1,cancelable:!1,composed:!1})),$R[3].self=$R[3],$R[0])"`;
1010

1111
exports[`CustomEvent > crossSerializeStream > scoped > supports CustomEvent 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`CustomEvent > crossSerializeStream > scoped > supports CustomEvent 2`] = `
@@ -27,13 +28,14 @@ exports[`CustomEvent > crossSerializeStream > scoped > supports CustomEvent 2`]
2728
`;
2829

2930
exports[`CustomEvent > crossSerializeStream > supports CustomEvent 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`CustomEvent > crossSerializeStream > supports CustomEvent 2`] = `

packages/plugins/tests/web/__snapshots__/dom-exception.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`DOMException > crossSerializeAsync > scoped > supports DOMException 1`]
99
exports[`DOMException > crossSerializeAsync > supports DOMException 1`] = `"$R[0]=Promise.resolve($R[1]=new DOMException("This is an example message.","Example"))"`;
1010

1111
exports[`DOMException > crossSerializeStream > scoped > supports DOMException 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`DOMException > crossSerializeStream > scoped > supports DOMException 2`] = `
@@ -27,13 +28,14 @@ exports[`DOMException > crossSerializeStream > scoped > supports DOMException 2`
2728
`;
2829

2930
exports[`DOMException > crossSerializeStream > supports DOMException 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`DOMException > crossSerializeStream > supports DOMException 2`] = `

packages/plugins/tests/web/__snapshots__/event.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`Event > crossSerializeAsync > scoped > supports Event 1`] = `"($R=>$R[0
99
exports[`Event > crossSerializeAsync > supports Event 1`] = `"$R[0]=Promise.resolve($R[1]=new Event("example",$R[2]={bubbles:!1,cancelable:!1,composed:!1}))"`;
1010

1111
exports[`Event > crossSerializeStream > scoped > supports Event 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`Event > crossSerializeStream > scoped > supports Event 2`] = `
@@ -27,13 +28,14 @@ exports[`Event > crossSerializeStream > scoped > supports Event 2`] = `
2728
`;
2829

2930
exports[`Event > crossSerializeStream > supports Event 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`Event > crossSerializeStream > supports Event 2`] = `

packages/plugins/tests/web/__snapshots__/form-data.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ exports[`FormData > crossSerializeAsync > supports FormData 1`] = `
5555
`;
5656

5757
exports[`FormData > crossSerializeStream > scoped > supports FormData 1`] = `
58-
"($R=>$R[0]=($R[2]=(resolver) => {
58+
"($R=>$R[0]=($R[1]=($R[2]=() => {
59+
const resolver = { p: 0, s: 0, f: 0 };
5960
resolver.p = new Promise((resolve, reject) => {
6061
resolver.s = resolve;
6162
resolver.f = reject;
6263
});
63-
return resolver.p;
64-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
64+
return resolver;
65+
})()).p)($R["example"])"
6566
`;
6667

6768
exports[`FormData > crossSerializeStream > scoped > supports FormData 2`] = `
@@ -79,13 +80,14 @@ exports[`FormData > crossSerializeStream > scoped > supports FormData 2`] = `
7980
`;
8081

8182
exports[`FormData > crossSerializeStream > supports FormData 1`] = `
82-
"$R[0]=($R[2]=(resolver) => {
83+
"$R[0]=($R[1]=($R[2]=() => {
84+
const resolver = { p: 0, s: 0, f: 0 };
8385
resolver.p = new Promise((resolve, reject) => {
8486
resolver.s = resolve;
8587
resolver.f = reject;
8688
});
87-
return resolver.p;
88-
})($R[1]={p:0,s:0,f:0})"
89+
return resolver;
90+
})()).p"
8991
`;
9092

9193
exports[`FormData > crossSerializeStream > supports FormData 2`] = `

packages/plugins/tests/web/__snapshots__/headers.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`Headers > crossSerializeAsync > scoped > supports Headers 1`] = `"($R=>
99
exports[`Headers > crossSerializeAsync > supports Headers 1`] = `"$R[0]=Promise.resolve($R[1]=new Headers($R[2]=[$R[3]=["content-encoding","gzip"],$R[4]=["content-type","text/plain"]]))"`;
1010

1111
exports[`Headers > crossSerializeStream > scoped > supports Headers 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`Headers > crossSerializeStream > scoped > supports Headers 2`] = `
@@ -27,13 +28,14 @@ exports[`Headers > crossSerializeStream > scoped > supports Headers 2`] = `
2728
`;
2829

2930
exports[`Headers > crossSerializeStream > supports Headers 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`Headers > crossSerializeStream > supports Headers 2`] = `

packages/plugins/tests/web/__snapshots__/url-search-params.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`URLSearchParams > crossSerializeAsync > scoped > supports URLSearchPara
99
exports[`URLSearchParams > crossSerializeAsync > supports URLSearchParams 1`] = `"$R[0]=Promise.resolve($R[1]=new URLSearchParams("hello=world&foo=bar"))"`;
1010

1111
exports[`URLSearchParams > crossSerializeStream > scoped > supports URLSearchParams 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`URLSearchParams > crossSerializeStream > scoped > supports URLSearchParams 2`] = `
@@ -27,13 +28,14 @@ exports[`URLSearchParams > crossSerializeStream > scoped > supports URLSearchPar
2728
`;
2829

2930
exports[`URLSearchParams > crossSerializeStream > supports URLSearchParams 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`URLSearchParams > crossSerializeStream > supports URLSearchParams 2`] = `

packages/plugins/tests/web/__snapshots__/url.test.ts.snap

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ exports[`URL > crossSerializeAsync > scoped > supports URL 1`] = `"($R=>$R[0]=Pr
99
exports[`URL > crossSerializeAsync > supports URL 1`] = `"$R[0]=Promise.resolve($R[1]=new URL("https://github.com/lxsmnsyc/seroval?hello=world"))"`;
1010

1111
exports[`URL > crossSerializeStream > scoped > supports URL 1`] = `
12-
"($R=>$R[0]=($R[2]=(resolver) => {
12+
"($R=>$R[0]=($R[1]=($R[2]=() => {
13+
const resolver = { p: 0, s: 0, f: 0 };
1314
resolver.p = new Promise((resolve, reject) => {
1415
resolver.s = resolve;
1516
resolver.f = reject;
1617
});
17-
return resolver.p;
18-
})($R[1]={p:0,s:0,f:0}))($R["example"])"
18+
return resolver;
19+
})()).p)($R["example"])"
1920
`;
2021

2122
exports[`URL > crossSerializeStream > scoped > supports URL 2`] = `
@@ -27,13 +28,14 @@ exports[`URL > crossSerializeStream > scoped > supports URL 2`] = `
2728
`;
2829

2930
exports[`URL > crossSerializeStream > supports URL 1`] = `
30-
"$R[0]=($R[2]=(resolver) => {
31+
"$R[0]=($R[1]=($R[2]=() => {
32+
const resolver = { p: 0, s: 0, f: 0 };
3133
resolver.p = new Promise((resolve, reject) => {
3234
resolver.s = resolve;
3335
resolver.f = reject;
3436
});
35-
return resolver.p;
36-
})($R[1]={p:0,s:0,f:0})"
37+
return resolver;
38+
})()).p"
3739
`;
3840

3941
exports[`URL > crossSerializeStream > supports URL 2`] = `

packages/seroval/src/core/constructors.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
import type { Stream } from './stream';
22

3+
declare const T: unknown;
4+
5+
export const RETURN = () => T;
6+
export const THROW = () => {
7+
throw T;
8+
};
9+
10+
export const SERIALIZED_RETURN = RETURN.toString();
11+
export const SERIALIZED_THROW = THROW.toString();
12+
313
type SpecialPromise = Promise<unknown> & { s?: 1 | 2; v?: unknown };
414

515
export interface PromiseConstructorResolver {

packages/seroval/src/core/context/serializer.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
import {
1111
SERIALIZED_ASYNC_ITERATOR_CONSTRUCTOR,
1212
SERIALIZED_ITERATOR_CONSTRUCTOR,
13+
SERIALIZED_RETURN,
14+
SERIALIZED_THROW,
1315
} from '../constructors';
1416
import {
1517
SerovalMissingPluginError,
@@ -1020,8 +1022,8 @@ function serializePromise(
10201022
serialized =
10211023
promiseConstructor +
10221024
(node.s
1023-
? '().then(' + createFunction([], ref) + ')'
1024-
: '().catch(' + createFunction([], 'throw ' + ref) + ')');
1025+
? '().then(' + SERIALIZED_RETURN.replace('T', ref) + ')'
1026+
: '().catch(' + SERIALIZED_THROW.replace('T', ref) + ')');
10251027
} else {
10261028
base.stack.push(id);
10271029
const result = serialize(ctx, fulfilled);

0 commit comments

Comments
 (0)