@0xsequence/guard
Advanced tools
Comparing version 0.0.0-20240429153138 to 0.0.0-20240429172204
@@ -37,4 +37,4 @@ 'use strict'; | ||
this.path = '/rpc/Guard/'; | ||
this.ping = headers => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers)).then(res => { | ||
this.ping = (headers, signal) => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -45,6 +45,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.version = headers => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers)).then(res => { | ||
this.version = (headers, signal) => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -55,6 +59,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.runtimeStatus = headers => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers)).then(res => { | ||
this.runtimeStatus = (headers, signal) => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -65,6 +73,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.getSignerConfig = (args, headers) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers)).then(res => { | ||
this.getSignerConfig = (args, headers, signal) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -75,6 +87,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.sign = (args, headers) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers)).then(res => { | ||
this.sign = (args, headers, signal) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -85,6 +101,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.signWith = (args, headers) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers)).then(res => { | ||
this.signWith = (args, headers, signal) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -95,6 +115,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.authMethods = (args, headers) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers)).then(res => { | ||
this.authMethods = (args, headers, signal) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -106,20 +130,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.setPIN = (args, headers) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.setPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetPIN = (args, headers) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.createTOTP = (args, headers) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.createTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -130,6 +166,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.commitTOTP = (args, headers) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.commitTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -140,20 +180,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetTOTP = (args, headers) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.reset2FA = (args, headers) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers)).then(res => { | ||
this.reset2FA = (args, headers, signal) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.recoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.recoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -164,6 +216,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetRecoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetRecoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -174,2 +230,6 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
@@ -184,3 +244,3 @@ }; | ||
} | ||
const createHTTPRequest = (body = {}, headers = {}) => { | ||
const createHTTPRequest = (body = {}, headers = {}, signal = null) => { | ||
return { | ||
@@ -191,3 +251,4 @@ method: 'POST', | ||
}), | ||
body: JSON.stringify(body || {}) | ||
body: JSON.stringify(body || {}), | ||
signal | ||
}; | ||
@@ -200,11 +261,15 @@ }; | ||
data = JSON.parse(text); | ||
} catch (err) { | ||
throw { | ||
code: 'unknown', | ||
msg: `expecting JSON, got: ${text}`, | ||
status: res.status | ||
}; | ||
} catch (error) { | ||
let message = ''; | ||
if (error instanceof Error) { | ||
message = error.message; | ||
} | ||
throw WebrpcBadResponseError.new({ | ||
status: res.status, | ||
cause: `JSON.parse(): ${message}: response text: ${text}` | ||
}); | ||
} | ||
if (!res.ok) { | ||
throw data; // webrpc error response | ||
const code = typeof data.code === 'number' ? data.code : 0; | ||
throw (webrpcErrorByCode[code] || WebrpcError).new(data); | ||
} | ||
@@ -215,2 +280,170 @@ return data; | ||
// | ||
// Errors | ||
// | ||
class WebrpcError extends Error { | ||
constructor(name, code, message, status, cause) { | ||
super(message); | ||
this.name = void 0; | ||
this.code = void 0; | ||
this.message = void 0; | ||
this.status = void 0; | ||
this.cause = void 0; | ||
/** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */ | ||
this.msg = void 0; | ||
this.name = name || 'WebrpcError'; | ||
this.code = typeof code === 'number' ? code : 0; | ||
this.message = message || `endpoint error ${this.code}`; | ||
this.msg = this.message; | ||
this.status = typeof status === 'number' ? status : 0; | ||
this.cause = cause; | ||
Object.setPrototypeOf(this, WebrpcError.prototype); | ||
} | ||
static new(payload) { | ||
return new this(payload.error, payload.code, payload.message || payload.msg, payload.status, payload.cause); | ||
} | ||
} | ||
// Webrpc errors | ||
class WebrpcEndpointError extends WebrpcError { | ||
constructor(name = 'WebrpcEndpoint', code = 0, message = 'endpoint error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcEndpointError.prototype); | ||
} | ||
} | ||
class WebrpcRequestFailedError extends WebrpcError { | ||
constructor(name = 'WebrpcRequestFailed', code = -1, message = 'request failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcRequestFailedError.prototype); | ||
} | ||
} | ||
class WebrpcBadRouteError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRoute', code = -2, message = 'bad route', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRouteError.prototype); | ||
} | ||
} | ||
class WebrpcBadMethodError extends WebrpcError { | ||
constructor(name = 'WebrpcBadMethod', code = -3, message = 'bad method', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadMethodError.prototype); | ||
} | ||
} | ||
class WebrpcBadRequestError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRequest', code = -4, message = 'bad request', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRequestError.prototype); | ||
} | ||
} | ||
class WebrpcBadResponseError extends WebrpcError { | ||
constructor(name = 'WebrpcBadResponse', code = -5, message = 'bad response', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadResponseError.prototype); | ||
} | ||
} | ||
class WebrpcServerPanicError extends WebrpcError { | ||
constructor(name = 'WebrpcServerPanic', code = -6, message = 'server panic', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcServerPanicError.prototype); | ||
} | ||
} | ||
class WebrpcInternalErrorError extends WebrpcError { | ||
constructor(name = 'WebrpcInternalError', code = -7, message = 'internal error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcInternalErrorError.prototype); | ||
} | ||
} | ||
class WebrpcClientDisconnectedError extends WebrpcError { | ||
constructor(name = 'WebrpcClientDisconnected', code = -8, message = 'client disconnected', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcClientDisconnectedError.prototype); | ||
} | ||
} | ||
class WebrpcStreamLostError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamLost', code = -9, message = 'stream lost', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamLostError.prototype); | ||
} | ||
} | ||
class WebrpcStreamFinishedError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamFinished', code = -10, message = 'stream finished', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamFinishedError.prototype); | ||
} | ||
} | ||
// Schema errors | ||
class UnauthorizedError extends WebrpcError { | ||
constructor(name = 'Unauthorized', code = 1000, message = 'Unauthorized access', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnauthorizedError.prototype); | ||
} | ||
} | ||
class SessionExpiredError extends WebrpcError { | ||
constructor(name = 'SessionExpired', code = 1002, message = 'Session expired', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, SessionExpiredError.prototype); | ||
} | ||
} | ||
class AbortedError extends WebrpcError { | ||
constructor(name = 'Aborted', code = 1005, message = 'Request aborted', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, AbortedError.prototype); | ||
} | ||
} | ||
class InvalidArgumentError extends WebrpcError { | ||
constructor(name = 'InvalidArgument', code = 2001, message = 'Invalid argument', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, InvalidArgumentError.prototype); | ||
} | ||
} | ||
class UnavailableError extends WebrpcError { | ||
constructor(name = 'Unavailable', code = 2002, message = 'Unavailable resource', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnavailableError.prototype); | ||
} | ||
} | ||
class QueryFailedError extends WebrpcError { | ||
constructor(name = 'QueryFailed', code = 2003, message = 'Query failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, QueryFailedError.prototype); | ||
} | ||
} | ||
class ValidationFailedError extends WebrpcError { | ||
constructor(name = 'ValidationFailed', code = 2004, message = 'Validation Failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, ValidationFailedError.prototype); | ||
} | ||
} | ||
class NotFoundError extends WebrpcError { | ||
constructor(name = 'NotFound', code = 3000, message = 'Resource not found', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, NotFoundError.prototype); | ||
} | ||
} | ||
const webrpcErrorByCode = { | ||
[0]: WebrpcEndpointError, | ||
[-1]: WebrpcRequestFailedError, | ||
[-2]: WebrpcBadRouteError, | ||
[-3]: WebrpcBadMethodError, | ||
[-4]: WebrpcBadRequestError, | ||
[-5]: WebrpcBadResponseError, | ||
[-6]: WebrpcServerPanicError, | ||
[-7]: WebrpcInternalErrorError, | ||
[-8]: WebrpcClientDisconnectedError, | ||
[-9]: WebrpcStreamLostError, | ||
[-10]: WebrpcStreamFinishedError, | ||
[1000]: UnauthorizedError, | ||
[1002]: SessionExpiredError, | ||
[1005]: AbortedError, | ||
[2001]: InvalidArgumentError, | ||
[2002]: UnavailableError, | ||
[2003]: QueryFailedError, | ||
[2004]: ValidationFailedError, | ||
[3000]: NotFoundError | ||
}; | ||
const fetch = typeof global === 'object' ? global.fetch : window.fetch; | ||
@@ -217,0 +450,0 @@ class GuardSigner { |
@@ -37,4 +37,4 @@ 'use strict'; | ||
this.path = '/rpc/Guard/'; | ||
this.ping = headers => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers)).then(res => { | ||
this.ping = (headers, signal) => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -45,6 +45,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.version = headers => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers)).then(res => { | ||
this.version = (headers, signal) => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -55,6 +59,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.runtimeStatus = headers => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers)).then(res => { | ||
this.runtimeStatus = (headers, signal) => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -65,6 +73,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.getSignerConfig = (args, headers) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers)).then(res => { | ||
this.getSignerConfig = (args, headers, signal) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -75,6 +87,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.sign = (args, headers) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers)).then(res => { | ||
this.sign = (args, headers, signal) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -85,6 +101,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.signWith = (args, headers) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers)).then(res => { | ||
this.signWith = (args, headers, signal) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -95,6 +115,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.authMethods = (args, headers) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers)).then(res => { | ||
this.authMethods = (args, headers, signal) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -106,20 +130,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.setPIN = (args, headers) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.setPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetPIN = (args, headers) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.createTOTP = (args, headers) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.createTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -130,6 +166,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.commitTOTP = (args, headers) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.commitTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -140,20 +180,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetTOTP = (args, headers) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.reset2FA = (args, headers) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers)).then(res => { | ||
this.reset2FA = (args, headers, signal) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.recoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.recoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -164,6 +216,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetRecoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetRecoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -174,2 +230,6 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
@@ -184,3 +244,3 @@ }; | ||
} | ||
const createHTTPRequest = (body = {}, headers = {}) => { | ||
const createHTTPRequest = (body = {}, headers = {}, signal = null) => { | ||
return { | ||
@@ -191,3 +251,4 @@ method: 'POST', | ||
}), | ||
body: JSON.stringify(body || {}) | ||
body: JSON.stringify(body || {}), | ||
signal | ||
}; | ||
@@ -200,11 +261,15 @@ }; | ||
data = JSON.parse(text); | ||
} catch (err) { | ||
throw { | ||
code: 'unknown', | ||
msg: `expecting JSON, got: ${text}`, | ||
status: res.status | ||
}; | ||
} catch (error) { | ||
let message = ''; | ||
if (error instanceof Error) { | ||
message = error.message; | ||
} | ||
throw WebrpcBadResponseError.new({ | ||
status: res.status, | ||
cause: `JSON.parse(): ${message}: response text: ${text}` | ||
}); | ||
} | ||
if (!res.ok) { | ||
throw data; // webrpc error response | ||
const code = typeof data.code === 'number' ? data.code : 0; | ||
throw (webrpcErrorByCode[code] || WebrpcError).new(data); | ||
} | ||
@@ -215,2 +280,170 @@ return data; | ||
// | ||
// Errors | ||
// | ||
class WebrpcError extends Error { | ||
constructor(name, code, message, status, cause) { | ||
super(message); | ||
this.name = void 0; | ||
this.code = void 0; | ||
this.message = void 0; | ||
this.status = void 0; | ||
this.cause = void 0; | ||
/** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */ | ||
this.msg = void 0; | ||
this.name = name || 'WebrpcError'; | ||
this.code = typeof code === 'number' ? code : 0; | ||
this.message = message || `endpoint error ${this.code}`; | ||
this.msg = this.message; | ||
this.status = typeof status === 'number' ? status : 0; | ||
this.cause = cause; | ||
Object.setPrototypeOf(this, WebrpcError.prototype); | ||
} | ||
static new(payload) { | ||
return new this(payload.error, payload.code, payload.message || payload.msg, payload.status, payload.cause); | ||
} | ||
} | ||
// Webrpc errors | ||
class WebrpcEndpointError extends WebrpcError { | ||
constructor(name = 'WebrpcEndpoint', code = 0, message = 'endpoint error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcEndpointError.prototype); | ||
} | ||
} | ||
class WebrpcRequestFailedError extends WebrpcError { | ||
constructor(name = 'WebrpcRequestFailed', code = -1, message = 'request failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcRequestFailedError.prototype); | ||
} | ||
} | ||
class WebrpcBadRouteError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRoute', code = -2, message = 'bad route', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRouteError.prototype); | ||
} | ||
} | ||
class WebrpcBadMethodError extends WebrpcError { | ||
constructor(name = 'WebrpcBadMethod', code = -3, message = 'bad method', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadMethodError.prototype); | ||
} | ||
} | ||
class WebrpcBadRequestError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRequest', code = -4, message = 'bad request', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRequestError.prototype); | ||
} | ||
} | ||
class WebrpcBadResponseError extends WebrpcError { | ||
constructor(name = 'WebrpcBadResponse', code = -5, message = 'bad response', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadResponseError.prototype); | ||
} | ||
} | ||
class WebrpcServerPanicError extends WebrpcError { | ||
constructor(name = 'WebrpcServerPanic', code = -6, message = 'server panic', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcServerPanicError.prototype); | ||
} | ||
} | ||
class WebrpcInternalErrorError extends WebrpcError { | ||
constructor(name = 'WebrpcInternalError', code = -7, message = 'internal error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcInternalErrorError.prototype); | ||
} | ||
} | ||
class WebrpcClientDisconnectedError extends WebrpcError { | ||
constructor(name = 'WebrpcClientDisconnected', code = -8, message = 'client disconnected', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcClientDisconnectedError.prototype); | ||
} | ||
} | ||
class WebrpcStreamLostError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamLost', code = -9, message = 'stream lost', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamLostError.prototype); | ||
} | ||
} | ||
class WebrpcStreamFinishedError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamFinished', code = -10, message = 'stream finished', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamFinishedError.prototype); | ||
} | ||
} | ||
// Schema errors | ||
class UnauthorizedError extends WebrpcError { | ||
constructor(name = 'Unauthorized', code = 1000, message = 'Unauthorized access', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnauthorizedError.prototype); | ||
} | ||
} | ||
class SessionExpiredError extends WebrpcError { | ||
constructor(name = 'SessionExpired', code = 1002, message = 'Session expired', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, SessionExpiredError.prototype); | ||
} | ||
} | ||
class AbortedError extends WebrpcError { | ||
constructor(name = 'Aborted', code = 1005, message = 'Request aborted', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, AbortedError.prototype); | ||
} | ||
} | ||
class InvalidArgumentError extends WebrpcError { | ||
constructor(name = 'InvalidArgument', code = 2001, message = 'Invalid argument', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, InvalidArgumentError.prototype); | ||
} | ||
} | ||
class UnavailableError extends WebrpcError { | ||
constructor(name = 'Unavailable', code = 2002, message = 'Unavailable resource', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnavailableError.prototype); | ||
} | ||
} | ||
class QueryFailedError extends WebrpcError { | ||
constructor(name = 'QueryFailed', code = 2003, message = 'Query failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, QueryFailedError.prototype); | ||
} | ||
} | ||
class ValidationFailedError extends WebrpcError { | ||
constructor(name = 'ValidationFailed', code = 2004, message = 'Validation Failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, ValidationFailedError.prototype); | ||
} | ||
} | ||
class NotFoundError extends WebrpcError { | ||
constructor(name = 'NotFound', code = 3000, message = 'Resource not found', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, NotFoundError.prototype); | ||
} | ||
} | ||
const webrpcErrorByCode = { | ||
[0]: WebrpcEndpointError, | ||
[-1]: WebrpcRequestFailedError, | ||
[-2]: WebrpcBadRouteError, | ||
[-3]: WebrpcBadMethodError, | ||
[-4]: WebrpcBadRequestError, | ||
[-5]: WebrpcBadResponseError, | ||
[-6]: WebrpcServerPanicError, | ||
[-7]: WebrpcInternalErrorError, | ||
[-8]: WebrpcClientDisconnectedError, | ||
[-9]: WebrpcStreamLostError, | ||
[-10]: WebrpcStreamFinishedError, | ||
[1000]: UnauthorizedError, | ||
[1002]: SessionExpiredError, | ||
[1005]: AbortedError, | ||
[2001]: InvalidArgumentError, | ||
[2002]: UnavailableError, | ||
[2003]: QueryFailedError, | ||
[2004]: ValidationFailedError, | ||
[3000]: NotFoundError | ||
}; | ||
const fetch = typeof global === 'object' ? global.fetch : window.fetch; | ||
@@ -217,0 +450,0 @@ class GuardSigner { |
@@ -33,4 +33,4 @@ import { commons, universal } from '@0xsequence/core'; | ||
this.path = '/rpc/Guard/'; | ||
this.ping = headers => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers)).then(res => { | ||
this.ping = (headers, signal) => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -41,6 +41,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.version = headers => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers)).then(res => { | ||
this.version = (headers, signal) => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -51,6 +55,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.runtimeStatus = headers => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers)).then(res => { | ||
this.runtimeStatus = (headers, signal) => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -61,6 +69,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.getSignerConfig = (args, headers) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers)).then(res => { | ||
this.getSignerConfig = (args, headers, signal) => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -71,6 +83,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.sign = (args, headers) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers)).then(res => { | ||
this.sign = (args, headers, signal) => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -81,6 +97,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.signWith = (args, headers) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers)).then(res => { | ||
this.signWith = (args, headers, signal) => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -91,6 +111,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.authMethods = (args, headers) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers)).then(res => { | ||
this.authMethods = (args, headers, signal) => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -102,20 +126,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.setPIN = (args, headers) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.setPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetPIN = (args, headers) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetPIN = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.createTOTP = (args, headers) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.createTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -126,6 +162,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.commitTOTP = (args, headers) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.commitTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -136,20 +176,32 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetTOTP = (args, headers) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetTOTP = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.reset2FA = (args, headers) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers)).then(res => { | ||
this.reset2FA = (args, headers, signal) => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {}; | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.recoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.recoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -160,6 +212,10 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
}; | ||
this.resetRecoveryCodes = (args, headers) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
this.resetRecoveryCodes = (args, headers, signal) => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
@@ -170,2 +226,6 @@ return { | ||
}); | ||
}, error => { | ||
throw WebrpcRequestFailedError.new({ | ||
cause: `fetch(): ${error.message || ''}` | ||
}); | ||
}); | ||
@@ -180,3 +240,3 @@ }; | ||
} | ||
const createHTTPRequest = (body = {}, headers = {}) => { | ||
const createHTTPRequest = (body = {}, headers = {}, signal = null) => { | ||
return { | ||
@@ -187,3 +247,4 @@ method: 'POST', | ||
}), | ||
body: JSON.stringify(body || {}) | ||
body: JSON.stringify(body || {}), | ||
signal | ||
}; | ||
@@ -196,11 +257,15 @@ }; | ||
data = JSON.parse(text); | ||
} catch (err) { | ||
throw { | ||
code: 'unknown', | ||
msg: `expecting JSON, got: ${text}`, | ||
status: res.status | ||
}; | ||
} catch (error) { | ||
let message = ''; | ||
if (error instanceof Error) { | ||
message = error.message; | ||
} | ||
throw WebrpcBadResponseError.new({ | ||
status: res.status, | ||
cause: `JSON.parse(): ${message}: response text: ${text}` | ||
}); | ||
} | ||
if (!res.ok) { | ||
throw data; // webrpc error response | ||
const code = typeof data.code === 'number' ? data.code : 0; | ||
throw (webrpcErrorByCode[code] || WebrpcError).new(data); | ||
} | ||
@@ -211,2 +276,170 @@ return data; | ||
// | ||
// Errors | ||
// | ||
class WebrpcError extends Error { | ||
constructor(name, code, message, status, cause) { | ||
super(message); | ||
this.name = void 0; | ||
this.code = void 0; | ||
this.message = void 0; | ||
this.status = void 0; | ||
this.cause = void 0; | ||
/** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */ | ||
this.msg = void 0; | ||
this.name = name || 'WebrpcError'; | ||
this.code = typeof code === 'number' ? code : 0; | ||
this.message = message || `endpoint error ${this.code}`; | ||
this.msg = this.message; | ||
this.status = typeof status === 'number' ? status : 0; | ||
this.cause = cause; | ||
Object.setPrototypeOf(this, WebrpcError.prototype); | ||
} | ||
static new(payload) { | ||
return new this(payload.error, payload.code, payload.message || payload.msg, payload.status, payload.cause); | ||
} | ||
} | ||
// Webrpc errors | ||
class WebrpcEndpointError extends WebrpcError { | ||
constructor(name = 'WebrpcEndpoint', code = 0, message = 'endpoint error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcEndpointError.prototype); | ||
} | ||
} | ||
class WebrpcRequestFailedError extends WebrpcError { | ||
constructor(name = 'WebrpcRequestFailed', code = -1, message = 'request failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcRequestFailedError.prototype); | ||
} | ||
} | ||
class WebrpcBadRouteError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRoute', code = -2, message = 'bad route', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRouteError.prototype); | ||
} | ||
} | ||
class WebrpcBadMethodError extends WebrpcError { | ||
constructor(name = 'WebrpcBadMethod', code = -3, message = 'bad method', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadMethodError.prototype); | ||
} | ||
} | ||
class WebrpcBadRequestError extends WebrpcError { | ||
constructor(name = 'WebrpcBadRequest', code = -4, message = 'bad request', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadRequestError.prototype); | ||
} | ||
} | ||
class WebrpcBadResponseError extends WebrpcError { | ||
constructor(name = 'WebrpcBadResponse', code = -5, message = 'bad response', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcBadResponseError.prototype); | ||
} | ||
} | ||
class WebrpcServerPanicError extends WebrpcError { | ||
constructor(name = 'WebrpcServerPanic', code = -6, message = 'server panic', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcServerPanicError.prototype); | ||
} | ||
} | ||
class WebrpcInternalErrorError extends WebrpcError { | ||
constructor(name = 'WebrpcInternalError', code = -7, message = 'internal error', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcInternalErrorError.prototype); | ||
} | ||
} | ||
class WebrpcClientDisconnectedError extends WebrpcError { | ||
constructor(name = 'WebrpcClientDisconnected', code = -8, message = 'client disconnected', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcClientDisconnectedError.prototype); | ||
} | ||
} | ||
class WebrpcStreamLostError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamLost', code = -9, message = 'stream lost', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamLostError.prototype); | ||
} | ||
} | ||
class WebrpcStreamFinishedError extends WebrpcError { | ||
constructor(name = 'WebrpcStreamFinished', code = -10, message = 'stream finished', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, WebrpcStreamFinishedError.prototype); | ||
} | ||
} | ||
// Schema errors | ||
class UnauthorizedError extends WebrpcError { | ||
constructor(name = 'Unauthorized', code = 1000, message = 'Unauthorized access', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnauthorizedError.prototype); | ||
} | ||
} | ||
class SessionExpiredError extends WebrpcError { | ||
constructor(name = 'SessionExpired', code = 1002, message = 'Session expired', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, SessionExpiredError.prototype); | ||
} | ||
} | ||
class AbortedError extends WebrpcError { | ||
constructor(name = 'Aborted', code = 1005, message = 'Request aborted', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, AbortedError.prototype); | ||
} | ||
} | ||
class InvalidArgumentError extends WebrpcError { | ||
constructor(name = 'InvalidArgument', code = 2001, message = 'Invalid argument', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, InvalidArgumentError.prototype); | ||
} | ||
} | ||
class UnavailableError extends WebrpcError { | ||
constructor(name = 'Unavailable', code = 2002, message = 'Unavailable resource', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, UnavailableError.prototype); | ||
} | ||
} | ||
class QueryFailedError extends WebrpcError { | ||
constructor(name = 'QueryFailed', code = 2003, message = 'Query failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, QueryFailedError.prototype); | ||
} | ||
} | ||
class ValidationFailedError extends WebrpcError { | ||
constructor(name = 'ValidationFailed', code = 2004, message = 'Validation Failed', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, ValidationFailedError.prototype); | ||
} | ||
} | ||
class NotFoundError extends WebrpcError { | ||
constructor(name = 'NotFound', code = 3000, message = 'Resource not found', status = 0, cause) { | ||
super(name, code, message, status, cause); | ||
Object.setPrototypeOf(this, NotFoundError.prototype); | ||
} | ||
} | ||
const webrpcErrorByCode = { | ||
[0]: WebrpcEndpointError, | ||
[-1]: WebrpcRequestFailedError, | ||
[-2]: WebrpcBadRouteError, | ||
[-3]: WebrpcBadMethodError, | ||
[-4]: WebrpcBadRequestError, | ||
[-5]: WebrpcBadResponseError, | ||
[-6]: WebrpcServerPanicError, | ||
[-7]: WebrpcInternalErrorError, | ||
[-8]: WebrpcClientDisconnectedError, | ||
[-9]: WebrpcStreamLostError, | ||
[-10]: WebrpcStreamFinishedError, | ||
[1000]: UnauthorizedError, | ||
[1002]: SessionExpiredError, | ||
[1005]: AbortedError, | ||
[2001]: InvalidArgumentError, | ||
[2002]: UnavailableError, | ||
[2003]: QueryFailedError, | ||
[2004]: ValidationFailedError, | ||
[3000]: NotFoundError | ||
}; | ||
const fetch = typeof global === 'object' ? global.fetch : window.fetch; | ||
@@ -213,0 +446,0 @@ class GuardSigner { |
export declare const WebRPCVersion = "v1"; | ||
export declare const WebRPCSchemaVersion = "v0.4.0"; | ||
export declare const WebRPCSchemaHash = "2e5d6a4c9b797598078365d7439f330bc7bbf29c"; | ||
export declare const WebRPCSchemaHash = "12059311f086716f467356ed38189f565d5f172a"; | ||
export interface Version { | ||
@@ -46,17 +46,17 @@ webrpcVersion: string; | ||
export interface Guard { | ||
ping(headers?: object): Promise<PingReturn>; | ||
version(headers?: object): Promise<VersionReturn>; | ||
runtimeStatus(headers?: object): Promise<RuntimeStatusReturn>; | ||
getSignerConfig(args: GetSignerConfigArgs, headers?: object): Promise<GetSignerConfigReturn>; | ||
sign(args: SignArgs, headers?: object): Promise<SignReturn>; | ||
signWith(args: SignWithArgs, headers?: object): Promise<SignWithReturn>; | ||
authMethods(args: AuthMethodsArgs, headers?: object): Promise<AuthMethodsReturn>; | ||
setPIN(args: SetPINArgs, headers?: object): Promise<SetPINReturn>; | ||
resetPIN(args: ResetPINArgs, headers?: object): Promise<ResetPINReturn>; | ||
createTOTP(args: CreateTOTPArgs, headers?: object): Promise<CreateTOTPReturn>; | ||
commitTOTP(args: CommitTOTPArgs, headers?: object): Promise<CommitTOTPReturn>; | ||
resetTOTP(args: ResetTOTPArgs, headers?: object): Promise<ResetTOTPReturn>; | ||
reset2FA(args: Reset2FAArgs, headers?: object): Promise<Reset2FAReturn>; | ||
recoveryCodes(args: RecoveryCodesArgs, headers?: object): Promise<RecoveryCodesReturn>; | ||
resetRecoveryCodes(args: ResetRecoveryCodesArgs, headers?: object): Promise<ResetRecoveryCodesReturn>; | ||
ping(headers?: object, signal?: AbortSignal): Promise<PingReturn>; | ||
version(headers?: object, signal?: AbortSignal): Promise<VersionReturn>; | ||
runtimeStatus(headers?: object, signal?: AbortSignal): Promise<RuntimeStatusReturn>; | ||
getSignerConfig(args: GetSignerConfigArgs, headers?: object, signal?: AbortSignal): Promise<GetSignerConfigReturn>; | ||
sign(args: SignArgs, headers?: object, signal?: AbortSignal): Promise<SignReturn>; | ||
signWith(args: SignWithArgs, headers?: object, signal?: AbortSignal): Promise<SignWithReturn>; | ||
authMethods(args: AuthMethodsArgs, headers?: object, signal?: AbortSignal): Promise<AuthMethodsReturn>; | ||
setPIN(args: SetPINArgs, headers?: object, signal?: AbortSignal): Promise<SetPINReturn>; | ||
resetPIN(args: ResetPINArgs, headers?: object, signal?: AbortSignal): Promise<ResetPINReturn>; | ||
createTOTP(args: CreateTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CreateTOTPReturn>; | ||
commitTOTP(args: CommitTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CommitTOTPReturn>; | ||
resetTOTP(args: ResetTOTPArgs, headers?: object, signal?: AbortSignal): Promise<ResetTOTPReturn>; | ||
reset2FA(args: Reset2FAArgs, headers?: object, signal?: AbortSignal): Promise<Reset2FAReturn>; | ||
recoveryCodes(args: RecoveryCodesArgs, headers?: object, signal?: AbortSignal): Promise<RecoveryCodesReturn>; | ||
resetRecoveryCodes(args: ResetRecoveryCodesArgs, headers?: object, signal?: AbortSignal): Promise<ResetRecoveryCodesReturn>; | ||
} | ||
@@ -164,23 +164,107 @@ export interface PingArgs { | ||
private url; | ||
ping: (headers?: object | undefined) => Promise<PingReturn>; | ||
version: (headers?: object | undefined) => Promise<VersionReturn>; | ||
runtimeStatus: (headers?: object | undefined) => Promise<RuntimeStatusReturn>; | ||
getSignerConfig: (args: GetSignerConfigArgs, headers?: object | undefined) => Promise<GetSignerConfigReturn>; | ||
sign: (args: SignArgs, headers?: object | undefined) => Promise<SignReturn>; | ||
signWith: (args: SignWithArgs, headers?: object | undefined) => Promise<SignWithReturn>; | ||
authMethods: (args: AuthMethodsArgs, headers?: object | undefined) => Promise<AuthMethodsReturn>; | ||
setPIN: (args: SetPINArgs, headers?: object | undefined) => Promise<SetPINReturn>; | ||
resetPIN: (args: ResetPINArgs, headers?: object | undefined) => Promise<ResetPINReturn>; | ||
createTOTP: (args: CreateTOTPArgs, headers?: object | undefined) => Promise<CreateTOTPReturn>; | ||
commitTOTP: (args: CommitTOTPArgs, headers?: object | undefined) => Promise<CommitTOTPReturn>; | ||
resetTOTP: (args: ResetTOTPArgs, headers?: object | undefined) => Promise<ResetTOTPReturn>; | ||
reset2FA: (args: Reset2FAArgs, headers?: object | undefined) => Promise<Reset2FAReturn>; | ||
recoveryCodes: (args: RecoveryCodesArgs, headers?: object | undefined) => Promise<RecoveryCodesReturn>; | ||
resetRecoveryCodes: (args: ResetRecoveryCodesArgs, headers?: object | undefined) => Promise<ResetRecoveryCodesReturn>; | ||
ping: (headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<PingReturn>; | ||
version: (headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<VersionReturn>; | ||
runtimeStatus: (headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<RuntimeStatusReturn>; | ||
getSignerConfig: (args: GetSignerConfigArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<GetSignerConfigReturn>; | ||
sign: (args: SignArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<SignReturn>; | ||
signWith: (args: SignWithArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<SignWithReturn>; | ||
authMethods: (args: AuthMethodsArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<AuthMethodsReturn>; | ||
setPIN: (args: SetPINArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<SetPINReturn>; | ||
resetPIN: (args: ResetPINArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<ResetPINReturn>; | ||
createTOTP: (args: CreateTOTPArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<CreateTOTPReturn>; | ||
commitTOTP: (args: CommitTOTPArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<CommitTOTPReturn>; | ||
resetTOTP: (args: ResetTOTPArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<ResetTOTPReturn>; | ||
reset2FA: (args: Reset2FAArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<Reset2FAReturn>; | ||
recoveryCodes: (args: RecoveryCodesArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<RecoveryCodesReturn>; | ||
resetRecoveryCodes: (args: ResetRecoveryCodesArgs, headers?: object | undefined, signal?: AbortSignal | undefined) => Promise<ResetRecoveryCodesReturn>; | ||
} | ||
export interface WebRPCError extends Error { | ||
code: string; | ||
export declare class WebrpcError extends Error { | ||
name: string; | ||
code: number; | ||
message: string; | ||
status: number; | ||
cause?: string; | ||
/** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */ | ||
msg: string; | ||
status: number; | ||
constructor(name: string, code: number, message: string, status: number, cause?: string); | ||
static new(payload: any): WebrpcError; | ||
} | ||
export declare class WebrpcEndpointError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcRequestFailedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcBadRouteError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcBadMethodError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcBadRequestError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcBadResponseError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcServerPanicError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcInternalErrorError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcClientDisconnectedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcStreamLostError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class WebrpcStreamFinishedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class UnauthorizedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class SessionExpiredError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class AbortedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class InvalidArgumentError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class UnavailableError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class QueryFailedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class ValidationFailedError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare class NotFoundError extends WebrpcError { | ||
constructor(name?: string, code?: number, message?: string, status?: number, cause?: string); | ||
} | ||
export declare enum errors { | ||
WebrpcEndpoint = "WebrpcEndpoint", | ||
WebrpcRequestFailed = "WebrpcRequestFailed", | ||
WebrpcBadRoute = "WebrpcBadRoute", | ||
WebrpcBadMethod = "WebrpcBadMethod", | ||
WebrpcBadRequest = "WebrpcBadRequest", | ||
WebrpcBadResponse = "WebrpcBadResponse", | ||
WebrpcServerPanic = "WebrpcServerPanic", | ||
WebrpcInternalError = "WebrpcInternalError", | ||
WebrpcClientDisconnected = "WebrpcClientDisconnected", | ||
WebrpcStreamLost = "WebrpcStreamLost", | ||
WebrpcStreamFinished = "WebrpcStreamFinished", | ||
Unauthorized = "Unauthorized", | ||
SessionExpired = "SessionExpired", | ||
Aborted = "Aborted", | ||
InvalidArgument = "InvalidArgument", | ||
Unavailable = "Unavailable", | ||
QueryFailed = "QueryFailed", | ||
ValidationFailed = "ValidationFailed", | ||
NotFound = "NotFound" | ||
} | ||
export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response>; |
{ | ||
"name": "@0xsequence/guard", | ||
"version": "0.0.0-20240429153138", | ||
"version": "0.0.0-20240429172204", | ||
"description": "guard sub-package for Sequence", | ||
@@ -13,6 +13,6 @@ "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/guard", | ||
"ethers": "^5.7.2", | ||
"@0xsequence/signhub": "0.0.0-20240429153138", | ||
"@0xsequence/account": "0.0.0-20240429153138", | ||
"@0xsequence/core": "0.0.0-20240429153138", | ||
"@0xsequence/utils": "0.0.0-20240429153138" | ||
"@0xsequence/account": "0.0.0-20240429172204", | ||
"@0xsequence/utils": "0.0.0-20240429172204", | ||
"@0xsequence/core": "0.0.0-20240429172204", | ||
"@0xsequence/signhub": "0.0.0-20240429172204" | ||
}, | ||
@@ -19,0 +19,0 @@ "files": [ |
/* eslint-disable */ | ||
// sequence-guard v0.4.0 2e5d6a4c9b797598078365d7439f330bc7bbf29c | ||
// sequence-guard v0.4.0 12059311f086716f467356ed38189f565d5f172a | ||
// -- | ||
// Code generated by webrpc-gen@v0.12.x-dev with typescript@v0.10.0 generator. DO NOT EDIT. | ||
// Code generated by webrpc-gen@v0.18.6 with typescript generator. DO NOT EDIT. | ||
// | ||
// webrpc-gen -schema=guard.ridl -target=typescript@v0.10.0 -client -out=./clients/guard.gen.ts | ||
// webrpc-gen -schema=guard.ridl -target=typescript -client -out=./clients/guard.gen.ts | ||
@@ -15,3 +15,3 @@ // WebRPC description and code-gen version | ||
// Schema hash generated from your RIDL schema | ||
export const WebRPCSchemaHash = '2e5d6a4c9b797598078365d7439f330bc7bbf29c' | ||
export const WebRPCSchemaHash = '12059311f086716f467356ed38189f565d5f172a' | ||
@@ -72,17 +72,17 @@ // | ||
export interface Guard { | ||
ping(headers?: object): Promise<PingReturn> | ||
version(headers?: object): Promise<VersionReturn> | ||
runtimeStatus(headers?: object): Promise<RuntimeStatusReturn> | ||
getSignerConfig(args: GetSignerConfigArgs, headers?: object): Promise<GetSignerConfigReturn> | ||
sign(args: SignArgs, headers?: object): Promise<SignReturn> | ||
signWith(args: SignWithArgs, headers?: object): Promise<SignWithReturn> | ||
authMethods(args: AuthMethodsArgs, headers?: object): Promise<AuthMethodsReturn> | ||
setPIN(args: SetPINArgs, headers?: object): Promise<SetPINReturn> | ||
resetPIN(args: ResetPINArgs, headers?: object): Promise<ResetPINReturn> | ||
createTOTP(args: CreateTOTPArgs, headers?: object): Promise<CreateTOTPReturn> | ||
commitTOTP(args: CommitTOTPArgs, headers?: object): Promise<CommitTOTPReturn> | ||
resetTOTP(args: ResetTOTPArgs, headers?: object): Promise<ResetTOTPReturn> | ||
reset2FA(args: Reset2FAArgs, headers?: object): Promise<Reset2FAReturn> | ||
recoveryCodes(args: RecoveryCodesArgs, headers?: object): Promise<RecoveryCodesReturn> | ||
resetRecoveryCodes(args: ResetRecoveryCodesArgs, headers?: object): Promise<ResetRecoveryCodesReturn> | ||
ping(headers?: object, signal?: AbortSignal): Promise<PingReturn> | ||
version(headers?: object, signal?: AbortSignal): Promise<VersionReturn> | ||
runtimeStatus(headers?: object, signal?: AbortSignal): Promise<RuntimeStatusReturn> | ||
getSignerConfig(args: GetSignerConfigArgs, headers?: object, signal?: AbortSignal): Promise<GetSignerConfigReturn> | ||
sign(args: SignArgs, headers?: object, signal?: AbortSignal): Promise<SignReturn> | ||
signWith(args: SignWithArgs, headers?: object, signal?: AbortSignal): Promise<SignWithReturn> | ||
authMethods(args: AuthMethodsArgs, headers?: object, signal?: AbortSignal): Promise<AuthMethodsReturn> | ||
setPIN(args: SetPINArgs, headers?: object, signal?: AbortSignal): Promise<SetPINReturn> | ||
resetPIN(args: ResetPINArgs, headers?: object, signal?: AbortSignal): Promise<ResetPINReturn> | ||
createTOTP(args: CreateTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CreateTOTPReturn> | ||
commitTOTP(args: CommitTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CommitTOTPReturn> | ||
resetTOTP(args: ResetTOTPArgs, headers?: object, signal?: AbortSignal): Promise<ResetTOTPReturn> | ||
reset2FA(args: Reset2FAArgs, headers?: object, signal?: AbortSignal): Promise<Reset2FAReturn> | ||
recoveryCodes(args: RecoveryCodesArgs, headers?: object, signal?: AbortSignal): Promise<RecoveryCodesReturn> | ||
resetRecoveryCodes(args: ResetRecoveryCodesArgs, headers?: object, signal?: AbortSignal): Promise<ResetRecoveryCodesReturn> | ||
} | ||
@@ -211,157 +211,231 @@ | ||
ping = (headers?: object): Promise<PingReturn> => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
status: <boolean>_data.status | ||
} | ||
}) | ||
}) | ||
ping = (headers?: object, signal?: AbortSignal): Promise<PingReturn> => { | ||
return this.fetch(this.url('Ping'), createHTTPRequest({}, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
status: <boolean>_data.status | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
version = (headers?: object): Promise<VersionReturn> => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
version: <Version>_data.version | ||
} | ||
}) | ||
}) | ||
version = (headers?: object, signal?: AbortSignal): Promise<VersionReturn> => { | ||
return this.fetch(this.url('Version'), createHTTPRequest({}, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
version: <Version>_data.version | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
runtimeStatus = (headers?: object): Promise<RuntimeStatusReturn> => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
status: <RuntimeStatus>_data.status | ||
} | ||
}) | ||
}) | ||
runtimeStatus = (headers?: object, signal?: AbortSignal): Promise<RuntimeStatusReturn> => { | ||
return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
status: <RuntimeStatus>_data.status | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
getSignerConfig = (args: GetSignerConfigArgs, headers?: object): Promise<GetSignerConfigReturn> => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
signerConfig: <WalletConfig>_data.signerConfig | ||
} | ||
}) | ||
}) | ||
getSignerConfig = (args: GetSignerConfigArgs, headers?: object, signal?: AbortSignal): Promise<GetSignerConfigReturn> => { | ||
return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
signerConfig: <WalletConfig>_data.signerConfig | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
sign = (args: SignArgs, headers?: object): Promise<SignReturn> => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
sig: <string>_data.sig | ||
} | ||
}) | ||
}) | ||
sign = (args: SignArgs, headers?: object, signal?: AbortSignal): Promise<SignReturn> => { | ||
return this.fetch(this.url('Sign'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
sig: <string>_data.sig | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
signWith = (args: SignWithArgs, headers?: object): Promise<SignWithReturn> => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
sig: <string>_data.sig | ||
} | ||
}) | ||
}) | ||
signWith = (args: SignWithArgs, headers?: object, signal?: AbortSignal): Promise<SignWithReturn> => { | ||
return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
sig: <string>_data.sig | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
authMethods = (args: AuthMethodsArgs, headers?: object): Promise<AuthMethodsReturn> => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
methods: <Array<string>>_data.methods, | ||
active: <boolean>_data.active | ||
} | ||
}) | ||
}) | ||
authMethods = (args: AuthMethodsArgs, headers?: object, signal?: AbortSignal): Promise<AuthMethodsReturn> => { | ||
return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
methods: <Array<string>>_data.methods, | ||
active: <boolean>_data.active | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
setPIN = (args: SetPINArgs, headers?: object): Promise<SetPINReturn> => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}) | ||
setPIN = (args: SetPINArgs, headers?: object, signal?: AbortSignal): Promise<SetPINReturn> => { | ||
return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
resetPIN = (args: ResetPINArgs, headers?: object): Promise<ResetPINReturn> => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}) | ||
resetPIN = (args: ResetPINArgs, headers?: object, signal?: AbortSignal): Promise<ResetPINReturn> => { | ||
return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
createTOTP = (args: CreateTOTPArgs, headers?: object): Promise<CreateTOTPReturn> => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
uri: <string>_data.uri | ||
} | ||
}) | ||
}) | ||
createTOTP = (args: CreateTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CreateTOTPReturn> => { | ||
return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
uri: <string>_data.uri | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
commitTOTP = (args: CommitTOTPArgs, headers?: object): Promise<CommitTOTPReturn> => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}) | ||
commitTOTP = (args: CommitTOTPArgs, headers?: object, signal?: AbortSignal): Promise<CommitTOTPReturn> => { | ||
return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
resetTOTP = (args: ResetTOTPArgs, headers?: object): Promise<ResetTOTPReturn> => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}) | ||
resetTOTP = (args: ResetTOTPArgs, headers?: object, signal?: AbortSignal): Promise<ResetTOTPReturn> => { | ||
return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
reset2FA = (args: Reset2FAArgs, headers?: object): Promise<Reset2FAReturn> => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}) | ||
reset2FA = (args: Reset2FAArgs, headers?: object, signal?: AbortSignal): Promise<Reset2FAReturn> => { | ||
return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return {} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
recoveryCodes = (args: RecoveryCodesArgs, headers?: object): Promise<RecoveryCodesReturn> => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}) | ||
recoveryCodes = (args: RecoveryCodesArgs, headers?: object, signal?: AbortSignal): Promise<RecoveryCodesReturn> => { | ||
return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
resetRecoveryCodes = (args: ResetRecoveryCodesArgs, headers?: object): Promise<ResetRecoveryCodesReturn> => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers)).then(res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}) | ||
resetRecoveryCodes = ( | ||
args: ResetRecoveryCodesArgs, | ||
headers?: object, | ||
signal?: AbortSignal | ||
): Promise<ResetRecoveryCodesReturn> => { | ||
return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers, signal)).then( | ||
res => { | ||
return buildResponse(res).then(_data => { | ||
return { | ||
codes: <Array<RecoveryCode>>_data.codes | ||
} | ||
}) | ||
}, | ||
error => { | ||
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error.message || ''}` }) | ||
} | ||
) | ||
} | ||
} | ||
export interface WebRPCError extends Error { | ||
code: string | ||
msg: string | ||
status: number | ||
} | ||
const createHTTPRequest = (body: object = {}, headers: object = {}): object => { | ||
const createHTTPRequest = (body: object = {}, headers: object = {}, signal: AbortSignal | null = null): object => { | ||
return { | ||
method: 'POST', | ||
headers: { ...headers, 'Content-Type': 'application/json' }, | ||
body: JSON.stringify(body || {}) | ||
body: JSON.stringify(body || {}), | ||
signal | ||
} | ||
@@ -375,7 +449,15 @@ } | ||
data = JSON.parse(text) | ||
} catch (err) { | ||
throw { code: 'unknown', msg: `expecting JSON, got: ${text}`, status: res.status } as WebRPCError | ||
} catch (error) { | ||
let message = '' | ||
if (error instanceof Error) { | ||
message = error.message | ||
} | ||
throw WebrpcBadResponseError.new({ | ||
status: res.status, | ||
cause: `JSON.parse(): ${message}: response text: ${text}` | ||
}) | ||
} | ||
if (!res.ok) { | ||
throw data // webrpc error response | ||
const code: number = typeof data.code === 'number' ? data.code : 0 | ||
throw (webrpcErrorByCode[code] || WebrpcError).new(data) | ||
} | ||
@@ -386,2 +468,327 @@ return data | ||
// | ||
// Errors | ||
// | ||
export class WebrpcError extends Error { | ||
name: string | ||
code: number | ||
message: string | ||
status: number | ||
cause?: string | ||
/** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */ | ||
msg: string | ||
constructor(name: string, code: number, message: string, status: number, cause?: string) { | ||
super(message) | ||
this.name = name || 'WebrpcError' | ||
this.code = typeof code === 'number' ? code : 0 | ||
this.message = message || `endpoint error ${this.code}` | ||
this.msg = this.message | ||
this.status = typeof status === 'number' ? status : 0 | ||
this.cause = cause | ||
Object.setPrototypeOf(this, WebrpcError.prototype) | ||
} | ||
static new(payload: any): WebrpcError { | ||
return new this(payload.error, payload.code, payload.message || payload.msg, payload.status, payload.cause) | ||
} | ||
} | ||
// Webrpc errors | ||
export class WebrpcEndpointError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcEndpoint', | ||
code: number = 0, | ||
message: string = 'endpoint error', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcEndpointError.prototype) | ||
} | ||
} | ||
export class WebrpcRequestFailedError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcRequestFailed', | ||
code: number = -1, | ||
message: string = 'request failed', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcRequestFailedError.prototype) | ||
} | ||
} | ||
export class WebrpcBadRouteError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcBadRoute', | ||
code: number = -2, | ||
message: string = 'bad route', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcBadRouteError.prototype) | ||
} | ||
} | ||
export class WebrpcBadMethodError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcBadMethod', | ||
code: number = -3, | ||
message: string = 'bad method', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcBadMethodError.prototype) | ||
} | ||
} | ||
export class WebrpcBadRequestError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcBadRequest', | ||
code: number = -4, | ||
message: string = 'bad request', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcBadRequestError.prototype) | ||
} | ||
} | ||
export class WebrpcBadResponseError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcBadResponse', | ||
code: number = -5, | ||
message: string = 'bad response', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcBadResponseError.prototype) | ||
} | ||
} | ||
export class WebrpcServerPanicError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcServerPanic', | ||
code: number = -6, | ||
message: string = 'server panic', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcServerPanicError.prototype) | ||
} | ||
} | ||
export class WebrpcInternalErrorError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcInternalError', | ||
code: number = -7, | ||
message: string = 'internal error', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcInternalErrorError.prototype) | ||
} | ||
} | ||
export class WebrpcClientDisconnectedError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcClientDisconnected', | ||
code: number = -8, | ||
message: string = 'client disconnected', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcClientDisconnectedError.prototype) | ||
} | ||
} | ||
export class WebrpcStreamLostError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcStreamLost', | ||
code: number = -9, | ||
message: string = 'stream lost', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcStreamLostError.prototype) | ||
} | ||
} | ||
export class WebrpcStreamFinishedError extends WebrpcError { | ||
constructor( | ||
name: string = 'WebrpcStreamFinished', | ||
code: number = -10, | ||
message: string = 'stream finished', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, WebrpcStreamFinishedError.prototype) | ||
} | ||
} | ||
// Schema errors | ||
export class UnauthorizedError extends WebrpcError { | ||
constructor( | ||
name: string = 'Unauthorized', | ||
code: number = 1000, | ||
message: string = 'Unauthorized access', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, UnauthorizedError.prototype) | ||
} | ||
} | ||
export class SessionExpiredError extends WebrpcError { | ||
constructor( | ||
name: string = 'SessionExpired', | ||
code: number = 1002, | ||
message: string = 'Session expired', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, SessionExpiredError.prototype) | ||
} | ||
} | ||
export class AbortedError extends WebrpcError { | ||
constructor( | ||
name: string = 'Aborted', | ||
code: number = 1005, | ||
message: string = 'Request aborted', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, AbortedError.prototype) | ||
} | ||
} | ||
export class InvalidArgumentError extends WebrpcError { | ||
constructor( | ||
name: string = 'InvalidArgument', | ||
code: number = 2001, | ||
message: string = 'Invalid argument', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, InvalidArgumentError.prototype) | ||
} | ||
} | ||
export class UnavailableError extends WebrpcError { | ||
constructor( | ||
name: string = 'Unavailable', | ||
code: number = 2002, | ||
message: string = 'Unavailable resource', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, UnavailableError.prototype) | ||
} | ||
} | ||
export class QueryFailedError extends WebrpcError { | ||
constructor( | ||
name: string = 'QueryFailed', | ||
code: number = 2003, | ||
message: string = 'Query failed', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, QueryFailedError.prototype) | ||
} | ||
} | ||
export class ValidationFailedError extends WebrpcError { | ||
constructor( | ||
name: string = 'ValidationFailed', | ||
code: number = 2004, | ||
message: string = 'Validation Failed', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, ValidationFailedError.prototype) | ||
} | ||
} | ||
export class NotFoundError extends WebrpcError { | ||
constructor( | ||
name: string = 'NotFound', | ||
code: number = 3000, | ||
message: string = 'Resource not found', | ||
status: number = 0, | ||
cause?: string | ||
) { | ||
super(name, code, message, status, cause) | ||
Object.setPrototypeOf(this, NotFoundError.prototype) | ||
} | ||
} | ||
export enum errors { | ||
WebrpcEndpoint = 'WebrpcEndpoint', | ||
WebrpcRequestFailed = 'WebrpcRequestFailed', | ||
WebrpcBadRoute = 'WebrpcBadRoute', | ||
WebrpcBadMethod = 'WebrpcBadMethod', | ||
WebrpcBadRequest = 'WebrpcBadRequest', | ||
WebrpcBadResponse = 'WebrpcBadResponse', | ||
WebrpcServerPanic = 'WebrpcServerPanic', | ||
WebrpcInternalError = 'WebrpcInternalError', | ||
WebrpcClientDisconnected = 'WebrpcClientDisconnected', | ||
WebrpcStreamLost = 'WebrpcStreamLost', | ||
WebrpcStreamFinished = 'WebrpcStreamFinished', | ||
Unauthorized = 'Unauthorized', | ||
SessionExpired = 'SessionExpired', | ||
Aborted = 'Aborted', | ||
InvalidArgument = 'InvalidArgument', | ||
Unavailable = 'Unavailable', | ||
QueryFailed = 'QueryFailed', | ||
ValidationFailed = 'ValidationFailed', | ||
NotFound = 'NotFound' | ||
} | ||
const webrpcErrorByCode: { [code: number]: any } = { | ||
[0]: WebrpcEndpointError, | ||
[-1]: WebrpcRequestFailedError, | ||
[-2]: WebrpcBadRouteError, | ||
[-3]: WebrpcBadMethodError, | ||
[-4]: WebrpcBadRequestError, | ||
[-5]: WebrpcBadResponseError, | ||
[-6]: WebrpcServerPanicError, | ||
[-7]: WebrpcInternalErrorError, | ||
[-8]: WebrpcClientDisconnectedError, | ||
[-9]: WebrpcStreamLostError, | ||
[-10]: WebrpcStreamFinishedError, | ||
[1000]: UnauthorizedError, | ||
[1002]: SessionExpiredError, | ||
[1005]: AbortedError, | ||
[2001]: InvalidArgumentError, | ||
[2002]: UnavailableError, | ||
[2003]: QueryFailedError, | ||
[2004]: ValidationFailedError, | ||
[3000]: NotFoundError | ||
} | ||
export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response> |
125042
3350
+ Added@0xsequence/abi@0.0.0-20240429172204(transitive)
+ Added@0xsequence/account@0.0.0-20240429172204(transitive)
+ Added@0xsequence/core@0.0.0-20240429172204(transitive)
+ Added@0xsequence/indexer@0.0.0-20240429172204(transitive)
+ Added@0xsequence/migration@0.0.0-20240429172204(transitive)
+ Added@0xsequence/network@0.0.0-20240429172204(transitive)
+ Added@0xsequence/relayer@0.0.0-20240429172204(transitive)
+ Added@0xsequence/replacer@0.0.0-20240429172204(transitive)
+ Added@0xsequence/sessions@0.0.0-20240429172204(transitive)
+ Added@0xsequence/signhub@0.0.0-20240429172204(transitive)
+ Added@0xsequence/utils@0.0.0-20240429172204(transitive)
+ Added@0xsequence/wallet@0.0.0-20240429172204(transitive)
- Removed@0xsequence/abi@0.0.0-20240429153138(transitive)
- Removed@0xsequence/account@0.0.0-20240429153138(transitive)
- Removed@0xsequence/core@0.0.0-20240429153138(transitive)
- Removed@0xsequence/indexer@0.0.0-20240429153138(transitive)
- Removed@0xsequence/migration@0.0.0-20240429153138(transitive)
- Removed@0xsequence/network@0.0.0-20240429153138(transitive)
- Removed@0xsequence/relayer@0.0.0-20240429153138(transitive)
- Removed@0xsequence/replacer@0.0.0-20240429153138(transitive)
- Removed@0xsequence/sessions@0.0.0-20240429153138(transitive)
- Removed@0xsequence/signhub@0.0.0-20240429153138(transitive)
- Removed@0xsequence/utils@0.0.0-20240429153138(transitive)
- Removed@0xsequence/wallet@0.0.0-20240429153138(transitive)