aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2024-01-10 11:33:20 +0100
committerSimon Ser <contact@emersion.fr>2024-01-10 11:33:20 +0100
commit0640ff871261087dd3589fd0c04882bc147e4d0c (patch)
treed57ef9b2c57c16e3b390e2361611d1b201aaa49e
parent67b2b075068780a69abc5b4352d177aeff97e5cf (diff)
downloadgamja-0640ff871261087dd3589fd0c04882bc147e4d0c.tar.gz
gamja-0640ff871261087dd3589fd0c04882bc147e4d0c.zip
Upgrade linkifyjs to v4
-rw-r--r--lib/index.js2
-rw-r--r--lib/linkify.js52
-rw-r--r--package-lock.json8
-rw-r--r--package.json2
4 files changed, 30 insertions, 34 deletions
diff --git a/lib/index.js b/lib/index.js
index 1b480b3..122c215 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -4,5 +4,5 @@ import { h } from "../node_modules/preact/dist/preact.module.js";
import htm from "../node_modules/htm/dist/htm.module.js";
export const html = htm.bind(h);
-import * as linkifyjs from "../node_modules/linkifyjs/dist/linkify.module.js";
+import * as linkifyjs from "../node_modules/linkifyjs/dist/linkify.es.js";
export { linkifyjs };
diff --git a/lib/linkify.js b/lib/linkify.js
index 6004a31..f72dea5 100644
--- a/lib/linkify.js
+++ b/lib/linkify.js
@@ -5,35 +5,31 @@ linkifyjs.options.defaults.defaultProtocol = "https";
linkifyjs.registerCustomProtocol("irc");
linkifyjs.registerCustomProtocol("ircs");
-linkifyjs.registerPlugin("ircChannel", ({ scanner, parser, utils }) => {
- const { POUND, DOMAIN, TLD, LOCALHOST, UNDERSCORE, DOT, HYPHEN } = scanner.tokens;
- const START_STATE = parser.start;
-
- const Channel = utils.createTokenClass("ircChannel", {
- isLink: true,
- toHref() {
- return "irc:///" + this.toString();
- },
- });
-
- const HASH_STATE = START_STATE.tt(POUND);
-
- const CHAN_STATE = HASH_STATE.tt(DOMAIN, Channel);
- HASH_STATE.tt(TLD, CHAN_STATE);
- HASH_STATE.tt(LOCALHOST, CHAN_STATE);
- HASH_STATE.tt(POUND, CHAN_STATE);
-
- CHAN_STATE.tt(UNDERSCORE, CHAN_STATE);
- CHAN_STATE.tt(DOMAIN, CHAN_STATE);
- CHAN_STATE.tt(TLD, CHAN_STATE);
- CHAN_STATE.tt(LOCALHOST, CHAN_STATE);
-
- const CHAN_DIVIDER_STATE = CHAN_STATE.tt(DOT);
+const IRCChannelToken = linkifyjs.createTokenClass("ircChannel", {
+ isLink: true,
+ toHref() {
+ return "irc:///" + this.v;
+ },
+});
- CHAN_DIVIDER_STATE.tt(UNDERSCORE, CHAN_STATE);
- CHAN_DIVIDER_STATE.tt(DOMAIN, CHAN_STATE);
- CHAN_DIVIDER_STATE.tt(TLD, CHAN_STATE);
- CHAN_DIVIDER_STATE.tt(LOCALHOST, CHAN_STATE);
+linkifyjs.registerPlugin("ircChannel", ({ scanner, parser }) => {
+ const { POUND, UNDERSCORE, DOT, HYPHEN } = scanner.tokens;
+ const { alphanumeric } = scanner.tokens.groups;
+
+ const Prefix = parser.start.tt(POUND);
+ const Channel = new linkifyjs.State(IRCChannelToken);
+ const Divider = Channel.tt(DOT);
+
+ Prefix.ta(alphanumeric, Channel);
+ Prefix.tt(POUND, Channel);
+ Prefix.tt(UNDERSCORE, Channel);
+ Prefix.tt(DOT, Divider);
+ Prefix.tt(HYPHEN, Channel);
+ Channel.ta(alphanumeric, Channel);
+ Channel.tt(POUND, Channel);
+ Channel.tt(UNDERSCORE, Channel);
+ Channel.tt(HYPHEN, Channel);
+ Divider.ta(alphanumeric, Channel);
});
export default function linkify(text, onClick) {
diff --git a/package-lock.json b/package-lock.json
index bb02aed..162d1a6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,7 @@
"name": "gamja",
"dependencies": {
"htm": "^3.0.4",
- "linkifyjs": "^3.0.2",
+ "linkifyjs": "^4.1.3",
"preact": "^10.5.9"
},
"devDependencies": {
@@ -3080,9 +3080,9 @@
"dev": true
},
"node_modules/linkifyjs": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-3.0.5.tgz",
- "integrity": "sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg=="
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz",
+ "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg=="
},
"node_modules/lmdb": {
"version": "2.8.5",
diff --git a/package.json b/package.json
index 3628469..2dec05d 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"type": "module",
"dependencies": {
"htm": "^3.0.4",
- "linkifyjs": "^3.0.2",
+ "linkifyjs": "^4.1.3",
"preact": "^10.5.9"
},
"devDependencies": {