chore(deps): update typescript-eslint to v8

Changes:
- `no-var-requires` replaced by `no-require-imports` (typescript-eslint/typescript-eslint#8334)
- `restrict-template-expressions` does not trigger for `Error` (typescript-eslint/typescript-eslint#8556)
- `only-throw-error` and `prefer-promise-reject-errors` recommended (typescript-eslint/typescript-eslint#9079)
- fixed `no-base-to-string` in client/js/upload.ts
- fixed `no-unsafe-enum-comparison` in client/js/store.ts
- fixed `await-thenable` in  test/client/js/helpers/parse.ts
- fixed `no-empty-object-type` in client/shims-vue.d.ts and shared/types/socket-events.d.ts

See <https://typescript-eslint.io/blog/announcing-typescript-eslint-v8/>
This commit is contained in:
Tiago de Paula 2025-10-28 00:36:31 -03:00
commit d146d51a95
No known key found for this signature in database
GPG key ID: 55BD118E42C985CF
29 changed files with 159 additions and 156 deletions

View file

@ -118,6 +118,7 @@ const tsTestRulesTemp = defineConfig({
// TODO: remove these
"@typescript-eslint/no-unsafe-return": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/restrict-plus-operands": "off",
},
}).rules;
@ -172,7 +173,7 @@ module.exports = defineConfig({
rules: {...baseRules, ...tsRules, ...tsRulesTemp, ...vueRules},
},
{
files: ["./tests/**/*.ts"],
files: ["./test/**/*.ts"],
parser: "@typescript-eslint/parser",
rules: {
...baseRules,

View file

@ -22,7 +22,7 @@ enum DesktopNotificationState {
function detectDesktopNotificationState(): DesktopNotificationState {
if (!("Notification" in window)) {
return DesktopNotificationState.Unsupported;
} else if (Notification.permission === DesktopNotificationState.Granted) {
} else if (Notification.permission === "granted") {
return DesktopNotificationState.Granted;
} else if (!window.isSecureContext) {
return DesktopNotificationState.NoHttps;

View file

@ -214,7 +214,11 @@ class Uploader {
}, file.type);
};
img.src = String(fileReader.result);
if (typeof fileReader.result === "string") {
img.src = fileReader.result;
} else {
fileReader.abort();
}
};
fileReader.readAsDataURL(file);

View file

@ -1,7 +1,6 @@
// https://vuejs.github.io/vetur/guide/setup.html#vue3
declare module "*.vue" {
import type {DefineComponent} from "vue";
// eslint-disable-next-line @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>;
const component: DefineComponent<unknown, unknown, unknown>;
export default component;
}

View file

@ -111,8 +111,8 @@
"@types/webpack-env": "^1.18.8",
"@types/webpack-hot-middleware": "^2.25.12",
"@types/ws": "^8.18.1",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@typescript-eslint/eslint-plugin": "^8.54.0",
"@typescript-eslint/parser": "^8.54.0",
"@vue/runtime-dom": "^3.5.27",
"@vue/test-utils": "^2.4.6",
"babel-loader": "^10.0.0",

View file

@ -1,4 +1,4 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-require-imports */
import log from "../log";
import fs from "fs";
import path from "path";

View file

@ -104,12 +104,16 @@ program
// the lockfile properly. We need to run an install in that case
// even though that's supposed to be done by the add subcommand
return Utils.executeYarnCommand("install").catch((err) => {
throw `Failed to update lockfile after package install ${err}`;
throw new Error(
`Failed to update lockfile after package install ${err}`
);
});
}
})
.catch((code) => {
throw `Failed to install ${colors.red(humanVersion)}. Exit code: ${code}`;
throw new Error(
`Failed to install ${colors.red(humanVersion)}. Exit code: ${code}`
);
});
})
.catch((e) => {

View file

@ -15,7 +15,7 @@ program
initalizeConfig();
const newLocal = "../server";
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const server = require(newLocal);
server.default(options);
});

View file

@ -10,9 +10,9 @@ program
.description("Uninstall a theme or a package")
.on("--help", Utils.extraHelp)
.action(async function (packageName: string) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const fs = require("fs").promises;
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const path = require("path");
const packagesConfig = path.join(Config.getPackagesPath(), "package.json");

View file

@ -1,4 +1,4 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-require-imports */
import log from "../log";
import colors from "chalk";
import {Command} from "commander";

View file

@ -19,7 +19,7 @@ program
return;
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ClientManager = require("../../clientManager").default;
const manager = new ClientManager();
const users = manager.getUsers();

View file

@ -17,7 +17,7 @@ program
return;
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ClientManager = require("../../clientManager").default;
const users = new ClientManager().getUsers();

View file

@ -2,9 +2,9 @@ import Config from "../../config";
let add, reset;
if (!Config.values.ldap.enable) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
add = require("./add").default;
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
reset = require("./reset").default;
}

