1 | import * as ErrorOverlay from "react-error-overlay"
|
2 |
|
3 |
|
4 | ErrorOverlay.startReportingRuntimeErrors({
|
5 | onError: () => {},
|
6 | filename: `/commons.js`,
|
7 | })
|
8 | ErrorOverlay.setEditorHandler(errorLocation =>
|
9 | window.fetch(
|
10 | `/__open-stack-frame-in-editor?fileName=` +
|
11 | window.encodeURIComponent(errorLocation.fileName) +
|
12 | `&lineNumber=` +
|
13 | window.encodeURIComponent(errorLocation.lineNumber || 1)
|
14 | )
|
15 | )
|
16 |
|
17 | const errorMap = {}
|
18 |
|
19 | const handleErrorOverlay = () => {
|
20 | const errors = Object.values(errorMap)
|
21 | if (errors.length > 0) {
|
22 | const errorMsg = errors.join(`\n\n`)
|
23 | ErrorOverlay.reportBuildError(errorMsg)
|
24 | } else {
|
25 | ErrorOverlay.dismissBuildError()
|
26 | }
|
27 | }
|
28 |
|
29 | export const clearError = errorID => {
|
30 | delete errorMap[errorID]
|
31 | handleErrorOverlay()
|
32 | }
|
33 |
|
34 | export const reportError = (errorID, error) => {
|
35 | if (error) {
|
36 | errorMap[errorID] = error
|
37 | }
|
38 | handleErrorOverlay()
|
39 | }
|
40 |
|
41 | export { errorMap }
|