shogun-core 6.2.4 → 6.3.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.
Files changed (233) hide show
  1. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +93 -341
  2. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -1
  3. package/dist/browser/shogun-core.js +138979 -146789
  4. package/dist/browser/shogun-core.js.map +1 -1
  5. package/dist/{core.js → src/core.js} +167 -107
  6. package/dist/src/crypto/asymmetric.js +168 -0
  7. package/dist/src/crypto/double-ratchet.js +908 -0
  8. package/dist/src/crypto/file-encryption.js +352 -0
  9. package/dist/src/crypto/hashing.js +160 -0
  10. package/dist/src/crypto/index.js +18 -0
  11. package/dist/{crypto → src/crypto}/mls-codec.js +24 -34
  12. package/dist/src/crypto/mls.js +734 -0
  13. package/dist/src/crypto/pgp.js +619 -0
  14. package/dist/{crypto → src/crypto}/random-generation.js +125 -103
  15. package/dist/src/crypto/sframe.js +466 -0
  16. package/dist/src/crypto/signal-protocol.js +943 -0
  17. package/dist/src/crypto/symmetric.js +165 -0
  18. package/dist/src/crypto/utils.js +220 -0
  19. package/dist/src/examples/auth-test.js +535 -0
  20. package/dist/src/examples/crypto-identity-example.js +294 -0
  21. package/dist/src/examples/crypto-working-test.js +149 -0
  22. package/dist/src/examples/double-ratchet-test.js +240 -0
  23. package/dist/src/examples/mls-3-member-test.js +183 -0
  24. package/dist/src/examples/mls-multi-member.js +439 -0
  25. package/dist/src/examples/mls-sframe-test.js +491 -0
  26. package/dist/src/examples/mls-simple-test.js +122 -0
  27. package/dist/src/examples/pgp-example.js +354 -0
  28. package/dist/src/examples/random-generation-test.js +191 -0
  29. package/dist/src/examples/shogun-core-example.js +204 -0
  30. package/dist/src/examples/signal-protocol-test.js +82 -0
  31. package/dist/src/examples/zkproof-credentials-example.js +357 -0
  32. package/dist/src/examples/zkproof-example.js +357 -0
  33. package/dist/src/gundb/crypto.js +420 -0
  34. package/dist/src/gundb/db.js +728 -0
  35. package/dist/src/gundb/derive.js +327 -0
  36. package/dist/src/gundb/errors.js +115 -0
  37. package/dist/src/gundb/gun-es.js +8 -0
  38. package/dist/src/gundb/index.js +5 -0
  39. package/dist/{gundb → src/gundb}/rxjs.js +147 -111
  40. package/dist/{gundb → src/gundb}/types.js +1 -2
  41. package/dist/src/index.js +19 -0
  42. package/dist/src/interfaces/events.js +57 -0
  43. package/dist/{interfaces → src/interfaces}/shogun.js +4 -7
  44. package/dist/src/managers/AuthManager.js +301 -0
  45. package/dist/src/managers/CoreInitializer.js +304 -0
  46. package/dist/src/managers/CryptoIdentityManager.js +230 -0
  47. package/dist/{managers → src/managers}/EventManager.js +19 -21
  48. package/dist/{managers → src/managers}/PluginManager.js +123 -89
  49. package/dist/src/plugins/base.js +90 -0
  50. package/dist/src/plugins/index.js +17 -0
  51. package/dist/src/plugins/nostr/index.js +4 -0
  52. package/dist/src/plugins/nostr/nostrConnector.js +539 -0
  53. package/dist/src/plugins/nostr/nostrConnectorPlugin.js +663 -0
  54. package/dist/src/plugins/nostr/nostrSigner.js +414 -0
  55. package/dist/src/plugins/smartwallet/index.js +2 -0
  56. package/dist/src/plugins/smartwallet/smartWalletPlugin.js +824 -0
  57. package/dist/src/plugins/web3/index.js +4 -0
  58. package/dist/src/plugins/web3/types.js +1 -0
  59. package/dist/src/plugins/web3/web3Connector.js +738 -0
  60. package/dist/src/plugins/web3/web3ConnectorPlugin.js +639 -0
  61. package/dist/src/plugins/web3/web3Signer.js +432 -0
  62. package/dist/src/plugins/webauthn/index.js +3 -0
  63. package/dist/{plugins → src/plugins}/webauthn/types.js +2 -5
  64. package/dist/src/plugins/webauthn/webauthn.js +647 -0
  65. package/dist/src/plugins/webauthn/webauthnPlugin.js +689 -0
  66. package/dist/src/plugins/webauthn/webauthnSigner.js +419 -0
  67. package/dist/{plugins → src/plugins}/zkproof/index.js +3 -10
  68. package/dist/src/plugins/zkproof/types.js +1 -0
  69. package/dist/src/plugins/zkproof/zkCredentials.js +287 -0
  70. package/dist/src/plugins/zkproof/zkProofConnector.js +267 -0
  71. package/dist/src/plugins/zkproof/zkProofPlugin.js +405 -0
  72. package/dist/src/storage/storage.js +189 -0
  73. package/dist/src/utils/errorHandler.js +339 -0
  74. package/dist/{utils → src/utils}/eventEmitter.js +26 -26
  75. package/dist/{utils → src/utils}/seedPhrase.js +23 -32
  76. package/dist/{utils → src/utils}/validation.js +14 -21
  77. package/dist/tsconfig.tsbuildinfo +1 -0
  78. package/dist/types/{crypto → src/crypto}/double-ratchet.d.ts +1 -1
  79. package/dist/types/{crypto → src/crypto}/signal-protocol.d.ts +25 -0
  80. package/dist/types/{crypto → src/crypto}/types.d.ts +3 -1
  81. package/dist/types/src/examples/crypto-working-test.d.ts +1 -0
  82. package/dist/types/src/examples/double-ratchet-test.d.ts +1 -0
  83. package/dist/types/src/examples/mls-sframe-test.d.ts +1 -0
  84. package/dist/types/src/examples/random-generation-test.d.ts +1 -0
  85. package/dist/types/src/examples/signal-protocol-test.d.ts +1 -0
  86. package/dist/types/{gundb → src/gundb}/db.d.ts +14 -1
  87. package/dist/types/src/gundb/gun-es.d.ts +8 -0
  88. package/dist/types/src/gundb/min.d.ts +3 -0
  89. package/dist/types/{index.d.ts → src/index.d.ts} +1 -0
  90. package/package.json +14 -11
  91. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +0 -1651
  92. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +0 -1
  93. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +0 -1608
  94. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +0 -1
  95. package/dist/crypto/asymmetric.js +0 -99
  96. package/dist/crypto/double-ratchet.js +0 -392
  97. package/dist/crypto/file-encryption.js +0 -213
  98. package/dist/crypto/hashing.js +0 -87
  99. package/dist/crypto/index.js +0 -34
  100. package/dist/crypto/mls.js +0 -569
  101. package/dist/crypto/pgp.js +0 -390
  102. package/dist/crypto/sframe.js +0 -352
  103. package/dist/crypto/signal-protocol.js +0 -456
  104. package/dist/crypto/symmetric.js +0 -91
  105. package/dist/crypto/types.js +0 -2
  106. package/dist/crypto/utils.js +0 -140
  107. package/dist/examples/auth-test.js +0 -453
  108. package/dist/examples/crypto-identity-example.js +0 -196
  109. package/dist/examples/crypto-working-test.js +0 -83
  110. package/dist/examples/double-ratchet-test.js +0 -155
  111. package/dist/examples/mls-3-member-test.js +0 -97
  112. package/dist/examples/mls-multi-member.js +0 -153
  113. package/dist/examples/mls-sframe-test.js +0 -307
  114. package/dist/examples/mls-simple-test.js +0 -58
  115. package/dist/examples/pgp-example.js +0 -200
  116. package/dist/examples/random-generation-test.js +0 -151
  117. package/dist/examples/shogun-core-example.js +0 -150
  118. package/dist/examples/signal-protocol-test.js +0 -38
  119. package/dist/examples/zkproof-credentials-example.js +0 -217
  120. package/dist/examples/zkproof-example.js +0 -242
  121. package/dist/gundb/crypto.js +0 -306
  122. package/dist/gundb/db.js +0 -485
  123. package/dist/gundb/derive.js +0 -232
  124. package/dist/gundb/errors.js +0 -76
  125. package/dist/gundb/gun-es.js +0 -12
  126. package/dist/gundb/index.js +0 -21
  127. package/dist/gundb/min.js +0 -10
  128. package/dist/index.esm.js +0 -22
  129. package/dist/index.js +0 -47
  130. package/dist/interfaces/common.js +0 -2
  131. package/dist/interfaces/events.js +0 -40
  132. package/dist/interfaces/plugin.js +0 -2
  133. package/dist/managers/AuthManager.js +0 -226
  134. package/dist/managers/CoreInitializer.js +0 -250
  135. package/dist/managers/CryptoIdentityManager.js +0 -138
  136. package/dist/plugins/base.js +0 -50
  137. package/dist/plugins/index.js +0 -32
  138. package/dist/plugins/nostr/index.js +0 -20
  139. package/dist/plugins/nostr/nostrConnector.js +0 -419
  140. package/dist/plugins/nostr/nostrConnectorPlugin.js +0 -453
  141. package/dist/plugins/nostr/nostrSigner.js +0 -319
  142. package/dist/plugins/nostr/types.js +0 -2
  143. package/dist/plugins/smartwallet/index.js +0 -18
  144. package/dist/plugins/smartwallet/smartWalletPlugin.js +0 -511
  145. package/dist/plugins/smartwallet/types.js +0 -2
  146. package/dist/plugins/web3/index.js +0 -20
  147. package/dist/plugins/web3/types.js +0 -2
  148. package/dist/plugins/web3/web3Connector.js +0 -533
  149. package/dist/plugins/web3/web3ConnectorPlugin.js +0 -455
  150. package/dist/plugins/web3/web3Signer.js +0 -314
  151. package/dist/plugins/webauthn/index.js +0 -19
  152. package/dist/plugins/webauthn/webauthn.js +0 -496
  153. package/dist/plugins/webauthn/webauthnPlugin.js +0 -490
  154. package/dist/plugins/webauthn/webauthnSigner.js +0 -310
  155. package/dist/plugins/zkproof/types.js +0 -2
  156. package/dist/plugins/zkproof/zkCredentials.js +0 -216
  157. package/dist/plugins/zkproof/zkProofConnector.js +0 -198
  158. package/dist/plugins/zkproof/zkProofPlugin.js +0 -272
  159. package/dist/storage/storage.js +0 -145
  160. package/dist/types/gundb/gun-es.d.ts +0 -8
  161. package/dist/utils/errorHandler.js +0 -246
  162. /package/dist/{types/examples/crypto-working-test.d.ts → src/crypto/types.js} +0 -0
  163. /package/dist/{types/gundb/min.d.ts → src/gundb/min.js} +0 -0
  164. /package/dist/{types/examples/double-ratchet-test.d.ts → src/interfaces/common.js} +0 -0
  165. /package/dist/{types/examples/mls-sframe-test.d.ts → src/interfaces/plugin.js} +0 -0
  166. /package/dist/{types/examples/random-generation-test.d.ts → src/plugins/nostr/types.js} +0 -0
  167. /package/dist/{types/examples/signal-protocol-test.d.ts → src/plugins/smartwallet/types.js} +0 -0
  168. /package/dist/types/{core.d.ts → src/core.d.ts} +0 -0
  169. /package/dist/types/{crypto → src/crypto}/asymmetric.d.ts +0 -0
  170. /package/dist/types/{crypto → src/crypto}/file-encryption.d.ts +0 -0
  171. /package/dist/types/{crypto → src/crypto}/hashing.d.ts +0 -0
  172. /package/dist/types/{crypto → src/crypto}/index.d.ts +0 -0
  173. /package/dist/types/{crypto → src/crypto}/mls-codec.d.ts +0 -0
  174. /package/dist/types/{crypto → src/crypto}/mls.d.ts +0 -0
  175. /package/dist/types/{crypto → src/crypto}/pgp.d.ts +0 -0
  176. /package/dist/types/{crypto → src/crypto}/random-generation.d.ts +0 -0
  177. /package/dist/types/{crypto → src/crypto}/sframe.d.ts +0 -0
  178. /package/dist/types/{crypto → src/crypto}/symmetric.d.ts +0 -0
  179. /package/dist/types/{crypto → src/crypto}/utils.d.ts +0 -0
  180. /package/dist/types/{examples → src/examples}/auth-test.d.ts +0 -0
  181. /package/dist/types/{examples → src/examples}/crypto-identity-example.d.ts +0 -0
  182. /package/dist/types/{examples → src/examples}/mls-3-member-test.d.ts +0 -0
  183. /package/dist/types/{examples → src/examples}/mls-multi-member.d.ts +0 -0
  184. /package/dist/types/{examples → src/examples}/mls-simple-test.d.ts +0 -0
  185. /package/dist/types/{examples → src/examples}/pgp-example.d.ts +0 -0
  186. /package/dist/types/{examples → src/examples}/shogun-core-example.d.ts +0 -0
  187. /package/dist/types/{examples → src/examples}/zkproof-credentials-example.d.ts +0 -0
  188. /package/dist/types/{examples → src/examples}/zkproof-example.d.ts +0 -0
  189. /package/dist/types/{gundb → src/gundb}/crypto.d.ts +0 -0
  190. /package/dist/types/{gundb → src/gundb}/derive.d.ts +0 -0
  191. /package/dist/types/{gundb → src/gundb}/errors.d.ts +0 -0
  192. /package/dist/types/{gundb → src/gundb}/index.d.ts +0 -0
  193. /package/dist/types/{gundb → src/gundb}/rxjs.d.ts +0 -0
  194. /package/dist/types/{gundb → src/gundb}/types.d.ts +0 -0
  195. /package/dist/types/{interfaces → src/interfaces}/common.d.ts +0 -0
  196. /package/dist/types/{interfaces → src/interfaces}/events.d.ts +0 -0
  197. /package/dist/types/{interfaces → src/interfaces}/plugin.d.ts +0 -0
  198. /package/dist/types/{interfaces → src/interfaces}/shogun.d.ts +0 -0
  199. /package/dist/types/{managers → src/managers}/AuthManager.d.ts +0 -0
  200. /package/dist/types/{managers → src/managers}/CoreInitializer.d.ts +0 -0
  201. /package/dist/types/{managers → src/managers}/CryptoIdentityManager.d.ts +0 -0
  202. /package/dist/types/{managers → src/managers}/EventManager.d.ts +0 -0
  203. /package/dist/types/{managers → src/managers}/PluginManager.d.ts +0 -0
  204. /package/dist/types/{plugins → src/plugins}/base.d.ts +0 -0
  205. /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
  206. /package/dist/types/{plugins → src/plugins}/nostr/index.d.ts +0 -0
  207. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnector.d.ts +0 -0
  208. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnectorPlugin.d.ts +0 -0
  209. /package/dist/types/{plugins → src/plugins}/nostr/nostrSigner.d.ts +0 -0
  210. /package/dist/types/{plugins → src/plugins}/nostr/types.d.ts +0 -0
  211. /package/dist/types/{plugins → src/plugins}/smartwallet/index.d.ts +0 -0
  212. /package/dist/types/{plugins → src/plugins}/smartwallet/smartWalletPlugin.d.ts +0 -0
  213. /package/dist/types/{plugins → src/plugins}/smartwallet/types.d.ts +0 -0
  214. /package/dist/types/{plugins → src/plugins}/web3/index.d.ts +0 -0
  215. /package/dist/types/{plugins → src/plugins}/web3/types.d.ts +0 -0
  216. /package/dist/types/{plugins → src/plugins}/web3/web3Connector.d.ts +0 -0
  217. /package/dist/types/{plugins → src/plugins}/web3/web3ConnectorPlugin.d.ts +0 -0
  218. /package/dist/types/{plugins → src/plugins}/web3/web3Signer.d.ts +0 -0
  219. /package/dist/types/{plugins → src/plugins}/webauthn/index.d.ts +0 -0
  220. /package/dist/types/{plugins → src/plugins}/webauthn/types.d.ts +0 -0
  221. /package/dist/types/{plugins → src/plugins}/webauthn/webauthn.d.ts +0 -0
  222. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnPlugin.d.ts +0 -0
  223. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnSigner.d.ts +0 -0
  224. /package/dist/types/{plugins → src/plugins}/zkproof/index.d.ts +0 -0
  225. /package/dist/types/{plugins → src/plugins}/zkproof/types.d.ts +0 -0
  226. /package/dist/types/{plugins → src/plugins}/zkproof/zkCredentials.d.ts +0 -0
  227. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofConnector.d.ts +0 -0
  228. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofPlugin.d.ts +0 -0
  229. /package/dist/types/{storage → src/storage}/storage.d.ts +0 -0
  230. /package/dist/types/{utils → src/utils}/errorHandler.d.ts +0 -0
  231. /package/dist/types/{utils → src/utils}/eventEmitter.d.ts +0 -0
  232. /package/dist/types/{utils → src/utils}/seedPhrase.d.ts +0 -0
  233. /package/dist/types/{utils → src/utils}/validation.d.ts +0 -0
