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.
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +93 -341
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -1
- package/dist/browser/shogun-core.js +138979 -146789
- package/dist/browser/shogun-core.js.map +1 -1
- package/dist/{core.js → src/core.js} +167 -107
- package/dist/src/crypto/asymmetric.js +168 -0
- package/dist/src/crypto/double-ratchet.js +908 -0
- package/dist/src/crypto/file-encryption.js +352 -0
- package/dist/src/crypto/hashing.js +160 -0
- package/dist/src/crypto/index.js +18 -0
- package/dist/{crypto → src/crypto}/mls-codec.js +24 -34
- package/dist/src/crypto/mls.js +734 -0
- package/dist/src/crypto/pgp.js +619 -0
- package/dist/{crypto → src/crypto}/random-generation.js +125 -103
- package/dist/src/crypto/sframe.js +466 -0
- package/dist/src/crypto/signal-protocol.js +943 -0
- package/dist/src/crypto/symmetric.js +165 -0
- package/dist/src/crypto/utils.js +220 -0
- package/dist/src/examples/auth-test.js +535 -0
- package/dist/src/examples/crypto-identity-example.js +294 -0
- package/dist/src/examples/crypto-working-test.js +149 -0
- package/dist/src/examples/double-ratchet-test.js +240 -0
- package/dist/src/examples/mls-3-member-test.js +183 -0
- package/dist/src/examples/mls-multi-member.js +439 -0
- package/dist/src/examples/mls-sframe-test.js +491 -0
- package/dist/src/examples/mls-simple-test.js +122 -0
- package/dist/src/examples/pgp-example.js +354 -0
- package/dist/src/examples/random-generation-test.js +191 -0
- package/dist/src/examples/shogun-core-example.js +204 -0
- package/dist/src/examples/signal-protocol-test.js +82 -0
- package/dist/src/examples/zkproof-credentials-example.js +357 -0
- package/dist/src/examples/zkproof-example.js +357 -0
- package/dist/src/gundb/crypto.js +420 -0
- package/dist/src/gundb/db.js +728 -0
- package/dist/src/gundb/derive.js +327 -0
- package/dist/src/gundb/errors.js +115 -0
- package/dist/src/gundb/gun-es.js +8 -0
- package/dist/src/gundb/index.js +5 -0
- package/dist/{gundb → src/gundb}/rxjs.js +147 -111
- package/dist/{gundb → src/gundb}/types.js +1 -2
- package/dist/src/index.js +19 -0
- package/dist/src/interfaces/events.js +57 -0
- package/dist/{interfaces → src/interfaces}/shogun.js +4 -7
- package/dist/src/managers/AuthManager.js +301 -0
- package/dist/src/managers/CoreInitializer.js +304 -0
- package/dist/src/managers/CryptoIdentityManager.js +230 -0
- package/dist/{managers → src/managers}/EventManager.js +19 -21
- package/dist/{managers → src/managers}/PluginManager.js +123 -89
- package/dist/src/plugins/base.js +90 -0
- package/dist/src/plugins/index.js +17 -0
- package/dist/src/plugins/nostr/index.js +4 -0
- package/dist/src/plugins/nostr/nostrConnector.js +539 -0
- package/dist/src/plugins/nostr/nostrConnectorPlugin.js +663 -0
- package/dist/src/plugins/nostr/nostrSigner.js +414 -0
- package/dist/src/plugins/smartwallet/index.js +2 -0
- package/dist/src/plugins/smartwallet/smartWalletPlugin.js +824 -0
- package/dist/src/plugins/web3/index.js +4 -0
- package/dist/src/plugins/web3/types.js +1 -0
- package/dist/src/plugins/web3/web3Connector.js +738 -0
- package/dist/src/plugins/web3/web3ConnectorPlugin.js +639 -0
- package/dist/src/plugins/web3/web3Signer.js +432 -0
- package/dist/src/plugins/webauthn/index.js +3 -0
- package/dist/{plugins → src/plugins}/webauthn/types.js +2 -5
- package/dist/src/plugins/webauthn/webauthn.js +647 -0
- package/dist/src/plugins/webauthn/webauthnPlugin.js +689 -0
- package/dist/src/plugins/webauthn/webauthnSigner.js +419 -0
- package/dist/{plugins → src/plugins}/zkproof/index.js +3 -10
- package/dist/src/plugins/zkproof/types.js +1 -0
- package/dist/src/plugins/zkproof/zkCredentials.js +287 -0
- package/dist/src/plugins/zkproof/zkProofConnector.js +267 -0
- package/dist/src/plugins/zkproof/zkProofPlugin.js +405 -0
- package/dist/src/storage/storage.js +189 -0
- package/dist/src/utils/errorHandler.js +339 -0
- package/dist/{utils → src/utils}/eventEmitter.js +26 -26
- package/dist/{utils → src/utils}/seedPhrase.js +23 -32
- package/dist/{utils → src/utils}/validation.js +14 -21
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/{crypto → src/crypto}/double-ratchet.d.ts +1 -1
- package/dist/types/{crypto → src/crypto}/signal-protocol.d.ts +25 -0
- package/dist/types/{crypto → src/crypto}/types.d.ts +3 -1
- package/dist/types/src/examples/crypto-working-test.d.ts +1 -0
- package/dist/types/src/examples/double-ratchet-test.d.ts +1 -0
- package/dist/types/src/examples/mls-sframe-test.d.ts +1 -0
- package/dist/types/src/examples/random-generation-test.d.ts +1 -0
- package/dist/types/src/examples/signal-protocol-test.d.ts +1 -0
- package/dist/types/{gundb → src/gundb}/db.d.ts +14 -1
- package/dist/types/src/gundb/gun-es.d.ts +8 -0
- package/dist/types/src/gundb/min.d.ts +3 -0
- package/dist/types/{index.d.ts → src/index.d.ts} +1 -0
- package/package.json +14 -11
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +0 -1651
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +0 -1
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +0 -1608
- package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +0 -1
- package/dist/crypto/asymmetric.js +0 -99
- package/dist/crypto/double-ratchet.js +0 -392
- package/dist/crypto/file-encryption.js +0 -213
- package/dist/crypto/hashing.js +0 -87
- package/dist/crypto/index.js +0 -34
- package/dist/crypto/mls.js +0 -569
- package/dist/crypto/pgp.js +0 -390
- package/dist/crypto/sframe.js +0 -352
- package/dist/crypto/signal-protocol.js +0 -456
- package/dist/crypto/symmetric.js +0 -91
- package/dist/crypto/types.js +0 -2
- package/dist/crypto/utils.js +0 -140
- package/dist/examples/auth-test.js +0 -453
- package/dist/examples/crypto-identity-example.js +0 -196
- package/dist/examples/crypto-working-test.js +0 -83
- package/dist/examples/double-ratchet-test.js +0 -155
- package/dist/examples/mls-3-member-test.js +0 -97
- package/dist/examples/mls-multi-member.js +0 -153
- package/dist/examples/mls-sframe-test.js +0 -307
- package/dist/examples/mls-simple-test.js +0 -58
- package/dist/examples/pgp-example.js +0 -200
- package/dist/examples/random-generation-test.js +0 -151
- package/dist/examples/shogun-core-example.js +0 -150
- package/dist/examples/signal-protocol-test.js +0 -38
- package/dist/examples/zkproof-credentials-example.js +0 -217
- package/dist/examples/zkproof-example.js +0 -242
- package/dist/gundb/crypto.js +0 -306
- package/dist/gundb/db.js +0 -485
- package/dist/gundb/derive.js +0 -232
- package/dist/gundb/errors.js +0 -76
- package/dist/gundb/gun-es.js +0 -12
- package/dist/gundb/index.js +0 -21
- package/dist/gundb/min.js +0 -10
- package/dist/index.esm.js +0 -22
- package/dist/index.js +0 -47
- package/dist/interfaces/common.js +0 -2
- package/dist/interfaces/events.js +0 -40
- package/dist/interfaces/plugin.js +0 -2
- package/dist/managers/AuthManager.js +0 -226
- package/dist/managers/CoreInitializer.js +0 -250
- package/dist/managers/CryptoIdentityManager.js +0 -138
- package/dist/plugins/base.js +0 -50
- package/dist/plugins/index.js +0 -32
- package/dist/plugins/nostr/index.js +0 -20
- package/dist/plugins/nostr/nostrConnector.js +0 -419
- package/dist/plugins/nostr/nostrConnectorPlugin.js +0 -453
- package/dist/plugins/nostr/nostrSigner.js +0 -319
- package/dist/plugins/nostr/types.js +0 -2
- package/dist/plugins/smartwallet/index.js +0 -18
- package/dist/plugins/smartwallet/smartWalletPlugin.js +0 -511
- package/dist/plugins/smartwallet/types.js +0 -2
- package/dist/plugins/web3/index.js +0 -20
- package/dist/plugins/web3/types.js +0 -2
- package/dist/plugins/web3/web3Connector.js +0 -533
- package/dist/plugins/web3/web3ConnectorPlugin.js +0 -455
- package/dist/plugins/web3/web3Signer.js +0 -314
- package/dist/plugins/webauthn/index.js +0 -19
- package/dist/plugins/webauthn/webauthn.js +0 -496
- package/dist/plugins/webauthn/webauthnPlugin.js +0 -490
- package/dist/plugins/webauthn/webauthnSigner.js +0 -310
- package/dist/plugins/zkproof/types.js +0 -2
- package/dist/plugins/zkproof/zkCredentials.js +0 -216
- package/dist/plugins/zkproof/zkProofConnector.js +0 -198
- package/dist/plugins/zkproof/zkProofPlugin.js +0 -272
- package/dist/storage/storage.js +0 -145
- package/dist/types/gundb/gun-es.d.ts +0 -8
- package/dist/utils/errorHandler.js +0 -246
- /package/dist/{types/examples/crypto-working-test.d.ts → src/crypto/types.js} +0 -0
- /package/dist/{types/gundb/min.d.ts → src/gundb/min.js} +0 -0
- /package/dist/{types/examples/double-ratchet-test.d.ts → src/interfaces/common.js} +0 -0
- /package/dist/{types/examples/mls-sframe-test.d.ts → src/interfaces/plugin.js} +0 -0
- /package/dist/{types/examples/random-generation-test.d.ts → src/plugins/nostr/types.js} +0 -0
- /package/dist/{types/examples/signal-protocol-test.d.ts → src/plugins/smartwallet/types.js} +0 -0
- /package/dist/types/{core.d.ts → src/core.d.ts} +0 -0
- /package/dist/types/{crypto → src/crypto}/asymmetric.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/file-encryption.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/hashing.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/index.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/mls-codec.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/mls.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/pgp.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/random-generation.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/sframe.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/symmetric.d.ts +0 -0
- /package/dist/types/{crypto → src/crypto}/utils.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/auth-test.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/crypto-identity-example.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/mls-3-member-test.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/mls-multi-member.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/mls-simple-test.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/pgp-example.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/shogun-core-example.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/zkproof-credentials-example.d.ts +0 -0
- /package/dist/types/{examples → src/examples}/zkproof-example.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/crypto.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/derive.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/errors.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/index.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/rxjs.d.ts +0 -0
- /package/dist/types/{gundb → src/gundb}/types.d.ts +0 -0
- /package/dist/types/{interfaces → src/interfaces}/common.d.ts +0 -0
- /package/dist/types/{interfaces → src/interfaces}/events.d.ts +0 -0
- /package/dist/types/{interfaces → src/interfaces}/plugin.d.ts +0 -0
- /package/dist/types/{interfaces → src/interfaces}/shogun.d.ts +0 -0
- /package/dist/types/{managers → src/managers}/AuthManager.d.ts +0 -0
- /package/dist/types/{managers → src/managers}/CoreInitializer.d.ts +0 -0
- /package/dist/types/{managers → src/managers}/CryptoIdentityManager.d.ts +0 -0
- /package/dist/types/{managers → src/managers}/EventManager.d.ts +0 -0
- /package/dist/types/{managers → src/managers}/PluginManager.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/base.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/nostr/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/nostr/nostrConnector.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/nostr/nostrConnectorPlugin.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/nostr/nostrSigner.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/nostr/types.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/smartwallet/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/smartwallet/smartWalletPlugin.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/smartwallet/types.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/web3/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/web3/types.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/web3/web3Connector.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/web3/web3ConnectorPlugin.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/web3/web3Signer.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/webauthn/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/webauthn/types.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/webauthn/webauthn.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/webauthn/webauthnPlugin.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/webauthn/webauthnSigner.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/zkproof/index.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/zkproof/types.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/zkproof/zkCredentials.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/zkproof/zkProofConnector.d.ts +0 -0
- /package/dist/types/{plugins → src/plugins}/zkproof/zkProofPlugin.d.ts +0 -0
- /package/dist/types/{storage → src/storage}/storage.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/errorHandler.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/eventEmitter.d.ts +0 -0
- /package/dist/types/{utils → src/utils}/seedPhrase.d.ts +0 -0
- /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
|
|
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
|
|
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
|
|
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
|