From 3b13eb7b44debf727c0ed7c75b42d0ea3c0a17b2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 16 Jul 2021 13:18:12 +0100 Subject: [PATCH] Prefer URL constructor over `url` dependency --- src/HtmlUtils.tsx | 5 +---- src/utils/HostingLink.js | 10 ++-------- src/utils/UrlUtils.ts | 4 ---- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 5e83fdc2a0..a37b7f0ac9 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -25,7 +25,6 @@ import _linkifyElement from 'linkifyjs/element'; import _linkifyString from 'linkifyjs/string'; import classNames from 'classnames'; import EMOJIBASE_REGEX from 'emojibase-regex'; -import url from 'url'; import katex from 'katex'; import { AllHtmlEntities } from 'html-entities'; import { IContent } from 'matrix-js-sdk/src/models/event'; @@ -153,10 +152,8 @@ export function getHtmlText(insaneHtml: string): string { */ export function isUrlPermitted(inputUrl: string): boolean { try { - const parsed = url.parse(inputUrl); - if (!parsed.protocol) return false; // URL parser protocol includes the trailing colon - return PERMITTED_URL_SCHEMES.includes(parsed.protocol.slice(0, -1)); + return PERMITTED_URL_SCHEMES.includes(new URL(inputUrl).protocol.slice(0, -1)); } catch (e) { return false; } diff --git a/src/utils/HostingLink.js b/src/utils/HostingLink.js index 7595bdd482..134e045ca2 100644 --- a/src/utils/HostingLink.js +++ b/src/utils/HostingLink.js @@ -14,11 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -import url from 'url'; - import SdkConfig from '../SdkConfig'; import { MatrixClientPeg } from '../MatrixClientPeg'; -import { urlSearchParamsToObject } from "./UrlUtils"; export function getHostingLink(campaign) { const hostingLink = SdkConfig.get().hosting_signup_link; @@ -28,11 +25,8 @@ export function getHostingLink(campaign) { if (MatrixClientPeg.get().getDomain() !== 'matrix.org') return null; try { - const hostingUrl = url.parse(hostingLink); - const params = urlSearchParamsToObject(new URLSearchParams(hostingUrl.query)); - params.utm_campaign = campaign; - hostingUrl.search = undefined; - hostingUrl.query = params; + const hostingUrl = new URL(hostingLink); + hostingUrl.searchParams.set("utm_campaign", campaign); return hostingUrl.format(); } catch (e) { return hostingLink; diff --git a/src/utils/UrlUtils.ts b/src/utils/UrlUtils.ts index 392b44c5e9..ba43340ff5 100644 --- a/src/utils/UrlUtils.ts +++ b/src/utils/UrlUtils.ts @@ -16,10 +16,6 @@ limitations under the License. import * as url from "url"; -export function urlSearchParamsToObject(params: URLSearchParams) { - return Object.fromEntries([...params.entries()]); -} - /** * If a url has no path component, etc. abbreviate it to just the hostname *