From e62fdd0ee6c8a0c69d7cce67974f2cb3e27ddea6 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 25 Jan 2022 15:53:40 +0000 Subject: [PATCH 1/3] Remove redundant return --- src/linkify-matrix.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/linkify-matrix.ts b/src/linkify-matrix.ts index dbbece90331..fbd27d7b8a6 100644 --- a/src/linkify-matrix.ts +++ b/src/linkify-matrix.ts @@ -245,7 +245,7 @@ export const options = { // Run the plugins registerPlugin(Type.RoomAlias, ({ scanner, parser, utils }) => { const token = scanner.tokens.POUND as '#'; - return matrixOpaqueIdLinkifyParser({ + matrixOpaqueIdLinkifyParser({ scanner, parser, utils, @@ -256,7 +256,7 @@ registerPlugin(Type.RoomAlias, ({ scanner, parser, utils }) => { registerPlugin(Type.GroupId, ({ scanner, parser, utils }) => { const token = scanner.tokens.PLUS as '+'; - return matrixOpaqueIdLinkifyParser({ + matrixOpaqueIdLinkifyParser({ scanner, parser, utils, @@ -267,7 +267,7 @@ registerPlugin(Type.GroupId, ({ scanner, parser, utils }) => { registerPlugin(Type.UserId, ({ scanner, parser, utils }) => { const token = scanner.tokens.AT as '@'; - return matrixOpaqueIdLinkifyParser({ + matrixOpaqueIdLinkifyParser({ scanner, parser, utils, From f6ce4a2e88e77cddc87048d3c5d28dc85bdac3a1 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 25 Jan 2022 17:14:38 +0000 Subject: [PATCH 2/3] Upgrade linkifyjs to fix schemes as domain prefixes This pulls in https://github.com/matrix-org/linkifyjs/commit/7a723dc0492d0fd46b64d6d536bb116a8db5ba49 so that schemes are allowed to appear as the prefix of a domain. Fixes https://github.com/vector-im/element-web/issues/20720 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0abe106ead4..1ac0c7b28d1 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@babel/runtime": "^7.12.5", "@matrix-org/linkify-element": "^4.0.0-rc.5", "@matrix-org/linkify-string": "^4.0.0-rc.5", - "@matrix-org/linkifyjs": "^4.0.0-rc.5", + "@matrix-org/linkifyjs": "^4.0.0-rc.6", "@sentry/browser": "^6.11.0", "@sentry/tracing": "^6.11.0", "@types/geojson": "^7946.0.8", diff --git a/yarn.lock b/yarn.lock index 0a84b2fbf5b..1e91b21ada5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1394,10 +1394,10 @@ resolved "https://registry.yarnpkg.com/@matrix-org/linkify-string/-/linkify-string-4.0.0-rc.5.tgz#139ba23c70a4f5b531656365a6109c122177b132" integrity sha512-WFyu6+kVEPJsDwZwgCSrtUDeIMDdWIFzRRq5z+MLYHiO3J8G19jvRjRnNm4dwjDUqROWhvWS9b8JG7rbuwjkLQ== -"@matrix-org/linkifyjs@^4.0.0-rc.5": - version "4.0.0-rc.5" - resolved "https://registry.yarnpkg.com/@matrix-org/linkifyjs/-/linkifyjs-4.0.0-rc.5.tgz#3a2885754a8de51164a30e6e09909173e348d6bb" - integrity sha512-HGmEZuUzCOzdsUFM5dQK2R2KhBFnxRfye5CYJhM2EpRTO4t5aTcR6Ey09HuJ/DZevQ9GTFUjkuKAKurQhnAfOA== +"@matrix-org/linkifyjs@^4.0.0-rc.6": + version "4.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@matrix-org/linkifyjs/-/linkifyjs-4.0.0-rc.6.tgz#62bce99272e0b2a78896b01651d8b26602247f32" + integrity sha512-RoBejrxlv8jJjaZ9itTx0+JW8ECNEvj7iJzbD1rGhToLZjRZ5qXexWIa3+Vu4qmm+Yic+ETPCSH7odYWSYj/fA== "@matrix-org/olm@https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz": version "3.2.8" From 269d2020e15e22c882d9bf4d45f151d7edf1ca36 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 25 Jan 2022 17:25:05 +0000 Subject: [PATCH 3/3] Add tests --- test/linkify-matrix-test.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/test/linkify-matrix-test.ts b/test/linkify-matrix-test.ts index 3e5b7f5b08d..a651252ea65 100644 --- a/test/linkify-matrix-test.ts +++ b/test/linkify-matrix-test.ts @@ -278,7 +278,7 @@ describe('linkify-matrix', () => { }); describe('matrix uri', () => { - const AcceptedMatrixUris = [ + const acceptedMatrixUris = [ 'matrix:u/foo_bar:server.uk', 'matrix:r/foo-bar:server.uk', 'matrix:roomid/somewhere:example.org?via=elsewhere.ca', @@ -287,7 +287,7 @@ describe('linkify-matrix', () => { 'matrix:roomid/somewhere:example.org/e/event?via=elsewhere.ca', 'matrix:u/alice:example.org?action=chat', ]; - for (const matrixUri of AcceptedMatrixUris) { + for (const matrixUri of acceptedMatrixUris) { it('accepts ' + matrixUri, () => { const test = matrixUri; const found = linkify.find(test); @@ -302,4 +302,27 @@ describe('linkify-matrix', () => { }); } }); + + describe("matrix-prefixed domains", () => { + const acceptedDomains = [ + 'matrix.org', + 'matrix.to', + 'matrix-help.org', + 'matrix123.org', + ]; + for (const domain of acceptedDomains) { + it('accepts ' + domain, () => { + const test = domain; + const found = linkify.find(test); + expect(found).toEqual(([{ + href: `http://${domain}`, + type: Type.URL, + value: domain, + end: domain.length, + start: 0, + isLink: true, + }])); + }); + } + }); });