chore: add ESLint to /server (#5126)

* add eslint config to server

* add break statements to switch case

* add support for browser globals and turn off empty catch blocks

* disable lines with useless try/catch wrappers

* format

* fix no-undef errors

* disbale lines violating no-unsafe-finally

* ignore syncStaticLists.mjs

* use proper null check for creatorId instead of unreachable nullish coalescing

* remove unneeded typescript eslint comment

* make no-unused-private-class-members a warning

* disable line for no-empty-objects

* add new lint script

* fix no-unused-vars violations

* make no-unsued-vars an error

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
This commit is contained in:
Marcello Fitton
2026-03-05 16:32:45 -08:00
committed by GitHub
parent 8f33203ade
commit 4a4378ed99
61 changed files with 481 additions and 375 deletions

View File

@@ -3,7 +3,6 @@ const { Document } = require("../models/documents");
const { EventLogs } = require("../models/eventLogs");
const { Invite } = require("../models/invite");
const { SystemSettings } = require("../models/systemSettings");
const { Telemetry } = require("../models/telemetry");
const { User } = require("../models/user");
const { DocumentVectors } = require("../models/vectors");
const { Workspace } = require("../models/workspace");

View File

@@ -21,7 +21,7 @@ function getMimeTypeFromDataUrl(dataUrl) {
try {
const matches = dataUrl.match(/^data:([^;]+);base64,/);
return matches ? matches[1].toLowerCase() : "image/png";
} catch (e) {
} catch {
return "image/png";
}
}

View File

@@ -1506,8 +1506,8 @@ function systemEndpoints(app) {
"/system/validate-sql-connection",
[validatedRequest, flexUserRoleValid([ROLES.admin])],
async (request, response) => {
const { engine, connectionString } = reqBody(request);
try {
const { engine, connectionString } = reqBody(request);
if (!engine || !connectionString) {
return response.status(400).json({
success: false,

View File

@@ -49,7 +49,7 @@ function workspaceEndpoints(app) {
async (request, response) => {
try {
const user = await userFromSession(request, response);
const { name = null, onboardingComplete = false } = reqBody(request);
const { name = null } = reqBody(request);
const { workspace, message } = await Workspace.new(name, user?.id);
await Telemetry.sendTelemetry(
"workspace_created",

View File

@@ -105,6 +105,7 @@ function workspaceParsedFilesEndpoints(app) {
console.error(e.message, e);
return response.sendStatus(500).end();
} finally {
// eslint-disable-next-line
if (!fileId) return;
await WorkspaceParsedFiles.delete({ id: parseInt(fileId) });
}

38
server/eslint.config.mjs Normal file
View File

@@ -0,0 +1,38 @@
import js from "@eslint/js";
import globals from "globals";
import { defineConfig } from "eslint/config";
import pluginPrettier from "eslint-plugin-prettier";
import configPrettier from "eslint-config-prettier";
import unusedImports from "eslint-plugin-unused-imports";
export default defineConfig([
{ ignores: ["__tests__/**", "**/syncStaticLists.mjs"] },
{
files: ["**/*.{js,mjs,cjs}"],
plugins: { js, prettier: pluginPrettier, "unused-imports": unusedImports },
extends: ["js/recommended"],
languageOptions: { globals: { ...globals.node, ...globals.browser } },
rules: {
...configPrettier.rules,
"prettier/prettier": "error",
"no-case-declarations": "off",
"no-prototype-builtins": "off",
"no-async-promise-executor": "off",
"no-extra-boolean-cast": "off",
"no-empty": "off",
"no-unused-private-class-members": "warn",
"no-unused-vars": "off",
"unused-imports/no-unused-imports": "error",
"unused-imports/no-unused-vars": [
"error",
{
vars: "all",
varsIgnorePattern: "^_",
args: "after-used",
argsIgnorePattern: "^_",
},
],
},
},
{ files: ["**/*.js"], languageOptions: { sourceType: "commonjs" } },
]);

View File

@@ -26,7 +26,7 @@ async function batchDeleteFiles(filesToDelete, batchSize = 500) {
log(
`Deleted batch ${Math.floor(i / batchSize) + 1}: ${batch.length} files`
);
} catch (err) {
} catch {
// If batch fails, try individual files sync
for (const filePath of batch) {
try {

View File

@@ -1,18 +1,22 @@
const path = require('node:path');
const fs = require('node:fs');
const { parentPort } = require('node:worker_threads');
const path = require("node:path");
const fs = require("node:fs");
const { parentPort } = require("node:worker_threads");
const documentsPath =
process.env.NODE_ENV === "development"
? path.resolve(__dirname, `../../storage/documents`)
: path.resolve(process.env.STORAGE_DIR, `documents`);
function log(stringContent = '') {
if (parentPort) parentPort.postMessage(`\x1b[33m[${process.pid}]\x1b[0m: ${stringContent}`); // running as worker
else process.send(`\x1b[33m[${process.ppid}:${process.pid}]\x1b[0m: ${stringContent}`); // running as child_process
function log(stringContent = "") {
if (parentPort)
parentPort.postMessage(`\x1b[33m[${process.pid}]\x1b[0m: ${stringContent}`); // running as worker
else
process.send(
`\x1b[33m[${process.ppid}:${process.pid}]\x1b[0m: ${stringContent}`
); // running as child_process
}
function conclude() {
if (parentPort) parentPort.postMessage('done');
if (parentPort) parentPort.postMessage("done");
else process.exit(0);
}
@@ -27,4 +31,4 @@ module.exports = {
log,
conclude,
updateSourceDocument,
}
};

View File

@@ -1,152 +1,208 @@
const { Document } = require('../models/documents.js');
const { DocumentSyncQueue } = require('../models/documentSyncQueue.js');
const { CollectorApi } = require('../utils/collectorApi');
const { Document } = require("../models/documents.js");
const { DocumentSyncQueue } = require("../models/documentSyncQueue.js");
const { CollectorApi } = require("../utils/collectorApi");
const { fileData } = require("../utils/files");
const { log, conclude, updateSourceDocument } = require('./helpers/index.js');
const { getVectorDbClass } = require('../utils/helpers/index.js');
const { DocumentSyncRun } = require('../models/documentSyncRun.js');
const { log, conclude, updateSourceDocument } = require("./helpers/index.js");
const { getVectorDbClass } = require("../utils/helpers/index.js");
const { DocumentSyncRun } = require("../models/documentSyncRun.js");
(async () => {
try {
const queuesToProcess = await DocumentSyncQueue.staleDocumentQueues();
if (queuesToProcess.length === 0) {
log('No outstanding documents to sync. Exiting.');
log("No outstanding documents to sync. Exiting.");
return;
}
const collector = new CollectorApi();
if (!(await collector.online())) {
log('Could not reach collector API. Exiting.');
log("Could not reach collector API. Exiting.");
return;
}
log(`${queuesToProcess.length} watched documents have been found to be stale and will be updated now.`)
log(
`${queuesToProcess.length} watched documents have been found to be stale and will be updated now.`
);
for (const queue of queuesToProcess) {
let newContent = null;
const document = queue.workspaceDoc;
const workspace = document.workspace;
const { metadata, type, source } = Document.parseDocumentTypeAndSource(document);
const { metadata, type, source } =
Document.parseDocumentTypeAndSource(document);
if (!metadata || !DocumentSyncQueue.validFileTypes.includes(type)) {
// Document is either broken, invalid, or not supported so drop it from future queues.
log(`Document ${document.filename} has no metadata, is broken, or invalid and has been removed from all future runs.`)
log(
`Document ${document.filename} has no metadata, is broken, or invalid and has been removed from all future runs.`
);
await DocumentSyncQueue.unwatch(document);
continue;
}
if (['link', 'youtube'].includes(type)) {
if (["link", "youtube"].includes(type)) {
const response = await collector.forwardExtensionRequest({
endpoint: "/ext/resync-source-document",
method: "POST",
body: JSON.stringify({
type,
options: { link: source }
})
options: { link: source },
}),
});
newContent = response?.content;
}
if (['confluence', 'github', 'gitlab', 'drupalwiki'].includes(type)) {
if (["confluence", "github", "gitlab", "drupalwiki"].includes(type)) {
const response = await collector.forwardExtensionRequest({
endpoint: "/ext/resync-source-document",
method: "POST",
body: JSON.stringify({
type,
options: { chunkSource: metadata.chunkSource }
})
options: { chunkSource: metadata.chunkSource },
}),
});
newContent = response?.content;
}
if (!newContent) {
// Check if the last "x" runs were all failures (not exits!). If so - remove the job entirely since it is broken.
const failedRunCount = (await DocumentSyncRun.where({ queueId: queue.id }, DocumentSyncQueue.maxRepeatFailures, { createdAt: 'desc' })).filter((run) => run.status === DocumentSyncRun.statuses.failed).length;
const failedRunCount = (
await DocumentSyncRun.where(
{ queueId: queue.id },
DocumentSyncQueue.maxRepeatFailures,
{ createdAt: "desc" }
)
).filter(
(run) => run.status === DocumentSyncRun.statuses.failed
).length;
if (failedRunCount >= DocumentSyncQueue.maxRepeatFailures) {
log(`Document ${document.filename} has failed to refresh ${failedRunCount} times continuously and will now be removed from the watched document set.`)
log(
`Document ${document.filename} has failed to refresh ${failedRunCount} times continuously and will now be removed from the watched document set.`
);
await DocumentSyncQueue.unwatch(document);
continue;
}
log(`Failed to get a new content response from collector for source ${source}. Skipping, but will retry next worker interval. Attempt ${failedRunCount === 0 ? 1 : failedRunCount}/${DocumentSyncQueue.maxRepeatFailures}`);
await DocumentSyncQueue.saveRun(queue.id, DocumentSyncRun.statuses.failed, { filename: document.filename, workspacesModified: [], reason: 'No content found.' })
log(
`Failed to get a new content response from collector for source ${source}. Skipping, but will retry next worker interval. Attempt ${failedRunCount === 0 ? 1 : failedRunCount}/${DocumentSyncQueue.maxRepeatFailures}`
);
await DocumentSyncQueue.saveRun(
queue.id,
DocumentSyncRun.statuses.failed,
{
filename: document.filename,
workspacesModified: [],
reason: "No content found.",
}
);
continue;
}
const currentDocumentData = await fileData(document.docpath)
const currentDocumentData = await fileData(document.docpath);
if (currentDocumentData.pageContent === newContent) {
const nextSync = DocumentSyncQueue.calcNextSync(queue)
log(`Source ${source} is unchanged and will be skipped. Next sync will be ${nextSync.toLocaleString()}.`);
await DocumentSyncQueue._update(
const nextSync = DocumentSyncQueue.calcNextSync(queue);
log(
`Source ${source} is unchanged and will be skipped. Next sync will be ${nextSync.toLocaleString()}.`
);
await DocumentSyncQueue._update(queue.id, {
lastSyncedAt: new Date().toISOString(),
nextSyncAt: nextSync.toISOString(),
});
await DocumentSyncQueue.saveRun(
queue.id,
DocumentSyncRun.statuses.exited,
{
lastSyncedAt: new Date().toISOString(),
nextSyncAt: nextSync.toISOString(),
filename: document.filename,
workspacesModified: [],
reason: "Content unchanged.",
}
);
await DocumentSyncQueue.saveRun(queue.id, DocumentSyncRun.statuses.exited, { filename: document.filename, workspacesModified: [], reason: 'Content unchanged.' })
continue;
}
// update the defined document and workspace vectorDB with the latest information
// it will skip cache and create a new vectorCache file.
const vectorDatabase = getVectorDbClass();
await vectorDatabase.deleteDocumentFromNamespace(workspace.slug, document.docId);
await vectorDatabase.deleteDocumentFromNamespace(
workspace.slug,
document.docId
);
await vectorDatabase.addDocumentToNamespace(
workspace.slug,
{ ...currentDocumentData, pageContent: newContent, docId: document.docId },
document.docpath,
true
);
updateSourceDocument(
document.docpath,
{
...currentDocumentData,
pageContent: newContent,
docId: document.docId,
published: (new Date).toLocaleString(),
// Todo: Update word count and token_estimate?
}
)
log(`Workspace "${workspace.name}" vectors of ${source} updated. Document and vector cache updated.`)
},
document.docpath,
true
);
updateSourceDocument(document.docpath, {
...currentDocumentData,
pageContent: newContent,
docId: document.docId,
published: new Date().toLocaleString(),
// Todo: Update word count and token_estimate?
});
log(
`Workspace "${workspace.name}" vectors of ${source} updated. Document and vector cache updated.`
);
// Now we can bloom the results to all matching documents in all other workspaces
const workspacesModified = [workspace.slug];
const moreReferences = await Document.where({
id: { not: document.id },
filename: document.filename
}, null, null, { workspace: true });
const moreReferences = await Document.where(
{
id: { not: document.id },
filename: document.filename,
},
null,
null,
{ workspace: true }
);
if (moreReferences.length !== 0) {
log(`${source} is referenced in ${moreReferences.length} other workspaces. Updating those workspaces as well...`)
log(
`${source} is referenced in ${moreReferences.length} other workspaces. Updating those workspaces as well...`
);
for (const additionalDocumentRef of moreReferences) {
const additionalWorkspace = additionalDocumentRef.workspace;
workspacesModified.push(additionalWorkspace.slug);
await vectorDatabase.deleteDocumentFromNamespace(additionalWorkspace.slug, additionalDocumentRef.docId);
await vectorDatabase.deleteDocumentFromNamespace(
additionalWorkspace.slug,
additionalDocumentRef.docId
);
await vectorDatabase.addDocumentToNamespace(
additionalWorkspace.slug,
{ ...currentDocumentData, pageContent: newContent, docId: additionalDocumentRef.docId },
additionalDocumentRef.docpath,
{
...currentDocumentData,
pageContent: newContent,
docId: additionalDocumentRef.docId,
},
additionalDocumentRef.docpath
);
log(
`Workspace "${additionalWorkspace.name}" vectors for ${source} was also updated with the new content from cache.`
);
log(`Workspace "${additionalWorkspace.name}" vectors for ${source} was also updated with the new content from cache.`)
}
}
const nextRefresh = DocumentSyncQueue.calcNextSync(queue);
log(`${source} has been refreshed in all workspaces it is currently referenced in. Next refresh will be ${nextRefresh.toLocaleString()}.`)
await DocumentSyncQueue._update(
queue.id,
{
lastSyncedAt: new Date().toISOString(),
nextSyncAt: nextRefresh.toISOString(),
}
log(
`${source} has been refreshed in all workspaces it is currently referenced in. Next refresh will be ${nextRefresh.toLocaleString()}.`
);
await DocumentSyncQueue._update(queue.id, {
lastSyncedAt: new Date().toISOString(),
nextSyncAt: nextRefresh.toISOString(),
});
await DocumentSyncQueue.saveRun(
queue.id,
DocumentSyncRun.statuses.success,
{ filename: document.filename, workspacesModified }
);
await DocumentSyncQueue.saveRun(queue.id, DocumentSyncRun.statuses.success, { filename: document.filename, workspacesModified })
}
} catch (e) {
console.error(e)
log(`errored with ${e.message}`)
console.error(e);
log(`errored with ${e.message}`);
} finally {
conclude();
}

View File

@@ -93,7 +93,7 @@ const Document = {
if (!data) continue;
const docId = uuidv4();
const { pageContent, ...metadata } = data;
const { pageContent: _pageContent, ...metadata } = data;
const newDoc = {
docId,
filename: path.split("/")[1],

View File

@@ -47,7 +47,7 @@ const EmbedChats = {
filterSources: function (chats) {
return chats.map((chat) => {
const { response, ...rest } = chat;
const { sources, ...responseRest } = safeJsonParse(response);
const { sources: _sources, ...responseRest } = safeJsonParse(response);
return { ...rest, response: JSON.stringify(responseRest) };
});
},

View File

@@ -52,7 +52,7 @@ const EmbedConfig = {
data?.message_limit,
"message_limit"
),
createdBy: Number(creatorId) ?? null,
createdBy: creatorId != null ? Number(creatorId) : null,
workspace: {
connect: { id: Number(data.workspace_id) },
},
@@ -71,7 +71,7 @@ const EmbedConfig = {
this.writable.includes(key)
);
if (validKeys.length === 0)
return { embed: { id }, message: "No valid fields to update!" };
return { embed: { id: embedId }, message: "No valid fields to update!" };
const updates = {};
validKeys.map((key) => {

View File

@@ -42,7 +42,7 @@ const MobileDevice = {
const tokenData = TemporaryMobileDeviceRequests.get(token);
if (tokenData.expiresAt < Date.now()) return null;
return tokenData;
} catch (error) {
} catch {
return null;
} finally {
TemporaryMobileDeviceRequests.delete(token);

View File

@@ -5,7 +5,6 @@ process.env.NODE_ENV === "development"
const { default: slugify } = require("slugify");
const { isValidUrl, safeJsonParse } = require("../utils/http");
const prisma = require("../utils/prisma");
const { v4 } = require("uuid");
const { MetaGenerator } = require("../utils/boot/MetaGenerator");
const { PGVector } = require("../utils/vectorDbProviders/pgvector");
const { NativeEmbedder } = require("../utils/EmbeddingEngines/native");
@@ -72,7 +71,7 @@ const SystemSettings = {
.filter((setting) => isValidUrl(setting.url))
.slice(0, 3); // max of 3 items in footer.
return JSON.stringify(array);
} catch (e) {
} catch {
console.error(`Failed to run validation function on footer_data`);
return JSON.stringify([]);
}
@@ -138,7 +137,7 @@ const SystemSettings = {
try {
const skills = updates.split(",").filter((skill) => !!skill);
return JSON.stringify(skills);
} catch (e) {
} catch {
console.error(`Could not validate agent skills.`);
return JSON.stringify([]);
}
@@ -147,7 +146,7 @@ const SystemSettings = {
try {
const skills = updates.split(",").filter((skill) => !!skill);
return JSON.stringify(skills);
} catch (e) {
} catch {
console.error(`Could not validate disabled agent skills.`);
return JSON.stringify([]);
}
@@ -163,7 +162,7 @@ const SystemSettings = {
safeJsonParse(updates, [])
);
return JSON.stringify(updatedConnections);
} catch (e) {
} catch {
console.error(`Failed to merge connections`);
return JSON.stringify(existingConnections ?? []);
}

View File

@@ -87,7 +87,11 @@ const User = {
},
filterFields: function (user = {}) {
const { password, web_push_subscription_config, ...rest } = user;
const {
password: _password,
web_push_subscription_config: _web_push_subscription_config,
...rest
} = user;
return { ...rest };
},
_identifyErrorAndFormatMessage: function (error) {

View File

@@ -12,7 +12,7 @@
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon --ignore documents --ignore vector-cache --ignore storage --ignore swagger --trace-warnings index.js",
"start": "cross-env NODE_ENV=production node index.js",
"lint": "yarn prettier --ignore-path ../.prettierignore --write ./endpoints ./models ./utils index.js",
"lint": "eslint --fix .",
"swagger": "node ./swagger/init.js"
},
"prisma": {
@@ -92,18 +92,20 @@
"form-data": "4.0.4"
},
"devDependencies": {
"@eslint/js": "9",
"@inquirer/prompts": "^4.3.1",
"cross-env": "^7.0.3",
"eslint": "^8.50.0",
"eslint": "9",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-ft-flow": "^3.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"eslint-plugin-unused-imports": "^4.4.1",
"flow-bin": "^0.217.0",
"flow-remove-types": "^2.217.1",
"globals": "^13.21.0",
"globals": "^17.4.0",
"hermes-eslint": "^0.15.0",
"node-html-markdown": "^1.3.0",
"nodemon": "^2.0.22",

View File

@@ -1,10 +1,10 @@
function waitForElm(selector) {
return new Promise(resolve => {
return new Promise((resolve) => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
const observer = new MutationObserver((_mutations) => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
@@ -13,16 +13,16 @@ function waitForElm(selector) {
observer.observe(document.body, {
childList: true,
subtree: true
subtree: true,
});
});
}
// Force change the Swagger logo in the header
waitForElm('.topbar-wrapper').then((elm) => {
if (window.SWAGGER_DOCS_ENV === 'development') {
elm.innerHTML = `<img href='${window.location.origin}' src='http://localhost:3000/public/anything-llm-light.png' width='200'/>`
waitForElm(".topbar-wrapper").then((elm) => {
if (window.SWAGGER_DOCS_ENV === "development") {
elm.innerHTML = `<img href='${window.location.origin}' src='http://localhost:3000/public/anything-llm-light.png' width='200'/>`;
} else {
elm.innerHTML = `<img href='${window.location.origin}' src='${window.location.origin}/anything-llm-light.png' width='200'/>`
elm.innerHTML = `<img href='${window.location.origin}' src='${window.location.origin}/anything-llm-light.png' width='200'/>`;
}
});
});

View File

@@ -1,11 +1,11 @@
const fs = require('fs');
const path = require('path');
const swaggerUi = require('swagger-ui-express');
const fs = require("fs");
const path = require("path");
const swaggerUi = require("swagger-ui-express");
function faviconUrl() {
return process.env.NODE_ENV === "production" ?
'/public/favicon.png' :
'http://localhost:3000/public/favicon.png'
return process.env.NODE_ENV === "production"
? "/public/favicon.png"
: "http://localhost:3000/public/favicon.png";
}
function useSwagger(app) {
@@ -15,44 +15,42 @@ function useSwagger(app) {
);
return;
}
app.use('/api/docs', swaggerUi.serve);
app.use("/api/docs", swaggerUi.serve);
const options = {
customCss: [
fs.readFileSync(path.resolve(__dirname, 'index.css')),
fs.readFileSync(path.resolve(__dirname, 'dark-swagger.css'))
].join('\n\n\n'),
customSiteTitle: 'AnythingLLM Developer API Documentation',
fs.readFileSync(path.resolve(__dirname, "index.css")),
fs.readFileSync(path.resolve(__dirname, "dark-swagger.css")),
].join("\n\n\n"),
customSiteTitle: "AnythingLLM Developer API Documentation",
customfavIcon: faviconUrl(),
}
};
if (process.env.NODE_ENV === "production") {
const swaggerDocument = require('./openapi.json');
app.get('/api/docs', swaggerUi.setup(
swaggerDocument,
{
...options,
customJsStr: 'window.SWAGGER_DOCS_ENV = "production";\n\n' + fs.readFileSync(path.resolve(__dirname, 'index.js'), 'utf8'),
},
));
} else {
// we regenerate the html page only in development mode to ensure it is up-to-date when the code is hot-reloaded.
const swaggerDocument = require("./openapi.json");
app.get(
"/api/docs",
async (_, response) => {
// #swagger.ignore = true
const swaggerDocument = require('./openapi.json');
return response.send(
swaggerUi.generateHTML(
swaggerDocument,
{
...options,
customJsStr: 'window.SWAGGER_DOCS_ENV = "development";\n\n' + fs.readFileSync(path.resolve(__dirname, 'index.js'), 'utf8'),
}
)
);
}
swaggerUi.setup(swaggerDocument, {
...options,
customJsStr:
'window.SWAGGER_DOCS_ENV = "production";\n\n' +
fs.readFileSync(path.resolve(__dirname, "index.js"), "utf8"),
})
);
} else {
// we regenerate the html page only in development mode to ensure it is up-to-date when the code is hot-reloaded.
app.get("/api/docs", async (_, response) => {
// #swagger.ignore = true
const swaggerDocument = require("./openapi.json");
return response.send(
swaggerUi.generateHTML(swaggerDocument, {
...options,
customJsStr:
'window.SWAGGER_DOCS_ENV = "development";\n\n' +
fs.readFileSync(path.resolve(__dirname, "index.js"), "utf8"),
})
);
});
}
}
module.exports = { faviconUrl, useSwagger }
module.exports = { faviconUrl, useSwagger };

View File

@@ -55,7 +55,7 @@ class AzureOpenAiLLM {
url.search = "";
url.hash = "";
return url.href;
} catch (error) {
} catch {
throw new Error(
`"${azureOpenAiEndpoint}" is not a valid URL. Check your settings for the Azure OpenAI provider and set a valid endpoint URL.`
);

View File

@@ -170,7 +170,7 @@ class AWSBedrockLLM {
const numericLimit = Number(limit);
if (isNaN(numericLimit) || numericLimit <= 0) {
this.#slog(
`[AWSBedrock ERROR] Invalid AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT found: "${limitSourceValue}". Must be a positive number - returning default ${DEFAULT_CONTEXT_WINDOW_TOKENS}.`
`[AWSBedrock ERROR] Invalid AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT found: "${limit}". Must be a positive number - returning default ${DEFAULT_CONTEXT_WINDOW_TOKENS}.`
);
return DEFAULT_CONTEXT_WINDOW_TOKENS;
}

View File

@@ -45,7 +45,7 @@ class DellProAiStudioLLM {
const baseURL = new URL(providedBasePath);
const basePath = `${baseURL.origin}/v1/openai`;
return basePath;
} catch (e) {
} catch {
return null;
}
}

View File

@@ -276,7 +276,7 @@ function parseDockerModelRunnerEndpoint(basePath = null, to = "openai") {
else if (to === "ollama") url.pathname = "api";
else if (to === "dmr") url.pathname = "";
return url.toString();
} catch (e) {
} catch {
return basePath;
}
}
@@ -508,6 +508,7 @@ async function getDockerModels(basePath = null, task = "chat") {
} catch (e) {
DockerModelRunnerLLM.slog(`Error getting Docker models`, e);
} finally {
// eslint-disable-next-line
return Object.values(availableModels).flatMap((m) => m.tags);
}
}

View File

@@ -464,7 +464,7 @@ function parseFoundryBasePath(providedBasePath = "") {
const baseURL = new URL(providedBasePath);
const basePath = `${baseURL.origin}/v1`;
return basePath;
} catch (e) {
} catch {
return providedBasePath;
}
}

View File

@@ -7,6 +7,7 @@ const {
writeResponseChunk,
clientAbortedHandler,
} = require("../../helpers/chat/responses");
const { v4: uuidv4 } = require("uuid");
const { toValidNumber } = require("../../http");
const { getAnythingLLMUserAgent } = require("../../../endpoints/utils");

View File

@@ -89,7 +89,7 @@ class GiteeAILLM {
);
}
async isValidChatCompletionModel(modelName = "") {
async isValidChatCompletionModel(_modelName = "") {
return true;
}

View File

@@ -309,7 +309,7 @@ function parseLemonadeServerEndpoint(basePath = null, to = "openai") {
else if (to === "ollama") url.pathname = "api";
else if (to === "base") url.pathname = ""; // only used for /live
return url.toString();
} catch (e) {
} catch {
return basePath;
}
}
@@ -369,6 +369,7 @@ async function getAllLemonadeModels(basePath = null, task = "chat") {
} catch (e) {
LemonadeLLM.slog(`Error getting Lemonade models`, e);
} finally {
// eslint-disable-next-line
return Object.values(availableModels).flatMap((m) => m.tags);
}
}

View File

@@ -356,7 +356,7 @@ function parseLMStudioBasePath(providedBasePath = "", apiVersion = "legacy") {
if (apiVersion === "legacy") basePath += `/v1`;
if (apiVersion === "v1") basePath += `/api/v1`;
return basePath;
} catch (e) {
} catch {
return providedBasePath;
}
}

View File

@@ -59,7 +59,7 @@ class MistralLLM {
return 32000;
}
async isValidChatCompletionModel(modelName = "") {
async isValidChatCompletionModel(_modelName = "") {
return true;
}

View File

@@ -242,7 +242,7 @@ function parseNvidiaNimBasePath(providedBasePath = "") {
const baseURL = new URL(providedBasePath);
const basePath = `${baseURL.origin}/v1`;
return basePath;
} catch (e) {
} catch {
return providedBasePath;
}
}

View File

@@ -112,6 +112,7 @@ class PPIOLLM {
* @param {{userPrompt:string, attachments: import("../../helpers").Attachment[]}}
* @returns {string|object[]}
*/
//eslint-disable-next-line
#generateContent({ userPrompt, attachments = [] }) {
if (!attachments.length) {
return userPrompt;

View File

@@ -54,7 +54,7 @@ class PrivatemodeLLM {
const baseURL = new URL(providedBasePath);
const basePath = `${baseURL.origin}/v1`;
return basePath;
} catch (e) {
} catch {
return null;
}
}

View File

@@ -3,7 +3,10 @@ const {
LLMPerformanceMonitor,
} = require("../../helpers/chat/LLMPerformanceMonitor");
const { v4: uuidv4 } = require("uuid");
const { writeResponseChunk } = require("../../helpers/chat/responses");
const {
writeResponseChunk,
clientAbortedHandler,
} = require("../../helpers/chat/responses");
const { MODEL_MAP } = require("../modelMap");
class SambaNovaLLM {

View File

@@ -1,4 +1,3 @@
const { toChunks } = require("../../helpers");
const { parseLemonadeServerEndpoint } = require("../../AiProviders/lemonade");
class LemonadeEmbedder {

View File

@@ -44,7 +44,7 @@ class NativeEmbeddingReranker {
if (!NativeEmbeddingReranker.#transformers) return "https://huggingface.co";
try {
return new URL(NativeEmbeddingReranker.#transformers.env.remoteHost).host;
} catch (e) {
} catch {
return this.#fallbackHost;
}
}

View File

@@ -315,7 +315,7 @@ class MCPHypervisor {
try {
new URL(server.url);
} catch (error) {
} catch {
throw new Error(`MCP server "${name}": invalid URL "${server.url}"`);
}
return;

View File

@@ -1,4 +1,4 @@
const { ElevenLabsClient, stream } = require("elevenlabs");
const { ElevenLabsClient } = require("elevenlabs");
class ElevenLabsTTS {
constructor() {

View File

@@ -45,7 +45,7 @@ app.ws("/ws", function (ws, _response) {
})
);
});
} catch (error) {}
} catch {}
});
app.all("*", function (_, response) {

View File

@@ -45,7 +45,7 @@ app.ws("/ws", function (ws, _response) {
})
);
});
} catch (error) {}
} catch {}
});
app.all("*", function (_, response) {

View File

@@ -1,3 +1,4 @@
/* eslint-disable unused-imports/no-unused-vars */
const { EventEmitter } = require("events");
const { APIError } = require("./error.js");
const Providers = require("./providers/index.js");
@@ -275,6 +276,7 @@ class AIbitat {
/**
* The message when the error occurred.
*/
// eslint-disable-next-line
{}
) => null
) {
@@ -913,6 +915,7 @@ ${this.getHistory({ to: route.to })
}
// remove the last chat's that threw an error
// eslint-disable-next-line
const { from, to } = this?._chats?.pop();
await this.chat({ from, to });

View File

@@ -1,7 +1,6 @@
// Plugin CAN ONLY BE USE IN DEVELOPMENT.
const { input } = require("@inquirer/prompts");
const chalk = require("chalk");
const { RetryError } = require("../error");
/**
* Command-line Interface plugin. It prints the messages on the console and asks for feedback

View File

@@ -64,7 +64,7 @@ async function validateConnection(identifier = "", connectionConfig = {}) {
try {
const client = getDBClient(identifier, connectionConfig);
return await client.validateConnection();
} catch (error) {
} catch {
console.log(`Failed to connect to ${identifier} database.`);
return {
success: false,

View File

@@ -37,7 +37,7 @@ module.exports.SqlAgentListDatabase = {
);
const connections = (await listSQLConnections()).map((conn) => {
const { connectionString, ...rest } = conn;
const { connectionString: _connectionString, ...rest } = conn;
return rest;
});
return JSON.stringify(connections);

View File

@@ -196,6 +196,7 @@ const webBrowsing = {
extensions,
});
});
break;
case "google_maps":
response.local_results?.slice(0, 10).forEach((searchResult) => {
const {
@@ -217,6 +218,7 @@ const webBrowsing = {
extensions,
});
});
break;
case "google_images_light":
response.images_results
?.slice(0, 10)
@@ -229,6 +231,7 @@ const webBrowsing = {
thumbnail,
});
});
break;
case "google_shopping_light":
response.shopping_results
?.slice(0, 10)
@@ -254,6 +257,7 @@ const webBrowsing = {
product_link,
});
});
break;
case "google_news_light":
response.news_results?.slice(0, 10).forEach((searchResult) => {
const { title, link, source, thumbnail, snippet, date } =
@@ -267,6 +271,7 @@ const webBrowsing = {
date,
});
});
break;
case "google_jobs":
response.jobs_results?.forEach((searchResult) => {
const {
@@ -286,6 +291,7 @@ const webBrowsing = {
extensions,
});
});
break;
case "google_patents":
response.organic_results?.forEach((searchResult) => {
const {
@@ -305,6 +311,7 @@ const webBrowsing = {
publication_number,
});
});
break;
case "google_scholar":
response.organic_results?.forEach((searchResult) => {
const { title, link, snippet, publication_info } =
@@ -316,6 +323,7 @@ const webBrowsing = {
publication_info,
});
});
break;
case "baidu":
if (response.hasOwnProperty("answer_box"))
data.push(response.answer_box);
@@ -327,6 +335,7 @@ const webBrowsing = {
snippet,
});
});
break;
case "amazon":
response.organic_results
?.slice(0, 10)
@@ -560,6 +569,7 @@ const webBrowsing = {
query,
language = "en",
hl = "us",
//eslint-disable-next-line
limit = 100,
device_type = "desktop",
proxy_location = "US"

View File

@@ -153,6 +153,7 @@ class CohereProvider extends InheritMultiple([Provider, UnTooled]) {
this.providerLog(
"CohereProvider.stream - will process this chat completion."
);
// eslint-disable-next-line
try {
let completion = { content: "" };
if (functions.length > 0) {

View File

@@ -263,6 +263,7 @@ ${JSON.stringify(def.parameters.properties, null, 4)}\n`;
eventHandler = null
) {
this.providerLog("Untooled.stream - will process this chat completion.");
// eslint-disable-next-line
try {
let completion = { content: "" };
if (functions.length > 0) {
@@ -368,6 +369,7 @@ ${JSON.stringify(def.parameters.properties, null, 4)}\n`;
*/
async complete(messages, functions = [], chatCallback = null) {
this.providerLog("Untooled.complete - will process this chat completion.");
// eslint-disable-next-line
try {
let completion = { content: "" };
if (functions.length > 0) {

View File

@@ -307,6 +307,7 @@ class OllamaProvider extends InheritMultiple([Provider, UnTooled]) {
this.providerLog(
"OllamaProvider.stream - will process this chat completion."
);
// eslint-disable-next-line
try {
let completion = { content: "" };
if (functions.length > 0) {
@@ -469,6 +470,7 @@ class OllamaProvider extends InheritMultiple([Provider, UnTooled]) {
this.providerLog(
"OllamaProvider.complete - will process this chat completion."
);
// eslint-disable-next-line
try {
let completion = { content: "" };
if (functions.length > 0) {

View File

@@ -5,7 +5,6 @@ const Provider = require("./aibitat/providers/ai-provider");
const ImportedPlugin = require("./imported");
const { AgentFlows } = require("../agentFlows");
const MCPCompatibilityLayer = require("../MCP");
const { SystemPromptVariables } = require("../../models/systemPromptVariables");
// This is a list of skills that are built-in and default enabled.
const DEFAULT_SKILLS = [

View File

@@ -355,7 +355,7 @@ class EphemeralAgentHandler extends AgentHandler {
async createAIbitat(
args = {
handler,
handler: null,
}
) {
this.aibitat = new AIbitat({

View File

@@ -593,7 +593,7 @@ class AgentHandler {
async createAIbitat(
args = {
socket,
socket: null,
}
) {
this.aibitat = new AIbitat({

View File

@@ -136,7 +136,7 @@ async function getDocumentsByFolder(folderName = "") {
const filePath = path.join(folderPath, file);
const rawData = fs.readFileSync(filePath, "utf8");
const cachefilename = `${folderName}/${file}`;
const { pageContent, ...metadata } = JSON.parse(rawData);
const { pageContent: _pageContent, ...metadata } = JSON.parse(rawData);
documents.push({
name: file,
type: "file",
@@ -251,7 +251,7 @@ async function findDocumentInDocuments(documentName = null) {
const fileData = fs.readFileSync(targetFileLocation, "utf8");
const cachefilename = `${folder}/${targetFilename}`;
const { pageContent, ...metadata } = JSON.parse(fileData);
const { pageContent: _pageContent, ...metadata } = JSON.parse(fileData);
return {
name: targetFilename,
type: "file",

View File

@@ -38,7 +38,10 @@ async function determineLogoFilepath(defaultFilename = LOGO_FILENAME) {
const defaultFilepath = path.join(basePath, defaultFilename);
if (currentLogoFilename && validFilename(currentLogoFilename)) {
customLogoPath = path.join(basePath, normalizePath(currentLogoFilename));
const customLogoPath = path.join(
basePath,
normalizePath(currentLogoFilename)
);
if (!isWithin(path.resolve(basePath), path.resolve(customLogoPath)))
return defaultFilepath;
return fs.existsSync(customLogoPath) ? customLogoPath : defaultFilepath;

View File

@@ -33,7 +33,7 @@ class LLMPerformanceMonitor {
static countTokens(messages = []) {
try {
return this.tokenManager.statsFrom(messages);
} catch (e) {
} catch {
return 0;
}
}

View File

@@ -384,7 +384,7 @@ function fillSourceWindow({
searchResults = [], // Sources from similarity search
history = [], // Raw history
filterIdentifiers = [], // pinned document sources
} = config) {
} = {}) {
const sources = [...searchResults];
if (sources.length >= nDocs || history.length === 0) {

View File

@@ -853,7 +853,7 @@ function isValidURL(input = "") {
try {
new URL(input);
return null;
} catch (e) {
} catch {
return "URL is not a valid URL.";
}
}

View File

@@ -95,7 +95,7 @@ function isValidUrl(urlString = "") {
const url = new URL(urlString);
if (!["http:", "https:"].includes(url.protocol)) return false;
return true;
} catch (e) {}
} catch {}
return false;
}

View File

@@ -157,7 +157,7 @@ async function canRespond(request, response, next) {
}
next();
} catch (e) {
} catch {
response.status(500).json({
id: uuidv4(),
type: "abort",

View File

@@ -1,5 +1,6 @@
/**
* Base class for all Vector Database providers.
/* eslint-disable unused-imports/no-unused-vars */
/* Base class for all Vector Database providers.
* All vector database providers should extend this class and implement/override the necessary methods.
*/
class VectorDatabase {

View File

@@ -119,6 +119,7 @@ class ChromaCloud extends Chroma {
let counter = 1;
for (const chunk of chunks) {
await collection.add(chunk);
//eslint-disable-next-line
counter++;
}
return true;

View File

@@ -313,7 +313,7 @@ class PGVector extends VectorDatabase {
(row) => row.tablename === PGVector.tableName()
);
return !!tableExists;
} catch (err) {
} catch {
return false;
} finally {
if (connection) await connection.end();
@@ -329,7 +329,7 @@ class PGVector extends VectorDatabase {
`SELECT COUNT(id) FROM "${PGVector.tableName()}"`
);
return result.rows[0].count;
} catch (err) {
} catch {
return 0;
} finally {
if (connection) await connection.end();
@@ -354,7 +354,7 @@ class PGVector extends VectorDatabase {
[namespace]
);
return result.rows[0].count;
} catch (err) {
} catch {
return 0;
} finally {
if (connection) await connection.end();
@@ -500,7 +500,7 @@ class PGVector extends VectorDatabase {
try {
connection = await this.connect();
return await this.namespaceExists(connection, namespace);
} catch (err) {
} catch {
return false;
} finally {
if (connection) await connection.end();
@@ -823,7 +823,7 @@ class PGVector extends VectorDatabase {
connection = await this.connect();
await connection.query(`DROP TABLE IF EXISTS "${PGVector.tableName()}"`);
return { reset: true };
} catch (err) {
} catch {
return { reset: false };
} finally {
if (connection) await connection.end();

View File

@@ -492,7 +492,6 @@ class Weaviate extends VectorDatabase {
if (
value.length > 0 &&
typeof value[0] !== "object" &&
// eslint-disable-next-line @typescript-eslint/no-explicit-any
value.every((el) => typeof el === typeof value[0])
) {
// Weaviate only supports arrays of primitive types,

View File

@@ -1612,37 +1612,73 @@
bson "^6.2.0"
winston "^3.7.2"
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
"@eslint-community/eslint-utils@^4.8.0":
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.3.0"
eslint-visitor-keys "^3.4.3"
"@eslint-community/regexpp@^4.6.1":
version "4.10.0"
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
"@eslint-community/regexpp@^4.12.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==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
"@eslint/config-array@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713"
integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==
dependencies:
ajv "^6.12.4"
"@eslint/object-schema" "^2.1.7"
debug "^4.3.1"
minimatch "^3.1.2"
"@eslint/config-helpers@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda"
integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==
dependencies:
"@eslint/core" "^0.17.0"
"@eslint/core@^0.17.0":
version "0.17.0"
resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c"
integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==
dependencies:
"@types/json-schema" "^7.0.15"
"@eslint/eslintrc@^3.3.1":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.4.tgz#e402b1920f7c1f5a15342caa432b1348cacbb641"
integrity sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==
dependencies:
ajv "^6.14.0"
debug "^4.3.2"
espree "^9.6.0"
globals "^13.19.0"
espree "^10.0.1"
globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.1.2"
js-yaml "^4.1.1"
minimatch "^3.1.3"
strip-json-comments "^3.1.1"
"@eslint/js@8.57.0":
version "8.57.0"
resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
"@eslint/js@9", "@eslint/js@9.39.3":
version "9.39.3"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.3.tgz#c6168736c7e0c43ead49654ed06a4bcb3833363d"
integrity sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==
"@eslint/object-schema@^2.1.7":
version "2.1.7"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad"
integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==
"@eslint/plugin-kit@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2"
integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==
dependencies:
"@eslint/core" "^0.17.0"
levn "^0.4.1"
"@fastify/busboy@^2.0.0":
version "2.1.1"
@@ -1699,24 +1735,28 @@
resolved "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz"
integrity sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==
"@humanwhocodes/config-array@^0.11.14":
version "0.11.14"
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
"@humanfs/core@^0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
"@humanfs/node@^0.16.6":
version "0.16.7"
resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26"
integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==
dependencies:
"@humanwhocodes/object-schema" "^2.0.2"
debug "^4.3.1"
minimatch "^3.0.5"
"@humanfs/core" "^0.19.1"
"@humanwhocodes/retry" "^0.4.0"
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
"@humanwhocodes/object-schema@^2.0.2":
version "2.0.3"
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba"
integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
"@inquirer/checkbox@^2.2.3":
version "2.3.2"
@@ -2089,27 +2129,6 @@
zod "^3.25 || ^4.0"
zod-to-json-schema "^3.25.0"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.8":
version "1.2.8"
resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@petamoriken/float16@^3.8.6":
version "3.8.6"
resolved "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.6.tgz"
@@ -3502,6 +3521,16 @@
resolved "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz"
integrity sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==
"@types/estree@^1.0.6":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@types/json-schema@^7.0.15":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/lodash@^4.14.165":
version "4.17.6"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.6.tgz"
@@ -3581,11 +3610,6 @@
resolved "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz"
integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
"@xenova/transformers@^2.14.0", "@xenova/transformers@^2.17.2":
version "2.17.2"
resolved "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.17.2.tgz"
@@ -3649,10 +3673,10 @@ acorn@^7.4.1:
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.9.0:
version "8.11.3"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
acorn@^8.15.0:
version "8.16.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
adm-zip@^0.5.16:
version "0.5.16"
@@ -3680,10 +3704,10 @@ ajv-formats@^3.0.1:
dependencies:
ajv "^8.0.0"
ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
ajv@^6.12.4, ajv@^6.14.0:
version "6.14.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a"
integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -4152,7 +4176,7 @@ call-bound@^1.0.2:
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camelcase@6:
@@ -4555,7 +4579,7 @@ cross-fetch@^3.1.5:
dependencies:
node-fetch "^2.6.12"
cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.5:
cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.5, cross-spawn@^7.0.6:
version "7.0.6"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
@@ -4564,15 +4588,6 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.5:
shebang-command "^2.0.0"
which "^2.0.1"
cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
crypt@0.0.2:
version "0.0.2"
resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz"
@@ -4754,13 +4769,6 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
dom-serializer@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
@@ -5098,76 +5106,82 @@ eslint-plugin-react@^7.33.2:
semver "^6.3.1"
string.prototype.matchall "^4.0.10"
eslint-scope@^7.2.2:
version "7.2.2"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
eslint-plugin-unused-imports@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.4.1.tgz#a831f0a2937d7631eba30cb87091ab7d3a5da0e1"
integrity sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==
eslint-scope@^8.4.0:
version "8.4.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82"
integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8.50.0:
version "8.57.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
eslint-visitor-keys@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
eslint@9:
version "9.39.3"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.3.tgz#08d63df1533d7743c0907b32a79a7e134e63ee2f"
integrity sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.4"
"@eslint/js" "8.57.0"
"@humanwhocodes/config-array" "^0.11.14"
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.1"
"@eslint/config-array" "^0.21.1"
"@eslint/config-helpers" "^0.4.2"
"@eslint/core" "^0.17.0"
"@eslint/eslintrc" "^3.3.1"
"@eslint/js" "9.39.3"
"@eslint/plugin-kit" "^0.4.1"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
"@ungap/structured-clone" "^1.2.0"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
cross-spawn "^7.0.6"
debug "^4.3.2"
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
eslint-scope "^7.2.2"
eslint-visitor-keys "^3.4.3"
espree "^9.6.1"
esquery "^1.4.2"
eslint-scope "^8.4.0"
eslint-visitor-keys "^4.2.1"
espree "^10.4.0"
esquery "^1.5.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
file-entry-cache "^8.0.0"
find-up "^5.0.0"
glob-parent "^6.0.2"
globals "^13.19.0"
graphemer "^1.4.0"
ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
is-path-inside "^3.0.3"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.3"
strip-ansi "^6.0.1"
text-table "^0.2.0"
espree@^9.6.0, espree@^9.6.1:
version "9.6.1"
resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
espree@^10.0.1, espree@^10.4.0:
version "10.4.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
dependencies:
acorn "^8.9.0"
acorn "^8.15.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
eslint-visitor-keys "^4.2.1"
esquery@^1.4.2:
version "1.5.0"
resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
esquery@^1.5.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
@@ -5410,24 +5424,17 @@ fastest-levenshtein@^1.0.7:
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
fastq@^1.6.0:
version "1.17.1"
resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
dependencies:
reusify "^1.0.4"
fecha@^4.2.0:
version "4.2.3"
resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz"
integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
file-entry-cache@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
dependencies:
flat-cache "^3.0.4"
flat-cache "^4.0.0"
fill-range@^7.0.1:
version "7.0.1"
@@ -5488,14 +5495,13 @@ fix-path@^4.0.0:
dependencies:
shell-path "^3.0.0"
flat-cache@^3.0.4:
version "3.2.0"
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz"
integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
flat-cache@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
dependencies:
flatted "^3.2.9"
keyv "^4.5.3"
rimraf "^3.0.2"
keyv "^4.5.4"
flat@^5.0.2:
version "5.0.2"
@@ -5728,7 +5734,7 @@ glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
glob@^7.1.3, glob@^7.1.7:
glob@^7.1.7:
version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -5740,12 +5746,15 @@ glob@^7.1.3, glob@^7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^13.19.0, globals@^13.21.0:
version "13.24.0"
resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
globals@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globals@^17.4.0:
version "17.4.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-17.4.0.tgz#33d7d297ed1536b388a0e2f4bcd0ff19c8ff91b5"
integrity sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==
globalthis@^1.0.3:
version "1.0.4"
@@ -5760,11 +5769,6 @@ gopd@^1.0.1, gopd@^1.2.0:
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
graphql-request@^5.2.0:
version "5.2.0"
resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-5.2.0.tgz"
@@ -5990,9 +5994,9 @@ ignore@^5.2.0:
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
version "3.3.1"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf"
integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
@@ -6194,11 +6198,6 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-path-inside@^3.0.3:
version "3.0.3"
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
is-promise@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
@@ -6397,6 +6396,13 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
js-yaml@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
dependencies:
argparse "^2.0.1"
jsbi@^4.3.0:
version "4.3.0"
resolved "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz"
@@ -6502,9 +6508,9 @@ jws@^4.0.0:
jwa "^2.0.0"
safe-buffer "^5.0.1"
keyv@^4.5.3:
keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
@@ -6686,7 +6692,7 @@ lodash.isstring@^4.0.1:
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.once@^4.0.0:
@@ -6851,13 +6857,20 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
minimatch@^3.1.3:
version "3.1.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
@@ -7382,7 +7395,7 @@ p-wait-for@3:
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
@@ -7717,11 +7730,6 @@ qs@^6.13.1, qs@^6.14.0, qs@~6.14.0:
dependencies:
side-channel "^1.1.0"
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
queue-tick@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz"
@@ -7863,7 +7871,7 @@ require-from-string@^2.0.2:
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve@^2.0.0-next.5:
@@ -7880,23 +7888,11 @@ retry@^0.13.1:
resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz"
integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rfdc@^1.3.0:
version "1.3.1"
resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz"
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
router@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef"
@@ -7908,13 +7904,6 @@ router@^2.2.0:
parseurl "^1.3.3"
path-to-regexp "^8.0.0"
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
dependencies:
queue-microtask "^1.2.2"
rusha@^0.8.14:
version "0.8.14"
resolved "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz"
@@ -8383,7 +8372,7 @@ strip-final-newline@^2.0.0:
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
strip-json-comments@~2.0.1:
@@ -8539,11 +8528,6 @@ text-hex@1.0.x:
resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz"
integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
@@ -8614,11 +8598,6 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
type-fest@^0.21.3:
version "0.21.3"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"