browserless 9.12.0 → 9.12.2-0
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/LICENSE.md +0 -0
- package/package.json +9 -9
- package/src/index.js +40 -41
package/LICENSE.md
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "browserless",
|
|
3
3
|
"description": "The headless Chrome/Chromium performance driver for Node.js",
|
|
4
4
|
"homepage": "https://browserless.js.org",
|
|
5
|
-
"version": "9.12.0",
|
|
5
|
+
"version": "9.12.2-0",
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"author": {
|
|
8
8
|
"email": "hello@microlink.io",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@browserless/errors": "^9.10.2",
|
|
35
|
-
"@browserless/goto": "^9.
|
|
36
|
-
"@browserless/pdf": "^9.
|
|
37
|
-
"@browserless/screenshot": "^9.
|
|
35
|
+
"@browserless/goto": "^9.12.1",
|
|
36
|
+
"@browserless/pdf": "^9.12.1",
|
|
37
|
+
"@browserless/screenshot": "^9.12.1",
|
|
38
38
|
"debug-logfmt": "~1.0.4",
|
|
39
39
|
"kill-process-group": "~1.0.3",
|
|
40
40
|
"p-reflect": "~2.1.0",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"superlock": "~1.0.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
+
"ps-list": "7",
|
|
47
48
|
"@browserless/test": "^9.11.0",
|
|
48
49
|
"ava": "latest"
|
|
49
50
|
},
|
|
@@ -53,14 +54,13 @@
|
|
|
53
54
|
"files": [
|
|
54
55
|
"src"
|
|
55
56
|
],
|
|
56
|
-
"scripts": {
|
|
57
|
-
"test": "ava"
|
|
58
|
-
},
|
|
59
57
|
"license": "MIT",
|
|
60
58
|
"ava": {
|
|
61
59
|
"serial": true,
|
|
62
60
|
"timeout": "30s",
|
|
63
61
|
"workerThreads": false
|
|
64
62
|
},
|
|
65
|
-
"
|
|
66
|
-
|
|
63
|
+
"scripts": {
|
|
64
|
+
"test": "ava"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/index.js
CHANGED
|
@@ -24,7 +24,9 @@ module.exports = ({ timeout: globalTimeout = 30000, ...launchOpts } = {}) => {
|
|
|
24
24
|
|
|
25
25
|
const close = opts => {
|
|
26
26
|
isClosed = true
|
|
27
|
-
return browserProcessPromise
|
|
27
|
+
return browserProcessPromise
|
|
28
|
+
.then(browserProcess => driver.close(browserProcess, opts))
|
|
29
|
+
.catch(() => {})
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
const respawn = () =>
|
|
@@ -107,53 +109,50 @@ module.exports = ({ timeout: globalTimeout = 30000, ...launchOpts } = {}) => {
|
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
|
|
110
|
-
const withPage =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
112
|
+
const withPage = (fn, { timeout: evaluateTimeout } = {}) => async (...args) => {
|
|
113
|
+
let isRejected = false
|
|
114
|
+
|
|
115
|
+
async function run () {
|
|
116
|
+
let page
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
page = await createPage(args)
|
|
120
|
+
setTimeout(() => closePage(page), timeout).unref()
|
|
121
|
+
const value = await fn(page, goto)(...args)
|
|
122
|
+
await closePage(page)
|
|
123
|
+
return value
|
|
124
|
+
} catch (error) {
|
|
125
|
+
await closePage(page)
|
|
126
|
+
if (!isRejected) throw ensureError(error)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
121
129
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
const task = () =>
|
|
131
|
+
pRetry(run, {
|
|
132
|
+
retries: retry,
|
|
133
|
+
onFailedAttempt: async error => {
|
|
134
|
+
debug('onFailedAttempt', { name: error.name, code: error.code, isRejected })
|
|
135
|
+
if (error.name === 'AbortError') throw error
|
|
136
|
+
if (isRejected) throw new AbortError()
|
|
137
|
+
if (error.code === 'EBRWSRCONTEXTCONNRESET') {
|
|
138
|
+
_contextPromise = createBrowserContext(contextOpts)
|
|
128
139
|
}
|
|
140
|
+
const { message, attemptNumber, retriesLeft } = error
|
|
141
|
+
debug('retry', { attemptNumber, retriesLeft, message })
|
|
129
142
|
}
|
|
143
|
+
})
|
|
130
144
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (error.code === 'EBRWSRCONTEXTCONNRESET') {
|
|
139
|
-
_contextPromise = createBrowserContext(contextOpts)
|
|
140
|
-
}
|
|
141
|
-
const { message, attemptNumber, retriesLeft } = error
|
|
142
|
-
debug('retry', { attemptNumber, retriesLeft, message })
|
|
143
|
-
}
|
|
144
|
-
})
|
|
145
|
-
|
|
146
|
-
const timeout = evaluateTimeout || contextTimeout || globalTimeout
|
|
147
|
-
|
|
148
|
-
return pTimeout(task(), timeout, () => {
|
|
149
|
-
isRejected = true
|
|
150
|
-
throw browserTimeout({ timeout })
|
|
151
|
-
})
|
|
152
|
-
}
|
|
145
|
+
const timeout = evaluateTimeout || contextTimeout || globalTimeout
|
|
146
|
+
|
|
147
|
+
return pTimeout(task(), timeout, () => {
|
|
148
|
+
isRejected = true
|
|
149
|
+
throw browserTimeout({ timeout })
|
|
150
|
+
})
|
|
151
|
+
}
|
|
153
152
|
|
|
154
153
|
const evaluate = (fn, gotoOpts) =>
|
|
155
154
|
withPage(
|
|
156
|
-
page => async (url, opts) => {
|
|
155
|
+
(page, goto) => async (url, opts) => {
|
|
157
156
|
const { response, error } = await goto(page, { url, ...gotoOpts, ...opts })
|
|
158
157
|
return fn(page, response, error)
|
|
159
158
|
},
|