@live-change/email-service 0.9.94 → 0.9.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/browser.js +22 -4
  2. package/package.json +3 -3
  3. package/render.js +21 -23
package/browser.js CHANGED
@@ -17,11 +17,13 @@ async function newBrowser() {
17
17
  console.log("New browser", config)
18
18
  //process.exit(0)
19
19
  if(config.browser.webSocketDebuggerUrl) {
20
- const browser = await chromium.connect({ wsEndpoint: config.browser.webSocketDebuggerUrl })
20
+ //const browser = await chromium.connect({ wsEndpoint: config.browser.webSocketDebuggerUrl }, { timeout: 60000 })
21
+ const browser = await chromium.connect(config.browser.webSocketDebuggerUrl, { timeout: 10000 })
21
22
  return browser
22
23
  } else if(config.browser.url) {
23
24
  const browserInfo = await got.post(config.browser.url + '/json/version').json()
24
- const browser = await chromium.connect({ wsEndpoint: browserInfo.webSocketDebuggerUrl })
25
+ //const browser = await chromium.connect({ wsEndpoint: browserInfo.webSocketDebuggerUrl } { timeout: 60000 })
26
+ const browser = await chromium.connect(browserInfo.webSocketDebuggerUrl, { timeout: 10000 })
25
27
  return browser
26
28
  } if(config.browser.host) {
27
29
  const ip = await dns.resolve4(config.browser.host)
@@ -30,7 +32,7 @@ async function newBrowser() {
30
32
  const browserInfo = await got.post(browserInfoUrl).json()
31
33
  console.log("Browser info", browserInfo)
32
34
  try {
33
- const browser = await chromium.connectOverCDP(browserInfo.webSocketDebuggerUrl)
35
+ const browser = await chromium.connectOverCDP(browserInfo.webSocketDebuggerUrl, { timeout: 10000 })
34
36
  return browser
35
37
  } catch (error) {
36
38
  console.error("Failed to connect to browser", error)
@@ -54,4 +56,20 @@ export async function runWithBrowser(func) {
54
56
  await browser.close()
55
57
  }
56
58
  })
57
- }
59
+ }
60
+
61
+ export async function runWithPage(func) {
62
+ return await browserQueue.add(async () => {
63
+ const browser = await newBrowser()
64
+ const context = await browser.newContext()
65
+ const page = await context.newPage()
66
+ try {
67
+ const result = await func(page)
68
+ return result
69
+ } finally {
70
+ await page.close()
71
+ await context.close()
72
+ await browser.close()
73
+ }
74
+ })
75
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/email-service",
3
- "version": "0.9.94",
3
+ "version": "0.9.96",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,7 +21,7 @@
21
21
  "url": "https://www.viamage.com/"
22
22
  },
23
23
  "dependencies": {
24
- "@live-change/framework": "^0.9.94",
24
+ "@live-change/framework": "^0.9.96",
25
25
  "got": "^11.8.6",
26
26
  "html-to-text": "8.1.0",
27
27
  "inline-css": "4.0.2",
@@ -32,6 +32,6 @@
32
32
  "postcss-calc": "10.1.1",
33
33
  "postcss-custom-properties": "14.0.4"
34
34
  },
35
- "gitHead": "8e5736f32c407eb6fb8d6d5cf8cbae2ad558a7a2",
35
+ "gitHead": "2cf1a814dac25095e89760ea62e0f207fb8c7cfa",
36
36
  "type": "module"
37
37
  }
package/render.js CHANGED
@@ -11,7 +11,7 @@ import { ObservableValue } from '@live-change/dao'
11
11
  import definition from './definition.js'
12
12
  import config from './config.js'
13
13
 
14
- import { runWithBrowser } from './browser.js'
14
+ import { runWithPage } from './browser.js'
15
15
 
16
16
  const publicDir = config.publicDir || 'front/public/'
17
17
 
@@ -173,12 +173,10 @@ async function processImageAttachments(images, url) {
173
173
 
174
174
  async function renderEmailWithBrowser(url) {
175
175
 
176
- return await runWithBrowser(async (browser) => {
177
- const page = await browser.newPage()
176
+ const email =await runWithPage(async (page) => {
178
177
  console.log("RENDER EMAIL WITH BROWSER", url)
179
178
  await page.goto(url)
180
-
181
- const email = await page.evaluate(() => {
179
+ return await page.evaluate(() => {
182
180
  const ALLOWED_CSS_PROPERTIES = new Set([
183
181
  'background',
184
182
  'background-blend-mode',
@@ -397,27 +395,27 @@ async function renderEmailWithBrowser(url) {
397
395
 
398
396
  return email
399
397
  })
398
+ })
400
399
 
401
- // process element to remove unwanted attributes and extract images using jsdom
402
- const dom = new JSDOM(email.html)
403
- const images = new Map()
404
- const messageElements = dom.window.document.querySelectorAll("[data-html]")
405
- for(let messageElement of messageElements) {
406
- processElement(messageElement, images)
407
- }
408
- email.html = dom.serialize()
409
- dom.window.close()
400
+ // process element to remove unwanted attributes and extract images using jsdom
401
+ const dom = new JSDOM(email.html)
402
+ const images = new Map()
403
+ const messageElements = dom.window.document.querySelectorAll("[data-html]")
404
+ for(let messageElement of messageElements) {
405
+ processElement(messageElement, images)
406
+ }
407
+ email.html = dom.serialize()
408
+ dom.window.close()
410
409
 
411
- console.log("IMAGES", Array.from(images.entries()))
412
- const imageAttachments = await processImageAttachments(images, url)
413
-
414
- email.attachments = email.attachments || []
415
- email.attachments.push(...imageAttachments)
416
-
417
- console.log("EMAIL", email)
410
+ console.log("IMAGES", Array.from(images.entries()))
411
+ const imageAttachments = await processImageAttachments(images, url)
418
412
 
419
- return email
420
- })
413
+ email.attachments = email.attachments || []
414
+ email.attachments.push(...imageAttachments)
415
+
416
+ console.log("EMAIL", email)
417
+
418
+ return email
421
419
  }
422
420
 
423
421
  export { renderEmailWithJuice, renderEmailWithBrowser }