Skip to content

Commit 64cd6ec

Browse files
fix(react-email): hot reloading with circular dependencies (#2315)
Co-authored-by: João Melo <[email protected]>
1 parent 8589f61 commit 64cd6ec

File tree

17 files changed

+339
-190
lines changed

17 files changed

+339
-190
lines changed

.changeset/salty-sloths-fix.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"react-email": patch
3+
---
4+
5+
fix hot reloading with circular dependencies
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2+
3+
exports[`createDependencyGraph() > should have the right initial value for the dependency graph 1`] = `
4+
{
5+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/data-to-import.json": {
6+
"dependencyPaths": [],
7+
"dependentPaths": [
8+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts",
9+
],
10+
"moduleDependencies": [],
11+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/data-to-import.json",
12+
},
13+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts": {
14+
"dependencyPaths": [
15+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts",
16+
],
17+
"dependentPaths": [
18+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts",
19+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts",
20+
],
21+
"moduleDependencies": [],
22+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts",
23+
},
24+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts": {
25+
"dependencyPaths": [
26+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts",
27+
],
28+
"dependentPaths": [
29+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts",
30+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts",
31+
],
32+
"moduleDependencies": [],
33+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts",
34+
},
35+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts": {
36+
"dependencyPaths": [
37+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/outer.ts",
38+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/data-to-import.json",
39+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts",
40+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts",
41+
],
42+
"dependentPaths": [],
43+
"moduleDependencies": [
44+
"node:os",
45+
"node:path",
46+
],
47+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts",
48+
},
49+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/outer-dependency.ts": {
50+
"dependencyPaths": [],
51+
"dependentPaths": [
52+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/outer.ts",
53+
],
54+
"moduleDependencies": [],
55+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/outer-dependency.ts",
56+
},
57+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/outer.ts": {
58+
"dependencyPaths": [
59+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/outer-dependency.ts",
60+
],
61+
"dependentPaths": [
62+
"/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts",
63+
],
64+
"moduleDependencies": [],
65+
"path": "/home/gabriel/Projects/resend/react-email/packages/react-email/src/cli/utils/preview/hot-reloading/test/dependency-graph/outer.ts",
66+
},
67+
}
68+
`;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/** biome-ignore-all lint/correctness/noUnusedImports: used in testing */
2+
/** biome-ignore-all lint/complexity/noUselessEmptyExport: used in testing */
3+
import * as _ from './file-b';
4+
5+
export {};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/** biome-ignore-all lint/correctness/noUnusedImports: used in testing */
2+
/** biome-ignore-all lint/complexity/noUselessEmptyExport: used in testing */
3+
import * as _ from './file-a';
4+
5+
export {};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/** biome-ignore-all lint/correctness/noUnusedImports: used in testing */
2+
/** biome-ignore-all lint/complexity/noUselessEmptyExport: used in testing */
3+
4+
import _os from 'node:os';
5+
import _path from 'node:path';
6+
import * as _outer from '../outer';
7+
import _json from './data-to-import.json';
8+
import * as _a from './file-a';
9+
import * as _b from './file-b';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/** biome-ignore-all lint/correctness/noUnusedImports: used in testing */
2+
/** biome-ignore-all lint/complexity/noUselessEmptyExport: used in testing */
3+
export {};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/** biome-ignore-all lint/correctness/noUnusedImports: used in testing */
2+
/** biome-ignore-all lint/complexity/noUselessEmptyExport: used in testing */
3+
import * as _dependency from './inner/outer-dependency';
4+
5+
export {};
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2+
3+
exports[`createDependencyGraph() > should have the right initial value for the dependency graph 1`] = `
4+
{
5+
"../outer.ts": {
6+
"dependencyPaths": [
7+
"outer-dependency.ts",
8+
],
9+
"dependentPaths": [
10+
"general-importing-file.ts",
11+
],
12+
"moduleDependencies": [],
13+
"path": "../outer.ts",
14+
},
15+
"data-to-import.json": {
16+
"dependencyPaths": [],
17+
"dependentPaths": [
18+
"general-importing-file.ts",
19+
],
20+
"moduleDependencies": [],
21+
"path": "data-to-import.json",
22+
},
23+
"file-a.ts": {
24+
"dependencyPaths": [
25+
"file-b.ts",
26+
],
27+
"dependentPaths": [
28+
"file-b.ts",
29+
"general-importing-file.ts",
30+
],
31+
"moduleDependencies": [],
32+
"path": "file-a.ts",
33+
},
34+
"file-b.ts": {
35+
"dependencyPaths": [
36+
"file-a.ts",
37+
],
38+
"dependentPaths": [
39+
"file-a.ts",
40+
"general-importing-file.ts",
41+
],
42+
"moduleDependencies": [],
43+
"path": "file-b.ts",
44+
},
45+
"general-importing-file.ts": {
46+
"dependencyPaths": [
47+
"../outer.ts",
48+
"data-to-import.json",
49+
"file-a.ts",
50+
"file-b.ts",
51+
],
52+
"dependentPaths": [],
53+
"moduleDependencies": [
54+
"node:os",
55+
"node:path",
56+
],
57+
"path": "general-importing-file.ts",
58+
},
59+
"outer-dependency.ts": {
60+
"dependencyPaths": [],
61+
"dependentPaths": [
62+
"../outer.ts",
63+
],
64+
"moduleDependencies": [],
65+
"path": "outer-dependency.ts",
66+
},
67+
}
68+
`;

0 commit comments

Comments
 (0)