From c6833cc6a72ed4749959c40a9d8ed57c9c70a356 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Wed, 11 Sep 2024 06:36:33 +0100 Subject: [PATCH 01/17] feat(commands): refactor clear, exit, file, fileTree, web commands to use Plugin interface for better organization and extensibility feat(commands): add Plugin interface with name, keyword, description, execute properties feat(commands): refactor clear command to use Plugin interface and improve code structure feat(commands): refactor exit command to use Plugin interface and enhance code readability feat(commands): refactor file command to use Plugin interface and improve modularity feat(commands): refactor fileTree command to use Plugin interface for consistency feat(commands): refactor index file to load plugins dynamically for better scalability feat(commands): refactor web command to use Plugin interface and enhance code structure feat(context): remove debug logs from context functions for cleaner code feat(engine): add hasContext property to AiEngineConfig for context handling feat(engine): update Engine class to handle hasContext property in engine options feat(engine): update generateResponse function to include hasContext parameter for context-aware responses refactor(anthropic.ts): add optional parameter 'hasContext' with default value false to control adding context based on the flag refactor(webHandler.ts): update console log message for clarity refactor(index.ts): add new function 'determinePlugins' to handle plugin determination logic, refactor plugin execution flow to use the new function and improve error handling refactor(utils.ts): add new function 'promptCerebro' to handle prompt response for Cerebro engine, improve error handling in 'promptResponse' --- src/commands/clear.ts | 14 +++++-- src/commands/exit.ts | 14 +++++-- src/commands/file.ts | 49 +++++++++++++++-------- src/commands/fileTree.ts | 33 ++++++++++++++++ src/commands/index.ts | 72 ++++++++++++++++++++------------- src/commands/web.ts | 61 +++++++++++++++++++++------- src/context.ts | 6 --- src/engine/Engine.ts | 12 +++++- src/engine/anthropic.ts | 9 +++-- src/handlers/webHandler.ts | 3 +- src/index.ts | 81 ++++++++++++++++++++++++++++++++++---- src/utils.ts | 48 +++++++++++++++++++--- 12 files changed, 313 insertions(+), 89 deletions(-) create mode 100644 src/commands/fileTree.ts diff --git a/src/commands/clear.ts b/src/commands/clear.ts index 9251efe..ece7908 100644 --- a/src/commands/clear.ts +++ b/src/commands/clear.ts @@ -1,5 +1,13 @@ -const clearFunc = () => { - process.stdout.write("\x1Bc"); +import { Plugin } from "./index"; + +const clearPlugin: Plugin = { + name: "clear", + keyword: "@clear", + description: "Clears the terminal screen", + execute: async () => { + process.stdout.write("\x1Bc"); + return "Terminal screen cleared."; + }, }; -export default clearFunc; +export default clearPlugin; diff --git a/src/commands/exit.ts b/src/commands/exit.ts index 61ad6f8..f48ed60 100644 --- a/src/commands/exit.ts +++ b/src/commands/exit.ts @@ -1,8 +1,14 @@ +import { Plugin } from "./index"; import chalk from "chalk"; -const exitFunc = () => { - console.log(chalk.yellow("Goodbye!")); - process.exit(0); +const exitPlugin: Plugin = { + name: "exit", + keyword: "@exit", + description: "Exits the application", + execute: async () => { + console.log(chalk.yellow("Goodbye!")); + process.exit(0); + }, }; -export default exitFunc; +export default exitPlugin; diff --git a/src/commands/file.ts b/src/commands/file.ts index 450e4bb..1e69962 100644 --- a/src/commands/file.ts +++ b/src/commands/file.ts @@ -1,22 +1,39 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import chalk from "chalk"; +import { Plugin } from "./index"; import { handleFileReference } from "../handlers/fileHandler"; // Assuming this function exists -import { apiKeyPrompt, promptResponse } from "../utils"; // Assuming this function exists +import { promptResponse } from "../utils"; // Assuming this function exists -const fileFunc = async (userInput: string) => { - const creds = await apiKeyPrompt(); - // we need to call file handler here - const [, filePath, ...promptParts] = userInput.split(" "); - const promptText = promptParts.join(" "); - if (filePath) { - await handleFileReference(filePath, promptText); - if (creds.apiKey != null) { - await promptResponse(creds.engine, creds.apiKey, userInput, {}); +const filePlugin: Plugin = { + name: "file", + keyword: "@file", + description: "Handles file operations and references", + execute: async (context: { + userInput: string; + engine: string; + apiKey: string; + opts: any; + }) => { + const { userInput, engine, apiKey, opts } = context; + const [, filePath, ...promptParts] = userInput.split(" "); + const promptText = promptParts.join(" "); + + if (filePath) { + try { + await handleFileReference(filePath, promptText); + const response = await promptResponse(engine, apiKey, userInput, opts); + return response; + } catch (error) { + console.error(chalk.red(`Error handling file: ${error}`)); + return `Error: ${error}`; + } + } else { + console.log( + chalk.yellow("Please provide a file path. Usage: @file [prompt]") + ); + return "Error: No file path provided"; } - } else { - console.log( - chalk.yellow("Please provide a file path. Usage: @file [prompt]") - ); - } + }, }; -export default fileFunc; +export default filePlugin; diff --git a/src/commands/fileTree.ts b/src/commands/fileTree.ts new file mode 100644 index 0000000..30d6749 --- /dev/null +++ b/src/commands/fileTree.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import * as fs from "fs"; +import * as path from "path"; +import { Plugin } from "./index"; + +const fileScannerPlugin: Plugin = { + name: "fileScanner", + keyword: "@filetree", + description: "Scans the project directory and returns important files", + execute: async () => { + const projectRoot = process.cwd(); + const importantFiles = [ + "package.json", + "README.md", + "tsconfig.json", + ".gitignore", + ]; + const result: { path: string; content: string }[] = []; // Specify the type here + + for (const file of importantFiles) { + const filePath = path.join(projectRoot, file); + if (fs.existsSync(filePath)) { + const content = fs.readFileSync(filePath, "utf-8"); + result.push({ path: file, content }); + } + } + + console.log("File tree scan result:", result); + return result; + }, +}; + +export default fileScannerPlugin; diff --git a/src/commands/index.ts b/src/commands/index.ts index e7dff34..fd4bab2 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,43 +1,61 @@ -import exitFunc from "./exit"; -import clearFunc from "./clear"; -import fileFunc from "./file"; -import webFunc from "./web"; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import * as fs from "fs"; +import * as path from "path"; export interface Plugin { + name: string; keyword: string; - execute: (userInput: string) => Promise | void; + description: string; + execute: (context: any) => Promise; // Changed from (context: string) => Promise } const plugins: Plugin[] = []; -const registerPlugin = ( - keyword: string, - execute: (userInput: string) => Promise | void -) => { - plugins.push({ keyword, execute }); +const loadPlugins = () => { + const pluginDir = path.join(__dirname); + const files = fs.readdirSync(pluginDir); + + files.forEach((file) => { + if (file.endsWith(".ts") && file !== "index.ts") { + const pluginPath = path.join(pluginDir, file); + import(pluginPath).then((module) => { + const plugin = module.default; + if (isValidPlugin(plugin)) { + plugins.push(plugin); + } + }); + } + }); }; -export const mapPlugins = (userInput: string): Plugin | undefined => { +const isValidPlugin = (plugin: any): plugin is Plugin => { + return ( + plugin && + typeof plugin.name === "string" && + typeof plugin.keyword === "string" && + typeof plugin.description === "string" && + typeof plugin.execute === "function" + ); +}; + +export const getPlugins = (): Plugin[] => { + return plugins; +}; + +export const findPlugin = (userInput: string): Plugin | undefined => { return plugins.find((plugin) => userInput.startsWith(plugin.keyword)); }; -export const initializePlugins = () => { - // Register your plugins here - registerPlugin("exit", exitFunc); - registerPlugin("clear", clearFunc); - registerPlugin("@file", fileFunc); - registerPlugin("@web", webFunc); +export const executePlugin = async ( + plugin: Plugin, + context: any +): Promise => { + return await plugin.execute(context); }; -export const executeCommand = (userInput: string): boolean => { - const command = plugins.find((plugin) => - userInput.startsWith(plugin.keyword) - ); - if (command) { - command.execute(userInput); - return true; - } - return false; +export const initializePlugins = () => { + loadPlugins(); }; -export default executeCommand; +// Load plugins when this module is imported +initializePlugins(); diff --git a/src/commands/web.ts b/src/commands/web.ts index bd54dab..6476710 100644 --- a/src/commands/web.ts +++ b/src/commands/web.ts @@ -1,20 +1,53 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import chalk from "chalk"; +import { Plugin } from "./index"; import { handleWebResearch } from "../handlers/webHandler"; -import { promptResponse, apiKeyPrompt } from "../utils"; +import { promptResponse } from "../utils"; -const webFunc = async (userInput: string) => { - const creds = await apiKeyPrompt(); - const query = userInput.slice(5).trim(); - if (query) { - await handleWebResearch(query, userInput); - if (creds.apiKey != null) { - await promptResponse(creds.engine, creds.apiKey, userInput, {}); +const webPlugin: Plugin = { + name: "web", + keyword: "@web", + description: "Performs web research based on the given query", + execute: async (context: { + userInput: string; + engine: string; + apiKey: string; + opts: any; + }) => { + const { userInput, engine, apiKey, opts } = context; + const query = userInput.slice(5).trim(); // Remove "@web " from the input + + if (query) { + try { + const researchResults = await handleWebResearch(query, userInput); + console.log(chalk.cyan("Web research results:")); + console.log(researchResults); + + // Use the research results to generate a response + const enhancedPrompt = `Based on the following web research results, please provide a summary or answer: + + ${researchResults} + + User query: ${query}`; + + const response = await promptResponse( + engine, + apiKey, + enhancedPrompt, + opts + ); + return response; + } catch (error) { + console.error(chalk.red(`Error during web research: ${error}`)); + return `Error: ${error}`; + } + } else { + console.log( + chalk.yellow("Please provide a search query. Usage: @web ") + ); + return "Error: No search query provided"; } - } else { - console.log( - chalk.yellow("Please provide a search query. Usage: @web ") - ); - } + }, }; -export default webFunc; +export default webPlugin; diff --git a/src/context.ts b/src/context.ts index 9ec518f..1f2836f 100644 --- a/src/context.ts +++ b/src/context.ts @@ -64,7 +64,6 @@ class VectorStore { getRelevantContext(query: string, k: number = 5): ContextItem[] { try { if (this.items.length === 0) { - // console.log("No items in context"); return []; } const queryVector = this.textToVector(query); @@ -114,7 +113,6 @@ try { } export function addContext(item: ContextItem) { - // console.log("Adding context:", item); // Debug log const existingItems = vectorStore.getRelevantContext(item.content); if ( !existingItems.some( @@ -123,17 +121,13 @@ export function addContext(item: ContextItem) { ) ) { vectorStore.addItem(item); - } else { - // console.log("Skipping duplicate context item"); } } export function getContext(query: string): ContextItem[] { - // console.log("Getting context for query:", query); // Debug log return vectorStore.getRelevantContext(query); } export function clearContext() { - // console.log("Clearing context"); // Debug log vectorStore = new VectorStore(); } diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index 6760139..d0393ea 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -6,6 +6,7 @@ import { OllamaEngine } from "./ollama"; // Import Ollama engine export interface AiEngineConfig { apiKey: string; model: string; + hasContext: boolean; maxTokensOutput: number; maxTokensInput: number; baseURL?: string; @@ -48,7 +49,12 @@ export class Engine implements AiEngine { case "openAI": return OpenAIEngine(config.apiKey, prompt, engineOptions); case "anthropic": - return AnthropicEngine(config.apiKey, prompt, engineOptions); + return AnthropicEngine( + config.apiKey, + prompt, + engineOptions, + config.hasContext + ); case "gemini": return GeminiEngine(config.apiKey, prompt, engineOptions); case "ollama": @@ -77,13 +83,15 @@ export async function generateResponse( opts: { model: string; temperature?: number; - } + }, + hasContext: boolean = false ): Promise { const config: AiEngineConfig = { apiKey, model: opts.model, maxTokensOutput: 8192, maxTokensInput: 4096, + hasContext, }; const engine = new Engine(engineType, config); diff --git a/src/engine/anthropic.ts b/src/engine/anthropic.ts index a09ff49..18ece62 100644 --- a/src/engine/anthropic.ts +++ b/src/engine/anthropic.ts @@ -12,7 +12,8 @@ export const AnthropicEngine = async ( opts: { model: string; temperature: unknown; - } + }, + hasContext: boolean = false ) => { const apiKeyValue = await apiKey; @@ -61,8 +62,10 @@ export const AnthropicEngine = async ( .join("\n"); if (message) { - addContext({ role: "user", content: prompt }); - addContext({ role: "assistant", content: message }); + if (hasContext) { + addContext({ role: "user", content: prompt }); + addContext({ role: "assistant", content: message }); + } spinner.stop(); return message; } else { diff --git a/src/handlers/webHandler.ts b/src/handlers/webHandler.ts index 622d483..0206ed1 100644 --- a/src/handlers/webHandler.ts +++ b/src/handlers/webHandler.ts @@ -40,8 +40,7 @@ export async function handleWebResearch(query: string, userPrompt: string) { ) .join(""); - console.log(chalk.cyan("Search Results:")); - console.log(searchResults); + console.log(chalk.cyan("Found Results")); const webContext = `Web search results for "${query}":\n\n${searchResults}\n\nUser prompt: ${userPrompt}`; addContext({ role: "system", content: webContext }); diff --git a/src/index.ts b/src/index.ts index c6e39dc..2c0bb3d 100755 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,49 @@ #!/usr/bin/env node +/* eslint-disable @typescript-eslint/no-explicit-any */ import chalk from "chalk"; import * as process from "process"; import { Command } from "commander"; import intro from "./intro"; -import { apiKeyPrompt, promptResponse } from "./utils"; +import { apiKeyPrompt, promptCerebro, promptResponse } from "./utils"; import { deleteCredentials } from "./creds"; import readline from "readline"; -import { mapPlugins, initializePlugins } from "./commands"; +import { + getPlugins, + findPlugin, + executePlugin, + initializePlugins, +} from "./commands"; const program = new Command(); +const determinePlugins = async ( + engine: string, + apiKey: string, + userInput: string, + opts: any +) => { + const plugins = getPlugins(); + const pluginDescriptions = plugins + .map((p) => `${p.name} (${p.keyword}): ${p.description}`) + .join("\n"); + + const llmPrompt = ` +Given the following user input and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". + +Available plugins: +${pluginDescriptions} + +User input: "${userInput}" + +Respond with a single plugin keyword or "none". +`; + + const response = await promptCerebro(engine, apiKey, llmPrompt, opts); + + return response?.trim().toLowerCase() ?? "none"; +}; + program .command("chat") .option("-e, --engine ", "LLM to use") @@ -30,11 +63,45 @@ program process.stdin.once("data", async (data) => { const userInput = data.toString().trim(); - const plugin = mapPlugins(userInput); - if (plugin) { - await plugin.execute(userInput); - } else if (creds.apiKey != null) { - await promptResponse(creds.engine, creds.apiKey, userInput, opts); + if (creds.apiKey != null) { + try { + // Direct plugin call + const plugin = findPlugin(userInput); + if (plugin) { + console.log(chalk.yellow(`Executing plugin: ${plugin.name}`)); + await executePlugin(plugin, { userInput }); + } else { + // Use LLM to determine if a plugin should be used + const pluginKeyword = await determinePlugins( + creds.engine, + creds.apiKey, + userInput, + opts + ); + + if (pluginKeyword !== "none") { + const plugin = findPlugin(pluginKeyword); + if (plugin) { + console.log(chalk.yellow(`Executing plugin: ${plugin.name}`)); + await executePlugin(plugin, { userInput }); + } else { + console.log(chalk.red(`Plugin not found: ${pluginKeyword}`)); + } + } else { + // No plugin applicable, use regular promptResponse + await promptResponse( + creds.engine, + creds.apiKey, + userInput, + opts + ); + } + } + } catch (error) { + console.error(chalk.red("An error occurred:"), error); + } + } else { + console.log(chalk.red("API key is required for chat functionality.")); } prompt(); diff --git a/src/utils.ts b/src/utils.ts index 967574e..661b17e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -11,6 +11,7 @@ import { marked } from "marked"; import TerminalRenderer from "marked-terminal"; +import clipboard from "clipboardy"; import { generateResponse } from "./engine/Engine"; import { encrypt, getCredentials, saveCredentials } from "./creds"; @@ -103,10 +104,16 @@ export const promptResponse = async ( opts: any ): Promise => { try { - const request = await generateResponse(engine, apiKey, userInput, { - model: opts.model, - temperature: opts.temperature, - }); + const request = await generateResponse( + engine, + apiKey, + userInput, + { + model: opts.model, + temperature: opts.temperature, + }, + true + ); const text = request ?? ""; @@ -121,7 +128,38 @@ export const promptResponse = async ( process.stdout.write(markedText[i]); await new Promise((resolve) => setTimeout(resolve, 10)); } - // console.log("\n"); // Add a newline after the response + } catch (err) { + console.error(`${chalk.red("Something went wrong!!")} ${err}`); + // Error handling remains the same + // ... + } +}; + +export const promptCerebro = async ( + engine: string, + apiKey: string, + userInput: string, + opts: any +) => { + try { + const request = await generateResponse( + engine, + apiKey, + userInput, + { + model: opts.model, + temperature: opts.temperature, + }, + false + ); + + const text = request ?? ""; + + if (!text) { + throw new Error("Undefined request or content"); + } + + return text; } catch (err) { console.error(`${chalk.red("Something went wrong!!")} ${err}`); // Error handling remains the same From d594dc93c43094070a7eca75cd2928dff07fe0c0 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Wed, 11 Sep 2024 06:49:15 +0100 Subject: [PATCH 02/17] add unuit test --- __tests__/plugin.spec.ts | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 __tests__/plugin.spec.ts diff --git a/__tests__/plugin.spec.ts b/__tests__/plugin.spec.ts new file mode 100644 index 0000000..f3df553 --- /dev/null +++ b/__tests__/plugin.spec.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +// @ts-ignore +import clearPlugin from "../src/commands/clear"; +import exitPlugin from "../src/commands/exit"; +import chalk from "chalk"; + +// Force chalk to enable color output in test environment +chalk.level = 1; + +describe("Clear Plugin", () => { + let originalStdoutWrite: typeof process.stdout.write; + + beforeEach(() => { + originalStdoutWrite = process.stdout.write; + process.stdout.write = jest.fn(); + }); + + afterEach(() => { + process.stdout.write = originalStdoutWrite; + }); + + it("should have the correct name, keyword, and description", () => { + expect(clearPlugin.name).toBe("clear"); + expect(clearPlugin.keyword).toBe("@clear"); + expect(clearPlugin.description).toBe("Clears the terminal screen"); + }); + + it("should clear the terminal screen when executed", async () => { + const result = await clearPlugin.execute({}); + expect(process.stdout.write).toHaveBeenCalledWith("\x1Bc"); + expect(result).toBe("Terminal screen cleared."); + }); +}); + +describe("Exit Plugin", () => { + let consoleLogSpy: jest.SpyInstance; + let processExitSpy: jest.SpyInstance; + + beforeEach(() => { + consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => {}); + processExitSpy = jest + .spyOn(process, "exit") + .mockImplementation((code?: number) => { + throw new Error(`Process.exit called with code: ${code}`); + }); + }); + + afterEach(() => { + consoleLogSpy.mockRestore(); + processExitSpy.mockRestore(); + }); + + it("should have the correct name, keyword, and description", () => { + expect(exitPlugin.name).toBe("exit"); + expect(exitPlugin.keyword).toBe("@exit"); + expect(exitPlugin.description).toBe("Exits the application"); + }); + + it("should log goodbye message and exit the process when executed", async () => { + await expect(exitPlugin.execute()).rejects.toThrow( + "Process.exit called with code: 0" + ); + expect(consoleLogSpy).toHaveBeenCalledWith( + expect.stringContaining("Goodbye!") + ); + expect(processExitSpy).toHaveBeenCalledWith(0); + }); +}); From ec9d6b71489db3c7dc5e37bd35743cea1e2de231 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Wed, 11 Sep 2024 06:49:32 +0100 Subject: [PATCH 03/17] add changes --- __tests__/plugin.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tests__/plugin.spec.ts b/__tests__/plugin.spec.ts index f3df553..446dfb9 100644 --- a/__tests__/plugin.spec.ts +++ b/__tests__/plugin.spec.ts @@ -57,7 +57,7 @@ describe("Exit Plugin", () => { }); it("should log goodbye message and exit the process when executed", async () => { - await expect(exitPlugin.execute()).rejects.toThrow( + await expect(exitPlugin.execute({})).rejects.toThrow( "Process.exit called with code: 0" ); expect(consoleLogSpy).toHaveBeenCalledWith( From 7a4901262f8bed959d644fa0bd8ad4c65b6ce444 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Wed, 11 Sep 2024 17:41:33 +0100 Subject: [PATCH 04/17] chore(commands): add eslint-disable comments for specific rules in index.ts feat(commands): implement loading and handling of plugins in index.ts to enhance modularity and extensibility feat(commands): add list.ts and scrapper.ts plugins to provide listing and web scraping functionalities feat(engine): refactor Engine class into a function to create AI engine instances based on engine type feat(engine): add support for different AI engine types in Engine function to improve flexibility feat(engine): update generateResponse function to use Engine function for creating AI engine instances feat(engine): add eslint-disable comment for specific rule in anthropic.ts feat(handlers): update handleWebResearch function to return webContext for better error handling feat(index): refactor determinePlugins function into determinePlugins module for better organization feat(index): update chat command in index.ts to use determinePlugins module for plugin determination docs(intro.ts): update introduction message and usage instructions for TerminalGPT feat(intro.ts): enhance TerminalGPT with plugin support for extended functionality feat(rag/index.ts): add function to determine applicable plugins based on user input refactor(utils.ts): remove unused import of clipboard package --- src/commands/index.ts | 26 ++++++++++--- src/commands/list.ts | 22 +++++++++++ src/commands/scrapper.ts | 50 ++++++++++++++++++++++++ src/engine/Engine.ts | 79 ++++++++++++++++---------------------- src/engine/anthropic.ts | 1 + src/handlers/webHandler.ts | 3 +- src/index.ts | 51 ++++++++---------------- src/intro.ts | 35 +++++++++-------- src/rag/index.ts | 32 +++++++++++++++ src/utils.ts | 1 - 10 files changed, 196 insertions(+), 104 deletions(-) create mode 100644 src/commands/list.ts create mode 100644 src/commands/scrapper.ts create mode 100644 src/rag/index.ts diff --git a/src/commands/index.ts b/src/commands/index.ts index fd4bab2..ec455d7 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-explicit-any */ import * as fs from "fs"; import * as path from "path"; @@ -15,15 +16,30 @@ const loadPlugins = () => { const pluginDir = path.join(__dirname); const files = fs.readdirSync(pluginDir); + // Clear existing plugins to prevent duplicates on reload + plugins.length = 0; + + const loadedPlugins = new Set(); // To track loaded plugins + files.forEach((file) => { if (file.endsWith(".ts") && file !== "index.ts") { const pluginPath = path.join(pluginDir, file); - import(pluginPath).then((module) => { - const plugin = module.default; - if (isValidPlugin(plugin)) { - plugins.push(plugin); + const pluginName = path.basename(file, ".ts"); + + // Check if plugin has already been loaded + if (!loadedPlugins.has(pluginName)) { + try { + const plugin = require(pluginPath).default; + if (isValidPlugin(plugin)) { + plugins.push(plugin); + loadedPlugins.add(pluginName); + } else { + console.warn(`Invalid plugin structure in ${file}`); + } + } catch (error) { + console.error(`Error loading plugin ${file}:`, error); } - }); + } } }); }; diff --git a/src/commands/list.ts b/src/commands/list.ts new file mode 100644 index 0000000..e015fac --- /dev/null +++ b/src/commands/list.ts @@ -0,0 +1,22 @@ +import chalk from "chalk"; +import { Plugin } from "./index"; +import { getPlugins } from "./index"; + +const listPlugin: Plugin = { + name: "list", + keyword: "@list", + description: "Lists all available plugins", + execute: async () => { + console.log(chalk.cyan("Available plugins:")); + const plugins = getPlugins(); + plugins.forEach((plugin) => { + console.log( + chalk.cyan( + `- ${plugin.name} : ${plugin.description} : ${plugin.keyword}` + ) + ); + }); + }, +}; + +export default listPlugin; diff --git a/src/commands/scrapper.ts b/src/commands/scrapper.ts new file mode 100644 index 0000000..a2a2459 --- /dev/null +++ b/src/commands/scrapper.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import chalk from "chalk"; +import { Plugin } from "./index"; +import { handleWebResearch } from "../handlers/webHandler"; +import { promptResponse } from "../utils"; + +const scrapperPlugin: Plugin = { + name: "scrapper", + keyword: "@scrapper", + description: "Scrapes / Reads a website and returns the content", + execute: async (context: { + userInput: string; + engine: string; + apiKey: string; + opts: any; + }) => { + const { userInput, engine, apiKey, opts } = context; + const url = userInput.slice(5).trim(); // Remove "@scrapper " from the input + + if (url) { + try { + const researchResults = await handleWebResearch(url, userInput); + console.log(chalk.cyan("Web research results:")); + console.log(researchResults); + + // Use the research results to generate a response + const enhancedPrompt = `Based on the following web research results, please provide a summary or answer: + ${researchResults} + + User query: ${url}`; + + const response = await promptResponse( + engine, + apiKey, + enhancedPrompt, + opts + ); + return response; + } catch (error) { + console.error(chalk.red(`Error during web research: ${error}`)); + return `Error: ${error}`; + } + } else { + console.log(chalk.yellow("Please provide a URL. Usage: @scrapper ")); + return "Error: No URL provided"; + } + }, +}; + +export default scrapperPlugin; diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index d0393ea..b09977d 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -20,53 +20,40 @@ export interface AiEngine { ): Promise; } -export class Engine implements AiEngine { - private engine: AiEngine; - - constructor(engineType: string, public config: AiEngineConfig) { - this.engine = this.createEngine(engineType, config); - } - - // Add this method - async engineResponse( - prompt: string, - options?: { temperature?: number } - ): Promise { - return this.engine.engineResponse(prompt, options); - } - - private createEngine(engineType: string, config: AiEngineConfig): AiEngine { - const engineResponse = ( - prompt: string, - opts?: { temperature?: number } - ) => { - const engineOptions = { - model: config.model, - temperature: opts?.temperature, - }; - - switch (engineType) { - case "openAI": - return OpenAIEngine(config.apiKey, prompt, engineOptions); - case "anthropic": - return AnthropicEngine( - config.apiKey, - prompt, - engineOptions, - config.hasContext - ); - case "gemini": - return GeminiEngine(config.apiKey, prompt, engineOptions); - case "ollama": - return OllamaEngine(config.apiKey, prompt, engineOptions); - default: - throw new Error("Unsupported engine type"); - } +/** + * Creates an AI engine instance based on the specified engine type. + * @param engineType - The type of AI engine to create. + * @param config - The configuration for the AI engine. + * @returns An instance of the AI engine. + */ +const Engine = (engineType: string, config: AiEngineConfig): AiEngine => { + const engineResponse = (prompt: string, opts?: { temperature?: number }) => { + const engineOptions = { + model: config.model, + temperature: opts?.temperature, }; - return { config, engineResponse }; - } -} + switch (engineType) { + case "openAI": + return OpenAIEngine(config.apiKey, prompt, engineOptions); + case "anthropic": + return AnthropicEngine( + config.apiKey, + prompt, + engineOptions, + config.hasContext + ); + case "gemini": + return GeminiEngine(config.apiKey, prompt, engineOptions); + case "ollama": + return OllamaEngine(config.apiKey, prompt, engineOptions); + default: + throw new Error("Unsupported engine type"); + } + }; + + return { config, engineResponse }; +}; /** * Main function to generate a response using the specified AI engine. @@ -94,7 +81,7 @@ export async function generateResponse( hasContext, }; - const engine = new Engine(engineType, config); + const engine = Engine(engineType, config); return await engine.engineResponse(prompt, { temperature: opts.temperature, diff --git a/src/engine/anthropic.ts b/src/engine/anthropic.ts index 18ece62..1f76c19 100644 --- a/src/engine/anthropic.ts +++ b/src/engine/anthropic.ts @@ -26,6 +26,7 @@ export const AnthropicEngine = async ( let messages: ContextItem[] = []; let systemMessage = ""; + console.log(relevantContext); // Process relevant context for (const item of relevantContext) { if (item.role === "system") { diff --git a/src/handlers/webHandler.ts b/src/handlers/webHandler.ts index 0206ed1..d4df3ee 100644 --- a/src/handlers/webHandler.ts +++ b/src/handlers/webHandler.ts @@ -36,7 +36,7 @@ export async function handleWebResearch(query: string, userPrompt: string) { const searchResults = response.data.results .map( (result: any) => - `Title: ${result.title}\nSnippet: ${result.content}\n\n` + `Title: ${result.title}\nContent: ${result.content}\n\n` ) .join(""); @@ -49,6 +49,7 @@ export async function handleWebResearch(query: string, userPrompt: string) { `Web research results for "${query}" have been added to the conversation context.` ) ); + return webContext; } catch (error: any) { console.error(chalk.red(`Error performing web research: ${error.message}`)); } diff --git a/src/index.ts b/src/index.ts index 2c0bb3d..83e55f2 100755 --- a/src/index.ts +++ b/src/index.ts @@ -5,45 +5,14 @@ import chalk from "chalk"; import * as process from "process"; import { Command } from "commander"; import intro from "./intro"; -import { apiKeyPrompt, promptCerebro, promptResponse } from "./utils"; +import { apiKeyPrompt, promptResponse } from "./utils"; import { deleteCredentials } from "./creds"; import readline from "readline"; -import { - getPlugins, - findPlugin, - executePlugin, - initializePlugins, -} from "./commands"; +import { findPlugin, executePlugin, initializePlugins } from "./commands"; +import determinePlugins from "./rag"; const program = new Command(); -const determinePlugins = async ( - engine: string, - apiKey: string, - userInput: string, - opts: any -) => { - const plugins = getPlugins(); - const pluginDescriptions = plugins - .map((p) => `${p.name} (${p.keyword}): ${p.description}`) - .join("\n"); - - const llmPrompt = ` -Given the following user input and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". - -Available plugins: -${pluginDescriptions} - -User input: "${userInput}" - -Respond with a single plugin keyword or "none". -`; - - const response = await promptCerebro(engine, apiKey, llmPrompt, opts); - - return response?.trim().toLowerCase() ?? "none"; -}; - program .command("chat") .option("-e, --engine ", "LLM to use") @@ -69,7 +38,12 @@ program const plugin = findPlugin(userInput); if (plugin) { console.log(chalk.yellow(`Executing plugin: ${plugin.name}`)); - await executePlugin(plugin, { userInput }); + await executePlugin(plugin, { + userInput, + engine: creds.engine, + apiKey: creds.apiKey, + opts, + }); } else { // Use LLM to determine if a plugin should be used const pluginKeyword = await determinePlugins( @@ -83,7 +57,12 @@ program const plugin = findPlugin(pluginKeyword); if (plugin) { console.log(chalk.yellow(`Executing plugin: ${plugin.name}`)); - await executePlugin(plugin, { userInput }); + await executePlugin(plugin, { + userInput, + engine: creds.engine, + apiKey: creds.apiKey, + opts, + }); } else { console.log(chalk.red(`Plugin not found: ${pluginKeyword}`)); } diff --git a/src/intro.ts b/src/intro.ts index eda5b33..7693498 100644 --- a/src/intro.ts +++ b/src/intro.ts @@ -3,7 +3,7 @@ import chalk from "chalk"; import gradient from "gradient-string"; /** - * Generates the function comment for the given function body. + * Displays the introduction message for TerminalGPT. * * @return {void} No return value. */ @@ -19,7 +19,7 @@ export default function intro() { ** | .-----------------. | | +---------+ | ** ** | | | | | | -==----'| | ** ** | | W a r p y . | | | | | | ** - ** | | Bad command or | | |/----|'---= | | ** + ** | | TerminalGPT | | |/----|'---= | | ** ** | | tgpt:>_ | | | ,/|==== ooo | ; ** ** | | | | | // |(((( [33]| ," ** ** | '-----------------' |,' .;'| |(((( | ," ** @@ -40,7 +40,7 @@ export default function intro() { "cyan", "pink" )("********************")} Welcome to ${chalk.greenBright( - "terminalGPT" + "TerminalGPT" )} ${gradient("cyan", "pink")("************************")} ${coloredAscii} @@ -49,29 +49,34 @@ export default function intro() { )} ${chalk.cyanBright( - "TerminalGPT will be maintained by Warpi as Jan 2024. You can check other OS initiavies at:" + "TerminalGPT is maintained by Warpy as of Jan 2024. Check out other OS initiatives at:" )} ${chalk.blueBright("https://github.com/warpy-ai")} - ${chalk.yellowBright("usage:")} - TerminalGPT will ask you to add your OpenAI API key. Don't worry, it will be saved(encrypted) on your machine locally. + ${chalk.yellowBright("Usage:")} + TerminalGPT will ask for your API key. It will be encrypted and saved locally. - Terminal will prompt you to enter a message. Type your message and press enter. - Terminal will then prompt you to enter a response. Type your response and press enter. + Type your message and press enter. TerminalGPT will respond. - To exit, type "${chalk.redBright("exit")}" and press enter. + TerminalGPT is enhanced with plugins. To use a plugin, start your message with the plugin keyword (e.g., @web for web search). + Or you can start chatting and TerminalGPT will suggest plugins based on your message. - # Commands - ${chalk.yellowBright("exit")} - Exit the program - ${chalk.yellowBright("delete")} - Delete the saved API key - ${chalk.yellowBright("chat")} - Start a chat - ${chalk.yellowBright("--markdown")} - Show the response in markdown + ${chalk.yellowBright("Available Plugins:")} + ${chalk.cyanBright("@list")} - Lists all available plugins + ${chalk.yellowBright("Other Commands:")} + ${chalk.cyanBright("delete")} - Delete the saved API key + ${chalk.cyanBright("chat")} - Start a new chat session + ${chalk.cyanBright("--markdown")} - Display the response in markdown format + To exit, type "${chalk.redBright("exit")}" or use the ${chalk.cyanBright( + "@exit" + )} plugin. + + ${chalk.greenBright("Start chatting or use a plugin to begin!")} `; - // eslint-disable-next-line no-undef console.log(usageText); } diff --git a/src/rag/index.ts b/src/rag/index.ts new file mode 100644 index 0000000..25492a4 --- /dev/null +++ b/src/rag/index.ts @@ -0,0 +1,32 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { getPlugins } from "../commands"; +import { promptCerebro } from "../utils"; + +const determinePlugins = async ( + engine: string, + apiKey: string, + userInput: string, + opts: any +) => { + const plugins = getPlugins(); + const pluginDescriptions = plugins + .map((p) => `${p.name} (${p.keyword}): ${p.description}`) + .join("\n"); + + const llmPrompt = ` + Given the following user input and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". + + Available plugins: + ${pluginDescriptions} + + User input: "${userInput}" + + Respond with a single plugin keyword or "none". + `; + + const response = await promptCerebro(engine, apiKey, llmPrompt, opts); + + return response?.trim().toLowerCase() ?? "none"; +}; + +export default determinePlugins; diff --git a/src/utils.ts b/src/utils.ts index 661b17e..fcd5186 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -11,7 +11,6 @@ import { marked } from "marked"; import TerminalRenderer from "marked-terminal"; -import clipboard from "clipboardy"; import { generateResponse } from "./engine/Engine"; import { encrypt, getCredentials, saveCredentials } from "./creds"; From 9a81231887871095995f5632d198343caafab238 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Wed, 11 Sep 2024 18:20:45 +0100 Subject: [PATCH 05/17] refactor(intro.ts): change intro function to be asynchronous to support async operations feat(intro.ts): update ASCII art in intro function for better visual presentation feat(rag/index.ts): add functionality to store and retrieve conversation context in determinePlugins function --- src/intro.ts | 61 +++++++++++++++++++++++------------------------- src/rag/index.ts | 18 +++++++++++++- 2 files changed, 46 insertions(+), 33 deletions(-) diff --git a/src/intro.ts b/src/intro.ts index 7693498..98cbf06 100644 --- a/src/intro.ts +++ b/src/intro.ts @@ -7,43 +7,40 @@ import gradient from "gradient-string"; * * @return {void} No return value. */ -export default function intro() { +export default async function intro() { const asciiArt = ` - ******************************************************************** - ******************************************************************** - ******************************************************************** - ** ,----------------, ,---------, ** - ** ,-----------------------, ," ,"| ** - ** ," ,"| ," ," | ** - ** +-----------------------+ | ," ," | ** - ** | .-----------------. | | +---------+ | ** - ** | | | | | | -==----'| | ** - ** | | W a r p y . | | | | | | ** - ** | | TerminalGPT | | |/----|'---= | | ** - ** | | tgpt:>_ | | | ,/|==== ooo | ; ** - ** | | | | | // |(((( [33]| ," ** - ** | '-----------------' |,' .;'| |(((( | ," ** - ** +-----------------------+ ;; | | |," ** - ** /_)______________(_/ //' | +---------+ ** - ** ___________________________/___ , ** - ** / oooooooooooooooo .o. oooo /, ,'----------- ,' ** - ** / ==ooooooooooooooo==.o. ooo= // ,'-{)B ,' ** - ** /_==__==========__==_ooo__ooo=_/' /___________,' ** - ** '-----------------------------' ** - ******************************************************************** - ******************************************************************** - ********************************************************************`; + + + ddiiidd + 6diiiiiiiiiiid0 + dddiiiiiiiiiiiiiiiiidd0 + ddiiiiiiiidiiiiiiiidiiiiiiid0 + ddiiiiiiiiiiiiiidiiiiiiiiiiiiiiiiiidd + 0ddiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiid + 00000ddiiiiiiiiiiiiiiiiiiiiiiiiiidiiiid + 0d0000000diiiiiiiiiiiiiiiiiiidddiiiiiid + 0d0000000000ddiiiidiiiiiiddddiiididiidd + 0000000000000000ddiiiiddddiddddiiiiiiid + 0d00000000000000000ddddddiddiidiiiiiiid + 0d00000000000000000ddddddidddididiiiiid + 0000000000000000000dddddddiiddiiiidiiid + 0000000000000000000dddddddddiddiiiiiiid + 0d00000000000000000dddddiiddiididiiiidd + 0d00000000000000000dddddddiddidiiidiiid + 0000000000000000000dddddddiddidiiiiiiid + 000000000000000000ddddddiddiddiddiidd + 000000000000000dddddiddiddiiidd + 6000000000000dddddddiddidd + 000000000dddddddid0 + 000000ddddddd + 000dddd + `; const coloredAscii = gradient("magenta", "cyan").multiline(asciiArt); const usageText = ` - ${gradient( - "cyan", - "pink" - )("********************")} Welcome to ${chalk.greenBright( - "TerminalGPT" - )} ${gradient("cyan", "pink")("************************")} + ${coloredAscii} - + Welcome to ${chalk.greenBright("TerminalGPT")} ${chalk.cyanBright( "Created by @jucasoliveira: https://github.com/jucasoliveira" )} diff --git a/src/rag/index.ts b/src/rag/index.ts index 25492a4..66f44b4 100644 --- a/src/rag/index.ts +++ b/src/rag/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { getPlugins } from "../commands"; import { promptCerebro } from "../utils"; +import { addContext, getContext } from "../context"; const determinePlugins = async ( engine: string, @@ -8,17 +9,26 @@ const determinePlugins = async ( userInput: string, opts: any ) => { + // Add user input to context + addContext({ role: "user", content: userInput }); + + // Get relevant context + const relevantContext = getContext(userInput); + const plugins = getPlugins(); const pluginDescriptions = plugins .map((p) => `${p.name} (${p.keyword}): ${p.description}`) .join("\n"); const llmPrompt = ` - Given the following user input and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". + Given the following user input, conversation context, and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". Available plugins: ${pluginDescriptions} + Conversation context: + ${relevantContext.map((item) => `${item.role}: ${item.content}`).join("\n")} + User input: "${userInput}" Respond with a single plugin keyword or "none". @@ -26,6 +36,12 @@ const determinePlugins = async ( const response = await promptCerebro(engine, apiKey, llmPrompt, opts); + // Add AI response to context + addContext({ + role: "assistant", + content: response?.trim().toLowerCase() ?? "none", + }); + return response?.trim().toLowerCase() ?? "none"; }; From 1ed4eb7288e2159a05c92512121efe15436d05ca Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Thu, 12 Sep 2024 06:46:56 +0100 Subject: [PATCH 06/17] feat(Engine.ts): Add support for 'hasContext' parameter in engine functions to handle context in different engine types feat(anthropic.ts): Remove unnecessary console.log statement feat(gemini.ts): Update GeminiEngine to handle context based on 'hasContext' parameter feat(ollama.ts): Update OllamaEngine to handle context based on 'hasContext' parameter and 'baseURL' parameter feat(openAi.ts): Update OpenAIEngine to handle context based on 'hasContext' parameter --- src/engine/Engine.ts | 22 +++++++++++++++++++--- src/engine/anthropic.ts | 1 - src/engine/gemini.ts | 8 ++++++-- src/engine/ollama.ts | 11 ++++++++--- src/engine/openAi.ts | 7 +++++-- 5 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index b09977d..e760f64 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -35,7 +35,12 @@ const Engine = (engineType: string, config: AiEngineConfig): AiEngine => { switch (engineType) { case "openAI": - return OpenAIEngine(config.apiKey, prompt, engineOptions); + return OpenAIEngine( + config.apiKey, + prompt, + engineOptions, + config.hasContext + ); case "anthropic": return AnthropicEngine( config.apiKey, @@ -44,9 +49,20 @@ const Engine = (engineType: string, config: AiEngineConfig): AiEngine => { config.hasContext ); case "gemini": - return GeminiEngine(config.apiKey, prompt, engineOptions); + return GeminiEngine( + config.apiKey, + prompt, + engineOptions, + config.hasContext + ); case "ollama": - return OllamaEngine(config.apiKey, prompt, engineOptions); + return OllamaEngine( + config.apiKey, + prompt, + engineOptions, + config.hasContext, + config.baseURL + ); default: throw new Error("Unsupported engine type"); } diff --git a/src/engine/anthropic.ts b/src/engine/anthropic.ts index 1f76c19..18ece62 100644 --- a/src/engine/anthropic.ts +++ b/src/engine/anthropic.ts @@ -26,7 +26,6 @@ export const AnthropicEngine = async ( let messages: ContextItem[] = []; let systemMessage = ""; - console.log(relevantContext); // Process relevant context for (const item of relevantContext) { if (item.role === "system") { diff --git a/src/engine/gemini.ts b/src/engine/gemini.ts index 77dd943..68cf74c 100644 --- a/src/engine/gemini.ts +++ b/src/engine/gemini.ts @@ -10,7 +10,8 @@ export const GeminiEngine = async ( temperature?: number; // Optional temperature setting filePath?: string; // Optional file path for uploads mimeType?: string; // Optional MIME type for the file - } + }, + hasContext: boolean = false ) => { const apiKeyValue = await apiKey; const genAI = new GoogleGenerativeAI(apiKeyValue); @@ -53,7 +54,10 @@ export const GeminiEngine = async ( const responseText = result.response.text(); if (responseText) { - addContext({ role: "assistant", content: responseText }); + if (hasContext) { + addContext({ role: "user", content: prompt }); + addContext({ role: "assistant", content: responseText }); + } spinner.stop(); return responseText; } else { diff --git a/src/engine/ollama.ts b/src/engine/ollama.ts index 1768ad4..2397570 100644 --- a/src/engine/ollama.ts +++ b/src/engine/ollama.ts @@ -9,7 +9,9 @@ export const OllamaEngine = async ( opts: { model: string; // Specify the model to use temperature: unknown; - } + }, + hasContext: boolean = false, + baseURL: string = "http://localhost:11434" ) => { const apiKeyValue = await apiKey; const spinner = loadWithRocketGradient("Thinking...").start(); @@ -18,7 +20,7 @@ export const OllamaEngine = async ( try { const response = await axios.post( - `http://localhost:11434/api/chat`, // Replace with the actual Ollama API endpoint + `${baseURL}/api/chat`, { model: opts.model || "llama2", // Use a default model if none is provided messages: [ @@ -41,7 +43,10 @@ export const OllamaEngine = async ( const message = response.data.message?.content; if (message) { - addContext({ role: "assistant", content: message }); + if (hasContext) { + addContext({ role: "user", content: prompt }); + addContext({ role: "assistant", content: message }); + } spinner.stop(); return message; } else { diff --git a/src/engine/openAi.ts b/src/engine/openAi.ts index 5c4e13d..6207a79 100644 --- a/src/engine/openAi.ts +++ b/src/engine/openAi.ts @@ -10,7 +10,8 @@ export const OpenAIEngine = async ( opts: { model: string; temperature: unknown; - } + }, + hasContext: boolean = false ) => { const apiKeyValue = await apiKey; const openai = new OpenAI({ apiKey: apiKeyValue }); @@ -33,7 +34,9 @@ export const OpenAIEngine = async ( }); const message = completion.choices[0].message; - addContext({ role: message.role, content: message.content || "" }); + if (hasContext) { + addContext({ role: message.role, content: message.content || "" }); + } spinner.stop(); return message.content; From 59c0a606169fff0bf1125db96d847177158d8750 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Thu, 12 Sep 2024 07:01:20 +0100 Subject: [PATCH 07/17] feat(package.json): add execa package to dependencies for executing commands feat(package.json): add @types/execa to devDependencies for type definitions feat(commands): add new 'update' command to update the package refactor(index.ts): call checkIsLatestVersion function before apiKeyPrompt refactor(utils.ts): add checkIsLatestVersion function to compare package version feat(version.ts): add getTerminalGPTLatestVersion function to fetch latest version refactor(utils.ts): import currentPackage from package.json for version comparison refactor(tsconfig.json): set resolveJsonModule to true for JSON module resolution --- bun.lockb | Bin 240087 -> 246004 bytes package.json | 2 + src/commands/autossugestion.ts | 0 src/commands/update.ts | 23 + src/index.ts | 3 +- src/utils.ts | 23 + src/version.ts | 19 + tsconfig.json | 3 +- yarn.lock | 7294 ++++++++++++++++---------------- 9 files changed, 3626 insertions(+), 3741 deletions(-) delete mode 100644 src/commands/autossugestion.ts create mode 100644 src/commands/update.ts create mode 100644 src/version.ts diff --git a/bun.lockb b/bun.lockb index a5755230edf9023f42f0434716ba22a1558a6a96..399379b7efb528a42fe7439f34477222b0dc1a77 100755 GIT binary patch delta 46383 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 z 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 delta 43253 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 diff --git a/package.json b/package.json index 9c40a26..82d5fbd 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "clipboardy": "2.3.0", "commander": "^9.5.0", "compromise": "^14.8.1", + "execa": "^9.3.1", "gradient-string": "^2.0.2", "hnswlib-node": "^3.0.0", "lowdb": "^5.1.0", @@ -59,6 +60,7 @@ "@types/chalk": "^2.2.0", "@types/clipboardy": "2.0.1", "@types/eslint": "^8.44.2", + "@types/execa": "^2.0.0", "@types/jest": "^29.5.4", "@types/ora": "^3.2.0", "@typescript-eslint/eslint-plugin": "^6.4.1", diff --git a/src/commands/autossugestion.ts b/src/commands/autossugestion.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/commands/update.ts b/src/commands/update.ts new file mode 100644 index 0000000..904f24e --- /dev/null +++ b/src/commands/update.ts @@ -0,0 +1,23 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +// execute the command to update the package +import { execSync } from "child_process"; +import { Plugin } from "./index"; + +const update: Plugin = { + name: "update", + keyword: "@update", + description: "Update the package", + execute: async (context: { + userInput: string; + engine: string; + apiKey: string; + opts: any; + }) => { + console.log("Updating the package"); + execSync("npm install -g terminalgpt"); + console.log("Package updated"); + }, +}; + +export default update; diff --git a/src/index.ts b/src/index.ts index 83e55f2..63d953f 100755 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,7 @@ import chalk from "chalk"; import * as process from "process"; import { Command } from "commander"; import intro from "./intro"; -import { apiKeyPrompt, promptResponse } from "./utils"; +import { apiKeyPrompt, checkIsLatestVersion, promptResponse } from "./utils"; import { deleteCredentials } from "./creds"; import readline from "readline"; import { findPlugin, executePlugin, initializePlugins } from "./commands"; @@ -20,6 +20,7 @@ program .usage(`"" [options]`) .action(async (opts) => { intro(); + await checkIsLatestVersion(); const creds = await apiKeyPrompt(); // Initialize plugins diff --git a/src/utils.ts b/src/utils.ts index fcd5186..8c0a04e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -13,6 +13,8 @@ import TerminalRenderer from "marked-terminal"; import { generateResponse } from "./engine/Engine"; import { encrypt, getCredentials, saveCredentials } from "./creds"; +import { getTerminalGPTLatestVersion } from "./version"; +import currentPackage from "../package.json"; marked.setOptions({ // Define custom renderer @@ -165,3 +167,24 @@ export const promptCerebro = async ( // ... } }; + +export const checkIsLatestVersion = async () => { + const latestVersion = await getTerminalGPTLatestVersion(); + + if (latestVersion) { + const currentVersion = currentPackage.version; + + if (currentVersion !== latestVersion) { + console.log( + chalk.yellow( + ` + You are not using the latest stable version of TerminalGPT with new features and bug fixes. + Current version: ${currentVersion}. Latest version: ${latestVersion}. + 🚀 To update run: npm i -g terminalgpt@latest. + Or run @update to update the package. + ` + ) + ); + } + } +}; diff --git a/src/version.ts b/src/version.ts new file mode 100644 index 0000000..1e6177e --- /dev/null +++ b/src/version.ts @@ -0,0 +1,19 @@ +import { exec } from "child_process"; +import { promisify } from "util"; + +const execAsync = promisify(exec); + +export const getTerminalGPTLatestVersion = async (): Promise< + string | undefined +> => { + try { + const { stdout } = await execAsync("npm view terminalgpt version"); + return stdout.trim(); + } catch (error) { + console.error( + "Error while getting the latest version of TerminalGPT:", + error + ); + return undefined; + } +}; diff --git a/tsconfig.json b/tsconfig.json index ad8df50..c570f7f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "skipLibCheck": true, "moduleResolution": "node", "outDir": "./lib", - "noImplicitAny": false + "noImplicitAny": false, + "resolveJsonModule": true }, "include": [ "src/*.ts" diff --git a/yarn.lock b/yarn.lock index f54e1a6..d87ddf9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,715 +2,629 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - "integrity" "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" - "resolved" "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" - "version" "1.2.6" - "@ampproject/remapping@^2.2.0": - "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" - "version" "2.2.1" + version "2.3.0" + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@anthropic-ai/sdk@^0.27.2": + version "0.27.2" dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" + "@types/node" "^18.11.18" + "@types/node-fetch" "^2.6.4" + abort-controller "^3.0.0" + agentkeepalive "^4.2.1" + form-data-encoder "1.7.2" + formdata-node "^4.3.2" + node-fetch "^2.6.7" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.13": - "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - "version" "7.22.13" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": + version "7.24.7" dependencies: - "@babel/highlight" "^7.22.13" - "chalk" "^2.4.2" + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" -"@babel/compat-data@^7.22.9": - "integrity" "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz" - "version" "7.22.9" +"@babel/compat-data@^7.25.2": + version "7.25.4" -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": - "integrity" "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz" - "version" "7.22.11" +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": + version "7.25.2" dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.11" - "@babel/parser" "^7.22.11" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.3" - "semver" "^6.3.1" - -"@babel/generator@^7.22.10", "@babel/generator@^7.23.3", "@babel/generator@^7.7.2": - "integrity" "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz" - "version" "7.23.3" - dependencies: - "@babel/types" "^7.23.3" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - "jsesc" "^2.5.1" - -"@babel/helper-compilation-targets@^7.22.10": - "integrity" "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz" - "version" "7.22.10" - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" - "browserslist" "^4.21.9" - "lru-cache" "^5.1.1" - "semver" "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - "integrity" "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" - "version" "7.22.20" - -"@babel/helper-function-name@^7.23.0": - "integrity" "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.5": - "integrity" "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-transforms@^7.22.9": - "integrity" "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz" - "version" "7.22.9" - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": - "integrity" "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" - "version" "7.22.5" - -"@babel/helper-simple-access@^7.22.5": - "integrity" "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - "integrity" "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" - "version" "7.22.6" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.22.5": - "integrity" "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" - "version" "7.22.5" - -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": - "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" - "version" "7.22.20" - -"@babel/helper-validator-option@^7.22.5": - "integrity" "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz" - "version" "7.22.5" - -"@babel/helpers@^7.22.11": - "integrity" "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" - -"@babel/highlight@^7.22.13": - "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" - "version" "7.22.20" - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - "chalk" "^2.4.2" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.11", "@babel/parser@^7.22.15", "@babel/parser@^7.23.3": - "integrity" "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz" - "version" "7.23.3" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2": + version "7.25.6" + dependencies: + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.8" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + +"@babel/helpers@^7.25.0": + version "7.25.6" + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + +"@babel/highlight@^7.24.7": + version "7.24.7" + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + dependencies: + "@babel/types" "^7.25.6" "@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.25.6" + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - "integrity" "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" - "version" "7.22.5" + version "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": - "integrity" "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.22.11": - "integrity" "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz" - "version" "7.23.3" - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.3" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.3" - "@babel/types" "^7.23.3" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.3.3": - "integrity" "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz" - "version" "7.23.3" - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - "to-fast-properties" "^2.0.0" + version "7.25.4" + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/template@^7.25.0", "@babel/template@^7.3.3": + version "7.25.0" + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": + version "7.25.6" + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3": + version "7.25.6" + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@dqbd/tiktoken@^1.0.16": + version "1.0.16" + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" - "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - "version" "4.4.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== dependencies: - "eslint-visitor-keys" "^3.3.0" + eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - "integrity" "sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==" - "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.7.0.tgz" - "version" "4.7.0" - -"@eslint/eslintrc@^2.1.2": - "integrity" "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "ajv" "^6.12.4" - "debug" "^4.3.2" - "espree" "^9.6.0" - "globals" "^13.19.0" - "ignore" "^5.2.0" - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "minimatch" "^3.1.2" - "strip-json-comments" "^3.1.1" - -"@eslint/js@^8.47.0": - "integrity" "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==" - "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz" - "version" "8.47.0" - -"@humanwhocodes/config-array@^0.11.10": - "integrity" "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz" - "version" "0.11.10" - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.5" + version "4.11.0" + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + +"@google/generative-ai@^0.17.1": + version "0.17.1" + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - "version" "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@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" "@isaacs/cliui@^8.0.2": - "integrity" "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" - "resolved" "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - "version" "8.0.2" + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: - "string-width" "^5.1.2" - "string-width-cjs" "npm:string-width@^4.2.0" - "strip-ansi" "^7.0.1" - "strip-ansi-cjs" "npm:strip-ansi@^6.0.1" - "wrap-ansi" "^8.1.0" - "wrap-ansi-cjs" "npm:wrap-ansi@^7.0.0" + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" - -"@jest/console@^29.6.4": - "integrity" "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz" - "version" "29.6.4" + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^29.6.3" - "jest-util" "^29.6.3" - "slash" "^3.0.0" - -"@jest/core@^29.6.4": - "integrity" "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/console" "^29.6.4" - "@jest/reporters" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^29.6.3" - "jest-config" "^29.6.4" - "jest-haste-map" "^29.6.4" - "jest-message-util" "^29.6.3" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.6.4" - "jest-resolve-dependencies" "^29.6.4" - "jest-runner" "^29.6.4" - "jest-runtime" "^29.6.4" - "jest-snapshot" "^29.6.4" - "jest-util" "^29.6.3" - "jest-validate" "^29.6.3" - "jest-watcher" "^29.6.4" - "micromatch" "^4.0.4" - "pretty-format" "^29.6.3" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" - -"@jest/environment@^29.6.4": - "integrity" "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/fake-timers" "^29.6.4" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + dependencies: + "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "jest-mock" "^29.6.3" + jest-mock "^29.7.0" -"@jest/expect-utils@^29.6.4": - "integrity" "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz" - "version" "29.6.4" +"@jest/expect-utils@^29.7.0": + version "29.7.0" dependencies: - "jest-get-type" "^29.6.3" + jest-get-type "^29.6.3" -"@jest/expect@^29.6.4": - "integrity" "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==" - "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz" - "version" "29.6.4" +"@jest/expect@^29.7.0": + version "29.7.0" dependencies: - "expect" "^29.6.4" - "jest-snapshot" "^29.6.4" + expect "^29.7.0" + jest-snapshot "^29.7.0" -"@jest/fake-timers@^29.6.4": - "integrity" "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz" - "version" "29.6.4" +"@jest/fake-timers@^29.7.0": + version "29.7.0" dependencies: "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - "jest-message-util" "^29.6.3" - "jest-mock" "^29.6.3" - "jest-util" "^29.6.3" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^29.6.4": - "integrity" "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz" - "version" "29.6.4" +"@jest/globals@^29.7.0": + version "29.7.0" dependencies: - "@jest/environment" "^29.6.4" - "@jest/expect" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" "@jest/types" "^29.6.3" - "jest-mock" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^29.6.4": - "integrity" "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz" - "version" "29.6.4" +"@jest/reporters@^29.7.0": + version "29.7.0" dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^6.0.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-message-util" "^29.6.3" - "jest-util" "^29.6.3" - "jest-worker" "^29.6.4" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" - "v8-to-istanbul" "^9.0.1" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^29.6.3": - "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" - "version" "29.6.3" + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jest/source-map@^29.6.3": - "integrity" "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" - "version" "29.6.3" + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" + callsites "^3.0.0" + graceful-fs "^4.2.9" -"@jest/test-result@^29.6.4": - "integrity" "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz" - "version" "29.6.4" +"@jest/test-result@^29.7.0": + version "29.7.0" dependencies: - "@jest/console" "^29.6.4" + "@jest/console" "^29.7.0" "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.6.4": - "integrity" "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz" - "version" "29.6.4" +"@jest/test-sequencer@^29.7.0": + version "29.7.0" dependencies: - "@jest/test-result" "^29.6.4" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.6.4" - "slash" "^3.0.0" + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" -"@jest/transform@^29.6.4": - "integrity" "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz" - "version" "29.6.4" +"@jest/transform@^29.0.0", "@jest/transform@^29.7.0": + version "29.7.0" dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^2.0.0" - "fast-json-stable-stringify" "^2.1.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.6.4" - "jest-regex-util" "^29.6.3" - "jest-util" "^29.6.3" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "write-file-atomic" "^4.0.2" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" "@jest/types@^29.0.0", "@jest/types@^29.6.3": - "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" - "version" "29.6.3" + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" + chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - "version" "0.3.3" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" dependencies: - "@jridgewell/set-array" "^1.0.1" + "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" + version "3.1.2" -"@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" +"@jridgewell/set-array@^1.2.1": + version "1.2.1" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" + version "1.5.0" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" - "version" "0.3.19" +"@jridgewell/trace-mapping@^0.3.12": + version "0.3.25" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.25" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" "@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "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" + run-parallel "^1.1.9" "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "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.3", "@nodelib/fs.walk@^1.2.8": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "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" + fastq "^1.6.0" "@npmcli/fs@^3.1.0": - "integrity" "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" - "version" "3.1.0" + version "3.1.1" dependencies: - "semver" "^7.3.5" + semver "^7.3.5" "@pkgjs/parseargs@^0.11.0": - "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" - "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - "version" "0.11.0" + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@sinclair/typebox@^0.27.8": - "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" - "version" "0.27.8" + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/is@^3.1.2": - "integrity" "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz" - "version" "3.1.2" +"@sindresorhus/is@^4.6.0": + version "4.6.0" "@sinonjs/commons@^3.0.0": - "integrity" "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" - "version" "3.0.0" + version "3.0.1" dependencies: - "type-detect" "4.0.8" + type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": - "integrity" "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" - "version" "10.3.0" + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" "@tootallnate/once@2": - "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" + version "1.0.11" "@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/babel__core@^7.1.14": - "integrity" "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz" - "version" "7.20.1" + version "7.20.5" dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -719,3514 +633,3416 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - "version" "7.6.4" + version "7.6.8" dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - "version" "7.4.1" + version "7.4.4" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz" - "version" "7.20.1" + version "7.20.6" dependencies: "@babel/types" "^7.20.7" "@types/cardinal@^2.1": - "integrity" "sha512-/xCVwg8lWvahHsV2wXZt4i64H1sdL+sN1Uoq7fAc8/FA6uYHjuIveDwPwvGUYp4VZiv85dVl6J/Bum3NDAOm8g==" - "resolved" "https://registry.npmjs.org/@types/cardinal/-/cardinal-2.1.1.tgz" - "version" "2.1.1" + version "2.1.1" + resolved "https://registry.npmjs.org/@types/cardinal/-/cardinal-2.1.1.tgz" + integrity sha512-/xCVwg8lWvahHsV2wXZt4i64H1sdL+sN1Uoq7fAc8/FA6uYHjuIveDwPwvGUYp4VZiv85dVl6J/Bum3NDAOm8g== "@types/chai@^4.3.5": - "integrity" "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==" - "resolved" "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz" - "version" "4.3.5" + version "4.3.19" "@types/chalk@^2.2.0": - "integrity" "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==" - "resolved" "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz" - "version" "2.2.0" + version "2.2.0" + resolved "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz" + integrity sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw== dependencies: - "chalk" "*" + chalk "*" "@types/clipboardy@2.0.1": - "integrity" "sha512-vLJm1iL6jFfEd+3/J4WTC65ppyGyaRTjpoB8bPhtiSrOCD0LFDr9GQYhoYNAsbt6JaY0amYacloIEEEOYUkkFg==" - "resolved" "https://registry.npmjs.org/@types/clipboardy/-/clipboardy-2.0.1.tgz" - "version" "2.0.1" + version "2.0.1" + resolved "https://registry.npmjs.org/@types/clipboardy/-/clipboardy-2.0.1.tgz" + integrity sha512-vLJm1iL6jFfEd+3/J4WTC65ppyGyaRTjpoB8bPhtiSrOCD0LFDr9GQYhoYNAsbt6JaY0amYacloIEEEOYUkkFg== dependencies: - "clipboardy" "*" + clipboardy "*" "@types/eslint@^8.44.2": - "integrity" "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz" - "version" "8.44.2" + version "8.56.12" dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - "integrity" "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz" - "version" "1.0.1" + version "1.0.5" + +"@types/execa@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/execa/-/execa-2.0.0.tgz" + integrity sha512-aBnkJ0r3khaZkHzu9pDZeWXrDg1N/ZtDGRQkK+KIqNVvvTvW+URXMUHQQCQMYdb2GPrcwu9Fq6l9iiT+pirIbg== + dependencies: + execa "*" "@types/graceful-fs@^4.1.3": - "integrity" "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz" - "version" "4.1.6" + version "4.1.9" dependencies: "@types/node" "*" "@types/gradient-string@^1.1.5": - "integrity" "sha512-Z2VPQ0q+IhrAO7XjJSjpDsoPc+CsCshRNah1IE9LCo/NzHMHylssvx73i0BAKzuaGj9cdhmgq9rLaietpYAbKQ==" - "resolved" "https://registry.npmjs.org/@types/gradient-string/-/gradient-string-1.1.5.tgz" - "version" "1.1.5" + version "1.1.6" dependencies: "@types/tinycolor2" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + version "2.0.6" "@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" + version "3.0.3" dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" + version "3.0.4" dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^29.5.4": - "integrity" "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz" - "version" "29.5.4" + version "29.5.12" dependencies: - "expect" "^29.0.0" - "pretty-format" "^29.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.12": - "integrity" "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz" - "version" "7.0.12" + version "7.0.15" "@types/marked-terminal@^6.0.1": - "integrity" "sha512-HkOmxZoAV39+mymm/t4o4fQNWyxH6qY1Ph5VTj3/KP09bPf+WBQb3UViFR7TUJMFeHTieBtTismYAnMhJgUvbQ==" - "resolved" "https://registry.npmjs.org/@types/marked-terminal/-/marked-terminal-6.0.1.tgz" - "version" "6.0.1" + version "6.1.1" dependencies: "@types/cardinal" "^2.1" "@types/node" "*" - "chalk" "^5.3.0" - "marked" ">=6.0.0 <10" + chalk "^5.3.0" + marked ">=6.0.0 <12" "@types/marked@^6.0.0": - "integrity" "sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA==" - "resolved" "https://registry.npmjs.org/@types/marked/-/marked-6.0.0.tgz" - "version" "6.0.0" + version "6.0.0" + resolved "https://registry.npmjs.org/@types/marked/-/marked-6.0.0.tgz" + integrity sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA== dependencies: - "marked" "*" + marked "*" "@types/node-fetch@^2.6.4": - "integrity" "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz" - "version" "2.6.9" + version "2.6.11" dependencies: "@types/node" "*" - "form-data" "^4.0.0" + form-data "^4.0.0" "@types/node@*", "@types/node@^16.0.0": - "integrity" "sha512-mlaecDKQ7rIZrYD7iiKNdzFb6e/qD5I9U1rAhq+Fd+DWvYVs+G2kv74UFHmSOlg5+i/vF3XxuR522V4u8BqO+Q==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.48.tgz" - "version" "16.18.48" + version "16.18.108" "@types/node@^18.11.18": - "integrity" "sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.18.9.tgz" - "version" "18.18.9" + version "18.19.50" dependencies: - "undici-types" "~5.26.4" + undici-types "~5.26.4" "@types/ora@^3.2.0": - "integrity" "sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w==" - "resolved" "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz" + integrity sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w== dependencies: - "ora" "*" + ora "*" "@types/prompts@^2.4.8": - "integrity" "sha512-fPOEzviubkEVCiLduO45h+zFHB0RZX8tFt3C783sO5cT7fUXf3EEECpD26djtYdh4Isa9Z9tasMQuZnYPtvYzw==" - "resolved" "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.8.tgz" - "version" "2.4.8" + version "2.4.9" dependencies: "@types/node" "*" - "kleur" "^3.0.3" + kleur "^3.0.3" + +"@types/qs@^6.9.15": + version "6.9.15" "@types/semver@^7.5.0": - "integrity" "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" - "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz" - "version" "7.5.0" + version "7.5.8" "@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" + version "2.0.3" "@types/tinycolor2@*", "@types/tinycolor2@^1.4.0": - "integrity" "sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==" - "resolved" "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.3.tgz" - "version" "1.4.3" + version "1.4.6" "@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" + version "21.0.3" "@types/yargs@^17.0.8": - "integrity" "sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.19.tgz" - "version" "17.0.19" + version "17.0.33" dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^6.4.1": - "integrity" "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz" - "version" "6.4.1" + version "6.21.0" dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/type-utils" "6.4.1" - "@typescript-eslint/utils" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" - "debug" "^4.3.4" - "graphemer" "^1.4.0" - "ignore" "^5.2.4" - "natural-compare" "^1.4.0" - "semver" "^7.5.4" - "ts-api-utils" "^1.0.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.4.1": - "integrity" "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/typescript-estree" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" - "debug" "^4.3.4" - -"@typescript-eslint/scope-manager@6.4.1": - "integrity" "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" - -"@typescript-eslint/type-utils@6.4.1": - "integrity" "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@typescript-eslint/typescript-estree" "6.4.1" - "@typescript-eslint/utils" "6.4.1" - "debug" "^4.3.4" - "ts-api-utils" "^1.0.1" - -"@typescript-eslint/types@6.4.1": - "integrity" "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz" - "version" "6.4.1" - -"@typescript-eslint/typescript-estree@6.4.1": - "integrity" "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz" - "version" "6.4.1" - dependencies: - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/visitor-keys" "6.4.1" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.5.4" - "ts-api-utils" "^1.0.1" - -"@typescript-eslint/utils@6.4.1": - "integrity" "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz" - "version" "6.4.1" + version "6.21.0" + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.4.1" - "@typescript-eslint/types" "6.4.1" - "@typescript-eslint/typescript-estree" "6.4.1" - "semver" "^7.5.4" - -"@typescript-eslint/visitor-keys@6.4.1": - "integrity" "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz" - "version" "6.4.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + dependencies: + acorn "^8.11.0" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.12.1" + +agent-base@^6.0.2, agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.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== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-escapes@^6.2.0: + version "6.2.1" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arch@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +async@^3.2.3: + version "3.2.6" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +awilix@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/awilix/-/awilix-8.0.1.tgz" + integrity sha512-zDSp4R204scvQIDb2GMoWigzXemn0+3AKKIAt543T9v2h7lmoypvkmcx1W/Jet/nm27R1N1AsqrsYVviAR9KrA== + dependencies: + camel-case "^4.1.2" + fast-glob "^3.2.12" + +axios@^1.7.7: + version "1.7.7" + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-jest@^29.0.0, babel-jest@^29.7.0: + version "29.7.0" dependencies: - "@typescript-eslint/types" "6.4.1" - "eslint-visitor-keys" "^3.4.1" - -"abbrev@1": - "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - "version" "1.1.1" - -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "event-target-shim" "^5.0.0" - -"acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.4.1", "acorn@^8.9.0": - "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - "version" "8.10.0" - -"agent-base@^6.0.2", "agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"agentkeepalive@^4.2.1": - "integrity" "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==" - "resolved" "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "humanize-ms" "^1.2.1" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv@^6.12.4": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"ansi-escapes@^4.2.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-escapes@^6.2.0": - "integrity" "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "type-fest" "^3.0.0" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"ansi-styles@^6.1.0": - "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - "version" "6.2.1" - -"ansicolors@~0.3.2": - "integrity" "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - "resolved" "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" - "version" "0.3.2" - -"anymatch@^3.0.3": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"arch@^2.1.1": - "integrity" "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" - "resolved" "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" - "version" "2.2.0" - -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"assertion-error@^1.1.0": - "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - "version" "1.1.0" - -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"awilix@^8.0.1": - "integrity" "sha512-zDSp4R204scvQIDb2GMoWigzXemn0+3AKKIAt543T9v2h7lmoypvkmcx1W/Jet/nm27R1N1AsqrsYVviAR9KrA==" - "resolved" "https://registry.npmjs.org/awilix/-/awilix-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "camel-case" "^4.1.2" - "fast-glob" "^3.2.12" - -"babel-jest@^29.0.0", "babel-jest@^29.6.4": - "integrity" "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/transform" "^29.6.4" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^29.6.3" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" -"babel-plugin-jest-hoist@^29.6.3": - "integrity" "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" - "version" "29.6.3" +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" -"babel-preset-jest@^29.6.3": - "integrity" "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" - "version" "29.6.3" +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: - "babel-plugin-jest-hoist" "^29.6.3" - "babel-preset-current-node-syntax" "^1.0.0" + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"base-64@^0.1.0": - "integrity" "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" - "resolved" "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz" - "version" "0.1.0" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" +bindings@^1.5.0: + version "1.5.0" + dependencies: + file-uri-to-path "1.0.0" -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" + balanced-match "^1.0.0" + concat-map "0.0.1" -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - "balanced-match" "^1.0.0" + balanced-match "^1.0.0" -"braces@^3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" +braces@^3.0.3: + version "3.0.3" dependencies: - "fill-range" "^7.0.1" + fill-range "^7.1.1" -"browserslist@^4.21.9", "browserslist@>= 4.21.0": - "integrity" "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" - "version" "4.21.10" +browserslist@^4.23.1, "browserslist@>= 4.21.0": + version "4.23.3" dependencies: - "caniuse-lite" "^1.0.30001517" - "electron-to-chromium" "^1.4.477" - "node-releases" "^2.0.13" - "update-browserslist-db" "^1.0.11" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" -"bs-logger@0.x": - "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" - "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - "version" "0.2.6" +bs-logger@^0.2.6: + version "0.2.6" dependencies: - "fast-json-stable-stringify" "2.x" + fast-json-stable-stringify "2.x" -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: - "node-int64" "^0.4.0" + node-int64 "^0.4.0" -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" + base64-js "^1.3.1" + ieee754 "^1.1.13" -"builtins@^5.0.0": - "integrity" "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==" - "resolved" "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" - "version" "5.0.1" +cacache@^17.0.0: + version "17.1.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: - "semver" "^7.0.0" + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +call-bind@^1.0.7: + version "1.0.7" + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001646: + version "1.0.30001659" + +chai@^4.3.7: + version "4.5.0" + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@*: + version "5.3.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +check-error@^1.0.3: + version "1.0.3" + dependencies: + get-func-name "^2.0.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.2.0: + version "3.9.0" + +cjs-module-lexer@^1.0.0: + version "1.4.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-highlight@^2.1.11: + version "2.1.11" + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" -"cacache@^17.0.0": - "integrity" "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" - "version" "17.1.4" +cli-spinners@^2.5.0: + version "2.9.2" + +cli-table3@^0.6.3: + version "0.6.5" dependencies: - "@npmcli/fs" "^3.1.0" - "fs-minipass" "^3.0.0" - "glob" "^10.2.2" - "lru-cache" "^7.7.1" - "minipass" "^7.0.3" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.4" - "p-map" "^4.0.0" - "ssri" "^10.0.0" - "tar" "^6.1.11" - "unique-filename" "^3.0.0" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.2.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-lite@^1.0.30001517": - "integrity" "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz" - "version" "1.0.30001522" - -"cardinal@^2.1.1": - "integrity" "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==" - "resolved" "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "ansicolors" "~0.3.2" - "redeyed" "~2.1.0" - -"chai@^4.3.7": - "integrity" "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==" - "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz" - "version" "4.3.7" - dependencies: - "assertion-error" "^1.1.0" - "check-error" "^1.0.2" - "deep-eql" "^4.1.2" - "get-func-name" "^2.0.0" - "loupe" "^2.3.1" - "pathval" "^1.1.1" - "type-detect" "^4.0.5" - -"chalk@*", "chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^5.3.0": - "integrity" "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" - "version" "5.3.0" - -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"charenc@0.0.2": - "integrity" "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" - "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - "version" "0.0.2" - -"check-error@^1.0.2": - "integrity" "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" - "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - "version" "1.0.2" - -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" - -"ci-info@^3.2.0": - "integrity" "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz" - "version" "3.7.1" - -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" - "version" "1.2.3" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "restore-cursor" "^3.1.0" - -"cli-spinners@^2.5.0": - "integrity" "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" - "version" "2.7.0" - -"cli-table3@^0.6.3": - "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "string-width" "^4.2.0" + string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -"clipboardy@*", "clipboardy@2.3.0": - "integrity" "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==" - "resolved" "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "arch" "^2.1.1" - "execa" "^1.0.0" - "is-wsl" "^2.1.1" - -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" - -"clone@^1.0.2": - "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" - -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" - "version" "1.0.2" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"combined-stream@^1.0.8": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"commander@^9.5.0": - "integrity" "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - "version" "9.5.0" - -"compromise@^14.8.1": - "integrity" "sha512-RQmYyq4PsxMm5rPtVffKEXAy3AfUKXFOYjcvh3620haBo1kfLvP6cdsOBt9BIh/BVO6B8XF2A+smd4Bzz1H2oA==" - "resolved" "https://registry.npmjs.org/compromise/-/compromise-14.8.1.tgz" - "version" "14.8.1" - dependencies: - "efrt" "2.7.0" - "grad-school" "0.0.5" - "suffix-thumb" "4.0.2" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"convert-source-map@^1.6.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"convert-source-map@^1.7.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"convert-source-map@^2.0.0": - "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - "version" "2.0.0" - -"cosmiconfig@^8.1.3": - "integrity" "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz" - "version" "8.2.0" - dependencies: - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" - -"cross-spawn@^6.0.0": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"crypt@0.0.2": - "integrity" "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" - "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - "version" "0.0.2" - -"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.3", "debug@^4.3.4", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"dedent@^1.0.0": - "integrity" "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" - "version" "1.5.1" - -"deep-eql@^4.1.2": - "integrity" "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==" - "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "type-detect" "^4.0.0" - -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^4.2.2": - "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - "version" "4.3.1" - -"defaults@^1.0.3": - "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "clone" "^1.0.2" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"detect-indent@^6.0.0": - "integrity" "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" - "version" "6.1.0" - -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" - -"diff-sequences@^29.6.3": - "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" - "version" "29.6.3" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"digest-fetch@^1.3.0": - "integrity" "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==" - "resolved" "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "base-64" "^0.1.0" - "md5" "^2.3.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "esutils" "^2.0.2" - -"eastasianwidth@^0.2.0": - "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - "version" "0.2.0" - -"efrt@2.7.0": - "integrity" "sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ==" - "resolved" "https://registry.npmjs.org/efrt/-/efrt-2.7.0.tgz" - "version" "2.7.0" - -"electron-to-chromium@^1.4.477": - "integrity" "sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz" - "version" "1.4.500" - -"emittery@^0.13.1": - "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - "version" "0.13.1" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" - -"emojilib@^2.4.0": - "integrity" "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" - "resolved" "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" - "version" "2.4.0" - -"encoding@^0.1.0", "encoding@^0.1.13": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"err-code@^2.0.2": - "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" - "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" - "version" "2.0.3" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" - -"eslint-scope@^7.2.2": - "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - "version" "7.2.2" - 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": - "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - "version" "3.4.3" - -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^8.47.0": - "integrity" "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz" - "version" "8.47.0" +clipboardy@*, clipboardy@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +cliui@^7.0.2: + version "7.0.4" + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +compromise@^14.8.1: + version "14.14.0" + dependencies: + efrt "2.7.0" + grad-school "0.0.5" + suffix-thumb "5.0.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cosmiconfig@^8.1.3: + version "8.3.6" + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +create-jest@^29.7.0: + version "29.7.0" + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + 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" + +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: + version "4.3.7" + dependencies: + ms "^2.1.3" + +dedent@^1.0.0: + version "1.5.3" + +deep-eql@^4.1.3: + version "4.1.4" + dependencies: + type-detect "^4.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.1.4: + version "1.1.4" + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +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" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +efrt@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/efrt/-/efrt-2.7.0.tgz" + integrity sha512-/RInbCy1d4P6Zdfa+TMVsf/ufZVotat5hCw3QXmWtjU+3pFEOvOQ7ibo3aIxyCJw2leIeAMjmPj+1SLJiCpdrQ== + +ejs@^3.1.10: + version "3.1.10" + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.4: + version "1.5.18" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojilib@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== + +encoding@^0.1.0, encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0: + version "1.0.0" + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + +escalade@^3.1.1, escalade@^3.1.2: + version "3.2.0" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +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== + 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: + 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@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.47.0: + version "8.57.0" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "^8.47.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.12.4" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "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" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "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": - "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - "version" "9.6.1" - dependencies: - "acorn" "^8.9.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.4.1" - -"esprima@^4.0.0", "esprima@~4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esquery@^1.4.2": - "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" - -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"execa@^5.0.0": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" - -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expect@^29.0.0", "expect@^29.6.4": - "integrity" "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/expect-utils" "^29.6.4" - "jest-get-type" "^29.6.3" - "jest-matcher-utils" "^29.6.4" - "jest-message-util" "^29.6.3" - "jest-util" "^29.6.3" - -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^3.2.12", "fast-glob@^3.2.9": - "integrity" "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" - "version" "3.3.1" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + 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" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + 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== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.6.0" + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +execa@*, execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.3.2" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" - -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.x": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +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== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + +filelist@^1.0.4: + version "1.0.4" + dependencies: + minimatch "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + +follow-redirects@^1.15.6: + version "1.15.9" + +foreground-child@^3.1.0: + version "3.3.0" + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data-encoder@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz" + integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"fast-levenshtein@^2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" +formdata-node@^4.3.2: + version "4.4.1" + resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.3" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.2.2: + version "10.4.5" + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + 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" + +gopd@^1.0.1: + version "1.0.1" + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.9: + version "4.2.11" + +grad-school@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/grad-school/-/grad-school-0.0.5.tgz" + integrity sha512-rXunEHF9M9EkMydTBux7+IryYXEZinRk6g8OBOGDBzo/qWJjhTxy86i5q7lQYpCLHN8Sqv1XX3OIOc7ka2gtvQ== -"fastq@^1.6.0": - "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - "version" "1.15.0" +gradient-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/gradient-string/-/gradient-string-2.0.2.tgz" + integrity sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw== dependencies: - "reusify" "^1.0.4" + chalk "^4.1.2" + tinygradient "^1.1.5" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + +has-symbols@^1.0.3: + version "1.0.3" + +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" dependencies: - "bser" "2.1.1" + function-bind "^1.1.2" + +highlight.js@^10.7.1: + version "10.7.3" -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" +hnswlib-node@^3.0.0: + version "3.0.0" dependencies: - "flat-cache" "^3.0.4" + bindings "^1.5.0" + node-addon-api "^8.0.0" -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"find-up@^4.0.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" - -"flatted@^3.1.0": - "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - "version" "3.2.7" - -"foreground-child@^3.1.0": - "integrity" "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==" - "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "cross-spawn" "^7.0.0" - "signal-exit" "^4.0.1" - -"form-data-encoder@1.7.2": - "integrity" "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" - "resolved" "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz" - "version" "1.7.2" - -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"formdata-node@^4.3.2": - "integrity" "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==" - "resolved" "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "node-domexception" "1.0.0" - "web-streams-polyfill" "4.0.0-beta.3" - -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "minipass" "^3.0.0" - -"fs-minipass@^3.0.0": - "integrity" "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "minipass" "^7.0.3" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^2.3.2": - "integrity" "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - "version" "2.3.3" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-func-name@^2.0.0": - "integrity" "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" - "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" - "version" "2.0.2" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-stream@^4.0.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"glob-parent@^5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "is-glob" "^4.0.3" - -"glob@^10.2.2": - "integrity" "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==" - "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz" - "version" "10.3.3" - dependencies: - "foreground-child" "^3.1.0" - "jackspeak" "^2.0.3" - "minimatch" "^9.0.1" - "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" - "path-scurry" "^1.10.1" - -"glob@^7.1.3", "glob@^7.1.4": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^8.1.0": - "integrity" "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==" - "resolved" "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^5.0.1" - "once" "^1.3.0" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globals@^13.19.0": - "integrity" "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" - "version" "13.21.0" - dependencies: - "type-fest" "^0.20.2" - -"globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" - 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" - -"graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"grad-school@0.0.5": - "integrity" "sha512-rXunEHF9M9EkMydTBux7+IryYXEZinRk6g8OBOGDBzo/qWJjhTxy86i5q7lQYpCLHN8Sqv1XX3OIOc7ka2gtvQ==" - "resolved" "https://registry.npmjs.org/grad-school/-/grad-school-0.0.5.tgz" - "version" "0.0.5" - -"gradient-string@^2.0.2": - "integrity" "sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==" - "resolved" "https://registry.npmjs.org/gradient-string/-/gradient-string-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "chalk" "^4.1.2" - "tinygradient" "^1.1.5" - -"graphemer@^1.4.0": - "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - "version" "1.4.0" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hosted-git-info@^6.0.0": - "integrity" "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "lru-cache" "^7.5.1" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"http-cache-semantics@^4.1.1": - "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - "version" "4.1.1" - -"http-proxy-agent@^5.0.0": - "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - "version" "5.0.0" +hosted-git-info@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== + dependencies: + lru-cache "^7.5.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" - "agent-base" "6" - "debug" "4" - -"https-proxy-agent@^5.0.0": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "agent-base" "6" - "debug" "4" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"humanize-ms@^1.2.1": - "integrity" "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==" - "resolved" "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "ms" "^2.0.0" - -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"ieee754@^1.1.13": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore@^5.2.0", "ignore@^5.2.4": - "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - "version" "5.2.4" - -"import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-local@^3.0.2": - "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.3", "inherits@^2.0.4", "inherits@2": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"ip@^2.0.0": - "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - "version" "2.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-buffer@~1.1.6": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-core-module@^2.13.0": - "integrity" "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" - "version" "2.13.0" - dependencies: - "has" "^1.0.3" - -"is-docker@^2.0.0": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" - -"is-lambda@^1.0.1": - "integrity" "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" - "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - "version" "1.0.1" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-path-inside@^3.0.3": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-stream@^1.1.0": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-wsl@^2.1.1": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^5.0.4": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" -"istanbul-lib-instrument@^6.0.0": - "integrity" "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz" - "version" "6.0.0" +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.2.0" + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@^2.0.4, inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ip-address@^9.0.5: + version "9.0.5" + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.13.0: + version "2.15.1" + dependencies: + hasown "^2.0.2" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-number@^7.0.0: + version "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-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^7.5.4" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - "version" "3.0.1" +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^4.0.0" - "supports-color" "^7.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -"istanbul-reports@^3.1.3": - "integrity" "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" - "version" "3.1.6" +istanbul-reports@^3.1.3: + version "3.1.7" dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -"jackspeak@^2.0.3": - "integrity" "sha512-uKmsITSsF4rUWQHzqaRUuyAir3fZfW3f202Ee34lz/gZCi970CPZwyQXLGNgWJvvZbvFyzeyGq0+4fcG/mBKZg==" - "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.0.tgz" - "version" "2.3.0" +jackspeak@^3.1.2: + version "3.4.3" dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -"jest-changed-files@^29.6.3": - "integrity" "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz" - "version" "29.6.3" +jake@^10.8.5: + version "10.9.2" + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" dependencies: - "execa" "^5.0.0" - "jest-util" "^29.6.3" - "p-limit" "^3.1.0" + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" -"jest-circus@^29.6.4": - "integrity" "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz" - "version" "29.6.4" +jest-circus@^29.7.0: + version "29.7.0" dependencies: - "@jest/environment" "^29.6.4" - "@jest/expect" "^29.6.4" - "@jest/test-result" "^29.6.4" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^1.0.0" - "is-generator-fn" "^2.0.0" - "jest-each" "^29.6.3" - "jest-matcher-utils" "^29.6.4" - "jest-message-util" "^29.6.3" - "jest-runtime" "^29.6.4" - "jest-snapshot" "^29.6.4" - "jest-util" "^29.6.3" - "p-limit" "^3.1.0" - "pretty-format" "^29.6.3" - "pure-rand" "^6.0.0" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-cli@^29.6.4": - "integrity" "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/core" "^29.6.4" - "@jest/test-result" "^29.6.4" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^29.6.4" - "jest-util" "^29.6.3" - "jest-validate" "^29.6.3" - "prompts" "^2.0.1" - "yargs" "^17.3.1" - -"jest-config@^29.6.4": - "integrity" "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz" - "version" "29.6.4" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.6.4" + "@jest/test-sequencer" "^29.7.0" "@jest/types" "^29.6.3" - "babel-jest" "^29.6.4" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-circus" "^29.6.4" - "jest-environment-node" "^29.6.4" - "jest-get-type" "^29.6.3" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.6.4" - "jest-runner" "^29.6.4" - "jest-util" "^29.6.3" - "jest-validate" "^29.6.3" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^29.6.3" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" - -"jest-diff@^29.6.4": - "integrity" "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^29.6.3" - "jest-get-type" "^29.6.3" - "pretty-format" "^29.6.3" - -"jest-docblock@^29.6.3": - "integrity" "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz" - "version" "29.6.3" - dependencies: - "detect-newline" "^3.0.0" - -"jest-each@^29.6.3": - "integrity" "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz" - "version" "29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" dependencies: "@jest/types" "^29.6.3" - "chalk" "^4.0.0" - "jest-get-type" "^29.6.3" - "jest-util" "^29.6.3" - "pretty-format" "^29.6.3" - -"jest-environment-node@^29.6.4": - "integrity" "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/environment" "^29.6.4" - "@jest/fake-timers" "^29.6.4" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "jest-mock" "^29.6.3" - "jest-util" "^29.6.3" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"jest-get-type@^29.6.3": - "integrity" "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" - "version" "29.6.3" +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -"jest-haste-map@^29.6.4": - "integrity" "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz" - "version" "29.6.4" +jest-haste-map@^29.7.0: + version "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^29.6.3" - "jest-util" "^29.6.3" - "jest-worker" "^29.6.4" - "micromatch" "^4.0.4" - "walker" "^1.0.8" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" optionalDependencies: - "fsevents" "^2.3.2" + fsevents "^2.3.2" -"jest-leak-detector@^29.6.3": - "integrity" "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz" - "version" "29.6.3" +jest-leak-detector@^29.7.0: + version "29.7.0" dependencies: - "jest-get-type" "^29.6.3" - "pretty-format" "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -"jest-matcher-utils@^29.6.4": - "integrity" "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz" - "version" "29.6.4" +jest-matcher-utils@^29.7.0: + version "29.7.0" dependencies: - "chalk" "^4.0.0" - "jest-diff" "^29.6.4" - "jest-get-type" "^29.6.3" - "pretty-format" "^29.6.3" + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -"jest-message-util@^29.6.3": - "integrity" "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz" - "version" "29.6.3" +jest-message-util@^29.7.0: + version "29.7.0" dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^29.6.3" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-mock@^29.6.3": - "integrity" "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz" - "version" "29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "jest-util" "^29.6.3" - -"jest-pnp-resolver@^1.2.2": - "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - "version" "1.2.3" - -"jest-regex-util@^29.6.3": - "integrity" "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" - "version" "29.6.3" - -"jest-resolve-dependencies@^29.6.4": - "integrity" "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "jest-regex-util" "^29.6.3" - "jest-snapshot" "^29.6.4" - -"jest-resolve@*", "jest-resolve@^29.6.4": - "integrity" "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.6.4" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^29.6.3" - "jest-validate" "^29.6.3" - "resolve" "^1.20.0" - "resolve.exports" "^2.0.0" - "slash" "^3.0.0" - -"jest-runner@^29.6.4": - "integrity" "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/console" "^29.6.4" - "@jest/environment" "^29.6.4" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@*, jest-resolve@^29.7.0: + version "29.7.0" + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^29.6.3" - "jest-environment-node" "^29.6.4" - "jest-haste-map" "^29.6.4" - "jest-leak-detector" "^29.6.3" - "jest-message-util" "^29.6.3" - "jest-resolve" "^29.6.4" - "jest-runtime" "^29.6.4" - "jest-util" "^29.6.3" - "jest-watcher" "^29.6.4" - "jest-worker" "^29.6.4" - "p-limit" "^3.1.0" - "source-map-support" "0.5.13" - -"jest-runtime@^29.6.4": - "integrity" "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/environment" "^29.6.4" - "@jest/fake-timers" "^29.6.4" - "@jest/globals" "^29.6.4" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.6.4" - "jest-message-util" "^29.6.3" - "jest-mock" "^29.6.3" - "jest-regex-util" "^29.6.3" - "jest-resolve" "^29.6.4" - "jest-snapshot" "^29.6.4" - "jest-util" "^29.6.3" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" - -"jest-snapshot@^29.6.4": - "integrity" "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz" - "version" "29.6.4" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.6.4" - "@jest/transform" "^29.6.4" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^29.6.4" - "graceful-fs" "^4.2.9" - "jest-diff" "^29.6.4" - "jest-get-type" "^29.6.3" - "jest-matcher-utils" "^29.6.4" - "jest-message-util" "^29.6.3" - "jest-util" "^29.6.3" - "natural-compare" "^1.4.0" - "pretty-format" "^29.6.3" - "semver" "^7.5.3" - -"jest-util@^29.0.0", "jest-util@^29.6.3": - "integrity" "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz" - "version" "29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-validate@^29.6.3": - "integrity" "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz" - "version" "29.6.3" +jest-validate@^29.7.0: + version "29.7.0" dependencies: "@jest/types" "^29.6.3" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^29.6.3" - "leven" "^3.1.0" - "pretty-format" "^29.6.3" - -"jest-watcher@^29.6.4": - "integrity" "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz" - "version" "29.6.4" - dependencies: - "@jest/test-result" "^29.6.4" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + dependencies: + "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "jest-util" "^29.6.3" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" -"jest-worker@^29.6.4": - "integrity" "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz" - "version" "29.6.4" +jest-worker@^29.7.0: + version "29.7.0" dependencies: "@types/node" "*" - "jest-util" "^29.6.3" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest@^29.0.0", "jest@^29.6.4": - "integrity" "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==" - "resolved" "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz" - "version" "29.6.4" +jest@^29.0.0, jest@^29.6.4: + version "29.7.0" dependencies: - "@jest/core" "^29.6.4" + "@jest/core" "^29.7.0" "@jest/types" "^29.6.3" - "import-local" "^3.0.2" - "jest-cli" "^29.6.4" - -"js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "argparse" "^2.0.1" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"json-parse-even-better-errors@^2.3.0": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.1: + version "3.0.1" + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +keyv@^4.5.3: + version "4.5.4" + dependencies: + json-buffer "3.0.1" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + dependencies: + get-func-name "^2.0.1" + +lowdb@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/lowdb/-/lowdb-5.1.0.tgz" + integrity sha512-OEysJ2S3j05RqehEypEv3h6EgdV4Y7LTq7LngRNqe1IxsInOm66/sa3fzoI6mmqs2CC+zIJW3vfncGNv2IGi3A== + dependencies: + steno "^3.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^10.2.0: + version "10.4.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.1.1, make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^11.0.0: + version "11.1.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +markdown@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz" + integrity sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ== + dependencies: + nopt "~2.1.1" + +marked-terminal@^6.0.0: + version "6.3.0" + dependencies: + ansi-escapes "^6.2.0" + chalk "^5.3.0" + cli-highlight "^2.1.11" + cli-table3 "^0.6.3" + node-emoji "^2.1.3" + supports-hyperlinks "^3.0.0" + +marked@*, marked@^9.1.6, "marked@>=1 <13", "marked@>=6.0.0 <12": + version "9.1.6" + resolved "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz" + integrity sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.8" + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"json5@^2.2.3": - "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - "version" "2.2.3" - -"jsonparse@^1.3.1": - "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" - "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - "version" "1.3.1" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash.memoize@4.x": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"loupe@^2.3.1": - "integrity" "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==" - "resolved" "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "get-func-name" "^2.0.0" - -"lowdb@^5.1.0": - "integrity" "sha512-OEysJ2S3j05RqehEypEv3h6EgdV4Y7LTq7LngRNqe1IxsInOm66/sa3fzoI6mmqs2CC+zIJW3vfncGNv2IGi3A==" - "resolved" "https://registry.npmjs.org/lowdb/-/lowdb-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "steno" "^3.0.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "yallist" "^3.0.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"lru-cache@^7.5.1": - "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - "version" "7.18.3" - -"lru-cache@^7.7.1": - "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - "version" "7.18.3" - -"lru-cache@^9.1.1 || ^10.0.0": - "integrity" "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" - "version" "10.0.1" - -"make-dir@^4.0.0": - "integrity" "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "semver" "^7.5.3" - -"make-error@^1.1.1", "make-error@1.x": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"make-fetch-happen@^11.0.0": - "integrity" "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==" - "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" - "version" "11.1.1" - dependencies: - "agentkeepalive" "^4.2.1" - "cacache" "^17.0.0" - "http-cache-semantics" "^4.1.1" - "http-proxy-agent" "^5.0.0" - "https-proxy-agent" "^5.0.0" - "is-lambda" "^1.0.1" - "lru-cache" "^7.7.1" - "minipass" "^5.0.0" - "minipass-fetch" "^3.0.0" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.4" - "negotiator" "^0.6.3" - "promise-retry" "^2.0.1" - "socks-proxy-agent" "^7.0.0" - "ssri" "^10.0.0" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"markdown@^0.5.0": - "integrity" "sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==" - "resolved" "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "nopt" "~2.1.1" - -"marked-terminal@^6.0.0": - "integrity" "sha512-6rruICvqRfA4N+Mvdc0UyDbLA0A0nI5omtARIlin3P2F+aNc3EbW91Rd9HTuD0v9qWyHmNIu8Bt40gAnPfldsg==" - "resolved" "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "ansi-escapes" "^6.2.0" - "cardinal" "^2.1.1" - "chalk" "^5.3.0" - "cli-table3" "^0.6.3" - "node-emoji" "^2.1.0" - "supports-hyperlinks" "^3.0.0" - -"marked@*", "marked@^9.1.6", "marked@>=1 <10", "marked@>=6.0.0 <10": - "integrity" "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==" - "resolved" "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz" - "version" "9.1.6" - -"md5@^2.3.0": - "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "charenc" "0.0.2" - "crypt" "0.0.2" - "is-buffer" "~1.1.6" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"micromatch@^4.0.4": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.12": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimatch@^5.0.1": - "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "brace-expansion" "^2.0.1" - -"minimatch@^9.0.1": - "integrity" "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - "version" "9.0.3" - dependencies: - "brace-expansion" "^2.0.1" - -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minipass" "^3.0.0" - -"minipass-fetch@^3.0.0": - "integrity" "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==" - "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "minipass" "^7.0.3" - "minipass-sized" "^1.0.3" - "minizlib" "^2.1.2" +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.0.5, 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@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + dependencies: + brace-expansion "^2.0.1" + +minimatch@9.0.3: + version "9.0.3" + dependencies: + brace-expansion "^2.0.1" + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^3.0.0: + version "3.0.5" + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" optionalDependencies: - "encoding" "^0.1.13" - -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "minipass" "^3.0.0" - -"minipass-json-stream@^1.0.1": - "integrity" "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==" - "resolved" "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "jsonparse" "^1.3.1" - "minipass" "^3.0.0" - -"minipass-pipeline@^1.2.4": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" - dependencies: - "minipass" "^3.0.0" - -"minipass-sized@^1.0.3": - "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" - "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "minipass" "^3.0.0" - -"minipass@^3.0.0": - "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "yallist" "^4.0.0" - -"minipass@^5.0.0", "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - "integrity" "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" - "version" "5.0.0" - -"minipass@^7.0.3": - "integrity" "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz" - "version" "7.0.3" - -"minizlib@^2.1.1", "minizlib@^2.1.2": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" - -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"ms@^2.0.0", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"negotiator@^0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"node-domexception@1.0.0": - "integrity" "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - "resolved" "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" - "version" "1.0.0" - -"node-emoji@^2.1.0": - "integrity" "sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==" - "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "@sindresorhus/is" "^3.1.2" - "char-regex" "^1.0.2" - "emojilib" "^2.4.0" - "skin-tone" "^2.0.0" - -"node-fetch@^2.6.7": - "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" - "version" "2.7.0" - dependencies: - "whatwg-url" "^5.0.0" - -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-releases@^2.0.13": - "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" - "version" "2.0.13" - -"nopt@~2.1.1": - "integrity" "sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "abbrev" "1" - -"normalize-path@^3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"npm-package-arg@^10.0.0": - "integrity" "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==" - "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "hosted-git-info" "^6.0.0" - "proc-log" "^3.0.0" - "semver" "^7.3.5" - "validate-npm-package-name" "^5.0.0" - -"npm-registry-fetch@^14.0.5": - "integrity" "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==" - "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz" - "version" "14.0.5" - dependencies: - "make-fetch-happen" "^11.0.0" - "minipass" "^5.0.0" - "minipass-fetch" "^3.0.0" - "minipass-json-stream" "^1.0.1" - "minizlib" "^2.1.2" - "npm-package-arg" "^10.0.0" - "proc-log" "^3.0.0" - -"npm-run-path@^2.0.0": - "integrity" "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "path-key" "^2.0.0" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.0", "onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"openai@^4.17.4": - "integrity" "sha512-ThRFkl6snLbcAKS58St7N3CaKuI5WdYUvIjPvf4s+8SdymgNtOfzmZcZXVcCefx04oKFnvZJvIcTh3eAFUUhAQ==" - "resolved" "https://registry.npmjs.org/openai/-/openai-4.17.4.tgz" - "version" "4.17.4" + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.2" + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.1.2" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@^2.0.0, ms@^2.1.3: + version "2.1.3" + +mz@^2.4.0: + version "2.7.0" + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^8.0.0: + version "8.1.0" + +node-domexception@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-emoji@^2.1.3: + version "2.1.3" + dependencies: + "@sindresorhus/is" "^4.6.0" + char-regex "^1.0.2" + emojilib "^2.4.0" + skin-tone "^2.0.0" + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.18: + version "2.0.18" + +nopt@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz" + integrity sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA== + dependencies: + abbrev "1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-package-arg@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-registry-fetch@^14.0.5: + version "14.0.5" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-assign@^4.0.1: + version "4.1.1" + +object-inspect@^1.13.1: + version "1.13.2" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +openai@^4.17.4: + version "4.58.1" dependencies: "@types/node" "^18.11.18" "@types/node-fetch" "^2.6.4" - "abort-controller" "^3.0.0" - "agentkeepalive" "^4.2.1" - "digest-fetch" "^1.3.0" - "form-data-encoder" "1.7.2" - "formdata-node" "^4.3.2" - "node-fetch" "^2.6.7" - "web-streams-polyfill" "^3.2.1" - -"optionator@^0.9.3": - "integrity" "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" - "version" "0.9.3" - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - "deep-is" "^0.1.3" - "fast-levenshtein" "^2.0.6" - "levn" "^0.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - -"ora@*", "ora@^5.1.0", "ora@^5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bl" "^4.1.0" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-spinners" "^2.5.0" - "is-interactive" "^1.0.0" - "is-unicode-supported" "^0.1.0" - "log-symbols" "^4.1.0" - "strip-ansi" "^6.0.0" - "wcwidth" "^1.0.1" - -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2", "p-limit@^3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-json@^5.0.0", "parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" + "@types/qs" "^6.9.15" + abort-controller "^3.0.0" + agentkeepalive "^4.2.1" + form-data-encoder "1.7.2" + formdata-node "^4.3.2" + node-fetch "^2.6.7" + qs "^6.10.3" + +optionator@^0.9.3: + version "0.9.4" + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@*, ora@^5.1.0, ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^2.0.0": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^2.0.1": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-scurry@^1.10.1": - "integrity" "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==" - "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" - "version" "1.10.1" - dependencies: - "lru-cache" "^9.1.1 || ^10.0.0" - "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pathval@^1.1.1": - "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" - "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - "version" "1.1.1" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pirates@^4.0.4": - "integrity" "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" - "version" "4.0.6" - -"pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"pretty-format@^29.0.0", "pretty-format@^29.6.3": - "integrity" "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz" - "version" "29.6.3" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + dependencies: + parse5 "^6.0.1" + +parse5@^5.1.1: + version "5.1.1" + +parse5@^6.0.1: + version "6.0.1" + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.1.0" + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" dependencies: "@jest/schemas" "^29.6.3" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"proc-log@^3.0.0": - "integrity" "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" - "resolved" "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz" - "version" "3.0.0" - -"promise-retry@^2.0.1": - "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" - "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "err-code" "^2.0.2" - "retry" "^0.12.0" - -"prompts@^2.0.1", "prompts@^2.4.2": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"punycode@^2.1.0": - "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - "version" "2.3.0" - -"pure-rand@^6.0.0": - "integrity" "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==" - "resolved" "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz" - "version" "6.0.2" - -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" - -"readable-stream@^3.4.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"redeyed@~2.1.0": - "integrity" "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==" - "resolved" "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "esprima" "~4.0.0" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve.exports@^2.0.0": - "integrity" "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" - "version" "2.0.2" - -"resolve@^1.20.0": - "integrity" "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" - "version" "1.22.4" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - -"retry@^0.12.0": - "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + +pure-rand@^6.0.0: + version "6.1.0" + +qs@^6.10.3: + version "6.13.0" + dependencies: + side-channel "^1.0.6" + +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== + +react-is@^18.0.0: + version "18.3.1" + +readable-stream@^3.4.0: + version "3.6.2" + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0: + version "1.22.8" + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +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== + +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" + +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" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3.0.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"semver@^5.5.0": - "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - "version" "5.7.2" - -"semver@^6.3.0": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^6.3.1": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^7.0.0", "semver@^7.3.5", "semver@^7.5.1", "semver@^7.5.3", "semver@^7.5.4": - "integrity" "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - "version" "7.5.4" - dependencies: - "lru-cache" "^6.0.0" - -"shebang-command@^1.2.0": - "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3", "signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"signal-exit@^4.0.1": - "integrity" "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - "version" "4.1.0" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"skin-tone@^2.0.0": - "integrity" "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==" - "resolved" "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-emoji-modifier-base" "^1.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"smart-buffer@^4.2.0": - "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - "version" "4.2.0" - -"socks-proxy-agent@^7.0.0": - "integrity" "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==" - "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "agent-base" "^6.0.2" - "debug" "^4.3.3" - "socks" "^2.6.2" - -"socks@^2.6.2": - "integrity" "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==" - "resolved" "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "ip" "^2.0.0" - "smart-buffer" "^4.2.0" - -"source-map-support@0.5.13": - "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - "version" "0.5.13" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5, semver@^7.5.1, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: + version "7.6.3" + +set-function-length@^1.2.1: + version "1.2.2" + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.6: + version "1.0.6" + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -"ssri@^10.0.0": - "integrity" "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" - "version" "10.0.5" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +skin-tone@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz" + integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== + dependencies: + unicode-emoji-modifier-base "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@^1.1.3: + version "1.1.3" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^10.0.0: + version "10.0.6" dependencies: - "minipass" "^7.0.3" + minipass "^7.0.3" -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - "escape-string-regexp" "^2.0.0" + escape-string-regexp "^2.0.0" -"steno@^3.0.0": - "integrity" "sha512-uZtn7Ht9yXLiYgOsmo8btj4+f7VxyYheMt8g6F1ANjyqByQXEE2Gygjgenp3otHH1TlHsS4JAaRGv5wJ1wvMNw==" - "resolved" "https://registry.npmjs.org/steno/-/steno-3.0.0.tgz" - "version" "3.0.0" - -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" +steno@^3.0.0: + version "3.2.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" "string-width-cjs@npm:string-width@^4.2.0": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-width@^5.0.1", "string-width@^5.1.2": - "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - "version" "5.1.2" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - "eastasianwidth" "^0.2.0" - "emoji-regex" "^9.2.2" - "strip-ansi" "^7.0.1" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" "strip-ansi-cjs@npm:strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-ansi@^7.0.1": - "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "ansi-regex" "^6.0.1" - -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" - -"strip-eof@^1.0.0": - "integrity" "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" - -"suffix-thumb@4.0.2": - "integrity" "sha512-CCvCAr7JyeQoO+/lyq3P2foZI/xJz5kpG3L6kg2CaOf9K2/gaM9ixy/JTuRwjEK38l306zE7vl3JoOZYmLQLlA==" - "resolved" "https://registry.npmjs.org/suffix-thumb/-/suffix-thumb-4.0.2.tgz" - "version" "4.0.2" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0", "supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-hyperlinks@^3.0.0": - "integrity" "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"tar@^6.1.11": - "integrity" "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz" - "version" "6.1.15" - dependencies: - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "minipass" "^5.0.0" - "minizlib" "^2.1.1" - "mkdirp" "^1.0.3" - "yallist" "^4.0.0" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +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" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +suffix-thumb@5.0.2: + version "5.0.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^3.0.0: + version "3.1.0" + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^6.1.11: + version "6.2.1" + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" + glob "^7.1.4" + minimatch "^3.0.4" + +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== + +thenify-all@^1.0.0: + version "1.6.0" + dependencies: + thenify ">= 3.1.0 < 4" -"text-table@^0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" +"thenify@>= 3.1.0 < 4": + version "3.3.1" + dependencies: + any-promise "^1.0.0" -"tinycolor2@^1.0.0": - "integrity" "sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==" - "resolved" "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.5.2.tgz" - "version" "1.5.2" +tinycolor2@^1.0.0: + version "1.6.0" -"tinygradient@^1.1.5": - "integrity" "sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==" - "resolved" "https://registry.npmjs.org/tinygradient/-/tinygradient-1.1.5.tgz" - "version" "1.1.5" +tinygradient@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/tinygradient/-/tinygradient-1.1.5.tgz" + integrity sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw== dependencies: "@types/tinycolor2" "^1.4.0" - "tinycolor2" "^1.0.0" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" - -"ts-api-utils@^1.0.1": - "integrity" "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==" - "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz" - "version" "1.0.2" - -"ts-jest@^29.1.1": - "integrity" "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==" - "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" - "version" "29.1.1" - dependencies: - "bs-logger" "0.x" - "fast-json-stable-stringify" "2.x" - "jest-util" "^29.0.0" - "json5" "^2.2.3" - "lodash.memoize" "4.x" - "make-error" "1.x" - "semver" "^7.5.3" - "yargs-parser" "^21.0.1" - -"ts-node@^10.9.1", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" + tinycolor2 "^1.0.0" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-api-utils@^1.0.1: + version "1.3.0" + +ts-jest@^29.1.1: + version "29.2.5" + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + +ts-node@^10.9.1, ts-node@>=9.0.0: + version "10.9.2" dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.1" - "yn" "3.1.1" - -"tslib@^2.0.3": - "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - "version" "2.6.2" - -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" - dependencies: - "prelude-ls" "^1.2.1" - -"type-detect@^4.0.0", "type-detect@^4.0.5", "type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"type-fest@^3.0.0": - "integrity" "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" - "version" "3.13.1" - -"typescript@^5.1.6", "typescript@>=2.7", "typescript@>=4.2.0", "typescript@>=4.3 <6": - "integrity" "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" - "version" "5.1.6" - -"typesync@^0.11.1": - "integrity" "sha512-sMoD2oBqrmUZPX1jAmRd75N07qPG8gTSocfJSfe09otfuoVx4rFNcOreOriUW+hp6Fh01dBuh42yD2NCgZD2dA==" - "resolved" "https://registry.npmjs.org/typesync/-/typesync-0.11.1.tgz" - "version" "0.11.1" - dependencies: - "awilix" "^8.0.1" - "chalk" "^4.1.2" - "cosmiconfig" "^8.1.3" - "detect-indent" "^6.0.0" - "glob" "^8.1.0" - "npm-registry-fetch" "^14.0.5" - "ora" "^5.1.0" - "semver" "^7.5.1" - -"undici-types@~5.26.4": - "integrity" "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" - "version" "5.26.5" - -"unicode-emoji-modifier-base@^1.0.0": - "integrity" "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==" - "resolved" "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz" - "version" "1.0.0" - -"unique-filename@^3.0.0": - "integrity" "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "unique-slug" "^4.0.0" - -"unique-slug@^4.0.0": - "integrity" "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "imurmurhash" "^0.1.4" - -"update-browserslist-db@^1.0.11": - "integrity" "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" - "version" "1.0.11" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"util-deprecate@^1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" - -"v8-to-istanbul@^9.0.1": - "integrity" "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz" - "version" "9.1.0" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.0.3: + version "2.7.0" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +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" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^5.1.6, typescript@>=2.7, typescript@>=4.2.0, "typescript@>=4.3 <6", typescript@>=4.9.5: + version "5.5.4" + +typesync@^0.11.1: + version "0.11.1" + resolved "https://registry.npmjs.org/typesync/-/typesync-0.11.1.tgz" + integrity sha512-sMoD2oBqrmUZPX1jAmRd75N07qPG8gTSocfJSfe09otfuoVx4rFNcOreOriUW+hp6Fh01dBuh42yD2NCgZD2dA== + dependencies: + awilix "^8.0.1" + chalk "^4.1.2" + cosmiconfig "^8.1.3" + detect-indent "^6.0.0" + glob "^8.1.0" + npm-registry-fetch "^14.0.5" + ora "^5.1.0" + semver "^7.5.1" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-emoji-modifier-base@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz" + integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +update-browserslist-db@^1.1.0: + version "1.1.0" + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" + convert-source-map "^2.0.0" -"validate-npm-package-name@^5.0.0": - "integrity" "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==" - "resolved" "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "builtins" "^5.0.0" +validate-npm-package-name@^5.0.0: + version "5.0.1" -"walker@^1.0.8": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - "makeerror" "1.0.12" + makeerror "1.0.12" -"wcwidth@^1.0.1": - "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: - "defaults" "^1.0.3" - -"web-streams-polyfill@^3.2.1": - "integrity" "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - "resolved" "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" - "version" "3.2.1" + defaults "^1.0.3" -"web-streams-polyfill@4.0.0-beta.3": - "integrity" "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==" - "resolved" "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz" - "version" "4.0.0-beta.3" +web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -"which@^1.2.9": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: - "isexe" "^2.0.0" + isexe "^2.0.0" -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - "isexe" "^2.0.0" + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrap-ansi@^8.1.0": - "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - "version" "8.1.0" - dependencies: - "ansi-styles" "^6.1.0" - "string-width" "^5.0.1" - "strip-ansi" "^7.0.1" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^4.0.2": - "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.7" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yallist@^3.0.2": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^21.0.1", "yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" - -"yargs@^17.3.1": - "integrity" "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - "version" "17.7.2" - dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" - -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.2: + version "20.2.9" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^16.0.0: + version "16.2.0" + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From f164e6e3ceb9f4f33d69d226aa5c13baee25a992 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Thu, 12 Sep 2024 19:18:08 +0100 Subject: [PATCH 08/17] refactor(context.ts): convert VectorStore class to VectorStore interface and createVectorStore function to improve code readability and maintainability --- src/context.ts | 117 ++++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 60 deletions(-) diff --git a/src/context.ts b/src/context.ts index 1f2836f..a39eb98 100644 --- a/src/context.ts +++ b/src/context.ts @@ -7,77 +7,86 @@ export interface ContextItem { content: string; } -class VectorStore { - private index: hnswlib.HierarchicalNSW; - private items: ContextItem[]; - private encoder: any; - private maxTokens: number; - private currentTokens: number; - private readonly dimension: number = 1536; // Fixed dimension size +interface VectorStore { + addItem: (item: ContextItem) => void; + getRelevantContext: (query: string, k?: number) => ContextItem[]; +} - constructor( - model: TiktokenModel = "gpt-3.5-turbo", - maxTokens: number = 4096 - ) { +const createVectorStore = ( + model: TiktokenModel = "gpt-4o", + maxTokens: number = 4096 +): VectorStore => { + const dimension: number = 1536; // Fixed dimension size + let index: hnswlib.HierarchicalNSW = new hnswlib.HierarchicalNSW( + "cosine", + dimension + ); + const items: ContextItem[] = []; + let encoder: any = encoding_for_model(model); + let currentTokens: number = 0; + + try { + encoder = encoding_for_model(model); + index = new hnswlib.HierarchicalNSW("cosine", dimension); + index.initIndex(1000); // Initialize index with a maximum of 1000 elements + } catch (error) { + console.error("Error initializing VectorStore:", error); + throw new Error("Failed to initialize VectorStore"); + } + + const textToVector = (text: string): number[] => { try { - this.encoder = encoding_for_model(model); - this.index = new hnswlib.HierarchicalNSW("cosine", this.dimension); - this.index.initIndex(1000); // Initialize index with a maximum of 1000 elements - this.items = []; - this.maxTokens = maxTokens; - this.currentTokens = 0; + const encoded = encoder.encode(text); + const vector = new Array(dimension).fill(0); + for (let i = 0; i < encoded.length && i < dimension; i++) { + vector[i] = encoded[i] / 100; // Simple normalization + } + return vector; } catch (error) { - console.error("Error initializing VectorStore:", error); - throw new Error("Failed to initialize VectorStore"); + console.error("Error converting text to vector:", error); + throw new Error("Failed to convert text to vector"); } - } + }; - addItem(item: ContextItem) { + const addItem = (item: ContextItem) => { try { if (!item || typeof item.content !== "string") { console.error("Invalid item:", item); return; } - const vector = this.textToVector(item.content); - const tokenCount = this.encoder.encode(item.content).length; + const vector = textToVector(item.content); + const tokenCount = encoder.encode(item.content).length; // Remove old items if adding this would exceed the token limit - while ( - this.currentTokens + tokenCount > this.maxTokens && - this.items.length > 0 - ) { - const removedItem = this.items.shift(); + while (currentTokens + tokenCount > maxTokens && items.length > 0) { + const removedItem = items.shift(); if (removedItem) { - this.currentTokens -= this.encoder.encode(removedItem.content).length; + currentTokens -= encoder.encode(removedItem.content).length; } } - const id = this.items.length; - this.index.addPoint(vector, id); - this.items.push(item); - this.currentTokens += tokenCount; + const id = items.length; + index.addPoint(vector, id); + items.push(item); + currentTokens += tokenCount; } catch (error) { console.error("Error adding item to VectorStore:", error); } - } + }; - getRelevantContext(query: string, k: number = 5): ContextItem[] { + const getRelevantContext = (query: string, k: number = 5): ContextItem[] => { try { - if (this.items.length === 0) { + if (items.length === 0) { return []; } - const queryVector = this.textToVector(query); - const results = this.index.searchKnn( - queryVector, - Math.min(k, this.items.length) - ); + const queryVector = textToVector(query); + const results = index.searchKnn(queryVector, Math.min(k, items.length)); if (!results || !Array.isArray(results.neighbors)) { - // console.error("Unexpected result from searchKnn:", results); return []; } return results.neighbors.map( (id) => - this.items[id] || { + items[id] || { role: "system", content: "Context item not found", } @@ -86,27 +95,15 @@ class VectorStore { console.error("Error getting relevant context:", error); return []; } - } + }; - private textToVector(text: string): number[] { - try { - const encoded = this.encoder.encode(text); - const vector = new Array(this.dimension).fill(0); - for (let i = 0; i < encoded.length && i < this.dimension; i++) { - vector[i] = encoded[i] / 100; // Simple normalization - } - return vector; - } catch (error) { - console.error("Error converting text to vector:", error); - throw new Error("Failed to convert text to vector"); - } - } -} + return { addItem, getRelevantContext }; +}; let vectorStore: VectorStore; try { - vectorStore = new VectorStore(); + vectorStore = createVectorStore(); } catch (error) { console.error("Error creating VectorStore:", error); throw new Error("Failed to create VectorStore"); @@ -129,5 +126,5 @@ export function getContext(query: string): ContextItem[] { } export function clearContext() { - vectorStore = new VectorStore(); + vectorStore = createVectorStore(); } From 764e6d0124b15bc0c4c5ffd3b18708900c7b8da4 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 08:15:58 +0100 Subject: [PATCH 09/17] fix(creds.ts): add 'model' property to getCredentials function to handle model data feat(engine): create common functions combineConsecutiveMessages and ensureMessagesAlternate to process and combine messages efficiently feat(utils.ts): add support for selecting a model based on the chosen engine fix(utils.ts): update engine and model choices to have consistent capitalization fix(utils.ts): update apiKeyPrompt function to include model selection and save all credentials --- src/creds.ts | 8 +++--- src/engine/anthropic.ts | 60 ++++++++++++++++++++++++++++++++++------- src/engine/common.ts | 40 +++++++++++++++++++++++++++ src/engine/gemini.ts | 22 +++++++-------- src/engine/ollama.ts | 22 ++++++++------- src/engine/openAi.ts | 18 +++++++++---- src/index.ts | 16 +++++------ src/utils.ts | 57 ++++++++++++++++++++++++++++++--------- 8 files changed, 184 insertions(+), 59 deletions(-) create mode 100644 src/engine/common.ts diff --git a/src/creds.ts b/src/creds.ts index ae11edc..e68ad89 100644 --- a/src/creds.ts +++ b/src/creds.ts @@ -126,23 +126,25 @@ export function getCredentials(): { apiKey: string | null; engine: string | null; tavilyApiKey: string | null; + model: string | null; } { if (fs.existsSync(`${__dirname}/credentials.json`)) { try { const data = fs.readFileSync(`${__dirname}/credentials.json`, "utf8"); - const { apiKey, engine, tavilyApiKey } = JSON.parse(data); + const { apiKey, engine, tavilyApiKey, model } = JSON.parse(data); return { apiKey: apiKey ? decrypt(apiKey) : null, engine: engine || null, tavilyApiKey: tavilyApiKey ? decrypt(tavilyApiKey) : null, + model: model || null, }; } catch (error) { console.error("Error reading or parsing credentials:", error); - return { apiKey: null, engine: null, tavilyApiKey: null }; + return { apiKey: null, engine: null, tavilyApiKey: null, model: null }; } } console.log("Credentials file not found"); - return { apiKey: null, engine: null, tavilyApiKey: null }; + return { apiKey: null, engine: null, tavilyApiKey: null, model: null }; } /** diff --git a/src/engine/anthropic.ts b/src/engine/anthropic.ts index 18ece62..6f559b8 100644 --- a/src/engine/anthropic.ts +++ b/src/engine/anthropic.ts @@ -6,6 +6,44 @@ import { addContext, getContext, ContextItem } from "../context"; import { loadWithRocketGradient } from "../gradient"; import chalk from "chalk"; +const combineConsecutiveMessages = (messages: ContextItem[]): ContextItem[] => { + if (messages.length === 0) return messages; + + const combinedMessages: ContextItem[] = [messages[0]]; + + for (let i = 1; i < messages.length; i++) { + const lastMessage = combinedMessages[combinedMessages.length - 1]; + const currentMessage = messages[i]; + + if (currentMessage.role === lastMessage.role) { + lastMessage.content += "\n" + currentMessage.content; + } else { + combinedMessages.push(currentMessage); + } + } + + return combinedMessages; +}; + +const ensureMessagesAlternate = (messages: ContextItem[]): ContextItem[] => { + const alternatingMessages: ContextItem[] = []; + + // Ensure the first message is from the user + let expectedRole: "user" | "assistant" = "user"; + + for (const message of messages) { + if (message.role !== expectedRole) { + // Skip or adjust message + continue; // or handle as needed + } + + alternatingMessages.push(message); + expectedRole = expectedRole === "user" ? "assistant" : "user"; + } + + return alternatingMessages; +}; + export const AnthropicEngine = async ( apiKey: string | Promise, prompt: string, @@ -35,16 +73,20 @@ export const AnthropicEngine = async ( } } - // Ensure messages alternate and start with a user message - if (messages.length === 0 || messages[0].role !== "user") { - messages = [{ role: "user", content: prompt }]; + // Combine consecutive messages with the same role + messages = combineConsecutiveMessages(messages); + + // Ensure messages start with 'user' and roles alternate + messages = ensureMessagesAlternate(messages); + + // Add the current prompt as a 'user' message + if ( + messages.length === 0 || + messages[messages.length - 1].role !== "user" + ) { + messages.push({ role: "user", content: prompt }); } else { - // If the last message is from the user, combine it with the new prompt - if (messages[messages.length - 1].role === "user") { - messages[messages.length - 1].content += "\n" + prompt; - } else { - messages.push({ role: "user", content: prompt }); - } + messages[messages.length - 1].content += "\n" + prompt; } const requestParams: MessageCreateParamsNonStreaming = { diff --git a/src/engine/common.ts b/src/engine/common.ts new file mode 100644 index 0000000..0fb742c --- /dev/null +++ b/src/engine/common.ts @@ -0,0 +1,40 @@ +import { ContextItem } from "../context"; + +export const combineConsecutiveMessages = ( + messages: ContextItem[] +): ContextItem[] => { + if (messages.length === 0) return messages; + const combinedMessages: ContextItem[] = [messages[0]]; + + for (let i = 1; i < messages.length; i++) { + const lastMessage = combinedMessages[combinedMessages.length - 1]; + const currentMessage = messages[i]; + + if (currentMessage.role === lastMessage.role) { + lastMessage.content += "\n" + currentMessage.content; + } else { + combinedMessages.push(currentMessage); + } + } + + return combinedMessages; +}; + +export const ensureMessagesAlternate = ( + messages: ContextItem[] +): ContextItem[] => { + const alternatingMessages: ContextItem[] = []; + // Ensure the first message is from the user + let expectedRole: "user" | "assistant" = "user"; + + for (const message of messages) { + if (message.role !== expectedRole) { + // Skip or adjust message + continue; // or handle as needed + } + + alternatingMessages.push(message); + expectedRole = expectedRole === "user" ? "assistant" : "user"; + } + return alternatingMessages; +}; diff --git a/src/engine/gemini.ts b/src/engine/gemini.ts index 68cf74c..a262ad8 100644 --- a/src/engine/gemini.ts +++ b/src/engine/gemini.ts @@ -1,6 +1,7 @@ import { GoogleGenerativeAI } from "@google/generative-ai"; import { addContext, getContext } from "../context"; import { loadWithRocketGradient } from "../gradient"; +import { combineConsecutiveMessages, ensureMessagesAlternate } from "./common"; export const GeminiEngine = async ( apiKey: string | Promise, @@ -32,22 +33,22 @@ export const GeminiEngine = async ( responseMimeType: "text/plain", }; - // Prepare chat history with context + // Process and combine messages const relevantContext = getContext(prompt); - const chatHistory = relevantContext.map((context) => ({ - role: context.role as "user" | "model", + let processedMessages = combineConsecutiveMessages(relevantContext); + processedMessages = ensureMessagesAlternate(processedMessages); + + // Add the current prompt + processedMessages.push({ role: "user", content: prompt }); + + const chatHistory = processedMessages.map((context) => ({ + role: context.role === "assistant" ? "model" : "user", parts: [{ text: context.content }], })); const chatSession = model.startChat({ generationConfig, - history: [ - ...chatHistory, - { - role: "user", - parts: [{ text: prompt }], - }, - ], + history: chatHistory, }); const result = await chatSession.sendMessage(prompt); @@ -55,7 +56,6 @@ export const GeminiEngine = async ( if (responseText) { if (hasContext) { - addContext({ role: "user", content: prompt }); addContext({ role: "assistant", content: responseText }); } spinner.stop(); diff --git a/src/engine/ollama.ts b/src/engine/ollama.ts index 2397570..1ea3aea 100644 --- a/src/engine/ollama.ts +++ b/src/engine/ollama.ts @@ -2,6 +2,7 @@ import chalk from "chalk"; import { addContext, getContext } from "../context"; import { loadWithRocketGradient } from "../gradient"; import axios from "axios"; +import { combineConsecutiveMessages, ensureMessagesAlternate } from "./common"; export const OllamaEngine = async ( apiKey: string | Promise, @@ -19,17 +20,21 @@ export const OllamaEngine = async ( const relevantContext = getContext(prompt); try { + // Process and combine messages + let processedMessages = combineConsecutiveMessages(relevantContext); + processedMessages = ensureMessagesAlternate(processedMessages); + + // Add the current prompt + processedMessages.push({ role: "user", content: prompt }); + const response = await axios.post( `${baseURL}/api/chat`, { model: opts.model || "llama2", // Use a default model if none is provided - messages: [ - ...relevantContext.map((item) => ({ - role: item.role, - content: item.content, - })), - { role: "user", content: prompt }, - ], + messages: processedMessages.map((item) => ({ + role: item.role, + content: item.content, + })), temperature: opts.temperature ? Number(opts.temperature) : 1, }, { @@ -44,7 +49,6 @@ export const OllamaEngine = async ( if (message) { if (hasContext) { - addContext({ role: "user", content: prompt }); addContext({ role: "assistant", content: message }); } spinner.stop(); @@ -54,7 +58,7 @@ export const OllamaEngine = async ( } } catch (err) { spinner.stop(); - // Handle errors similarly to OpenAI + // Error handling remains the same if (axios.isAxiosError(err)) { console.log(err); switch (err.response?.status) { diff --git a/src/engine/openAi.ts b/src/engine/openAi.ts index 6207a79..8960e18 100644 --- a/src/engine/openAi.ts +++ b/src/engine/openAi.ts @@ -3,6 +3,7 @@ import chalk from "chalk"; import { addContext, getContext } from "../context"; import { loadWithRocketGradient } from "../gradient"; import { ChatCompletionMessageParam } from "openai/resources/chat/completions"; +import { combineConsecutiveMessages, ensureMessagesAlternate } from "./common"; export const OpenAIEngine = async ( apiKey: string | Promise, @@ -19,13 +20,20 @@ export const OpenAIEngine = async ( try { const relevantContext = getContext(prompt); - const messages: ChatCompletionMessageParam[] = [ - ...relevantContext.map((item) => ({ + + // Process and combine messages + let processedMessages = combineConsecutiveMessages(relevantContext); + processedMessages = ensureMessagesAlternate(processedMessages); + + // Add the current prompt + processedMessages.push({ role: "user", content: prompt }); + + const messages: ChatCompletionMessageParam[] = processedMessages.map( + (item) => ({ role: item.role as "system" | "user" | "assistant", content: item.content, - })), - { role: "user", content: prompt }, - ]; + }) + ); const completion = await openai.chat.completions.create({ model: opts.model || "gpt-4o-2024-08-06", diff --git a/src/index.ts b/src/index.ts index 63d953f..8f6c050 100755 --- a/src/index.ts +++ b/src/index.ts @@ -43,7 +43,7 @@ program userInput, engine: creds.engine, apiKey: creds.apiKey, - opts, + opts: { ...opts, model: creds.model || undefined }, }); } else { // Use LLM to determine if a plugin should be used @@ -51,7 +51,7 @@ program creds.engine, creds.apiKey, userInput, - opts + { ...opts, model: creds.model || undefined } ); if (pluginKeyword !== "none") { @@ -62,19 +62,17 @@ program userInput, engine: creds.engine, apiKey: creds.apiKey, - opts, + opts: { ...opts, model: creds.model || undefined }, }); } else { console.log(chalk.red(`Plugin not found: ${pluginKeyword}`)); } } else { // No plugin applicable, use regular promptResponse - await promptResponse( - creds.engine, - creds.apiKey, - userInput, - opts - ); + await promptResponse(creds.engine, creds.apiKey, userInput, { + ...opts, + model: creds.model || undefined, + }); } } } catch (error) { diff --git a/src/utils.ts b/src/utils.ts index 8c0a04e..2389b27 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -30,6 +30,7 @@ export async function apiKeyPrompt() { const credentials = getCredentials(); const apiKey = credentials?.apiKey; const engine = credentials?.engine; + const model = credentials?.model; const questions: PromptObject[] = [ { @@ -37,31 +38,61 @@ export async function apiKeyPrompt() { name: "engine", message: "Pick LLM", choices: [ - { title: "openAI", value: "openAI" }, - { title: "anthropic", value: "anthropic" }, - { title: "gemini", value: "gemini" }, - { title: "ollama", value: "ollama" }, + { title: "OpenAI", value: "openAI" }, + { title: "Anthropic", value: "anthropic" }, + { title: "Gemini", value: "gemini" }, + { title: "Ollama", value: "ollama" }, ], initial: 0, }, { - type: "password", + type: (prev) => (prev === "ollama" ? null : "password"), name: "apiKey", - message: "Enter your OpenAI API key:", - validate: (value: string) => { - return value !== ""; + message: (prev) => `Enter your ${prev} API key:`, + validate: (value: string) => value !== "", + }, + { + type: (prev, values) => (values.engine === "ollama" ? null : "select"), + name: "model", + message: "Select model", + choices: (prev, values) => { + switch (values.engine) { + case "openAI": + return [ + { title: "GPT-3.5-turbo", value: "gpt-3.5-turbo" }, + { title: "GPT-4", value: "gpt-4" }, + { title: "GPT-4o", value: "gpt-4o" }, + { title: "GPT-o1 Preview", value: "o1-preview" }, + { title: "GPT-4o Mini", value: "gpt-4o-mini" }, + { title: "GPT-o1 Mini", value: "o1-mini" }, + ]; + case "anthropic": + return [ + { title: "Claude 2", value: "claude-2" }, + { title: "Claude 3 Opus", value: "claude-3-opus-20240229" }, + { title: "Claude 3 Sonnet", value: "claude-3-sonnet-20240229" }, + ]; + case "gemini": + return [{ title: "Gemini Pro", value: "gemini-pro" }]; + default: + return []; + } }, }, ]; - if (!apiKey || !engine) { + if (!apiKey || !engine || !model) { const response = await prompts(questions); - // Save both API key and engine - saveCredentials(encrypt(response.apiKey), response.engine); - return { apiKey: response.apiKey, engine: response.engine }; + // Save API key, engine, and model + saveCredentials(encrypt(response.apiKey), response.engine, response.model); + return { + apiKey: response.apiKey, + engine: response.engine, + model: response.model, + }; } - return { apiKey, engine }; + return { apiKey, engine, model }; } /** From c47ce1c3318ef2d168c5f1c10cb28199eb236507 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 08:30:17 +0100 Subject: [PATCH 10/17] feat(creds.ts): add model parameter to saveCredentials function for storing model information feat(webHandler.ts): pass model parameter to saveCredentials function when handling web research refactor(rag/index.ts): improve plugin matching logic and response handling in determinePlugins function --- src/creds.ts | 2 ++ src/handlers/webHandler.ts | 1 + src/rag/index.ts | 17 ++++++++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/creds.ts b/src/creds.ts index e68ad89..ddd7f99 100644 --- a/src/creds.ts +++ b/src/creds.ts @@ -103,12 +103,14 @@ export function getEngine(): string | null { export function saveCredentials( apiKey: string, engine: string, + model: string, tavilyApiKey?: string ) { const credentials = { apiKey: encrypt(apiKey), engine, tavilyApiKey: tavilyApiKey ? encrypt(tavilyApiKey) : undefined, + model, }; fs.writeFileSync( `${__dirname}/credentials.json`, diff --git a/src/handlers/webHandler.ts b/src/handlers/webHandler.ts index d4df3ee..52b5823 100644 --- a/src/handlers/webHandler.ts +++ b/src/handlers/webHandler.ts @@ -18,6 +18,7 @@ export async function handleWebResearch(query: string, userPrompt: string) { saveCredentials( credentials.apiKey || "", credentials.engine || "", + credentials.model || "", tavilyApiKey ); credentials = getCredentials(); diff --git a/src/rag/index.ts b/src/rag/index.ts index 66f44b4..222b327 100644 --- a/src/rag/index.ts +++ b/src/rag/index.ts @@ -21,7 +21,7 @@ const determinePlugins = async ( .join("\n"); const llmPrompt = ` - Given the following user input, conversation context, and available plugins, determine if any plugins should be used. If so, provide the plugin keyword. If no plugins are applicable, respond with "none". + Given the following user input, conversation context, and available plugins, determine if any plugins should be used. If so, provide the plugin keyword (with @ handle). If no plugins are applicable, respond with "none". Available plugins: ${pluginDescriptions} @@ -36,13 +36,24 @@ const determinePlugins = async ( const response = await promptCerebro(engine, apiKey, llmPrompt, opts); + // Trim and lowercase the response + const trimmedResponse = response?.trim().toLowerCase() ?? "none"; + + // Check if the response matches any plugin keyword + const matchedPlugin = plugins.find( + (p) => p.keyword.toLowerCase() === trimmedResponse + ); + + // If a matching plugin is found, return its keyword; otherwise, return "none" + const result = matchedPlugin ? matchedPlugin.keyword : "none"; + // Add AI response to context addContext({ role: "assistant", - content: response?.trim().toLowerCase() ?? "none", + content: result, }); - return response?.trim().toLowerCase() ?? "none"; + return result; }; export default determinePlugins; From e62f9f2d15f65d1b1cda170f74142a7db19c3cb8 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 09:17:56 +0100 Subject: [PATCH 11/17] chore(package.json): bump version from 1.7.6 to 2.0.0 to indicate a major release and update description to reflect changes made in the new version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 82d5fbd..f73b4c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "terminalgpt", - "version": "1.7.6", + "version": "2.0.0", "main": "lib/index.js", "description": "Get GPT like chatGPT on your terminal", "scripts": { From a5c9400508d30baf7866f544570e752e3d84bf86 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 09:22:16 +0100 Subject: [PATCH 12/17] style(README.md): improve formatting and consistency in README.md file feat(README.md): update installation instructions to use correct package name and add usage instructions feat(README.md): add information about providing OpenAI API key on first run docs(README.md): update prerequisites section with correct information and add links to relevant resources feat(README.md): add section for deleting all conversations and using with npx docs(README.md): update contributing section to refer to CONTRIBUTING.md for contribution guidelines feat(README.md): add stats section to display project statistics --- README.md | 99 +++++++++++++++++++------------------------------------ 1 file changed, 34 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index c6ea60e..f524b8d 100644 --- a/README.md +++ b/README.md @@ -2,52 +2,44 @@ TerminalGPT logo

+

TerminalGPT

- TerminalGPT logo - TerminalGPT logo - TerminalGPT logo - TerminalGPT logo - + Get GPT-like chatGPT on your terminal

-Get GPT-like chatGPT on your terminal + Build Status + Downloads + Contributors + Version

- TerminalGPT logo + TerminalGPT demo

-

-terminalGPT - Use OpenAi like chatGPT, on your terminal | Product Hunt + + terminalGPT - Use OpenAI like chatGPT, on your terminal | Product Hunt +

-## Stats - -

- TerminalGPT logo -

- - - - ## Prerequisites -You'll need to have your own `OpenAi` apikey to operate this package. +You need an LLM API key to use this package: -1. Go to -2. Select your profile menu and go to `View API Keys` -3. Select `+ Create new secret key` -4. Copy generated key +- [OpenAI](https://platform.openai.com/docs/api-reference/introduction) +- [Anthropic](https://www.anthropic.com/) +- [Groq](https://www.groq.com/) +- [Gemini](https://gemini.google.com/) -# Installation +## Installation -Install terminalGPT globally: +Install TerminalGPT globally: ```bash -npm -g install terminalgpt +npm install -g terminalgpt ``` or @@ -56,65 +48,42 @@ or yarn global add terminalgpt ``` -## Start chat +## Usage + +Start a chat: ```bash tgpt chat ``` -PS: If it is your first time running it, it will ask for open AI key, **paste generated key from pre-requisite steps**. - -## Options +On first run, you'll be prompted to enter your OpenAI API key. -### Change engine and temperature +### Options -```bash -tgpt chat --engine "gpt-4" --temperature 0.7 -``` +### Commands -Note this library uses [Chat Completions API](https://platform.openai.com/docs/api-reference/chat). -The `engine` parameter is the same as the `model` parameter in the API. The default value is `gpt-3.5-turbo`. - -### Use markdown - -```bash -tgpt chat --markdown -``` - -## Change or delete api key - -It you are not satisfied or added a wrong api key, run +Delete all conversations: ```bash tgpt delete ``` -## Using with npx - -```bash -npx terminalgpt -``` - -```bash -npx terminalgpt -``` - -Note `npx terminalgpt` doesn't install the terminalgpt package, instead it downloads the package to your computer and directly executes it from the cache. +### Using with npx -You can find the package using - -`ls ~/.npm/_npx/*/node_modules` - -To delete the package, you can use - -`rm -r ~/.npm/_npx/*/node_modules/terminalgpt` +Note: `npx terminalgpt` runs the package without installation. ## Contributing -Refer to CONTRIBUTING.md 😎 +Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to this project. ## ✨ Contributors + +## Stats + +

+ TerminalGPT stats +

From ef97f3597eebf7f0bb5e6b5b4975f8855d0f250b Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 09:23:11 +0100 Subject: [PATCH 13/17] chore(README.md): remove duplicate 'Stats' section and associated image to clean up the file and improve readability --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f524b8d..9f2d776 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ Version

+## Stats + +

+ TerminalGPT stats +

+

TerminalGPT demo

@@ -81,9 +87,3 @@ Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contrib - -## Stats - -

- TerminalGPT stats -

From 8f0a85ecda618872f3bbacdc51573d9e376f4882 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 09:23:44 +0100 Subject: [PATCH 14/17] docs(README.md): remove broken demo image link to improve README.md readability --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 9f2d776..e42ab7c 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,6 @@ TerminalGPT stats

-

- TerminalGPT demo -

-

terminalGPT - Use OpenAI like chatGPT, on your terminal | Product Hunt From f23d1bc20540be15f006518e6b862c53c9978156 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 13 Sep 2024 09:26:29 +0100 Subject: [PATCH 15/17] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index e42ab7c..d3a5f70 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@

TerminalGPT

+ +

+ TerminalGPT logo +

+ +

Get GPT-like chatGPT on your terminal

From 94ef4a2b6e51a3cf4da3530ed21e88b225dae2b9 Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 10:04:17 +0100 Subject: [PATCH 16/17] feat(encrypt.spec.ts): add support for 'model' field in credentials management for better data handling feat(utils.spec.ts): add 'model' property check in apiKeyPrompt() test for consistency with credentials management functionality --- __tests__/encrypt.spec.ts | 14 +++++++++----- __tests__/utils.spec.ts | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/__tests__/encrypt.spec.ts b/__tests__/encrypt.spec.ts index 8085649..10edb20 100644 --- a/__tests__/encrypt.spec.ts +++ b/__tests__/encrypt.spec.ts @@ -51,20 +51,24 @@ describe("Credentials Management", () => { expect(result).to.deep.equal({ apiKey: null, engine: null, + model: null, tavilyApiKey: null, }); }); it("should save and retrieve credentials correctly", () => { - saveCredentials("testApiKey", "testEngine", "testTavilyApiKey"); + saveCredentials("testApiKey", "testEngine", "model", "testTavilyApiKey"); const result = getCredentials(); - expect(result.apiKey).to.equal("testApiKey"); - expect(result.engine).to.equal("testEngine"); - expect(result.tavilyApiKey).to.equal("testTavilyApiKey"); + expect(result).to.deep.equal({ + apiKey: "testApiKey", + engine: "testEngine", + model: "model", + tavilyApiKey: "testTavilyApiKey", + }); }); it("should encrypt the API key when saving", () => { - saveCredentials("testApiKey", "testEngine", "testTavilyApiKey"); + saveCredentials("testApiKey", "testEngine", "model", "testTavilyApiKey"); const rawData = fs.readFileSync(credentialsPath, "utf-8"); const savedCredentials = JSON.parse(rawData); expect(savedCredentials.apiKey).to.not.equal("testApiKey"); diff --git a/__tests__/utils.spec.ts b/__tests__/utils.spec.ts index 36acaf3..fc55488 100644 --- a/__tests__/utils.spec.ts +++ b/__tests__/utils.spec.ts @@ -18,6 +18,7 @@ describe("apiKeyPrompt()", () => { JSON.stringify({ apiKey: encrypt("test"), engine: "test", + model: "test", tavilyApiKey: encrypt("test"), }) ); @@ -29,6 +30,7 @@ describe("apiKeyPrompt()", () => { expect(result).to.be.an("object"); expect(result).to.have.property("apiKey"); expect(result).to.have.property("engine"); + expect(result).to.have.property("model"); }); }); From f2f730179d490b4650cf2bb0c7ec0edb3f9177bd Mon Sep 17 00:00:00 2001 From: jucasoliveira Date: Fri, 13 Sep 2024 10:04:19 +0100 Subject: [PATCH 17/17] 2.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f73b4c2..e4970fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "terminalgpt", - "version": "2.0.0", + "version": "2.0.1", "main": "lib/index.js", "description": "Get GPT like chatGPT on your terminal", "scripts": {