View file

@ -16,7 +16,7 @@ program
return;
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ClientManager = require("../../clientManager").default;
const manager = new ClientManager();

View file

@ -18,7 +18,7 @@ program
return;
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ClientManager = require("../../clientManager").default;
const users = new ClientManager().getUsers();

View file

@ -193,7 +193,7 @@ class Utils {
add.on("close", (code) => {
if (!success || code !== 0) {
return reject(code);
return reject(new Error(`command failed with status code: ${code}`));
}
resolve(true);

View file

@ -1,4 +1,4 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-require-imports */
import path from "path";
import fs, {Stats} from "fs";
import os from "os";

View file

@ -57,7 +57,7 @@ function getGitCommit() {
// --git-dir ".git" makes git only check current directory for `.git`, and not travel upwards
// We set cwd to the location of `index.js` as soon as the process is started
try {
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
_gitCommit = require("child_process")
.execSync(
'git --git-dir ".git" rev-parse --short HEAD', // Returns hash of current commit

View file

@ -118,7 +118,7 @@ export default <IrcEventHandler>function (irc, network) {
client,
new Msg({
type: MessageType.ERROR,
text: `Connection closed unexpectedly: ${String(error)}`,
text: `Connection closed unexpectedly: ${error}`,
}),
true
);

View file

@ -142,7 +142,7 @@ function parseHtml(preview, res, client: Client) {
function parseHtmlMedia($: cheerio.CheerioAPI, preview, client: Client): Promise<FetchRequest> {
return new Promise((resolve, reject) => {
if (Config.values.disableMediaPreview) {
reject();
reject(new Error("media preview disabled"));
return;
}
@ -157,7 +157,7 @@ function parseHtmlMedia($: cheerio.CheerioAPI, preview, client: Client): Promise
!openGraphType.startsWith("video") &&
!openGraphType.startsWith("music")
) {
reject();
reject(new Error(`og:type="${openGraphType}" is not a media type`));
return;
}
@ -200,7 +200,7 @@ function parseHtmlMedia($: cheerio.CheerioAPI, preview, client: Client): Promise
})
.then((resMedia) => {
if (resMedia === null || !mediaTypeRegex.test(resMedia.type)) {
return reject();
return reject(new Error(`invalid media type "${resMedia.type}"`));
}
preview.type = type;
@ -217,7 +217,7 @@ function parseHtmlMedia($: cheerio.CheerioAPI, preview, client: Client): Promise
});
if (!foundMedia) {
reject();
reject(new Error("no media content found"));
}
});
}
@ -474,6 +474,7 @@ function fetch(uri: string, headers: Record<string, string>) {
resolve({data: buffer, type, size});
});
} catch (e: any) {
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
return reject(e);
}
});

View file

