@lightsparkdev/core 1.0.15 → 1.0.17

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @lightsparkdev/core
2
2
 
3
+ ## 1.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - 20fb70b: - Update deps
8
+ - Expose LoggingLevel
9
+
10
+ ## 1.0.16
11
+
12
+ ### Patch Changes
13
+
14
+ - cb28f0e: - Serialize errors that have messages but not own properties
15
+
3
16
  ## 1.0.15
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -11,3 +11,5 @@ To use the package, you'll need to install it from npm:
11
11
  ```bash
12
12
  $ npm install @lightsparkdev/core
13
13
  ```
14
+
15
+ TODO
@@ -732,9 +732,13 @@ function errorToJSON(err) {
732
732
  if (!err) {
733
733
  return null;
734
734
  }
735
- if (typeof err === "object" && err !== null && "toJSON" in err && typeof err.toJSON === "function") {
735
+ if (typeof err === "object" && "toJSON" in err && typeof err.toJSON === "function") {
736
736
  return err.toJSON();
737
737
  }
738
+ if (typeof err === "object" && /* This happens for certain errors like DOMException: */
739
+ Object.getOwnPropertyNames(err).length === 0 && "message" in err && typeof err.message === "string") {
740
+ return { message: err.message };
741
+ }
738
742
  return JSON.parse(
739
743
  JSON.stringify(err, Object.getOwnPropertyNames(err))
740
744
  );
@@ -764,83 +768,8 @@ var deleteLocalStorageItem = (key) => {
764
768
  }
765
769
  };
766
770
 
767
- // ../../node_modules/lodash-es/_freeGlobal.js
768
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
769
- var freeGlobal_default = freeGlobal;
770
-
771
- // ../../node_modules/lodash-es/_root.js
772
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
773
- var root = freeGlobal_default || freeSelf || Function("return this")();
774
- var root_default = root;
775
-
776
- // ../../node_modules/lodash-es/_Symbol.js
777
- var Symbol = root_default.Symbol;
778
- var Symbol_default = Symbol;
779
-
780
- // ../../node_modules/lodash-es/_getRawTag.js
781
- var objectProto = Object.prototype;
782
- var hasOwnProperty = objectProto.hasOwnProperty;
783
- var nativeObjectToString = objectProto.toString;
784
- var symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;
785
- function getRawTag(value) {
786
- var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
787
- try {
788
- value[symToStringTag] = void 0;
789
- var unmasked = true;
790
- } catch (e) {
791
- }
792
- var result = nativeObjectToString.call(value);
793
- if (unmasked) {
794
- if (isOwn) {
795
- value[symToStringTag] = tag;
796
- } else {
797
- delete value[symToStringTag];
798
- }
799
- }
800
- return result;
801
- }
802
- var getRawTag_default = getRawTag;
803
-
804
- // ../../node_modules/lodash-es/_objectToString.js
805
- var objectProto2 = Object.prototype;
806
- var nativeObjectToString2 = objectProto2.toString;
807
- function objectToString(value) {
808
- return nativeObjectToString2.call(value);
809
- }
810
- var objectToString_default = objectToString;
811
-
812
- // ../../node_modules/lodash-es/_baseGetTag.js
813
- var nullTag = "[object Null]";
814
- var undefinedTag = "[object Undefined]";
815
- var symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;
816
- function baseGetTag(value) {
817
- if (value == null) {
818
- return value === void 0 ? undefinedTag : nullTag;
819
- }
820
- return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);
821
- }
822
- var baseGetTag_default = baseGetTag;
823
-
824
- // ../../node_modules/lodash-es/isObject.js
825
- function isObject(value) {
826
- var type = typeof value;
827
- return value != null && (type == "object" || type == "function");
828
- }
829
- var isObject_default = isObject;
830
-
831
- // ../../node_modules/lodash-es/isFunction.js
832
- var asyncTag = "[object AsyncFunction]";
833
- var funcTag = "[object Function]";
834
- var genTag = "[object GeneratorFunction]";
835
- var proxyTag = "[object Proxy]";
836
- function isFunction(value) {
837
- if (!isObject_default(value)) {
838
- return false;
839
- }
840
- var tag = baseGetTag_default(value);
841
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
842
- }
843
- var isFunction_default = isFunction;
771
+ // src/utils/pollUntil.ts
772
+ import { isFunction } from "lodash-es";
844
773
 
