@lordbex/thelounge 4.4.3-blowfish → 4.5.0-blowfish-pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +31 -7
  2. package/dist/defaults/config.js +31 -2
  3. package/dist/package.json +94 -91
  4. package/dist/server/client.js +188 -194
  5. package/dist/server/clientManager.js +75 -72
  6. package/dist/server/command-line/index.js +44 -43
  7. package/dist/server/command-line/install.js +37 -70
  8. package/dist/server/command-line/outdated.js +12 -17
  9. package/dist/server/command-line/start.js +25 -26
  10. package/dist/server/command-line/storage.js +26 -31
  11. package/dist/server/command-line/uninstall.js +16 -23
  12. package/dist/server/command-line/upgrade.js +20 -26
  13. package/dist/server/command-line/users/add.js +33 -40
  14. package/dist/server/command-line/users/edit.js +18 -24
  15. package/dist/server/command-line/users/index.js +12 -16
  16. package/dist/server/command-line/users/list.js +11 -39
  17. package/dist/server/command-line/users/remove.js +16 -22
  18. package/dist/server/command-line/users/reset.js +34 -35
  19. package/dist/server/command-line/utils.js +231 -87
  20. package/dist/server/config.js +61 -52
  21. package/dist/server/helper.js +29 -28
  22. package/dist/server/identification.js +39 -34
  23. package/dist/server/index.js +1 -3
  24. package/dist/server/log.js +19 -16
  25. package/dist/server/models/chan.js +36 -33
  26. package/dist/server/models/msg.js +15 -19
  27. package/dist/server/models/network.js +102 -104
  28. package/dist/server/models/prefix.js +4 -7
  29. package/dist/server/models/user.js +5 -10
  30. package/dist/server/path-helper.js +8 -0
  31. package/dist/server/plugins/auth/ldap.js +177 -112
  32. package/dist/server/plugins/auth/local.js +10 -15
  33. package/dist/server/plugins/auth.js +6 -35
  34. package/dist/server/plugins/changelog.js +30 -27
  35. package/dist/server/plugins/clientCertificate.js +33 -37
  36. package/dist/server/plugins/dev-server.js +15 -21
  37. package/dist/server/plugins/inputs/action.js +9 -14
  38. package/dist/server/plugins/inputs/away.js +1 -3
  39. package/dist/server/plugins/inputs/ban.js +9 -14
  40. package/dist/server/plugins/inputs/blow.js +9 -14
  41. package/dist/server/plugins/inputs/connect.js +5 -10
  42. package/dist/server/plugins/inputs/ctcp.js +7 -12
  43. package/dist/server/plugins/inputs/disconnect.js +1 -3
  44. package/dist/server/plugins/inputs/ignore.js +23 -29
  45. package/dist/server/plugins/inputs/ignorelist.js +12 -18
  46. package/dist/server/plugins/inputs/index.js +8 -34
  47. package/dist/server/plugins/inputs/invite.js +7 -12
  48. package/dist/server/plugins/inputs/kick.js +7 -12
  49. package/dist/server/plugins/inputs/kill.js +1 -3
  50. package/dist/server/plugins/inputs/list.js +1 -3
  51. package/dist/server/plugins/inputs/mode.js +10 -15
  52. package/dist/server/plugins/inputs/msg.js +13 -18
  53. package/dist/server/plugins/inputs/mute.js +9 -15
  54. package/dist/server/plugins/inputs/nick.js +9 -14
  55. package/dist/server/plugins/inputs/notice.js +5 -7
  56. package/dist/server/plugins/inputs/part.js +11 -16
  57. package/dist/server/plugins/inputs/quit.js +7 -13
  58. package/dist/server/plugins/inputs/rainbow.js +55 -0
  59. package/dist/server/plugins/inputs/raw.js +1 -3
  60. package/dist/server/plugins/inputs/rejoin.js +7 -12
  61. package/dist/server/plugins/inputs/topic.js +7 -12
  62. package/dist/server/plugins/inputs/whois.js +1 -3
  63. package/dist/server/plugins/irc-events/away.js +14 -20
  64. package/dist/server/plugins/irc-events/cap.js +16 -22
  65. package/dist/server/plugins/irc-events/chghost.js +14 -13
  66. package/dist/server/plugins/irc-events/connection.js +61 -63
  67. package/dist/server/plugins/irc-events/ctcp.js +22 -28
  68. package/dist/server/plugins/irc-events/error.js +20 -26
  69. package/dist/server/plugins/irc-events/help.js +7 -13
  70. package/dist/server/plugins/irc-events/info.js +7 -13
  71. package/dist/server/plugins/irc-events/invite.js +7 -13
  72. package/dist/server/plugins/irc-events/join.js +30 -27
  73. package/dist/server/plugins/irc-events/kick.js +21 -17
  74. package/dist/server/plugins/irc-events/link.js +122 -109
  75. package/dist/server/plugins/irc-events/list.js +23 -26
  76. package/dist/server/plugins/irc-events/message.js +46 -52
  77. package/dist/server/plugins/irc-events/mode.js +66 -63
  78. package/dist/server/plugins/irc-events/modelist.js +29 -35
  79. package/dist/server/plugins/irc-events/motd.js +10 -16
  80. package/dist/server/plugins/irc-events/names.js +3 -6
  81. package/dist/server/plugins/irc-events/nick.js +26 -23
  82. package/dist/server/plugins/irc-events/part.js +19 -15
  83. package/dist/server/plugins/irc-events/quit.js +17 -14
  84. package/dist/server/plugins/irc-events/sasl.js +9 -15
  85. package/dist/server/plugins/irc-events/spgroups.js +38 -0
  86. package/dist/server/plugins/irc-events/spjoin.js +52 -0
  87. package/dist/server/plugins/irc-events/topic.js +12 -18
  88. package/dist/server/plugins/irc-events/unhandled.js +12 -12
  89. package/dist/server/plugins/irc-events/welcome.js +7 -13
  90. package/dist/server/plugins/irc-events/whois.js +20 -24
  91. package/dist/server/plugins/massEventAggregator.js +214 -0
  92. package/dist/server/plugins/messageStorage/sqlite.js +322 -141
  93. package/dist/server/plugins/messageStorage/text.js +21 -26
  94. package/dist/server/plugins/packages/index.js +105 -74
  95. package/dist/server/plugins/packages/publicClient.js +7 -16
  96. package/dist/server/plugins/packages/themes.js +11 -16
  97. package/dist/server/plugins/storage.js +28 -33
  98. package/dist/server/plugins/sts.js +12 -17
  99. package/dist/server/plugins/uploader.js +40 -43
  100. package/dist/server/plugins/webpush.js +23 -51
  101. package/dist/server/server.js +318 -271
  102. package/dist/server/storageCleaner.js +29 -37
  103. package/dist/server/utils/fish.js +349 -389
  104. package/dist/shared/irc.js +3 -6
  105. package/dist/shared/linkify.js +7 -14
  106. package/dist/shared/types/chan.js +6 -9
  107. package/dist/shared/types/changelog.js +1 -2
  108. package/dist/shared/types/config.js +1 -2
  109. package/dist/shared/types/mention.js +1 -2
  110. package/dist/shared/types/msg.js +3 -5
  111. package/dist/shared/types/network.js +1 -2
  112. package/dist/shared/types/storage.js +1 -2
  113. package/dist/shared/types/user.js +1 -2
  114. package/index.js +14 -10
  115. package/package.json +94 -91
  116. package/public/css/style.css +9 -6
  117. package/public/css/style.css.map +1 -1
  118. package/public/fonts/font-awesome/fa-brands-400.ttf +0 -0
  119. package/public/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  120. package/public/fonts/font-awesome/fa-duotone-900.ttf +0 -0
  121. package/public/fonts/font-awesome/fa-duotone-900.woff2 +0 -0
  122. package/public/fonts/font-awesome/fa-light-300.ttf +0 -0
  123. package/public/fonts/font-awesome/fa-light-300.woff2 +0 -0
  124. package/public/fonts/font-awesome/fa-regular-400.ttf +0 -0
  125. package/public/fonts/font-awesome/fa-regular-400.woff2 +0 -0
  126. package/public/fonts/font-awesome/fa-solid-900.ttf +0 -0
  127. package/public/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  128. package/public/fonts/font-awesome/fa-thin-100.ttf +0 -0
  129. package/public/fonts/font-awesome/fa-thin-100.woff2 +0 -0
  130. package/public/fonts/font-awesome/fa-v4compatibility.ttf +0 -0
  131. package/public/fonts/font-awesome/fa-v4compatibility.woff2 +0 -0
  132. package/public/js/bundle.js +1 -1
  133. package/public/js/bundle.js.map +1 -1
  134. package/public/js/bundle.vendor.js +1 -1
  135. package/public/js/bundle.vendor.js.LICENSE.txt +24 -6
  136. package/public/js/bundle.vendor.js.map +1 -1
  137. package/public/js/loading-error-handlers.js +1 -1
  138. package/public/service-worker.js +1 -1
  139. package/public/themes/default.css +1 -1
  140. package/public/themes/morning.css +1 -1
  141. package/dist/webpack.config.js +0 -224