@ -15,6 +15,7 @@ import {SearchQuery, SearchResponse} from "../../../shared/types/storage";
let sqlite3: any;
try {
// eslint-disable-next-line @typescript-eslint/no-require-imports
sqlite3 = require("sqlite3");
} catch (e: any) {
Config.values.messageStorage = Config.values.messageStorage.filter((item) => item !== "sqlite");
@ -220,7 +221,9 @@ class SqliteMessageStorage implements SearchableMessageStorage {
const version = await this.current_version();
if (version > currentSchemaVersion) {
throw `sqlite messages schema version is higher than expected (${version} > ${currentSchemaVersion}). Is The Lounge out of date?`;
throw new Error(
`sqlite messages schema version is higher than expected (${version} > ${currentSchemaVersion}). Is The Lounge out of date?`
);
} else if (version === currentSchemaVersion) {
return; // nothing to do
}
@ -259,7 +262,7 @@ class SqliteMessageStorage implements SearchableMessageStorage {
return new Promise<void>((resolve, reject) => {
this.database.close((err) => {
if (err) {
reject(`Failed to close sqlite database: ${err.message}`);
reject(new Error(`Failed to close sqlite database: ${err.message}`));
return;
}

View file

@ -124,7 +124,7 @@ function loadPackage(packageName: string) {
packageInfo = JSON.parse(fs.readFileSync(path.join(packagePath, "package.json"), "utf-8"));
if (!packageInfo.thelounge) {
throw "'thelounge' is not present in package.json";
throw new Error("'thelounge' is not present in package.json");
}
if (
@ -133,9 +133,12 @@ function loadPackage(packageName: string) {
includePrerelease: true, // our pre-releases should respect the semver guarantees
})
) {
throw `v${packageInfo.version} does not support this version of The Lounge. Supports: ${packageInfo.thelounge.supports}`;
throw new Error(
`v${packageInfo.version} does not support this version of The Lounge. Supports: ${packageInfo.thelounge.supports}`
);
}
// eslint-disable-next-line @typescript-eslint/no-require-imports
packageFile = require(packagePath);
} catch (e: any) {
log.error(`Package ${colors.bold(packageName)} could not be loaded: ${colors.red(e)}`);

View file

@ -190,7 +190,6 @@ export default async function (
};
}
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
server.on("error", (err) => log.error(`${err}`));
server.listen(listenParams, () => {
@ -231,7 +230,6 @@ export default async function (
});
sockets.on("connect", (socket) => {
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
socket.on("error", (err) => log.error(`io socket error: ${err}`));
if (Config.values.public) {

View file

@ -261,7 +261,7 @@ declare module "irc-framework" {
on(eventType: "mode", cb: (event: ModeEventArgs) => any): this;
on(eventType: "socket close", cb: (event: Record<string, unknown>) => any): this;
on(eventType: "socket close", cb: (error: Error) => any): this;
on(eventType: "socket connected", cb: (event: Record<string, unknown>) => any): this;

View file

@ -174,6 +174,10 @@ interface ClientToServerEvents {
search: EventHandler<SearchQuery>;
}
interface InterServerEvents {}
interface InterServerEvents {
[EventName: string]: never;
}
interface SocketData {}
interface SocketData {
[_: string]: never;
}

View file

@ -343,7 +343,7 @@ describe("IRC formatted message parser", () => {
});
});
it("should find nicks", async () => {
it("should find nicks", () => {
const testCases = [
{
message: {
@ -358,8 +358,8 @@ describe("IRC formatted message parser", () => {
},
];
const actual = await Promise.all(
testCases.map((testCase) => getParsedMessageContents(testCase.input, testCase.message))
const actual = testCases.map((testCase) =>
getParsedMessageContents(testCase.input, testCase.message)
);
const expected = testCases.map((testCase) => testCase.expected);

View file

@ -229,7 +229,7 @@ Vivamus bibendum vulputate tincidunt. Sed vitae ligula felis.`;
});
it("should ignore og:image if disableMediaPreview", function (done) {
app.get("/nonexistent-test-image.png", function () {
throw "Should not fetch image";
throw new Error("Should not fetch image");
});
const invalid_url = this._makeUrl("nonexistent-test-image.png");
@ -251,7 +251,7 @@ Vivamus bibendum vulputate tincidunt. Sed vitae ligula felis.`;
});
it("should ignore og:video if disableMediaPreview", function (done) {
app.get("/nonexistent-video.mp4", function () {
throw "Should not fetch video";
throw new Error("Should not fetch video");
});
const invalid_url = this._makeUrl("nonexistent-video.mp4");

View file

@ -13,7 +13,7 @@ describe("packages", function () {
logInfoStub = sinon.stub(log, "info");
delete require.cache[require.resolve("../../../server/plugins/packages")];
// eslint-disable-next-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
packages = require("../../../server/plugins/packages").default;
});

196
yarn.lock
View file

@ -1279,14 +1279,14 @@
resolved "https://registry.yarnpkg.com/@epic-web/invariant/-/invariant-1.0.0.tgz#1073e5dee6dd540410784990eb73e4acd25c9813"
integrity sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.9.1":
version "4.9.1"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
dependencies:
eslint-visitor-keys "^3.4.3"
"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
"@eslint-community/regexpp@^4.12.2", "@eslint-community/regexpp@^4.6.1":
version "4.12.2"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
@ -2050,86 +2050,101 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3"
integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==
"@typescript-eslint/eslint-plugin@^8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz#d8899e5c2eccf5c4a20d01c036a193753748454d"
integrity sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "7.18.0"
"@typescript-eslint/type-utils" "7.18.0"
"@typescript-eslint/utils" "7.18.0"
"@typescript-eslint/visitor-keys" "7.18.0"
graphemer "^1.4.0"
ignore "^5.3.1"
"@eslint-community/regexpp" "^4.12.2"
"@typescript-eslint/scope-manager" "8.54.0"
"@typescript-eslint/type-utils" "8.54.0"
"@typescript-eslint/utils" "8.54.0"
"@typescript-eslint/visitor-keys" "8.54.0"
ignore "^7.0.5"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
ts-api-utils "^2.4.0"
"@typescript-eslint/parser@^7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0"
integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
"@typescript-eslint/parser@^8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.54.0.tgz#3d01a6f54ed247deb9982621f70e7abf1810bd97"
integrity sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==
dependencies:
"@typescript-eslint/scope-manager" "7.18.0"
"@typescript-eslint/types" "7.18.0"
"@typescript-eslint/typescript-estree" "7.18.0"
"@typescript-eslint/visitor-keys" "7.18.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager" "8.54.0"
"@typescript-eslint/types" "8.54.0"
"@typescript-eslint/typescript-estree" "8.54.0"
"@typescript-eslint/visitor-keys" "8.54.0"
debug "^4.4.3"
"@typescript-eslint/scope-manager@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83"
integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==
"@typescript-eslint/project-service@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6"
integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==
dependencies:
"@typescript-eslint/types" "7.18.0"
"@typescript-eslint/visitor-keys" "7.18.0"
"@typescript-eslint/tsconfig-utils" "^8.54.0"
"@typescript-eslint/types" "^8.54.0"
debug "^4.4.3"
"@typescript-eslint/type-utils@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b"
integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==
"@typescript-eslint/scope-manager@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33"
integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==
dependencies:
"@typescript-eslint/typescript-estree" "7.18.0"
"@typescript-eslint/utils" "7.18.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types" "8.54.0"
"@typescript-eslint/visitor-keys" "8.54.0"
"@typescript-eslint/types@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9"
integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==
"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc"
integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==
"@typescript-eslint/typescript-estree@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931"
integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==
"@typescript-eslint/type-utils@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz#64965317dd4118346c2fa5ee94492892200e9fb9"
integrity sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==
dependencies:
"@typescript-eslint/types" "7.18.0"
"@typescript-eslint/visitor-keys" "7.18.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
minimatch "^9.0.4"
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/types" "8.54.0"
"@typescript-eslint/typescript-estree" "8.54.0"
"@typescript-eslint/utils" "8.54.0"
debug "^4.4.3"
ts-api-utils "^2.4.0"
"@typescript-eslint/utils@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f"
integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "7.18.0"
"@typescript-eslint/types" "7.18.0"
"@typescript-eslint/typescript-estree" "7.18.0"
"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889"
integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==
"@typescript-eslint/visitor-keys@7.18.0":
version "7.18.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7"
integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==
"@typescript-eslint/typescript-estree@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527"
integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==
dependencies:
"@typescript-eslint/types" "7.18.0"
eslint-visitor-keys "^3.4.3"
"@typescript-eslint/project-service" "8.54.0"
"@typescript-eslint/tsconfig-utils" "8.54.0"
"@typescript-eslint/types" "8.54.0"
"@typescript-eslint/visitor-keys" "8.54.0"
debug "^4.4.3"
minimatch "^9.0.5"
semver "^7.7.3"
tinyglobby "^0.2.15"
ts-api-utils "^2.4.0"
"@typescript-eslint/utils@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8"
integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==
dependencies:
"@eslint-community/eslint-utils" "^4.9.1"
"@typescript-eslint/scope-manager" "8.54.0"
"@typescript-eslint/types" "8.54.0"
"@typescript-eslint/typescript-estree" "8.54.0"
"@typescript-eslint/visitor-keys@8.54.0":
version "8.54.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590"
integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==
dependencies:
"@typescript-eslint/types" "8.54.0"
eslint-visitor-keys "^4.2.1"
"@ungap/structured-clone@^1.2.0":
version "1.3.0"
@ -2601,11 +2616,6 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
asn1.js@^5.3.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
@ -3464,7 +3474,7 @@ dayjs@^1.11.19:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.19.tgz#15dc98e854bb43917f12021806af897c58ae2938"
integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.3, debug@~4.4.1:
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.5, debug@^4.4.0, debug@^4.4.3, debug@~4.4.1:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@ -3559,13 +3569,6 @@ diff@^8.0.2:
resolved "https://registry.yarnpkg.com/diff/-/diff-8.0.3.tgz#c7da3d9e0e8c283bb548681f8d7174653720c2d5"
integrity sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
dependencies:
path-type "^4.0.0"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@ -4030,7 +4033,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-glob@^3.2.9, fast-glob@^3.3.3:
fast-glob@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
@ -4442,18 +4445,6 @@ globals@^13.19.0:
dependencies:
type-fest "^0.20.2"
globby@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
dependencies:
array-union "^2.1.0"
dir-glob "^3.0.1"
fast-glob "^3.2.9"
ignore "^5.2.0"
merge2 "^1.4.1"
slash "^3.0.0"
globby@^16.1.0:
version "16.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-16.1.0.tgz#71ab8199e4fc1c4c21a59bd14ec0f31c71d7d7d4"
@ -4704,7 +4695,7 @@ ieee754@^1.1.13, ieee754@^1.2.1:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.2.0, ignore@^5.3.1:
ignore@^5.2.0:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
@ -5463,7 +5454,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
merge2@^1.3.0, merge2@^1.4.1:
merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@ -7294,11 +7285,6 @@ sinon@^9.0.3:
nise "^4.0.4"
supports-color "^7.1.0"
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
slash@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce"
@ -7800,10 +7786,10 @@ tree-dump@^1.0.3, tree-dump@^1.1.0:
resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4"
integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==
ts-api-utils@^1.3.0:
version "1.4.3"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064"
integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==
ts-api-utils@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8"
integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==
ts-loader@^9.5.4:
version "9.5.4"