845
774
  // src/utils/sleep.ts
846
775
  function sleep(ms) {
@@ -875,7 +804,7 @@ async function pollUntil(asyncFn, getValue, maxPolls = 60, pollIntervalMs = 500,
875
804
  stopPolling = true;
876
805
  }
877
806
  } catch (e) {
878
- if (!ignoreErrors || isFunction_default(ignoreErrors) && !ignoreErrors(e)) {
807
+ if (!ignoreErrors || isFunction(ignoreErrors) && !ignoreErrors(e)) {
879
808
  stopPolling = true;
880
809
  throw e;
881
810
  }
@@ -933,16 +862,3 @@ export {
933
862
  pollUntil,
934
863
  isType
935
864
  };
936
- /*! Bundled license information:
937
-
938
- lodash-es/lodash.js:
939
- (**
940
- * @license
941
- * Lodash (Custom Build) <https://lodash.com/>
942
- * Build: `lodash modularize exports="es" -o ./`
943
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
944
- * Released under MIT license <https://lodash.com/license>
945
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
946
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
947
- *)
948
- */
package/dist/index.cjs CHANGED
@@ -38,6 +38,7 @@ __export(src_exports, {
38
38
  LightsparkException: () => LightsparkException_default,
39
39
  LightsparkSigningException: () => LightsparkSigningException_default,
40
40
  Logger: () => Logger,
41
+ LoggingLevel: () => LoggingLevel,
41
42
  NodeKeyCache: () => NodeKeyCache_default,
42
43
  RSASigningKey: () => RSASigningKey,
43
44
  Requester: () => Requester_default,
@@ -109,6 +110,11 @@ var isNode = typeof process !== "undefined" && process.versions != null && proce
109
110
  var isTest = isNode && process.env.NODE_ENV === "test";
110
111
 
111
112
  // src/Logger.ts
113
+ var LoggingLevel = /* @__PURE__ */ ((LoggingLevel2) => {
114
+ LoggingLevel2[LoggingLevel2["Trace"] = 0] = "Trace";
115
+ LoggingLevel2[LoggingLevel2["Info"] = 1] = "Info";
116
+ return LoggingLevel2;
117
+ })(LoggingLevel || {});
112
118
  var Logger = class {
113
119
  context;
114
120
  loggingEnabled = false;
@@ -1135,9 +1141,13 @@ function errorToJSON(err) {
1135
1141
  if (!err) {
1136
1142
  return null;
1137
1143
  }
1138
- if (typeof err === "object" && err !== null && "toJSON" in err && typeof err.toJSON === "function") {
1144
+ if (typeof err === "object" && "toJSON" in err && typeof err.toJSON === "function") {
1139
1145
  return err.toJSON();
1140
1146
  }
1147
+ if (typeof err === "object" && /* This happens for certain errors like DOMException: */
1148
+ Object.getOwnPropertyNames(err).length === 0 && "message" in err && typeof err.message === "string") {
1149
+ return { message: err.message };
1150
+ }
1141
1151
  return JSON.parse(
1142
1152
  JSON.stringify(err, Object.getOwnPropertyNames(err))
1143
1153
  );
@@ -1167,83 +1177,8 @@ var deleteLocalStorageItem = (key) => {
1167
1177
  }
1168
1178
  };
1169
1179
 
1170
- // ../../node_modules/lodash-es/_freeGlobal.js
1171
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
1172
- var freeGlobal_default = freeGlobal;
1173
-
1174
- // ../../node_modules/lodash-es/_root.js
1175
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
1176
- var root = freeGlobal_default || freeSelf || Function("return this")();
1177
- var root_default = root;
1178
-
1179
- // ../../node_modules/lodash-es/_Symbol.js
1180
- var Symbol2 = root_default.Symbol;
1181
- var Symbol_default = Symbol2;
1182
-
1183
- // ../../node_modules/lodash-es/_getRawTag.js
1184
- var objectProto = Object.prototype;
1185
- var hasOwnProperty = objectProto.hasOwnProperty;
1186
- var nativeObjectToString = objectProto.toString;
1187
- var symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;
1188
- function getRawTag(value) {
1189
- var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
1190
- try {
1191
- value[symToStringTag] = void 0;
1192
- var unmasked = true;
1193
- } catch (e) {
1194
- }
1195
- var result = nativeObjectToString.call(value);
1196
- if (unmasked) {
1197
- if (isOwn) {
1198
- value[symToStringTag] = tag;
1199
- } else {
1200
- delete value[symToStringTag];
1201
- }
1202
- }
1203
- return result;
1204
- }
1205
- var getRawTag_default = getRawTag;
1206
-
1207
- // ../../node_modules/lodash-es/_objectToString.js
1208
- var objectProto2 = Object.prototype;
1209
- var nativeObjectToString2 = objectProto2.toString;
1210
- function objectToString(value) {
1211
- return nativeObjectToString2.call(value);
1212
- }
1213
- var objectToString_default = objectToString;
1214
-
1215
- // ../../node_modules/lodash-es/_baseGetTag.js
1216
- var nullTag = "[object Null]";
1217
- var undefinedTag = "[object Undefined]";
1218
- var symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;
1219
- function baseGetTag(value) {
1220
- if (value == null) {
1221
- return value === void 0 ? undefinedTag : nullTag;
1222
- }
1223
- return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);
1224
- }
1225
- var baseGetTag_default = baseGetTag;
1226
-
1227
- // ../../node_modules/lodash-es/isObject.js
1228
- function isObject(value) {
1229
- var type = typeof value;
1230
- return value != null && (type == "object" || type == "function");
1231
- }
1232
- var isObject_default = isObject;
1233
-
1234
- // ../../node_modules/lodash-es/isFunction.js
1235
- var asyncTag = "[object AsyncFunction]";
1236
- var funcTag = "[object Function]";
1237
- var genTag = "[object GeneratorFunction]";
1238
- var proxyTag = "[object Proxy]";
1239
- function isFunction(value) {
1240
- if (!isObject_default(value)) {
1241
- return false;
1242
- }
1243
- var tag = baseGetTag_default(value);
1244
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
1245
- }
1246
- var isFunction_default = isFunction;
1180
+ // src/utils/pollUntil.ts
1181
+ var import_lodash_es = require("lodash-es");
1247
1182
 
1248
1183
  // src/utils/sleep.ts
1249
1184
  function sleep(ms) {
@@ -1278,7 +1213,7 @@ async function pollUntil(asyncFn, getValue, maxPolls = 60, pollIntervalMs = 500,
1278
1213
  stopPolling = true;
1279
1214
  }
1280
1215
  } catch (e) {
1281
- if (!ignoreErrors || isFunction_default(ignoreErrors) && !ignoreErrors(e)) {
1216
+ if (!ignoreErrors || (0, import_lodash_es.isFunction)(ignoreErrors) && !ignoreErrors(e)) {
1282
1217
  stopPolling = true;
1283
1218
  throw e;
1284
1219
  }
@@ -1592,6 +1527,7 @@ var Requester_default = Requester;
1592
1527
  LightsparkException,
1593
1528
  LightsparkSigningException,
1594
1529
  Logger,
1530
+ LoggingLevel,
1595
1531
  NodeKeyCache,
1596
1532
  RSASigningKey,
1597
1533
  Requester,
@@ -1641,16 +1577,3 @@ var Requester_default = Requester;
1641
1577
  sleep,
1642
1578
  urlsafe_b64decode
1643
1579
  });
1644
- /*! Bundled license information:
1645
-
1646
- lodash-es/lodash.js:
1647
- (**
1648
- * @license
1649
- * Lodash (Custom Build) <https://lodash.com/>
1650
- * Build: `lodash modularize exports="es" -o ./`
1651
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
1652
- * Released under MIT license <https://lodash.com/license>
1653
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
1654
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1655
- *)
1656
- */
package/dist/index.d.cts CHANGED
@@ -165,4 +165,4 @@ declare class Requester {
165
165
  private addSigningDataIfNeeded;
166
166
  }
167
167
 
168
- export { AuthProvider, CryptoInterface, DefaultCrypto, GeneratedKeyPair, KeyOrAlias, KeyOrAliasType, LightsparkAuthException, LightsparkException, LightsparkSigningException, Logger, NodeKeyCache, Query, RSASigningKey, Requester, Secp256k1SigningKey, ServerEnvironment, SigningKey, SigningKeyType, StubAuthProvider, apiDomainForEnvironment };
168
+ export { AuthProvider, CryptoInterface, DefaultCrypto, GeneratedKeyPair, KeyOrAlias, KeyOrAliasType, LightsparkAuthException, LightsparkException, LightsparkSigningException, Logger, LoggingLevel, NodeKeyCache, Query, RSASigningKey, Requester, Secp256k1SigningKey, ServerEnvironment, SigningKey, SigningKeyType, StubAuthProvider, apiDomainForEnvironment };
package/dist/index.d.ts CHANGED
@@ -165,4 +165,4 @@ declare class Requester {
165
165
  private addSigningDataIfNeeded;
166
166
  }
167
167
 
168
- export { AuthProvider, CryptoInterface, DefaultCrypto, GeneratedKeyPair, KeyOrAlias, KeyOrAliasType, LightsparkAuthException, LightsparkException, LightsparkSigningException, Logger, NodeKeyCache, Query, RSASigningKey, Requester, Secp256k1SigningKey, ServerEnvironment, SigningKey, SigningKeyType, StubAuthProvider, apiDomainForEnvironment };
168
+ export { AuthProvider, CryptoInterface, DefaultCrypto, GeneratedKeyPair, KeyOrAlias, KeyOrAliasType, LightsparkAuthException, LightsparkException, LightsparkSigningException, Logger, LoggingLevel, NodeKeyCache, Query, RSASigningKey, Requester, Secp256k1SigningKey, ServerEnvironment, SigningKey, SigningKeyType, StubAuthProvider, apiDomainForEnvironment };
package/dist/index.js CHANGED
@@ -40,9 +40,14 @@ import {
40
40
  setLocalStorageBoolean,
41
41
  sleep,
42
42
  urlsafe_b64decode
43
- } from "./chunk-ZLX5HJ4C.js";
43
+ } from "./chunk-XPHRCMJA.js";
44
44
 
45
45
  // src/Logger.ts
46
+ var LoggingLevel = /* @__PURE__ */ ((LoggingLevel2) => {
47
+ LoggingLevel2[LoggingLevel2["Trace"] = 0] = "Trace";
48
+ LoggingLevel2[LoggingLevel2["Info"] = 1] = "Info";
49
+ return LoggingLevel2;
50
+ })(LoggingLevel || {});
46
51
  var Logger = class {
47
52
  context;
48
53
  loggingEnabled = false;
@@ -650,6 +655,7 @@ export {
650
655
  LightsparkException_default as LightsparkException,
651
656
  LightsparkSigningException_default as LightsparkSigningException,
652
657
  Logger,
658
+ LoggingLevel,
653
659
  NodeKeyCache_default as NodeKeyCache,
654
660
  RSASigningKey,
655
661
  Requester_default as Requester,
@@ -807,9 +807,13 @@ function errorToJSON(err) {
807
807
  if (!err) {
808
808
  return null;
809
809
  }
810
- if (typeof err === "object" && err !== null && "toJSON" in err && typeof err.toJSON === "function") {
810
+ if (typeof err === "object" && "toJSON" in err && typeof err.toJSON === "function") {
811
811
  return err.toJSON();
812
812
  }
813
+ if (typeof err === "object" && /* This happens for certain errors like DOMException: */
814
+ Object.getOwnPropertyNames(err).length === 0 && "message" in err && typeof err.message === "string") {
815
+ return { message: err.message };
816
+ }
813
817
  return JSON.parse(
814
818
  JSON.stringify(err, Object.getOwnPropertyNames(err))
815
819
  );
@@ -839,83 +843,8 @@ var deleteLocalStorageItem = (key) => {
839
843
  }
840
844
  };
841
845
 
842
- // ../../node_modules/lodash-es/_freeGlobal.js
843
- var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
844
- var freeGlobal_default = freeGlobal;
845
-
846
- // ../../node_modules/lodash-es/_root.js
847
- var freeSelf = typeof self == "object" && self && self.Object === Object && self;
848
- var root = freeGlobal_default || freeSelf || Function("return this")();
849
- var root_default = root;
850
-
851
- // ../../node_modules/lodash-es/_Symbol.js
852
- var Symbol2 = root_default.Symbol;
853
- var Symbol_default = Symbol2;
854
-
855
- // ../../node_modules/lodash-es/_getRawTag.js
856
- var objectProto = Object.prototype;
857
- var hasOwnProperty = objectProto.hasOwnProperty;
858
- var nativeObjectToString = objectProto.toString;
859
- var symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;
860
- function getRawTag(value) {
861
- var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
862
- try {
863
- value[symToStringTag] = void 0;
864
- var unmasked = true;
865
- } catch (e) {
866
- }
867
- var result = nativeObjectToString.call(value);
868
- if (unmasked) {
869
- if (isOwn) {
870
- value[symToStringTag] = tag;
871
- } else {
872
- delete value[symToStringTag];
873
- }
874
- }
875
- return result;
876
- }
877
- var getRawTag_default = getRawTag;
878
-
879
- // ../../node_modules/lodash-es/_objectToString.js
880
- var objectProto2 = Object.prototype;
881
- var nativeObjectToString2 = objectProto2.toString;
882
- function objectToString(value) {
883
- return nativeObjectToString2.call(value);
884
- }
885
- var objectToString_default = objectToString;
886
-
887
- // ../../node_modules/lodash-es/_baseGetTag.js
888
- var nullTag = "[object Null]";
889
- var undefinedTag = "[object Undefined]";
890
- var symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;
891
- function baseGetTag(value) {
892
- if (value == null) {
893
- return value === void 0 ? undefinedTag : nullTag;
894
- }
895
- return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);
896
- }
897
- var baseGetTag_default = baseGetTag;
898
-
899
- // ../../node_modules/lodash-es/isObject.js
900
- function isObject(value) {
901
- var type = typeof value;
902
- return value != null && (type == "object" || type == "function");
903
- }
904
- var isObject_default = isObject;
905
-
906
- // ../../node_modules/lodash-es/isFunction.js
907
- var asyncTag = "[object AsyncFunction]";
908
- var funcTag = "[object Function]";
909
- var genTag = "[object GeneratorFunction]";
910
- var proxyTag = "[object Proxy]";
911
- function isFunction(value) {
912
- if (!isObject_default(value)) {
913
- return false;
914
- }
915
- var tag = baseGetTag_default(value);
916
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
917
- }
918
- var isFunction_default = isFunction;
846
+ // src/utils/pollUntil.ts
847
+ var import_lodash_es = require("lodash-es");
919
848
 
920
849
  // src/utils/sleep.ts
921
850
  function sleep(ms) {
@@ -950,7 +879,7 @@ async function pollUntil(asyncFn, getValue, maxPolls = 60, pollIntervalMs = 500,
950
879
  stopPolling = true;
951
880
  }
952
881
  } catch (e) {
953
- if (!ignoreErrors || isFunction_default(ignoreErrors) && !ignoreErrors(e)) {
882
+ if (!ignoreErrors || (0, import_lodash_es.isFunction)(ignoreErrors) && !ignoreErrors(e)) {
954
883
  stopPolling = true;
955
884
  throw e;
956
885
  }
@@ -1007,16 +936,3 @@ var isType = (typename) => (node) => {
1007
936
  sleep,
1008
937
  urlsafe_b64decode
1009
938
  });
1010
- /*! Bundled license information:
1011
-
1012
- lodash-es/lodash.js:
1013
- (**
1014
- * @license
1015
- * Lodash (Custom Build) <https://lodash.com/>
1016
- * Build: `lodash modularize exports="es" -o ./`
1017
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
1018
- * Released under MIT license <https://lodash.com/license>
1019
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
1020
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1021
- *)
1022
- */
@@ -39,7 +39,7 @@ import {
39
39
  setLocalStorageBoolean,
40
40
  sleep,
41
41
  urlsafe_b64decode
42
- } from "../chunk-ZLX5HJ4C.js";
42
+ } from "../chunk-XPHRCMJA.js";
43
43
  export {
44
44
  CurrencyUnit,
45
45
  abbrCurrencyUnit,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightsparkdev/core",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "Lightspark JS SDK",
5
5
  "author": "Lightspark Inc.",
6
6
  "keywords": [
@@ -81,6 +81,7 @@
81
81
  "dayjs": "^1.11.7",
82
82
  "graphql": "^16.6.0",
83
83
  "graphql-ws": "^5.11.3",
84
+ "lodash-es": "^4.17.21",
84
85
  "secp256k1": "^5.0.0",
85
86
  "text-encoding": "^0.7.0",
86
87
  "ws": "^8.12.1",
@@ -91,7 +92,9 @@
91
92
  "@lightsparkdev/tsconfig": "0.0.0",
92
93
  "@types/crypto-js": "^4.1.1",
93
94
  "@types/jest": "^29.5.3",
95
+ "@types/lodash-es": "^4.17.6",
94
96
  "@types/secp256k1": "^4.0.3",
97
+ "@types/text-encoding": "^0.0.36",
95
98
  "@types/ws": "^8.5.4",
96
99
  "eslint": "^8.3.0",
97
100
  "eslint-watch": "^8.0.0",
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  // Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
2
2
 
3
3
  export { default as LightsparkException } from "./LightsparkException.js";
4
- export { Logger } from "./Logger.js";
4
+ export { Logger, LoggingLevel } from "./Logger.js";
5
5
  export {
6
6
  default as ServerEnvironment,
7
7
  apiDomainForEnvironment,
@@ -43,12 +43,22 @@ export function errorToJSON(err: unknown) {
43
43
  }
44
44
  if (
45
45
  typeof err === "object" &&
46
- err !== null &&
47
46
  "toJSON" in err &&
48
47
  typeof err.toJSON === "function"
49
48
  ) {
50
49
  return err.toJSON() as JSONType;
51
50
  }
51
+
52
+ if (
53
+ typeof err === "object" &&
54
+ /* This happens for certain errors like DOMException: */
55
+ Object.getOwnPropertyNames(err).length === 0 &&
56
+ "message" in err &&
57
+ typeof err.message === "string"
58
+ ) {
59
+ return { message: err.message };
60
+ }
61
+
52
62
  return JSON.parse(
53
63
  JSON.stringify(err, Object.getOwnPropertyNames(err)),
54
64
  ) as JSONType;