@@ -76,13 +76,14 @@ export class Printer extends EventEmitter {
76
76
}
77
77
}
78
78
79
- async setup ( ) {
79
+ async setup ( puppeteerLaunchOptions ?: LaunchOptions ) {
80
80
const puppeteerOptions = {
81
81
// https://github.com/puppeteer/puppeteer/issues/2735#issuecomment-470309033
82
82
// pipe: true,
83
83
headless : this . headless ,
84
84
args : [ "--disable-dev-shm-usage" , "--export-tagged-pdf" ] ,
85
85
ignoreHTTPSErrors : this . ignoreHTTPSErrors ,
86
+ ...puppeteerLaunchOptions ,
86
87
} ;
87
88
88
89
if ( this . allowLocal )
@@ -168,7 +169,7 @@ export class Printer extends EventEmitter {
168
169
return page ;
169
170
}
170
171
catch ( error ) {
171
- this . closeAfter && this . close ( ) ;
172
+ this . closeAfter && await this . closeBrowser ( ) ;
172
173
throw error ;
173
174
}
174
175
}
@@ -232,7 +233,7 @@ export class Printer extends EventEmitter {
232
233
throw e ;
233
234
} ) ;
234
235
235
- this . closeAfter && page . close ( ) ;
236
+ this . closeAfter && await page . close ( ) ;
236
237
this . pages . delete ( input ) ;
237
238
238
239
this . emit ( "postprocessing" ) ;
@@ -244,32 +245,35 @@ export class Printer extends EventEmitter {
244
245
return await pdfDoc . save ( ) ;
245
246
}
246
247
catch ( error ) {
247
- this . closeAfter && this . close ( ) ;
248
+ this . closeAfter && await this . closeBrowser ( ) ;
248
249
throw error ;
249
250
}
250
251
}
251
252
252
253
async html ( input : string ) {
253
- const page = await this . render ( input ) ;
254
+ let page = this . pages . get ( input ) ;
255
+ if ( ! page ) {
256
+ page = await this . render ( input )
257
+ . catch ( ( e ) => {
258
+ throw e ;
259
+ } ) ;
260
+ }
254
261
255
262
const content = await page . content ( ) ;
256
263
257
264
if ( this . closeAfter ) {
258
- page . close ( ) ;
259
- this . close ( ) ;
265
+ await page . close ( ) ;
266
+ await this . closeBrowser ( ) ;
260
267
}
261
268
262
269
return content ;
263
270
}
264
271
265
- async preview ( input : string ) {
266
- const page = await this . render ( input ) ;
267
- this . closeAfter && this . close ( ) ;
268
- return page ;
269
- }
270
-
271
- async close ( ) {
272
- return this . browser && this . browser . close ( ) ;
272
+ async closeBrowser ( ) {
273
+ if ( this . browser ) {
274
+ await this . browser . close ( ) ;
275
+ this . browser = undefined ;
276
+ }
273
277
}
274
278
275
279
needsAllowedRules ( ) {
0 commit comments