From 84fd68f9bdf91679a81904f8d61439bdbe8ad026 Mon Sep 17 00:00:00 2001 From: Niranjana Binoy <43930900+NiranjanaBinoy@users.noreply.github.com> Date: Tue, 15 Dec 2020 16:16:01 -0500 Subject: [PATCH] Replace 'url' dependency with native URL global (#67) --- package.json | 3 +++ src/fetch.js | 18 ++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index f8904cff..d74e4288 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,9 @@ "name": "eth-json-rpc-middleware", "version": "6.0.0", "main": "block-ref.js", + "engines": { + "node": ">=10.0.0" + }, "directories": { "test": "test" }, diff --git a/src/fetch.js b/src/fetch.js index 57b8b6d2..6c38aeff 100644 --- a/src/fetch.js +++ b/src/fetch.js @@ -1,4 +1,3 @@ -const url = require('url') const { ethErrors } = require('eth-rpc-errors') const btoa = require('btoa') const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware') @@ -69,6 +68,7 @@ function checkForHttpErrors (fetchRes) { case 503: case 504: throw createTimeoutError() + default: break } @@ -93,8 +93,8 @@ function parseResponse (fetchRes, body) { } function createFetchConfigFromReq ({ req, rpcUrl, originHttpHeaderKey }) { - // eslint-disable-next-line node/no-deprecated-api - const parsedUrl = url.parse(rpcUrl) + + const parsedUrl = new URL(rpcUrl) const fetchUrl = normalizeUrlFromParsed(parsedUrl) // prepare payload @@ -123,8 +123,9 @@ function createFetchConfigFromReq ({ req, rpcUrl, originHttpHeaderKey }) { } // encoded auth details as header (not allowed in fetch url) - if (parsedUrl.auth) { - const encodedAuth = btoa(parsedUrl.auth) + if (parsedUrl.username && parsedUrl.password) { + const authString = `${parsedUrl.username}:${parsedUrl.password}` + const encodedAuth = btoa(authString) fetchParams.headers.Authorization = `Basic ${encodedAuth}` } @@ -139,14 +140,11 @@ function createFetchConfigFromReq ({ req, rpcUrl, originHttpHeaderKey }) { function normalizeUrlFromParsed (parsedUrl) { let result = '' result += parsedUrl.protocol - if (parsedUrl.slashes) { - result += '//' - } - result += parsedUrl.hostname + result += `//${parsedUrl.hostname}` if (parsedUrl.port) { result += `:${parsedUrl.port}` } - result += `${parsedUrl.path}` + result += `${parsedUrl.pathname}` return result }