Comparing version 1.2.3 to 1.2.4
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -34,7 +25,7 @@ exports.fetchQuota = exports.fetchNodes = exports.NoMoreNodes = void 0; | ||
}; | ||
return retry((bail, num) => __awaiter(this, void 0, void 0, function* () { | ||
return retry(async (bail, num) => { | ||
if (num > 1) { | ||
log.verbose('Retrying', url.host.toString(), 'after', num - 1, 'failure(s)'); | ||
} | ||
const res = yield fetch(url, { headers }); | ||
const res = await fetch(url, { headers }); | ||
if (res.status !== 200) { | ||
@@ -48,6 +39,6 @@ log.info('Fetching nodes returned', res.status); | ||
case 403: // unauthorized | ||
return bail(new Error((yield res.json()))); | ||
return bail(new Error((await res.json()))); | ||
} | ||
return res.json(); | ||
}), DefaultBackoff); | ||
}, DefaultBackoff); | ||
} | ||
@@ -54,0 +45,0 @@ exports.fetchNodes = fetchNodes; |
@@ -89,3 +89,3 @@ "use strict"; | ||
const segTotal = ed.segmentsHistory.length; | ||
const latsRaw = ed.segmentsHistory.map((sId) => { var _a; return (_a = ed.segments.get(sId)) === null || _a === void 0 ? void 0 : _a.latency; }); | ||
const latsRaw = ed.segmentsHistory.map((sId) => ed.segments.get(sId)?.latency); | ||
const lats = latsRaw.filter((l) => !!l); | ||
@@ -92,0 +92,0 @@ const segSuccesses = lats.length; |
@@ -72,3 +72,3 @@ "use strict"; | ||
const total = xd.requestsHistory.length; | ||
const latsRaw = xd.requestsHistory.map((rId) => { var _a; return (_a = xd.requests.get(rId)) === null || _a === void 0 ? void 0 : _a.latency; }); | ||
const latsRaw = xd.requestsHistory.map((rId) => xd.requests.get(rId)?.latency); | ||
const lats = latsRaw.filter((l) => !!l); | ||
@@ -75,0 +75,0 @@ const successes = lats.length; |
@@ -25,11 +25,2 @@ "use strict"; | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -251,3 +242,2 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
this.sdkOps = (ops) => { | ||
var _a, _b, _c; | ||
return { | ||
@@ -257,6 +247,6 @@ discoveryPlatformEndpoint: ops.discoveryPlatformEndpoint || defaultOps.discoveryPlatformEndpoint, | ||
provider: ops.provider || defaultOps.provider, | ||
disableMevProtection: (_a = ops.disableMevProtection) !== null && _a !== void 0 ? _a : defaultOps.disableMevProtection, | ||
disableMevProtection: ops.disableMevProtection ?? defaultOps.disableMevProtection, | ||
mevProtectionProvider: ops.mevProtectionProvider || defaultOps.mevProtectionProvider, | ||
forceZeroHop: (_b = ops.forceZeroHop) !== null && _b !== void 0 ? _b : defaultOps.forceZeroHop, | ||
segmentLimit: (_c = ops.segmentLimit) !== null && _c !== void 0 ? _c : defaultOps.segmentLimit, | ||
forceZeroHop: ops.forceZeroHop ?? defaultOps.forceZeroHop, | ||
segmentLimit: ops.segmentLimit ?? defaultOps.segmentLimit, | ||
}; | ||
@@ -273,4 +263,4 @@ }; | ||
}; | ||
this.fetchChainId = (provider) => __awaiter(this, void 0, void 0, function* () { | ||
const res = yield ProviderAPI.fetchChainId(provider).catch((err) => log.error('Error fetching chainId for', provider, JSON.stringify(err))); | ||
this.fetchChainId = async (provider) => { | ||
const res = await ProviderAPI.fetchChainId(provider).catch((err) => log.error('Error fetching chainId for', provider, JSON.stringify(err))); | ||
if (!res) { | ||
@@ -285,3 +275,3 @@ return; | ||
this.chainIds.set(provider, id); | ||
}); | ||
}; | ||
this.determineProvider = ({ provider }, { method }) => { | ||
@@ -316,7 +306,5 @@ if (this.ops.disableMevProtection) { | ||
*/ | ||
isReady(timeout) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const t = timeout || this.ops.timeout; | ||
return this.nodesColl.ready(t).then((_) => true); | ||
}); | ||
async isReady(timeout) { | ||
const t = timeout || this.ops.timeout; | ||
return this.nodesColl.ready(t).then((_) => true); | ||
} | ||
@@ -327,73 +315,71 @@ /** | ||
*/ | ||
send(req, ops) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const reqOps = this.requestOps(ops); | ||
this.populateChainIds(ops === null || ops === void 0 ? void 0 : ops.provider); | ||
// TODO fixme | ||
// eslint-disable-next-line no-async-promise-executor | ||
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { | ||
// sanity check provider url | ||
if (!Utils.isValidURL(reqOps.provider)) { | ||
return reject('Cannot parse provider URL'); | ||
async send(req, ops) { | ||
const reqOps = this.requestOps(ops); | ||
this.populateChainIds(ops?.provider); | ||
// TODO fixme | ||
// eslint-disable-next-line no-async-promise-executor | ||
return new Promise(async (resolve, reject) => { | ||
// sanity check provider url | ||
if (!Utils.isValidURL(reqOps.provider)) { | ||
return reject('Cannot parse provider URL'); | ||
} | ||
// sanity check mev protection provider url, if it is set | ||
if (this.ops.mevProtectionProvider) { | ||
if (!Utils.isValidURL(this.ops.mevProtectionProvider)) { | ||
return reject('Cannot parse mevProtectionProvider URL'); | ||
} | ||
// sanity check mev protection provider url, if it is set | ||
if (this.ops.mevProtectionProvider) { | ||
if (!Utils.isValidURL(this.ops.mevProtectionProvider)) { | ||
return reject('Cannot parse mevProtectionProvider URL'); | ||
} | ||
} | ||
// gather entry - exit node pair | ||
const resNodes = yield this.nodesColl | ||
.requestNodePair(reqOps.timeout) | ||
.catch((err) => { | ||
log.error('Error finding node pair', err); | ||
return reject(`Could not find node pair in ${reqOps.timeout} ms`); | ||
}); | ||
if (!resNodes) { | ||
return reject(`Unexpected code flow - should never be here`); | ||
} | ||
const provider = this.determineProvider(reqOps, req); | ||
const headers = this.determineHeaders(provider, this.ops.mevKickbackAddress); | ||
const hops = this.determineHops(!!this.ops.forceZeroHop); | ||
// create request | ||
const { entryNode, exitNode } = resNodes; | ||
const id = RequestCache.generateId(this.requestCache); | ||
const resReq = Request.create({ | ||
id, | ||
provider, | ||
req, | ||
clientId: this.clientId, | ||
entryPeerId: entryNode.id, | ||
exitPeerId: exitNode.id, | ||
exitPublicKey: ethers_1.utils.arrayify(exitNode.pubKey), | ||
headers, | ||
hops, | ||
}); | ||
if (!resReq.success) { | ||
log.error('Error creating request', resReq.error); | ||
return reject('Unable to create request object'); | ||
} | ||
// split request to segments | ||
const request = resReq.req; | ||
const segments = Request.toSegments(request); | ||
const failMsg = this.checkSegmentLimit(segments.length); | ||
if (failMsg) { | ||
return reject(failMsg); | ||
} | ||
// set request expiration timer | ||
const timer = setTimeout(() => { | ||
log.error('request expired', request.id); | ||
this.removeRequest(request); | ||
return reject('request timed out'); | ||
}, reqOps.timeout); | ||
// track request | ||
const entry = RequestCache.add(this.requestCache, request, resolve, reject, timer); | ||
this.nodesColl.requestStarted(request); | ||
// send request to hoprd | ||
log.info('sending request %i', request.id); | ||
// queue segment sending for all of them | ||
segments.forEach((s) => setTimeout(() => { | ||
this.nodesColl.segmentStarted(request, s); | ||
this.sendSegment(request, s, entryNode, entry); | ||
})); | ||
} | ||
// gather entry - exit node pair | ||
const resNodes = await this.nodesColl | ||
.requestNodePair(reqOps.timeout) | ||
.catch((err) => { | ||
log.error('Error finding node pair', err); | ||
return reject(`Could not find node pair in ${reqOps.timeout} ms`); | ||
}); | ||
if (!resNodes) { | ||
return reject(`Unexpected code flow - should never be here`); | ||
} | ||
const provider = this.determineProvider(reqOps, req); | ||
const headers = this.determineHeaders(provider, this.ops.mevKickbackAddress); | ||
const hops = this.determineHops(!!this.ops.forceZeroHop); | ||
// create request | ||
const { entryNode, exitNode } = resNodes; | ||
const id = RequestCache.generateId(this.requestCache); | ||
const resReq = Request.create({ | ||
id, | ||
provider, | ||
req, | ||
clientId: this.clientId, | ||
entryPeerId: entryNode.id, | ||
exitPeerId: exitNode.id, | ||
exitPublicKey: ethers_1.utils.arrayify(exitNode.pubKey), | ||
headers, | ||
hops, | ||
}); | ||
if (!resReq.success) { | ||
log.error('Error creating request', resReq.error); | ||
return reject('Unable to create request object'); | ||
} | ||
// split request to segments | ||
const request = resReq.req; | ||
const segments = Request.toSegments(request); | ||
const failMsg = this.checkSegmentLimit(segments.length); | ||
if (failMsg) { | ||
return reject(failMsg); | ||
} | ||
// set request expiration timer | ||
const timer = setTimeout(() => { | ||
log.error('request expired', request.id); | ||
this.removeRequest(request); | ||
return reject('request timed out'); | ||
}, reqOps.timeout); | ||
// track request | ||
const entry = RequestCache.add(this.requestCache, request, resolve, reject, timer); | ||
this.nodesColl.requestStarted(request); | ||
// send request to hoprd | ||
log.info('sending request %i', request.id); | ||
// queue segment sending for all of them | ||
segments.forEach((s) => setTimeout(() => { | ||
this.nodesColl.segmentStarted(request, s); | ||
this.sendSegment(request, s, entryNode, entry); | ||
})); | ||
@@ -400,0 +386,0 @@ }); |
@@ -1,2 +0,2 @@ | ||
import WS = require('isomorphic-ws'); | ||
import WebSocket = require('isomorphic-ws'); | ||
/** | ||
@@ -48,3 +48,3 @@ * to be replaced with HOPR sdk soon. | ||
}; | ||
export declare function connectWS(conn: ConnInfo): WS.WebSocket; | ||
export declare function connectWS(conn: ConnInfo): WebSocket; | ||
export declare function sendMessage(conn: ConnInfo & { | ||
@@ -51,0 +51,0 @@ hops?: number; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getChannels = exports.getPeers = exports.accountAddresses = exports.deleteMessages = exports.retrieveMessages = exports.version = exports.sendMessage = exports.connectWS = void 0; | ||
const WS = require("isomorphic-ws"); | ||
const WebSocket = require("isomorphic-ws"); | ||
function connectWS(conn) { | ||
@@ -9,3 +9,3 @@ const wsURL = new URL('/api/v3/messages/websocket', conn.apiEndpoint); | ||
wsURL.search = `?apiToken=${conn.accessToken}`; | ||
return new WS.WebSocket(wsURL); | ||
return new WebSocket(wsURL); | ||
} | ||
@@ -12,0 +12,0 @@ exports.connectWS = connectWS; |
@@ -129,3 +129,7 @@ "use strict"; | ||
return Array.from(nodePairs.values()).reduce((acc, np) => { | ||
const perfs = Array.from(np.exitDatas).map(([xId, xd]) => (Object.assign(Object.assign({}, ExitData.perf(xd)), { entryNode: np.entryNode, exitNode: np.exitNodes.get(xId) }))); | ||
const perfs = Array.from(np.exitDatas).map(([xId, xd]) => ({ | ||
...ExitData.perf(xd), | ||
entryNode: np.entryNode, | ||
exitNode: np.exitNodes.get(xId), | ||
})); | ||
return acc.concat(perfs); | ||
@@ -170,3 +174,6 @@ }, []); | ||
const ed = nodePairs.get(entryNode.id).entryData; | ||
return Object.assign(Object.assign({}, EntryData.perf(ed)), { entryNode }); | ||
return { | ||
...EntryData.perf(ed), | ||
entryNode, | ||
}; | ||
}); | ||
@@ -173,0 +180,0 @@ } |
@@ -25,11 +25,2 @@ "use strict"; | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -65,3 +56,3 @@ const DPapi = __importStar(require("./dp-api")); | ||
*/ | ||
this.ready = (timeout) => __awaiter(this, void 0, void 0, function* () { | ||
this.ready = async (timeout) => { | ||
return new Promise((resolve, reject) => { | ||
@@ -85,7 +76,7 @@ const start = Date.now(); | ||
}); | ||
}); | ||
}; | ||
/** | ||
* Request primary node pair. | ||
*/ | ||
this.requestNodePair = (timeout) => __awaiter(this, void 0, void 0, function* () { | ||
this.requestNodePair = async (timeout) => { | ||
return new Promise((resolve, reject) => { | ||
@@ -109,3 +100,3 @@ const start = Date.now(); | ||
}); | ||
}); | ||
}; | ||
/** | ||
@@ -112,0 +103,0 @@ * Request secondary node pair. |
@@ -25,11 +25,2 @@ "use strict"; | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -42,8 +33,8 @@ exports.fetchRPC = exports.fetchChainId = void 0; | ||
const body = JSON.stringify(JRPC.chainId(provider)); | ||
return fetch(url, { headers, method: 'POST', body }).then((res) => __awaiter(this, void 0, void 0, function* () { | ||
return fetch(url, { headers, method: 'POST', body }).then(async (res) => { | ||
if (res.status !== 200) { | ||
throw new Error(`Unexpected response: ${res.status}, ${yield res.text()}`); | ||
throw new Error(`Unexpected response: ${res.status}, ${await res.text()}`); | ||
} | ||
return res.json(); | ||
})); | ||
}); | ||
} | ||
@@ -57,9 +48,9 @@ exports.fetchChainId = fetchChainId; | ||
fetch(url, { headers, method: 'POST', body }) | ||
.then((res) => __awaiter(this, void 0, void 0, function* () { | ||
.then(async (res) => { | ||
if (res.status !== 200) { | ||
return resolve({ status: res.status, message: yield res.text() }); | ||
return resolve({ status: res.status, message: await res.text() }); | ||
} | ||
const resp = (yield res.json()); | ||
const resp = (await res.json()); | ||
return resolve(resp); | ||
})) | ||
}) | ||
.catch(reject); | ||
@@ -70,3 +61,6 @@ }); | ||
function mergeHeaders(headers) { | ||
return Object.assign(Object.assign({}, headers), { 'Content-Type': 'application/json' }); | ||
return { | ||
...headers, | ||
'Content-Type': 'application/json', | ||
}; | ||
} |
@@ -12,5 +12,8 @@ "use strict"; | ||
function add(cache, request, resolve, reject, timer) { | ||
const entry = Object.assign(Object.assign({}, request), { resolve, | ||
const entry = { | ||
...request, | ||
resolve, | ||
reject, | ||
timer }); | ||
timer, | ||
}; | ||
cache.set(request.id, entry); | ||
@@ -24,4 +27,3 @@ return entry; | ||
function remove(cache, id) { | ||
var _a; | ||
const t = (_a = cache.get(id)) === null || _a === void 0 ? void 0 : _a.timer; | ||
const t = cache.get(id)?.timer; | ||
clearTimeout(t); | ||
@@ -28,0 +30,0 @@ cache.delete(id); |
{ | ||
"name": "@rpch/sdk", | ||
"version": "1.2.3", | ||
"version": "1.2.4", | ||
"license": "LGPL-3.0", | ||
@@ -34,4 +34,3 @@ "main": "./build/index.js", | ||
"@types/async-retry": "^1.4.5", | ||
"@types/debug": "^4.1.10", | ||
"eslint-plugin-compat": "^4.2.0" | ||
"@types/debug": "^4.1.10" | ||
}, | ||
@@ -41,10 +40,7 @@ "dependencies": { | ||
"async-retry": "^1.3.3", | ||
"debug": "^4.3.4", | ||
"ethers": "^5.7.2", | ||
"isomorphic-ws": "^5.0.0", | ||
"lz-string": "^1.5.0" | ||
}, | ||
"browserslist": [ | ||
"defaults", | ||
"not op_mini all" | ||
] | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
106561
2
45
11
6
2704
+ Addeddebug@^4.3.4
+ Addeddebug@4.4.0(transitive)
+ Addedms@2.1.3(transitive)