@colisweb/rescript-toolkit 2.42.0 → 2.43.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "2.42.0",
3
+ "version": "2.43.0",
4
4
  "scripts": {
5
5
  "clean": "rescript clean",
6
6
  "build": "rescript build -with-deps",
@@ -31,3 +31,4 @@ module SpinnerFullScreen = Toolkit__Ui_SpinnerFullScreen
31
31
  module MultiSelect = Toolkit__Ui_MultiSelect
32
32
  module Notice = Toolkit__Ui_Notice
33
33
  module NativeDatePicker = Toolkit__Ui_NativeDatePicker
34
+ module ErrorBoundary = Toolkit__Ui_ErrorBoundary
@@ -0,0 +1,45 @@
1
+ @react.component
2
+ let make = (
3
+ ~fallbackRender: ReactErrorBoundary.fallbackProps => React.element,
4
+ ~children: React.element,
5
+ ~resetKeys: option<array<'a>>=?,
6
+ ~customShouldRaiseAnError=false,
7
+ ) => {
8
+ <ReactErrorBoundary
9
+ fallbackRender
10
+ ?resetKeys
11
+ onError={err => {
12
+ switch Obj.magic(err) {
13
+ | #decodeError(requestConfig, deccoError) =>
14
+ Toolkit__BrowserLogger.error2(
15
+ `Decode error${requestConfig["url"]->Option.mapWithDefault("", url => " " ++ url)}`,
16
+ {
17
+ "deccoError": deccoError,
18
+ "requestConfig": requestConfig,
19
+ },
20
+ )
21
+ | #default(axiosError) =>
22
+ Js.Exn.message(axiosError)->Option.forEach(message => {
23
+ let message = message->Js.String2.toLowerCase
24
+ let ignoredTerms = ["timeout", "network"]
25
+
26
+ if ignoredTerms->Array.some(Js.String2.includes(message)) {
27
+ ()
28
+ } else {
29
+ Toolkit__BrowserLogger.error2(axiosError, axiosError)
30
+ }
31
+ })
32
+ | #custom(err) =>
33
+ if customShouldRaiseAnError {
34
+ Toolkit__BrowserLogger.error2("Custom error", err)
35
+ }
36
+ | err =>
37
+ switch Js.Exn.message(Obj.magic(err)) {
38
+ | None => Toolkit__BrowserLogger.error2("Unhandled error", err)
39
+ | Some(message) => Toolkit__BrowserLogger.error2(Obj.magic(message), err)
40
+ }
41
+ }
42
+ }}>
43
+ {children}
44
+ </ReactErrorBoundary>
45
+ }