@@ -1,17 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.condensedTypes = exports.cleanIrcMessage = void 0;
4
1
  const matchFormatting = /\x02|\x1D|\x1F|\x16|\x0F|\x11|\x1E|\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?|\x04(?:[0-9a-f]{6}(?:,[0-9a-f]{6})?)?/gi;
5
- function cleanIrcMessage(message) {
2
+ export function cleanIrcMessage(message) {
6
3
  return message.replace(matchFormatting, "").trim();
7
4
  }
8
- exports.cleanIrcMessage = cleanIrcMessage;
9
- exports.condensedTypes = new Set([
5
+ export const condensedTypes = new Set([
10
6
  "away",
11
7
  "back",
12
8
  "chghost",
13
9
  "join",
14
10
  "kick",
11
+ "mass_event",
15
12
  "mode",
16
13
  "nick",
17
14
  "part",
@@ -1,12 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.findLinksWithSchema = exports.findLinks = void 0;
7
- const linkify_it_1 = __importDefault(require("linkify-it"));
8
- const tlds_1 = __importDefault(require("tlds"));
9
- const linkify = (0, linkify_it_1.default)().tlds(tlds_1.default).tlds("onion", true);
1
+ import LinkifyIt from "linkify-it";
2
+ import tlds from "tlds/index.json" with { type: "json" };
3
+ const linkify = LinkifyIt().tlds(tlds).tlds("onion", true);
10
4
  // Known schemes to detect in text
11
5
  const commonSchemes = [
12
6
  "sftp",
@@ -50,28 +44,27 @@ linkify.add("web+", {
50
44
  // We take the validation logic from linkify and just add our own
51
45
  // normalizer.
52
46
  linkify.add("//", {
53
- validate: linkify.__schemas__["//"].validate,
47
+ validate: linkify
48
+ .__schemas__["//"].validate,
54
49
  normalize(match) {
55
50
  match.schema = ""; // this counts as not having a schema
56
51
  match.url = "http:" + match.url;
57
52
  },
58
53
  });
59
- function findLinks(text) {
54
+ export function findLinks(text) {
60
55
  const matches = linkify.match(text);
61
56
  if (!matches) {
62
57
  return [];
63
58
  }
64
59
  return matches.map(makeLinkPart);
65
60
  }
66
- exports.findLinks = findLinks;
67
- function findLinksWithSchema(text) {
61
+ export function findLinksWithSchema(text) {
68
62
  const matches = linkify.match(text);
69
63
  if (!matches) {
70
64
  return [];
71
65
  }
72
66
  return matches.filter((url) => !!url.schema).map(makeLinkPart);
73
67
  }
74
- exports.findLinksWithSchema = findLinksWithSchema;
75
68
  function makeLinkPart(url) {
76
69
  return {
77
70
  start: url.index,
@@ -1,22 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChanState = exports.SpecialChanType = exports.ChanType = void 0;
4
- var ChanType;
1
+ export var ChanType;
5
2
  (function (ChanType) {
6
3
  ChanType["CHANNEL"] = "channel";
7
4
  ChanType["LOBBY"] = "lobby";
8
5
  ChanType["QUERY"] = "query";
9
6
  ChanType["SPECIAL"] = "special";
10
- })(ChanType || (exports.ChanType = ChanType = {}));
11
- var SpecialChanType;
7
+ })(ChanType || (ChanType = {}));
8
+ export var SpecialChanType;
12
9
  (function (SpecialChanType) {
13
10
  SpecialChanType["BANLIST"] = "list_bans";
14
11
  SpecialChanType["INVITELIST"] = "list_invites";
15
12
  SpecialChanType["CHANNELLIST"] = "list_channels";
16
13
  SpecialChanType["IGNORELIST"] = "list_ignored";
17
- })(SpecialChanType || (exports.SpecialChanType = SpecialChanType = {}));
18
- var ChanState;
14
+ })(SpecialChanType || (SpecialChanType = {}));
15
+ export var ChanState;
19
16
  (function (ChanState) {
20
17
  ChanState[ChanState["PARTED"] = 0] = "PARTED";
21
18
  ChanState[ChanState["JOINED"] = 1] = "JOINED";
22
- })(ChanState || (exports.ChanState = ChanState = {}));
19
+ })(ChanState || (ChanState = {}));
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageType = void 0;
4
- var MessageType;
1
+ export var MessageType;
5
2
  (function (MessageType) {
6
3
  MessageType["UNHANDLED"] = "unhandled";
7
4
  MessageType["ACTION"] = "action";
@@ -31,4 +28,5 @@ var MessageType;
31
28
  MessageType["RAW"] = "raw";
32
29
  MessageType["PLUGIN"] = "plugin";
33
30
  MessageType["WALLOPS"] = "wallops";
34
- })(MessageType || (exports.MessageType = MessageType = {}));
31
+ MessageType["MASS_EVENT"] = "mass_event";
32
+ })(MessageType || (MessageType = {}));
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
package/index.js CHANGED
@@ -1,19 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- "use strict";
3
+ import {existsSync} from "node:fs";
4
+ import {resolve} from "node:path";
5
+ import {fileURLToPath} from "node:url";
6
+ import semver from "semver";
7
+ import pkg from "./package.json" with {type: "json"};
8
+
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = resolve(__filename, "..");
4
11
 
5
12
  process.chdir(__dirname);
6
13
 
7
- // Perform node version check before loading any other files or modules
8
- // Doing this check as soon as possible allows us to
9
- // avoid ES6 parser errors or other issues
10
- const pkg = require("./package.json");
14
+ const requiredNodeVersion = pkg.engines?.node ?? "";
11
15
 
12
- if (!require("semver").satisfies(process.version, pkg.engines.node)) {
16
+ if (!semver.satisfies(process.version, requiredNodeVersion)) {
13
17
  /* eslint-disable no-console */
14
18
  console.error(
15
19
  "The Lounge requires Node.js " +
16
- pkg.engines.node +
20
+ requiredNodeVersion +
17
21
  " (current version: " +
18
22
  process.version +
19
23
  ")"
@@ -25,10 +29,10 @@ if (!require("semver").satisfies(process.version, pkg.engines.node)) {
25
29
  process.exit(1);
26
30
  }
27
31
 
28
- const fs = require("fs");
32
+ const distEntry = resolve(__dirname, "./dist/server/index.js");
29
33
 
30
- if (fs.existsSync("./dist/server/index.js")) {
31
- require("./dist/server/index.js");
34
+ if (existsSync(distEntry)) {
35
+ await import("./dist/server/index.js");
32
36
  } else {
33
37
  console.error(
34
38
  "Files in ./dist/server/ not found. Please run `yarn build` before trying to run `node index.js`."
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@lordbex/thelounge",
3
3
  "description": "The self-hosted Web IRC client",
4
- "version": "4.4.3-blowfish",
4
+ "version": "4.5.0-blowfish-pre",
5
+ "type": "module",
5
6
  "preferGlobal": true,
6
- "bin": {
7
- "thelounge": "index.js"
8
- },
7
+ "bin": "index.js",
9
8
  "repository": {
10
9
  "type": "git",
11
10
  "url": "https://github.com/LordBex/thelounge.git"
@@ -13,21 +12,20 @@
13
12
  "homepage": "https://thelounge.chat/",
14
13
  "scripts": {
15
14
  "build:client": "webpack",
16
- "build:server": "tsc -p server/tsconfig.json",
15
+ "build:server": "tsc --build server/tsconfig.json",
17
16
  "build": "run-p --aggregate-output build:client build:server",
18
- "coverage": "run-s test:* && nyc --nycrc-path=test/.nycrc-report.json report",
19
- "dev": "cross-env NODE_ENV=development ts-node --project server/tsconfig.json server/index.ts start --dev",
17
+ "coverage": "run-s test:mocha test:nospec && nyc --nycrc-path=test/.nycrc-report.json report",
18
+ "dev": "cross-env NODE_ENV=development tsx server/index.ts start --dev",
20
19
  "format:prettier": "prettier --write \"**/*.*\"",
21
20
  "generate:config:doc": "ts-node scripts/generate-config-doc.js",
22
- "lint:check-eslint": "eslint-config-prettier .eslintrc.cjs",
23
21
  "lint:eslint": "eslint . --report-unused-disable-directives --color",
24
22
  "lint:prettier": "prettier --list-different \"**/*.*\"",
25
23
  "lint:stylelint": "stylelint --color \"client/**/*.css\"",
26
- "lint": "run-p --aggregate-output --continue-on-error lint:*",
24
+ "lint": "run-p --aggregate-output --continue-on-error lint:eslint lint:prettier lint:stylelint",
27
25
  "start": "node index start",
28
- "test": "run-p --aggregate-output --continue-on-error lint:* test:mocha",
29
- "test:mocha": "webpack --mode=development && cross-env NODE_ENV=test TS_NODE_PROJECT='./test/tsconfig.json' mocha --config=test/.mocharc.yml 'test/**/*.ts'",
30
- "test:nospec": "webpack --mode=development && cross-env NODE_ENV=test TS_NODE_PROJECT='./test/tsconfig.json' mocha --config=test/.mocharc.yml",
26
+ "test": "run-p --aggregate-output --continue-on-error lint:eslint lint:prettier lint:stylelint test:mocha",
27
+ "test:mocha": "webpack --mode=development && cross-env NODE_ENV=test tsx node_modules/.bin/mocha --config=test/.mocharc.yml 'test/**/*.ts'",
28
+ "test:nospec": "webpack --mode=development && cross-env NODE_ENV=test tsx node_modules/.bin/mocha --config=test/.mocharc.yml",
31
29
  "watch": "webpack --watch",
32
30
  "githooks-install": "git config core.hooksPath scripts/git-hooks"
33
31
  },
@@ -44,7 +42,7 @@
44
42
  ],
45
43
  "license": "MIT",
46
44
  "engines": {
47
- "node": ">=18.0.0"
45
+ "node": ">=20.0.0"
48
46
  },
49
47
  "files": [
50
48
  "./.thelounge_home",
@@ -56,119 +54,124 @@
56
54
  "./public/**"
57
55
  ],
58
56
  "dependencies": {
59
- "@fastify/busboy": "1.0.0",
60
- "bcryptjs": "2.4.3",
61
- "chalk": "4.1.2",
62
- "cheerio": "1.0.0",
63
- "commander": "9.0.0",
57
+ "@fastify/busboy": "3.2.0",
58
+ "bcryptjs": "3.0.3",
59
+ "chalk": "5.6.2",
60
+ "cheerio": "1.1.2",
61
+ "commander": "14.0.2",
64
62
  "content-disposition": "0.5.4",
65
- "express": "4.20.0",
66
- "file-type": "16.5.4",
67
- "filenamify": "4.3.0",
68
- "got": "11.8.6",
63
+ "express": "5.1.0",
64
+ "file-type": "21.1.0",
65
+ "filenamify": "7.0.1",
69
66
  "irc-framework": "4.14.0",
70
- "is-utf8": "0.2.1",
71
- "ldapjs": "2.3.3",
72
- "linkify-it": "3.0.3",
67
+ "ldapts": "8.0.9",
68
+ "linkify-it": "5.0.0",
73
69
  "lodash": "4.17.21",
74
- "mime-types": "2.1.35",
70
+ "mime-types": "3.0.1",
75
71
  "node-forge": "1.3.1",
76
- "package-json": "7.0.0",
77
- "read": "1.0.7",
78
- "read-chunk": "3.2.0",
79
- "semver": "7.5.2",
80
- "socket.io": "4.6.2",
81
- "tlds": "1.228.0",
82
- "ua-parser-js": "1.0.39",
83
- "uuid": "8.3.2",
84
- "web-push": "3.4.5",
85
- "yarn": "1.22.22"
72
+ "package-json": "10.0.1",
73
+ "read": "5.0.1",
74
+ "read-chunk": "5.0.0",
75
+ "semver": "7.7.3",
76
+ "socket.io": "4.8.1",
77
+ "tlds": "1.261.0",
78
+ "ua-parser-js": "2.0.6",
79
+ "undici": "7.16.0",
80
+ "uuid": "13.0.0",
81
+ "web-push": "3.6.7"
86
82
  },
87
83
  "optionalDependencies": {
88
- "sqlite3": "5.1.7"
84
+ "better-sqlite3": "12.4.1"
89
85
  },
90
86
  "devDependencies": {
91
- "@babel/core": "7.17.10",
92
- "@babel/plugin-transform-runtime": "7.18.2",
93
- "@babel/preset-env": "7.17.10",
87
+ "@babel/core": "7.28.5",
88
+ "@babel/plugin-transform-runtime": "7.28.5",
89
+ "@babel/preset-env": "7.28.5",
94
90
  "@fortawesome/fontawesome-free": "5.15.4",
95
91
  "@istanbuljs/nyc-config-typescript": "1.0.2",
96
- "@textcomplete/core": "0.1.10",
92
+ "@stylistic/stylelint-plugin": "^4.0.0",
93
+ "@textcomplete/core": "0.1.13",
97
94
  "@textcomplete/textarea": "0.1.13",
98
95
  "@types/bcryptjs": "2.4.6",
99
- "@types/chai": "4.3.5",
96
+ "@types/better-sqlite3": "7.6.11",
97
+ "@types/chai": "5.2.3",
100
98
  "@types/cheerio": "0.22.35",
101
99
  "@types/content-disposition": "0.5.8",
102
- "@types/express": "4.17.21",
103
- "@types/is-utf8": "0.2.3",
104
- "@types/ldapjs": "2.2.5",
100
+ "@types/express": "5.0.5",
105
101
  "@types/linkify-it": "3.0.5",
106
- "@types/lodash": "4.14.202",
107
- "@types/mime-types": "2.1.4",
108
- "@types/mocha": "9.1.1",
102
+ "@types/lodash": "4.17.20",
103
+ "@types/mime-types": "3.0.1",
104
+ "@types/mocha": "^10.0.10",
109
105
  "@types/mousetrap": "1.6.15",
110
- "@types/node": "17.0.45",
106
+ "@types/node": "24.10.1",
111
107
  "@types/read": "0.0.32",
112
- "@types/semver": "7.3.9",
108
+ "@types/semver": "7.7.1",
109
+ "@types/sinon": "^20.0.0",
113
110
  "@types/sortablejs": "1.15.8",
114
- "@types/sqlite3": "3.1.11",
115
111
  "@types/ua-parser-js": "0.7.39",
116
112
  "@types/uuid": "8.3.4",
117
- "@types/web-push": "3.3.2",
113
+ "@types/web-push": "3.6.4",
118
114
  "@types/webpack-env": "1.16.4",
119
115
  "@types/webpack-hot-middleware": "2.25.6",
120
116
  "@types/ws": "8.5.12",
121
- "@typescript-eslint/eslint-plugin": "7.8.0",
122
- "@typescript-eslint/parser": "7.8.0",
123
- "@vue/runtime-dom": "3.2.33",
117
+ "@types/wtfnode": "^0",
118
+ "@typescript-eslint/eslint-plugin": "8.46.4",
119
+ "@typescript-eslint/parser": "8.46.4",
120
+ "@vue/runtime-dom": "3.5.24",
124
121
  "@vue/test-utils": "2.4.6",
125
- "babel-loader": "8.2.5",
122
+ "babel-loader": "10.0.0",
126
123
  "babel-plugin-istanbul": "6.1.1",
127
124
  "babel-preset-typescript-vue3": "2.0.17",
128
- "chai": "4.3.7",
129
- "copy-webpack-plugin": "10.2.4",
125
+ "chai": "6.2.1",
126
+ "copy-webpack-plugin": "13.0.1",
130
127
  "cross-env": "7.0.3",
131
- "css-loader": "6.5.1",
132
- "cssnano": "5.0.17",
128
+ "css-loader": "7.1.2",
129
+ "cssnano": "7.1.2",
133
130
  "dayjs": "1.10.8",
134
131
  "emoji-regex": "10.2.1",
135
- "eslint": "8.57.0",
136
- "eslint-config-prettier": "9.1.0",
137
- "eslint-define-config": "2.1.0",
138
- "eslint-plugin-vue": "9.25.0",
139
- "fork-ts-checker-webpack-plugin": "7.2.13",
132
+ "eslint": "9.39.1",
133
+ "eslint-config-prettier": "10.1.8",
134
+ "eslint-plugin-vue": "10.5.1",
135
+ "fork-ts-checker-webpack-plugin": "9.1.0",
140
136
  "fuzzy": "0.1.3",
141
- "mini-css-extract-plugin": "2.5.3",
142
- "mocha": "9.2.2",
137
+ "globals": "16.5.0",
138
+ "mini-css-extract-plugin": "2.9.4",
139
+ "mocha": "^11.7.5",
143
140
  "mousetrap": "1.6.5",
144
141
  "normalize.css": "8.0.1",
145
142
  "npm-run-all": "4.1.5",
146
- "nyc": "15.1.0",
147
- "postcss": "8.4.47",
148
- "postcss-import": "14.0.2",
149
- "postcss-loader": "6.2.1",
150
- "postcss-preset-env": "7.3.0",
151
- "prettier": "2.5.1",
152
- "pretty-quick": "3.1.3",
143
+ "nyc": "17.1.0",
144
+ "postcss": "8.5.6",
145
+ "postcss-import": "16.1.1",
146
+ "postcss-loader": "8.2.0",
147
+ "postcss-preset-env": "10.4.0",
148
+ "prettier": "3.6.2",
149
+ "pretty-quick": "4.2.2",
153
150
  "primer-tooltips": "2.0.0",
154
- "sinon": "13.0.2",
155
- "socket.io-client": "4.5.0",
151
+ "sinon": "21.0.0",
152
+ "socket.io-client": "4.8.1",
156
153
  "sortablejs": "1.15.2",
157
- "stylelint": "14.3.0",
158
- "stylelint-config-standard": "24.0.0",
159
- "ts-loader": "9.3.0",
160
- "ts-node": "10.7.0",
154
+ "stylelint": "16.25.0",
155
+ "stylelint-config-standard": "36.0.1",
156
+ "ts-loader": "9.5.4",
157
+ "ts-node": "10.9.2",
161
158
  "ts-sinon": "2.0.2",
162
- "typescript": "5.4.5",
159
+ "tsx": "^4.20.6",
160
+ "typescript": "5.9.3",
163
161
  "undate": "0.3.0",
164
- "vue": "3.2.35",
165
- "vue-eslint-parser": "9.4.3",
166
- "vue-loader": "17.0.1",
167
- "vue-router": "4.0.15",
168
- "vuex": "4.0.2",
169
- "webpack": "5.94.0",
170
- "webpack-cli": "4.9.2",
171
- "webpack-dev-middleware": "5.3.4",
172
- "webpack-hot-middleware": "2.25.4"
173
- }
162
+ "vue": "3.5.24",
163
+ "vue-eslint-parser": "10.2.0",
164
+ "vue-loader": "17.4.2",
165
+ "vue-router": "4.6.3",
166
+ "vuex": "4.1.0",
167
+ "webpack": "5.102.1",
168
+ "webpack-cli": "6.0.1",
169
+ "webpack-dev-middleware": "7.4.2",
170
+ "webpack-hot-middleware": "2.26.1",
171
+ "wtfnode": "^0.10.1"
172
+ },
173
+ "resolutions": {
174
+ "js-yaml": "^4.1.1"
175
+ },
176
+ "packageManager": "yarn@4.11.0"
174
177
  }