@browserless/screenshot 9.3.4 → 9.3.5

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.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@browserless/screenshot",
3
3
  "description": "Take clean screenshot of any website",
4
4
  "homepage": "https://browserless.js.org/#/?id=screenshoturl-options",
5
- "version": "9.3.4",
5
+ "version": "9.3.5",
6
6
  "main": "src/index.js",
7
7
  "author": {
8
8
  "email": "hello@microlink.io",
@@ -60,5 +60,5 @@
60
60
  "test": "ava"
61
61
  },
62
62
  "license": "MIT",
63
- "gitHead": "7daa01ff1b4f10dd6694df10803e1ca0246668bf"
63
+ "gitHead": "b4deebf3d3826fb7296c8a391d97f51591b2aa86"
64
64
  }
@@ -21,23 +21,34 @@ const getContentType = headers => {
21
21
  return contentType === 'txt' ? 'text' : contentType
22
22
  }
23
23
 
24
+ const JSONParse = input => {
25
+ try {
26
+ return {
27
+ json: JSON.parse(input),
28
+ error: false
29
+ }
30
+ } catch (error) {
31
+ return { error: true }
32
+ }
33
+ }
34
+
24
35
  module.exports = async (page, response, { timeout, codeScheme, styles, scripts, modules }) => {
25
36
  if (!response || !codeScheme) return
26
37
 
27
- const contentType = getContentType(response.headers())
38
+ let [theme, content, prism] = await Promise.all([getTheme(codeScheme), response.text(), getPrism])
28
39
 
29
- if (!PRETTY_CONTENT_TYPES.includes(contentType)) return
40
+ if (isHtmlContent(content)) return
30
41
 
31
- const isHtmlContentType = contentType === 'html'
42
+ let contentType = getContentType(response.headers())
32
43
 
33
- const [theme, content, prism] = await Promise.all([
34
- getTheme(codeScheme),
35
- response[isHtmlContentType ? 'text' : contentType](),
36
- getPrism
37
- ])
44
+ const { json, error } = JSONParse(content)
38
45
 
39
- if (isHtmlContentType && isHtmlContent(content)) return
46
+ if (!error) {
47
+ content = json
48
+ contentType = 'json'
49
+ }
40
50
 
51
+ if (!PRETTY_CONTENT_TYPES.includes(contentType)) return
41
52
  const timePretty = timeSpan()
42
53
  const html = getHtml(content, { contentType, prism, theme })
43
54
  await page.setContent(html)