File tree 4 files changed +48
-27
lines changed
4 files changed +48
-27
lines changed Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " resend" ,
3
- "version" : " 4.0.0" ,
3
+ "version" : " 4.0.1-alpha. 0" ,
4
4
"description" : " Node.js library for the Resend API" ,
5
5
"main" : " ./dist/index.js" ,
6
6
"module" : " ./dist/index.mjs" ,
42
42
},
43
43
"homepage" : " https://github.com/resendlabs/resend-node#readme" ,
44
44
"dependencies" : {
45
- "@react-email/render" : " 0 .0.17 "
45
+ "@react-email/render" : " 1 .0.1 "
46
46
},
47
47
"devDependencies" : {
48
48
"@biomejs/biome" : " 1.9.4" ,
Original file line number Diff line number Diff line change 1
- import { renderAsync } from '@react-email/render' ;
2
1
import type * as React from 'react' ;
3
2
import type { Resend } from '../resend' ;
4
3
import type {
@@ -9,6 +8,7 @@ import type {
9
8
} from './interfaces/create-batch-options.interface' ;
10
9
11
10
export class Batch {
11
+ private renderAsync ?: ( component : React . ReactElement ) => Promise < string > ;
12
12
constructor ( private readonly resend : Resend ) { }
13
13
14
14
async send (
@@ -24,9 +24,19 @@ export class Batch {
24
24
) : Promise < CreateBatchResponse > {
25
25
for ( const email of payload ) {
26
26
if ( email . react ) {
27
- email . html = await renderAsync ( email . react as React . ReactElement ) ;
28
- // biome-ignore lint/performance/noDelete: <explanation>
29
- delete email . react ;
27
+ if ( ! this . renderAsync ) {
28
+ try {
29
+ const { renderAsync } = await import ( '@react-email/render' ) ;
30
+ this . renderAsync = renderAsync ;
31
+ } catch ( error ) {
32
+ throw new Error (
33
+ 'Failed to render React component. Make sure to install `@react-email/render`' ,
34
+ ) ;
35
+ }
36
+ }
37
+
38
+ email . html = await this . renderAsync ( email . react as React . ReactElement ) ;
39
+ email . react = undefined ;
30
40
}
31
41
}
32
42
Original file line number Diff line number Diff line change 1
- import { renderAsync } from '@react-email/render' ;
2
1
import type * as React from 'react' ;
3
2
import type { Resend } from '../resend' ;
4
3
import type {
@@ -22,6 +21,7 @@ import type {
22
21
} from './interfaces/update-email-options.interface' ;
23
22
24
23
export class Emails {
24
+ private renderAsync ?: ( component : React . ReactElement ) => Promise < string > ;
25
25
constructor ( private readonly resend : Resend ) { }
26
26
27
27
async send (
@@ -36,9 +36,20 @@ export class Emails {
36
36
options : CreateEmailRequestOptions = { } ,
37
37
) : Promise < CreateEmailResponse > {
38
38
if ( payload . react ) {
39
- payload . html = await renderAsync ( payload . react as React . ReactElement ) ;
40
- // biome-ignore lint/performance/noDelete: <explanation>
41
- delete payload . react ;
39
+ if ( ! this . renderAsync ) {
40
+ try {
41
+ const { renderAsync } = await import ( '@react-email/render' ) ;
42
+ this . renderAsync = renderAsync ;
43
+ } catch ( error ) {
44
+ throw new Error (
45
+ 'Failed to render React component. Make sure to install `@react-email/render`' ,
46
+ ) ;
47
+ }
48
+ }
49
+
50
+ payload . html = await this . renderAsync (
51
+ payload . react as React . ReactElement ,
52
+ ) ;
42
53
}
43
54
44
55
const data = await this . resend . post < CreateEmailResponseSuccess > (
You can’t perform that action at this time.
0 commit comments