@@ -1,246 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ErrorHandler = exports.ErrorType = void 0;
4
- exports.createError = createError;
5
- /**
6
- * Types of errors that can occur in the application
7
- */
8
- var ErrorType;
9
- (function (ErrorType) {
10
- ErrorType["AUTHENTICATION"] = "AuthenticationError";
11
- ErrorType["AUTHORIZATION"] = "AuthorizationError";
12
- ErrorType["VALIDATION"] = "ValidationError";
13
- ErrorType["NETWORK"] = "NetworkError";
14
- ErrorType["DATABASE"] = "DatabaseError";
15
- ErrorType["WALLET"] = "WalletError";
16
- ErrorType["STORAGE"] = "StorageError";
17
- ErrorType["ENCRYPTION"] = "EncryptionError";
18
- ErrorType["SIGNATURE"] = "SignatureError";
19
- ErrorType["ENVIRONMENT"] = "EnvironmentError";
20
- ErrorType["SECURITY"] = "SecurityError";
21
- ErrorType["GUN"] = "GunError";
22
- ErrorType["STEALTH"] = "StealthError";
23
- ErrorType["WEBAUTHN"] = "WebAuthnError";
24
- ErrorType["PLUGIN"] = "PluginError";
25
- ErrorType["UNKNOWN"] = "UnknownError";
26
- ErrorType["CONNECTOR"] = "ConnectorError";
27
- ErrorType["GENERAL"] = "GeneralError";
28
- ErrorType["CONTRACT"] = "ContractError";
29
- ErrorType["BIP32"] = "BIP32Error";
30
- ErrorType["ETHEREUM"] = "EthereumError";
31
- ErrorType["BITCOIN"] = "BitcoinError";
32
- })(ErrorType || (exports.ErrorType = ErrorType = {}));
33
- /**
34
- * Wrapper to standardize errors
35
- * @param type - Error type
36
- * @param code - Error code
37
- * @param message - Error message
38
- * @param originalError - Original error
39
- * @returns A structured error object
40
- */
41
- function createError(type, code, message, originalError) {
42
- return {
43
- type,
44
- code,
45
- message,
46
- originalError,
47
- timestamp: Date.now(),
48
- };
49
- }
50
- /**
51
- * Centralized error handler
52
- */
53
- class ErrorHandler {
54
- /**
55
- * Set an external logging service for production error monitoring
56
- * @param logger - External logger function to send errors to a monitoring service
57
- */
58
- static setExternalLogger(logger) {
59
- this.externalLogger = logger;
60
- }
61
- /**
62
- * Handles an error by logging it and notifying listeners
63
- * @param error - The error to handle
64
- */
65
- static handleError(error) {
66
- // Log essential errors only
67
- if (error.type === ErrorType.AUTHENTICATION ||
68
- error.type === ErrorType.AUTHORIZATION ||
69
- error.type === ErrorType.SECURITY) {
70
- // Ensure console.error is available and safe to use
71
- if (typeof console !== "undefined" && console.error) {
72
- console.error(`[${error.type}] ${error.code}: ${error.message}`);
73
- }
74
- }
75
- // Store the error in memory
76
- this.errors.push(error);
77
- // Keep only the last maxErrors
78
- if (this.errors.length > this.maxErrors) {
79
- this.errors = this.errors.slice(-this.maxErrors);
80
- }
81
- // Send to external logger if set (for production monitoring)
82
- if (this.externalLogger) {
83
- try {
84
- this.externalLogger(error);
85
- }
86
- catch (e) {
87
- // Fallback logging for external logger errors
88
- console.error("Failed to send error to external logger:", e);
89
- }
90
- }
91
- // Notify all listeners
92
- this.listeners.forEach((listener) => {
93
- try {
94
- listener(error);
95
- }
96
- catch (e) {
97
- // Silent error to prevent infinite loops
98
- }
99
- });
100
- }
101
- /**
102
- * Handles a raw error by converting it to ShogunError
103
- * @param type - Error type
104
- * @param code - Error code
105
- * @param message - Error message
106
- * @param originalError - Original error
107
- * @param logLevel - Log level for the error
108
- */
109
- static handle(type, code, message, originalError, logLevel = "error") {
110
- // Create a formatted error message (tests expect the plain message)
111
- const finalMessage = message;
112
- // Log the error
113
- switch (logLevel) {
114
- case "debug":
115
- console.log(`[${type}] ${code}: ${finalMessage}`);
116
- break;
117
- case "warn":
118
- console.log(`[${type}] ${code}: ${finalMessage}`);
119
- break;
120
- case "info":
121
- console.log(`[${type}] ${code}: ${finalMessage}`);
122
- break;
123
- case "error":
124
- default:
125
- console.log(`[${type}] ${code}: ${finalMessage}`);
126
- break;
127
- }
128
- const error = createError(type, code, finalMessage, originalError);
129
- this.handleError(error);
130
- return error;
131
- }
132
- /**
133
- * Handles errors and throws them as standardized ShogunError objects
134
- * @param type - Error type
135
- * @param code - Error code
136
- * @param message - Error message
137
- * @param originalError - Original error
138
- * @throws ShogunError
139
- */
140
- static handleAndThrow(type, code, message, originalError) {
141
- const error = this.handle(type, code, message, originalError);
142
- throw error;
143
- }
144
- /**
145
- * Retrieves the last N errors
146
- * @param count - Number of errors to retrieve
147
- * @returns List of most recent errors
148
- */
149
- static getRecentErrors(count = 10) {
150
- return this.errors.slice(-Math.min(count, this.errors.length));
151
- }
152
- /**
153
- * Adds a listener for errors
154
- * @param listener - Function that will be called when an error occurs
155
- */
156
- static addListener(listener) {
157
- this.listeners.push(listener);
158
- }
159
- /**
160
- * Removes an error listener
161
- * @param listener - Function to remove
162
- */
163
- static removeListener(listener) {
164
- const index = this.listeners.indexOf(listener);
165
- if (index !== -1) {
166
- this.listeners.splice(index, 1);
167
- }
168
- }
169
- /**
170
- * Notifies all listeners of an error
171
- * @param error - Error to notify
172
- */
173
- static notifyListeners(error) {
174
- for (const listener of this.listeners) {
175
- try {
176
- listener(error);
177
- }
178
- catch (listenerError) {
179
- console.error(`Error in error listener: ${listenerError}`);
180
- }
181
- }
182
- }
183
- /**
184
- * Helper function to format error messages from native errors
185
- * @param error - Error to format
186
- * @returns Formatted error message
187
- */
188
- static formatError(error) {
189
- if (!error) {
190
- return "Unknown error";
191
- }
192
- if (error instanceof Error) {
193
- return `${error.name}: ${error.message}`;
194
- }
195
- if (typeof error === "string") {
196
- return error;
197
- }
198
- if (typeof error === "object") {
199
- try {
200
- return JSON.stringify(error);
201
- }
202
- catch (e) {
203
- return `Object: ${Object.prototype.toString.call(error)}`;
204
- }
205
- }
206
- return String(error);
207
- }
208
- /**
209
- * Error handling with retry logic
210
- */
211
- static async withRetry(fn, errorType, errorCode, maxRetries = 3, retryDelay = 1000) {
212
- let lastError;
213
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
214
- try {
215
- return await fn();
216
- }
217
- catch (error) {
218
- lastError = error;
219
- const delay = retryDelay * attempt;
220
- if (attempt < maxRetries) {
221
- console.log(`Retrying operation after ${delay}ms (attempt ${attempt}/${maxRetries})`);
222
- await new Promise((resolve) => setTimeout(resolve, delay));
223
- }
224
- }
225
- }
226
- // If we got here, all retries failed.
227
- // Log the failure and rethrow the last error message for test expectations compatibility.
228
- this.handle(errorType, errorCode, `Operation failed after ${maxRetries} attempts`, lastError);
229
- // Prefer the original error message if available
230
- if (lastError instanceof Error) {
231
- throw new Error(lastError.message);
232
- }
233
- throw new Error(this.formatError(lastError));
234
- }
235
- /**
236
- * Clear all stored errors
237
- */
238
- static clearErrors() {
239
- this.errors = [];
240
- }
241
- }
242
- exports.ErrorHandler = ErrorHandler;
243
- ErrorHandler.errors = [];
244
- ErrorHandler.maxErrors = 100;
245
- ErrorHandler.listeners = [];
246
- ErrorHandler.externalLogger = null;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes