From 4e32d095317cc13a2d76e33b53062a0c93f29c43 Mon Sep 17 00:00:00 2001 From: wz-ml Date: Fri, 16 Feb 2024 10:52:33 -0800 Subject: [PATCH 01/12] Updated turbo. Bugs remain. --- package-lock.json | 58 +++++++++++++++++++++++++----------------- src/background.js | 11 +++++--- src/gpt3.js | 12 ++++++--- src/history.js | 5 +++- src/manifest.json | 2 +- src/popup.js | 9 ++++--- src/popup_world.js | 27 ++++++++++---------- src/sharedfunctions.js | 19 +++++++------- 8 files changed, 84 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 251ab9a..7cf70fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "GPT-Prompter project", - "version": "1.0.0", + "name": "GPT-Prompter-project", + "version": "1.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "GPT-Prompter project", - "version": "1.0.0", + "name": "GPT-Prompter-project", + "version": "1.0.1", "dependencies": { "@webcomponents/custom-elements": "^1.5.1", "gpt3-tokenizer": "^1.1.5", @@ -1524,10 +1524,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1698,9 +1704,9 @@ } }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -1710,10 +1716,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -2000,9 +2010,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3628,9 +3638,9 @@ } }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true }, "neo-async": { @@ -3760,12 +3770,12 @@ } }, "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -3946,9 +3956,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" diff --git a/src/background.js b/src/background.js index 4085dad..e248d7a 100644 --- a/src/background.js +++ b/src/background.js @@ -1,7 +1,10 @@ import promptGPT3Prompting from "./gpt3.js"; import symbolFromModel from "./sharedfunctions.js"; +import CHAT_API_MODELS from "./gpt3.js"; + const std_model = "gpt-3.5-turbo"; + // FUNCTIONS DECLARATION async function checkGPT(apikey) { // Get the API key from storage @@ -105,7 +108,7 @@ function passTitleOrPrompt(customprompt, symbol) { return `${symbol} ${customprompt.title.replaceAll("#TEXT#", "%s")}`; } else { // if customprompt does not contain a title return the prompt - if (customprompt.model === "gpt-3.5-turbo" || customprompt.model === "gpt-4") { + if (customprompt.model in CHAT_API_MODELS) { // if it is, json parse the prompt const prompt = JSON.parse(customprompt.prompt); // get the last element of the prompt @@ -385,12 +388,12 @@ chrome.contextMenus.onClicked.addListener(async (info, tabs) => { const prompt = items.customprompt[promptNumber]; // Update the prompt text with the selected text, if there is any var parsedPrompt = ""; - if (prompt.model == "gpt-3.5-turbo" || prompt.model === "gpt-4") { + if (prompt.model in CHAT_API_MODELS) { parsedPrompt = JSON.parse(prompt.prompt); prompt.prompt = parsedPrompt; } if (info.selectionText) { - if (prompt.model == "gpt-3.5-turbo" || prompt.model === "gpt-4") { + if (prompt.model in CHAT_API_MODELS) { // loop over the prompt and replace the placeholder for (var i = 0; i < parsedPrompt.length; i++) { if (parsedPrompt[i]["content"].includes("#TEXT#")) { @@ -415,7 +418,7 @@ chrome.contextMenus.onClicked.addListener(async (info, tabs) => { })(); }); } else { - if (prompt.model == "gpt-3.5-turbo" || prompt.model === "gpt-4") { + if (prompt.model in CHAT_API_MODELS) { console.log("Chat GPT", prompt); launchPopUpInPage(prompt.prompt, prompt, "showPopUpChatGPT"); } else { diff --git a/src/gpt3.js b/src/gpt3.js index 29b98fe..7155295 100644 --- a/src/gpt3.js +++ b/src/gpt3.js @@ -1,8 +1,14 @@ import GPT3Tokenizer from "gpt3-tokenizer"; const tokenizer = new GPT3Tokenizer({ type: "gpt3" }); +const CHAT_API_MODELS = { + "gpt-4": true, + "gpt-3.5-turbo": true, + "gpt-4-0125-preview": true +}; var MaxTokensPerModel = { + "gpt-4-0125-preview": 4096, "gpt-4": 8000, "gpt-3.5-turbo": 4000, "text-davinci-003": 4000, @@ -14,7 +20,7 @@ var MaxTokensPerModel = { function checkMaxTokens(content, model) { var tokens = 0; - if (model == "gpt-4" || model == "gpt-3.5-turbo") { + if (model in CHAT_API_MODELS) { // check the tokens in the text, for each "content" key // var content = JSON.parse(text); for (var i = 0; i < content.length; i++) { @@ -69,7 +75,7 @@ async function promptGPT3Prompting(prompt, items, tabs) { var text = prompt["prompt"]; var model = prompt["model"]; // if the model is gpt-4 or gpt-3.5-turbo, we need to check that the text is a valid json - if (model == "gpt-4" || model == "gpt-3.5-turbo") { + if (model in CHAT_API_MODELS) { console.log('Check',typeof text) if (typeof text !== "object") {text = [{"role": "user", "content": text}];} @@ -129,7 +135,7 @@ function chooseCompletion(model, temperature, text) { var { maxTokens, tokens } = checkMaxTokens(text, model); var url = ""; - if (model == "gpt-3.5-turbo" || model === "gpt-4") { + if (model in CHAT_API_MODELS) { url = "https://api.openai.com/v1/chat/completions"; var bodyData = { model: model, diff --git a/src/history.js b/src/history.js index 3aa8b92..b0da938 100644 --- a/src/history.js +++ b/src/history.js @@ -4,6 +4,9 @@ * @param {object} items - The list of items to create the list from. * @return {string} - The HTML list. */ + +import CHAT_API_MODELS from "./gpt3.js"; + function makeHistoryList(items) { // create empty list and total cost variables var list = ""; @@ -46,7 +49,7 @@ function createListItem(item, index) { // add prompt key and value to prompt content string // if prompt can be parsed as JSON, add it as a string // otherwise, add it as a string - if (prompt["model"] == "gpt-3.5-turbo" || prompt["model"] === "gpt-4") { + if (prompt["model"] in CHAT_API_MODELS) { console.log(prompt["messages"]); promptContent += `prompt: ${JSON.stringify(prompt["messages"])}
`; } else { diff --git a/src/manifest.json b/src/manifest.json index 3a372ba..7454ec7 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "name": "GPT-Prompter", - "version": "0.0.3.4", + "version": "0.0.4.1", "description": "Fast custom prompts to GPT-3, GPT-4 and ChatGPT API", "manifest_version": 3, "icons": { diff --git a/src/popup.js b/src/popup.js index 40e648f..39c9271 100644 --- a/src/popup.js +++ b/src/popup.js @@ -1,4 +1,5 @@ // GENERAL FUNCTIONS +import CHAT_API_MODELS from "./gpt3.js"; function makePromptList(items) { // Clear the node 'list-of-prompts'. @@ -34,7 +35,7 @@ function makePromptList(items) { var promptText = document.createElement("span"); promptText.className = "prompt-text"; var type = "GPT"; - if (modelText.innerText == " gpt-3.5-turbo" || modelText.innerText == " gpt-4") { + if (modelText.innerText in CHAT_API_MODELS) { type = "ChatGPT"; } if (type == "ChatGPT") { @@ -94,7 +95,7 @@ function makePromptList(items) { // add title that appears on hover twoStageToggleText.setAttribute( "title", - "Two-Stage mode: the prompt is loaded with the selected text but is not sent immediatly so the user can add to it." + "Two-Stage mode: the prompt is loaded with the selected text but is not sent immediately so the user can add to it." ); // Add a textare for the title, make it hidden, make it one line, and 500px wide @@ -486,7 +487,7 @@ function editPrompt(index) { document.getElementById("inputmodel").value = items.customprompt[index]["model"]; document.getElementById("temp").value = items.customprompt[index]["temperature"]; document.getElementById("temperature").value = items.customprompt[index]["temperature"]; - if (items.customprompt[index]["model"] == "gpt-3.5-turbo" || items.customprompt[index]["model"] == "gpt-4") { + if (items.customprompt[index]["model"] in CHAT_API_MODELS) { chatGPTDesignON(); let listMessages = JSON.parse(items.customprompt[index]["prompt"]); document.getElementById("systeminput").value = listMessages[0]["content"]; @@ -851,7 +852,7 @@ document.addEventListener( //if the user select the model text-davinci-003 or text-davinci-002 console.log(document.getElementById("inputmodel").value); const model = document.getElementById("inputmodel").value; - if (model == "gpt-3.5-turbo" || model == "gpt-4" ) { + if (model in CHAT_API_MODELS) { chatGPTDesignON(); } else { GPTDesignON(); diff --git a/src/popup_world.js b/src/popup_world.js index 50a235b..8591940 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -1,14 +1,6 @@ import "@webcomponents/custom-elements/custom-elements.min.js"; - -const models = { - "gpt-4": "❹", - "gpt-3.5-turbo": "🅶", - "text-davinci-003": "ↁ", - "text-davinci-002": "🅳", - "text-curie-001": "🅲", - "text-babbage-001": "🅑", - "text-ada-001": "🅐" -}; +import CHAT_API_MODELS from "./gpt3.js"; +import models from "./sharedfunctions.js" function symbolFromModel(model) { // check if the model is in the dictionary @@ -19,6 +11,7 @@ function symbolFromModel(model) { } // const highlightColor = "#d2f4d3";//"rgb(16, 163, 255)"; +const Gpt4TurboCost = 0.03 / 1000; const Gpt4Cost8kCompl = 0.06 / 1000; const ChatGPTCost = 0.002 / 1000; const DaVinciCost = 0.02 / 1000; @@ -35,6 +28,7 @@ function computeCost(tokens, model) { else if (model == "text-ada-001") cost = tokens * AdaCost; else if (model == "gpt-3.5-turbo") cost = tokens * ChatGPTCost; else if (model == "gpt-4") cost = tokens * Gpt4Cost8kCompl; + else if (model == "gpt-4-0125-preview") cost = tokens * Gpt4TurboCost; return cost.toFixed(5); } @@ -841,7 +835,7 @@ class popUpClass extends HTMLElement { this.removeHideFromCompletion(targetId); let modelToUse = this.getBodyData(targetId, "model"); let textPrompt = this.getTextareaValue(targetId); - if (modelToUse === "gpt-3.5-turbo" || modelToUse === "gpt-4") { + if (modelToUse in CHAT_API_MODELS) { textPrompt = [{ role: "user", content: textPrompt }]; } @@ -1058,12 +1052,16 @@ class popUpClass extends HTMLElement { const element = this.shadowRoot.getElementById(id_target); const model = element.bodyData.model; if (model === "gpt-4") { - element.bodyData.model = "gpt-3.5-turbo"; - symbolElement.innerHTML = models["gpt-3.5-turbo"]; + element.bodyData.model = "gpt-4-0125-preview"; + symbolElement.innerHTML = models["gpt-4-0125-preview"]; } else if (model === "gpt-3.5-turbo") { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } + else if (model == "gpt-4-0125-preview") { + element.bodyData.model = "gpt-3.5-turbo"; + symbolElement.innerHTML = models["gpt-3.5-turbo"]; + } symbolElement.title = element.bodyData.model; }); } @@ -1097,6 +1095,9 @@ class popUpClass extends HTMLElement { element.bodyData.model = "text-ada-001"; symbolElement.innerHTML = models["text-ada-001"]; } else if (model === "text-ada-001") { + element.bodyData.model = "gpt-4-0125-preview"; + symbolElement.innerHTML = models["gpt-4-0125-preview"]; + } else if (model === "gpt-4-0125-preview") { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } else { diff --git a/src/sharedfunctions.js b/src/sharedfunctions.js index 0db5a42..e3aa925 100644 --- a/src/sharedfunctions.js +++ b/src/sharedfunctions.js @@ -1,13 +1,14 @@ -var models = { - "gpt-4" : "❹", - "gpt-3.5-turbo" : "🅶", - "text-davinci-003": "ↁ", - "text-davinci-002": "🅳", - "text-curie-001": "🅲", - "text-babbage-001": "🅑", - "text-ada-001": "🅐" - } +const models = { + "gpt-4-0125-preview": "🚀", + "gpt-4": "❹", + "gpt-3.5-turbo": "🅶", + "text-davinci-003": "ↁ", + "text-davinci-002": "🅳", + "text-curie-001": "🅲", + "text-babbage-001": "🅑", + "text-ada-001": "🅐" +}; //the above function symbolFromModel can be rewritten as a dictionary function symbolFromModel(model) { // check if the model is in the dictionary From 8292da187b892e03d4549550c4b26ea2a7000c4c Mon Sep 17 00:00:00 2001 From: wz-ml Date: Fri, 16 Feb 2024 11:25:31 -0800 Subject: [PATCH 02/12] Removed deprecated models from model list. Fixed bugs with icons. --- src/popup_world.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/popup_world.js b/src/popup_world.js index 8591940..eebcd9f 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -5,8 +5,11 @@ import models from "./sharedfunctions.js" function symbolFromModel(model) { // check if the model is in the dictionary if (models.hasOwnProperty(model)) { + console.log("model found", model) + console.log("Model symbol:", models[model]) return models[model]; } + console.log("model not found", model) return null; } From 260f761409b246dadcca3da9634f8b9a39bb880f Mon Sep 17 00:00:00 2001 From: wz-ml Date: Fri, 10 May 2024 14:56:16 -0700 Subject: [PATCH 03/12] Added support for GPT-4-Turbo & text streaming. --- src/background.js | 28 +++++++++++++++------ src/gpt3.js | 12 +++++++-- src/manifest.json | 2 +- src/popup.html | 36 +++++--------------------- src/popup_world.js | 57 ++++++++++++++++-------------------------- src/sharedfunctions.js | 11 +++----- 6 files changed, 63 insertions(+), 83 deletions(-) diff --git a/src/background.js b/src/background.js index e248d7a..15b8c7f 100644 --- a/src/background.js +++ b/src/background.js @@ -2,7 +2,7 @@ import promptGPT3Prompting from "./gpt3.js"; import symbolFromModel from "./sharedfunctions.js"; import CHAT_API_MODELS from "./gpt3.js"; -const std_model = "gpt-3.5-turbo"; +const std_model = "gpt-4-turbo"; // FUNCTIONS DECLARATION @@ -140,7 +140,7 @@ chrome.runtime.onInstalled.addListener(function (details) { for (var i = 0; i < items.customprompt.length; i++) { // modify each one of them to become a dictionary items.customprompt[i] = { - model: "text-davinci-003", + model: "gpt-4-turbo", temperature: 0.1, max_tokens: 1024, prompt: items.customprompt[i], @@ -152,21 +152,35 @@ chrome.runtime.onInstalled.addListener(function (details) { // if the prompt does not exist, create the default one items.customprompt = [ { - model: "text-davinci-003", + model: "gpt-4-turbo", temperature: 0.1, - max_tokens: 1024, - prompt: "Tell me more about #TEXT# :", + max_tokens: 4096, + prompt: "Try not to use headings. Tell me more about #TEXT# :", + twoStage: false, + }, + { + model: "gpt-4-turbo", + temperature: 0.1, + max_tokens: 4096, + prompt: "Please create an Anki card for: #TEXT# :", twoStage: false, }, { - model: "text-davinci-003", + model: "gpt-4-turbo", + temperature: 0.1, + max_tokens: 4096, + prompt: "Please create an Anki card for the concept below. Explain any intuitions and be sure to include formulas if necessary: #TEXT#", + twoStage: false, + }, + { + model: "gpt-4-turbo", temperature: 0.1, max_tokens: 1024, prompt: 'Answer the question as truthfully as possible using the provided text, and if the answer is not contained within the text below, say "I don\'t know" \nContext:\n#TEXT# \n\nQ:', title: "Two-stage Q&&A", twoStage: true, - }, + } ]; } // save the newPromptList diff --git a/src/gpt3.js b/src/gpt3.js index 7155295..e13e6f9 100644 --- a/src/gpt3.js +++ b/src/gpt3.js @@ -4,11 +4,11 @@ const tokenizer = new GPT3Tokenizer({ type: "gpt3" }); const CHAT_API_MODELS = { "gpt-4": true, "gpt-3.5-turbo": true, - "gpt-4-0125-preview": true + "gpt-4-turbo": true }; var MaxTokensPerModel = { - "gpt-4-0125-preview": 4096, + "gpt-4-turbo": 4096, "gpt-4": 8000, "gpt-3.5-turbo": 4000, "text-davinci-003": 4000, @@ -18,6 +18,10 @@ var MaxTokensPerModel = { "text-ada-001": 2000 }; +const DECOUPLED_INPUT_OUTPUT_LENGTH_MODELS = { + "gpt-4-turbo": true +}; + function checkMaxTokens(content, model) { var tokens = 0; if (model in CHAT_API_MODELS) { @@ -34,6 +38,10 @@ function checkMaxTokens(content, model) { tokens = countTokens(content, model); } var maxTokens = MaxTokensPerModel[model] - tokens; + if (model in DECOUPLED_INPUT_OUTPUT_LENGTH_MODELS) { + maxTokens = MaxTokensPerModel[model]; + } + console.log("model", model, "maxTokens", maxTokens, "tokens", tokens); return { maxTokens, tokens }; } diff --git a/src/manifest.json b/src/manifest.json index 7454ec7..bdbf26e 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "name": "GPT-Prompter", - "version": "0.0.4.1", + "version": "0.0.4.2", "description": "Fast custom prompts to GPT-3, GPT-4 and ChatGPT API", "manifest_version": 3, "icons": { diff --git a/src/popup.html b/src/popup.html index ec4e3c3..8650a70 100644 --- a/src/popup.html +++ b/src/popup.html @@ -156,6 +156,12 @@
> diff --git a/src/popup_world.js b/src/popup_world.js index eebcd9f..44a99d3 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -1,8 +1,9 @@ import "@webcomponents/custom-elements/custom-elements.min.js"; import CHAT_API_MODELS from "./gpt3.js"; -import models from "./sharedfunctions.js" +import { models } from "./sharedfunctions.js" function symbolFromModel(model) { + console.log(models) // check if the model is in the dictionary if (models.hasOwnProperty(model)) { console.log("model found", model) @@ -17,21 +18,21 @@ function symbolFromModel(model) { const Gpt4TurboCost = 0.03 / 1000; const Gpt4Cost8kCompl = 0.06 / 1000; const ChatGPTCost = 0.002 / 1000; -const DaVinciCost = 0.02 / 1000; -const CurieCost = 0.002 / 1000; -const BabbageCost = 0.0005 / 1000; -const AdaCost = 0.0004 / 1000; +// const DaVinciCost = 0.02 / 1000; +// const CurieCost = 0.002 / 1000; +// const BabbageCost = 0.0005 / 1000; +// const AdaCost = 0.0004 / 1000; function computeCost(tokens, model) { var cost = 0; - if (model == "text-davinci-003") cost = tokens * DaVinciCost; - else if (model == "text-davinci-002") cost = tokens * DaVinciCost; - else if (model == "text-curie-001") cost = tokens * CurieCost; - else if (model == "text-babbage-001") cost = tokens * BabbageCost; - else if (model == "text-ada-001") cost = tokens * AdaCost; - else if (model == "gpt-3.5-turbo") cost = tokens * ChatGPTCost; + // if (model == "text-davinci-003") cost = tokens * DaVinciCost; + // else if (model == "text-davinci-002") cost = tokens * DaVinciCost; + // else if (model == "text-curie-001") cost = tokens * CurieCost; + // else if (model == "text-babbage-001") cost = tokens * BabbageCost; + // else if (model == "text-ada-001") cost = tokens * AdaCost; + if (model == "gpt-3.5-turbo") cost = tokens * ChatGPTCost; else if (model == "gpt-4") cost = tokens * Gpt4Cost8kCompl; - else if (model == "gpt-4-0125-preview") cost = tokens * Gpt4TurboCost; + else if (model == "gpt-4-turbo") cost = tokens * Gpt4TurboCost; return cost.toFixed(5); } @@ -850,6 +851,7 @@ class popUpClass extends HTMLElement { popupID: targetId, type: "completion", }; + console.log("promptObj", promptObj); chrome.runtime.sendMessage({ text: "launchGPT", prompt: promptObj }); // get the textarea element this.resetAutoWidthTextArea(targetId); @@ -1055,13 +1057,13 @@ class popUpClass extends HTMLElement { const element = this.shadowRoot.getElementById(id_target); const model = element.bodyData.model; if (model === "gpt-4") { - element.bodyData.model = "gpt-4-0125-preview"; - symbolElement.innerHTML = models["gpt-4-0125-preview"]; + element.bodyData.model = "gpt-4-turbo"; + symbolElement.innerHTML = models["gpt-4-turbo"]; } else if (model === "gpt-3.5-turbo") { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } - else if (model == "gpt-4-0125-preview") { + else if (model == "gpt-4-turbo") { element.bodyData.model = "gpt-3.5-turbo"; symbolElement.innerHTML = models["gpt-3.5-turbo"]; } @@ -1083,30 +1085,15 @@ class popUpClass extends HTMLElement { element.bodyData.model = "gpt-3.5-turbo"; symbolElement.innerHTML = models["gpt-3.5-turbo"]; } else if (model === "gpt-3.5-turbo") { - element.bodyData.model = "text-davinci-003"; - symbolElement.innerHTML = models["text-davinci-003"]; - } else if (model === "text-davinci-003") { - element.bodyData.model = "text-davinci-002"; - symbolElement.innerHTML = models["text-davinci-002"]; - } else if (model === "text-davinci-002") { - element.bodyData.model = "text-curie-001"; - symbolElement.innerHTML = models["text-curie-001"]; - } else if (model === "text-curie-001") { - element.bodyData.model = "text-babbage-001"; - symbolElement.innerHTML = models["text-babbage-001"]; - } else if (model === "text-babbage-001") { - element.bodyData.model = "text-ada-001"; - symbolElement.innerHTML = models["text-ada-001"]; - } else if (model === "text-ada-001") { - element.bodyData.model = "gpt-4-0125-preview"; - symbolElement.innerHTML = models["gpt-4-0125-preview"]; - } else if (model === "gpt-4-0125-preview") { + element.bodyData.model = "gpt-4-turbo-"; + symbolElement.innerHTML = models["gpt-4-turbo"]; + } else if (model === "gpt-4-turbo") { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } else { // default - element.bodyData.model = "text-davinci-003"; - symbolElement.innerHTML = models["text-davinci-003"]; + element.bodyData.model = "gpt-4-turbo"; + symbolElement.innerHTML = models["gpt-4-turbo"]; } symbolElement.title = element.bodyData.model; }); diff --git a/src/sharedfunctions.js b/src/sharedfunctions.js index e3aa925..335c9cf 100644 --- a/src/sharedfunctions.js +++ b/src/sharedfunctions.js @@ -1,13 +1,8 @@ -const models = { - "gpt-4-0125-preview": "🚀", +export const models = { + "gpt-4-turbo": "🚀", "gpt-4": "❹", - "gpt-3.5-turbo": "🅶", - "text-davinci-003": "ↁ", - "text-davinci-002": "🅳", - "text-curie-001": "🅲", - "text-babbage-001": "🅑", - "text-ada-001": "🅐" + "gpt-3.5-turbo": "🅶" }; //the above function symbolFromModel can be rewritten as a dictionary function symbolFromModel(model) { From 9beba48845122507c33de59b4924f92bbb104f84 Mon Sep 17 00:00:00 2001 From: William Zhou <38673735+wz-ml@users.noreply.github.com> Date: Fri, 10 May 2024 15:01:45 -0700 Subject: [PATCH 04/12] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 4364b1a..d8bb9df 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ # GPT-Prompter + +### Update (05/10/2024) - Differences from [giosilvi's GPT-Prompter](https://github.com/giosilvi/GPT-Prompter): +- Added support for GPT-4-Turbo. +- Updated prompt list with Anki prompts. +- No present support for Instruct models. +- Live response streaming is back. + Open source Browser extension to get fast customizable prompts (e.g. explanations) of the selected text or chat using OpenAI`s GPT-3 model. Available in the Chrome/Firefox web store. To use it follows these steps: From 7654eabb08a4aa037dc29d5869c1e0e6ec164ed4 Mon Sep 17 00:00:00 2001 From: William Zhou <38673735+wz-ml@users.noreply.github.com> Date: Fri, 10 May 2024 15:08:50 -0700 Subject: [PATCH 05/12] Update README.md --- README.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index d8bb9df..84a85f4 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,20 @@ - No present support for Instruct models. - Live response streaming is back. -Open source Browser extension to get fast customizable prompts (e.g. explanations) of the selected text or chat using OpenAI`s GPT-3 model. Available in the Chrome/Firefox web store. - -To use it follows these steps: - -1- Add the extension from the Chrome Web store at https://chrome.google.com/webstore/detail/gpt-prompter/lcgpdbficokndjodlcgflbhaibicompp - -2- If you don`t have it already, make a profile at OpenAI https://beta.openai.com/ - -3- From https://beta.openai.com/account/api-keys you can copy your API Key and paste into the chrome extension (we never have access to your API Key, it is stored on your Chrome profile). - -4- (Optional)Now just select text from a website. - -5- Select from the context menu (right click) the GPT-Prompter command to send the custom prompt to open the popup. - -5- The default prompt is "Tell me more about ", but you can create anything you want with just the constrain that it has to contain a field for the selected text to be parsed in it. - +### Installation Instructions: +1. `git clone https://github.com/wz-ml/GPT-Prompter.git` +2. `cd` into the repository and type `npm run build`. +3. A new .zip file should appear in /zips. Unzip it! +4. Go to `chrome://extensions`. If you use Brave or another Chromium-based browser, replace the prefix with the name of your browser (e.g `brave://extensions`). +5. Click "Load unpacked" and select your newly unzipped folder: + +![image](https://github.com/wz-ml/GPT-Prompter/assets/38673735/2e780b92-c77a-45bd-b508-6342de52850a) + +### Usage: +1. Make a profile at [OpenAI](https://beta.openai.com/), if you haven't already +2. From https://beta.openai.com/account/api-keys you can copy your API Key and paste into the chrome extension (we never have access to your API Key, it is stored on your Chrome profile). +3. (Optional)Now just select text from a website. +4. Select from the context menu (right click) the GPT-Prompter command to send the custom prompt to open the popup. +5. The default prompt is "Tell me more about ", but you can create anything you want with just the constrain that it has to contain a field for the selected text to be parsed in it. ![Example of a chat conversation](ChatExample.png) From e0a32d7fb7df4fbfa36830fd25b07c311e56685b Mon Sep 17 00:00:00 2001 From: wz-ml Date: Mon, 13 May 2024 18:42:46 -0700 Subject: [PATCH 06/12] Added GPT-4o support. --- src/background.js | 10 +++++----- src/gpt3.js | 7 +++++-- src/manifest.json | 2 +- src/popup_world.js | 15 ++++++++++++--- src/sharedfunctions.js | 3 ++- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/background.js b/src/background.js index d0d5cef..d866412 100644 --- a/src/background.js +++ b/src/background.js @@ -2,7 +2,7 @@ import promptGPT3Prompting from "./gpt3.js"; import symbolFromModel from "./sharedfunctions.js"; import CHAT_API_MODELS from "./gpt3.js"; -const std_model = "gpt-4-turbo"; +const std_model = "gpt-4o"; // FUNCTIONS DECLARATION @@ -152,28 +152,28 @@ chrome.runtime.onInstalled.addListener(function (details) { // if the prompt does not exist, create the default one items.customprompt = [ { - model: "gpt-4-turbo", + model: "gpt-4-o", temperature: 0.1, max_tokens: 4096, prompt: "Try not to use headings. Tell me more about #TEXT#:", twoStage: false, }, { - model: "gpt-4-turbo", + model: "gpt-4-o", temperature: 0.1, max_tokens: 4096, prompt: "Please create an Anki card for: #TEXT# :", twoStage: false, }, { - model: "gpt-4-turbo", + model: "gpt-4-o", temperature: 0.1, max_tokens: 4096, prompt: "Please create an Anki card for the concept below. Explain any intuitions and be sure to include formulas if necessary: #TEXT#", twoStage: false, }, { - model: "gpt-4-turbo", + model: "gpt-4-o", temperature: 0.1, max_tokens: 1024, prompt: diff --git a/src/gpt3.js b/src/gpt3.js index 7d95d8d..a856eb3 100644 --- a/src/gpt3.js +++ b/src/gpt3.js @@ -4,10 +4,12 @@ const tokenizer = new GPT3Tokenizer({ type: "gpt3" }); const CHAT_API_MODELS = { "gpt-4": true, "gpt-3.5-turbo": true, - "gpt-4-turbo": true + "gpt-4-turbo": true, + "gpt-4o": true }; var MaxTokensPerModel = { + "gpt-4o": 4096, "gpt-4-turbo": 4096, "gpt-4": 8000, "gpt-3.5-turbo": 4000, @@ -20,7 +22,8 @@ var MaxTokensPerModel = { }; const DECOUPLED_INPUT_OUTPUT_LENGTH_MODELS = { - "gpt-4-turbo": true + "gpt-4-turbo": true, + "gpt-4o": true }; function checkMaxTokens(content, model) { diff --git a/src/manifest.json b/src/manifest.json index bdbf26e..706beda 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "name": "GPT-Prompter", - "version": "0.0.4.2", + "version": "0.0.4.3", "description": "Fast custom prompts to GPT-3, GPT-4 and ChatGPT API", "manifest_version": 3, "icons": { diff --git a/src/popup_world.js b/src/popup_world.js index 44a99d3..5f8a731 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -15,6 +15,7 @@ function symbolFromModel(model) { } // const highlightColor = "#d2f4d3";//"rgb(16, 163, 255)"; +const Gpt4oCost = 0.005/1000; const Gpt4TurboCost = 0.03 / 1000; const Gpt4Cost8kCompl = 0.06 / 1000; const ChatGPTCost = 0.002 / 1000; @@ -33,6 +34,7 @@ function computeCost(tokens, model) { if (model == "gpt-3.5-turbo") cost = tokens * ChatGPTCost; else if (model == "gpt-4") cost = tokens * Gpt4Cost8kCompl; else if (model == "gpt-4-turbo") cost = tokens * Gpt4TurboCost; + else if (model == "gpt-4o") cost = tokens * Gpt4oCost; return cost.toFixed(5); } @@ -1063,6 +1065,10 @@ class popUpClass extends HTMLElement { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } + else if (model == "gpt-4-turbo") { + element.bodyData.model = "gpt-4o"; + symbolElement.innerHTML = models["gpt-4o"]; + } else if (model == "gpt-4-turbo") { element.bodyData.model = "gpt-3.5-turbo"; symbolElement.innerHTML = models["gpt-3.5-turbo"]; @@ -1085,15 +1091,18 @@ class popUpClass extends HTMLElement { element.bodyData.model = "gpt-3.5-turbo"; symbolElement.innerHTML = models["gpt-3.5-turbo"]; } else if (model === "gpt-3.5-turbo") { - element.bodyData.model = "gpt-4-turbo-"; + element.bodyData.model = "gpt-4-turbo"; symbolElement.innerHTML = models["gpt-4-turbo"]; } else if (model === "gpt-4-turbo") { + element.bodyData.model = "gpt-4o"; + symbolElement.innerHTML = models["gpt-4o"]; + } else if (model === "gpt-4o") { element.bodyData.model = "gpt-4"; symbolElement.innerHTML = models["gpt-4"]; } else { // default - element.bodyData.model = "gpt-4-turbo"; - symbolElement.innerHTML = models["gpt-4-turbo"]; + element.bodyData.model = "gpt-4o"; + symbolElement.innerHTML = models["gpt-4o"]; } symbolElement.title = element.bodyData.model; }); diff --git a/src/sharedfunctions.js b/src/sharedfunctions.js index 845ab8a..a6f0a6e 100644 --- a/src/sharedfunctions.js +++ b/src/sharedfunctions.js @@ -1,7 +1,8 @@ export const models = { "gpt-4-turbo": "🚀", "gpt-4": "❹", - "gpt-3.5-turbo": "🅶" + "gpt-3.5-turbo": "🅶", + "gpt-4o": "🅾" }; //the above function symbolFromModel can be rewritten as a dictionary From c1dad543323225e18b179eedc6de0989cf3d8740 Mon Sep 17 00:00:00 2001 From: wz-ml Date: Tue, 14 May 2024 15:52:52 -0700 Subject: [PATCH 07/12] Mid-bugfix. --- src/background.js | 12 +++++++----- src/content.js | 3 +++ src/gpt3.js | 10 +++++----- src/popup.html | 6 ++++++ src/popup_world.js | 16 ++++++++-------- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/background.js b/src/background.js index d866412..fc5cb9b 100644 --- a/src/background.js +++ b/src/background.js @@ -152,28 +152,28 @@ chrome.runtime.onInstalled.addListener(function (details) { // if the prompt does not exist, create the default one items.customprompt = [ { - model: "gpt-4-o", + model: "gpt-4o", temperature: 0.1, max_tokens: 4096, prompt: "Try not to use headings. Tell me more about #TEXT#:", twoStage: false, }, { - model: "gpt-4-o", + model: "gpt-4o", temperature: 0.1, max_tokens: 4096, - prompt: "Please create an Anki card for: #TEXT# :", + prompt: "Please create an Anki card for: #TEXT#:", twoStage: false, }, { - model: "gpt-4-o", + model: "gpt-4o", temperature: 0.1, max_tokens: 4096, prompt: "Please create an Anki card for the concept below. Explain any intuitions and be sure to include formulas if necessary: #TEXT#", twoStage: false, }, { - model: "gpt-4-o", + model: "gpt-4o", temperature: 0.1, max_tokens: 1024, prompt: @@ -215,6 +215,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { else if (message.text === "launchGPT") { // Get the tab from the sender const { tab } = sender; // this line is equivalent to const tab = sender.tab; + console.log("Received prompt object."); console.log(typeof message.prompt.prompt, message.prompt); // Launch GPT chrome.storage.sync.get("APIKEY", function (items) { @@ -422,6 +423,7 @@ chrome.contextMenus.onClicked.addListener(async (info, tabs) => { chrome.storage.sync.get("APIKEY", function (items) { // Launch the prompt (async () => { + console.log("PROMPT:",prompt, items, tabs); await promptGPT3Prompting(prompt, items, tabs); })(); }); diff --git a/src/content.js b/src/content.js index 4084a1e..f451cd5 100644 --- a/src/content.js +++ b/src/content.js @@ -138,6 +138,7 @@ function sendStopSignal(request,uuid) { } function processJsonObject(jsonStr, uuid, request) { + console.log("jsonStr:", jsonStr, uuid, request); try { // Otherwise, parse and process the JSON object const jsonObject = JSON.parse(jsonStr); @@ -162,6 +163,7 @@ function processJsonObject(jsonStr, uuid, request) { chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + console.log("Full request:", request); if (request.greeting === "shouldReenableContextMenu") { sendResponse({ farewell: "yes" }); return; @@ -202,6 +204,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { break; case "GPTStream_completion": try { + console.log("Request:", request); if (popUpShadow.stop_stream && !popUpShadow.listOfUndesiredStreams.includes(request.uuid)) { console.log("Stop stream with uuid", request.uuid); popUpShadow.listOfUndesiredStreams.push(request.uuid); diff --git a/src/gpt3.js b/src/gpt3.js index a856eb3..1b6793c 100644 --- a/src/gpt3.js +++ b/src/gpt3.js @@ -9,7 +9,7 @@ const CHAT_API_MODELS = { }; var MaxTokensPerModel = { - "gpt-4o": 4096, + "gpt-4o": 4000, "gpt-4-turbo": 4096, "gpt-4": 8000, "gpt-3.5-turbo": 4000, @@ -106,7 +106,7 @@ async function promptGPT3Prompting(prompt, items, tabs) { var uuid = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); //send immediately text to the content script var { url, str_bodyData, bodyData, tokens } = chooseCompletion(model, temperature, text); - console.log(url, str_bodyData, tokens); + console.log("Debug1", url, str_bodyData, tokens); fetch(url, { method: "POST", headers: { @@ -129,7 +129,7 @@ async function promptGPT3Prompting(prompt, items, tabs) { return; } // Enqueue the next data chunk into our target stream - // console.log(value); + console.log(value); var stream = new TextDecoder().decode(value); //.substring(6); // console.log(string, typeof string); // if tabs.id == -1 then use querySelector to get the tab @@ -157,7 +157,7 @@ function chooseCompletion(model, temperature, text) { temperature: temperature, max_tokens: maxTokens, messages: text, - stream: false, + stream: true, }; } else { url = "https://api.openai.com/v1/completions"; @@ -166,7 +166,7 @@ function chooseCompletion(model, temperature, text) { temperature: temperature, max_tokens: maxTokens, prompt: text, - stream: false, + stream: true, }; } var str_bodyData = JSON.stringify(bodyData); diff --git a/src/popup.html b/src/popup.html index 091383f..9bb5ba4 100644 --- a/src/popup.html +++ b/src/popup.html @@ -141,6 +141,12 @@
> diff --git a/src/popup_world.js b/src/popup_world.js index 53e6b98..88a0b70 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -1099,8 +1099,8 @@ class popUpClass extends HTMLElement { symbolElement.innerHTML = models["gpt-4"]; } else { // default - element.bodyData.model = "gpt-4o"; - symbolElement.innerHTML = models["gpt-4o"]; + element.bodyData.model = "gpt-4-turbo"; + symbolElement.innerHTML = models["gpt-4-turbo"]; } symbolElement.title = element.bodyData.model; }); @@ -1452,7 +1452,7 @@ class popUpClass extends HTMLElement { function updateMarkdownContent(markdownContainer, markdownText) { // Wait for the renderMarkdown function to be available function waitForRenderMarkdown() { - console.log("waiting for renderMarkdown"); + // console.log("waiting for renderMarkdown"); if (window.renderMarkdown) { // Use the renderMarkdown function to convert the Markdown text to HTML // console.log(markdownText); @@ -1461,7 +1461,7 @@ function updateMarkdownContent(markdownContainer, markdownText) { // Find the Markdown container in the chat popup element and update its content if (markdownContainer) { markdownContainer.innerHTML = renderedHtml; - console.log("updated markdown"); + // console.log("updated markdown"); // console.log(renderedHtml); } } else { From 03e006391d32b7a649d41ffabfea3d7db113d6ef Mon Sep 17 00:00:00 2001 From: giosilvi Date: Sat, 25 May 2024 14:41:55 +0200 Subject: [PATCH 11/12] add webpack as dev dep. + fix export/ import CHAT_API_MODELS --- package-lock.json | 790 +++++++++++++++++++++++---------------------- package.json | 4 +- src/background.js | 2 +- src/gpt3.js | 2 +- src/history.js | 2 +- src/popup.js | 2 +- src/popup_world.js | 2 +- 7 files changed, 417 insertions(+), 387 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cf70fc..9c40ae3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,8 +20,8 @@ "css-loader": "^6.7.3", "html-webpack-plugin": "^5.5.0", "style-loader": "^3.3.2", - "webpack": "^5.76.2", - "webpack-cli": "^5.0.1", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", "zip-webpack-plugin": "^4.0.1" } }, @@ -35,14 +35,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "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" }, "engines": { "node": ">=6.0.0" @@ -58,22 +58,22 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -83,13 +83,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -148,9 +148,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "node_modules/@types/html-minifier-terser": { @@ -166,154 +166,157 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", - "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", - "dev": true + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -323,9 +326,9 @@ "integrity": "sha512-6T/XT3S1UHDlRWFSxRXdeSoYWczEl78sygNPS7jDyHVrfZcF/pUtWGYgxF4uviH59iPVw1eOWbhubm8CqO0MpA==" }, "node_modules/@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "engines": { "node": ">=14.15.0" @@ -336,9 +339,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, "engines": { "node": ">=14.15.0" @@ -349,9 +352,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", - "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "engines": { "node": ">=14.15.0" @@ -391,9 +394,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -501,9 +504,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -513,13 +516,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -554,9 +561,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", "dev": true, "funding": [ { @@ -566,6 +573,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -875,15 +886,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.333", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.333.tgz", - "integrity": "sha512-YyE8+GKyGtPEP1/kpvqsdhD6rA/TP1DUFDN4uiU/YI52NzDxmwHkEb3qjId8hLBa5siJvG0sfC3O66501jMruQ==", + "version": "1.4.783", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz", + "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==", "dev": true }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -917,15 +928,15 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -1558,9 +1569,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -1674,9 +1685,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -1992,9 +2003,9 @@ ] }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -2171,13 +2182,13 @@ } }, "node_modules/terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -2189,16 +2200,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -2245,10 +2256,16 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -2258,14 +2275,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -2293,9 +2314,9 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -2311,34 +2332,34 @@ "integrity": "sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw==" }, "node_modules/webpack": { - "version": "5.76.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", - "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -2358,17 +2379,17 @@ } }, "node_modules/webpack-cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", - "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.1", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^9.4.1", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", @@ -2403,12 +2424,12 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/webpack-merge": { @@ -2491,14 +2512,14 @@ "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "requires": { - "@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": { @@ -2508,19 +2529,19 @@ "dev": true }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "@jridgewell/sourcemap-codec": { @@ -2530,13 +2551,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@nodelib/fs.scandir": { @@ -2586,9 +2607,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "@types/html-minifier-terser": { @@ -2604,154 +2625,157 @@ "dev": true }, "@types/node": { - "version": "18.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", - "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", - "dev": true + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -2761,23 +2785,23 @@ "integrity": "sha512-6T/XT3S1UHDlRWFSxRXdeSoYWczEl78sygNPS7jDyHVrfZcF/pUtWGYgxF4uviH59iPVw1eOWbhubm8CqO0MpA==" }, "@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, "requires": {} }, "@webpack-cli/serve": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", - "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -2800,9 +2824,9 @@ "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, @@ -2886,15 +2910,15 @@ } }, "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "buffer-crc32": { @@ -2920,9 +2944,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", "dev": true }, "chrome-trace-event": { @@ -3150,15 +3174,15 @@ } }, "electron-to-chromium": { - "version": "1.4.333", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.333.tgz", - "integrity": "sha512-YyE8+GKyGtPEP1/kpvqsdhD6rA/TP1DUFDN4uiU/YI52NzDxmwHkEb3qjId8hLBa5siJvG0sfC3O66501jMruQ==", + "version": "1.4.783", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz", + "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==", "dev": true }, "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -3177,15 +3201,15 @@ "dev": true }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, "eslint-scope": { @@ -3660,9 +3684,9 @@ } }, "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "normalize-path": { @@ -3749,9 +3773,9 @@ "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "picomatch": { @@ -3945,9 +3969,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -4063,28 +4087,28 @@ "dev": true }, "terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" } }, "terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.26.0" } }, "to-regex-range": { @@ -4107,14 +4131,20 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" } }, "uri-js": { @@ -4139,9 +4169,9 @@ "dev": true }, "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -4154,49 +4184,49 @@ "integrity": "sha512-FXJdEu2qDOI+wbVYZpu21CS1vPEg5NaxNskBr4SaULpOJMrLE6xkH8dECa7PiS+ZoeyvP7GllWUAxPN3AvFSEw==" }, "webpack": { - "version": "5.76.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", - "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", - "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.1", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^9.4.1", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", @@ -4207,9 +4237,9 @@ }, "dependencies": { "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } diff --git a/package.json b/package.json index 00bc86b..1513035 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "css-loader": "^6.7.3", "html-webpack-plugin": "^5.5.0", "style-loader": "^3.3.2", - "webpack": "^5.76.2", - "webpack-cli": "^5.0.1", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", "zip-webpack-plugin": "^4.0.1" } } diff --git a/src/background.js b/src/background.js index ae75f64..75a1197 100644 --- a/src/background.js +++ b/src/background.js @@ -1,6 +1,6 @@ import promptGPT3Prompting from "./gpt3.js"; import symbolFromModel from "./sharedfunctions.js"; -import CHAT_API_MODELS from "./gpt3.js"; +import {CHAT_API_MODELS} from "./gpt3.js"; const std_model = "gpt-4-turbo"; diff --git a/src/gpt3.js b/src/gpt3.js index 1b6793c..aba845e 100644 --- a/src/gpt3.js +++ b/src/gpt3.js @@ -1,7 +1,7 @@ import GPT3Tokenizer from "gpt3-tokenizer"; const tokenizer = new GPT3Tokenizer({ type: "gpt3" }); -const CHAT_API_MODELS = { +export const CHAT_API_MODELS = { "gpt-4": true, "gpt-3.5-turbo": true, "gpt-4-turbo": true, diff --git a/src/history.js b/src/history.js index b0da938..eb6365d 100644 --- a/src/history.js +++ b/src/history.js @@ -5,7 +5,7 @@ * @return {string} - The HTML list. */ -import CHAT_API_MODELS from "./gpt3.js"; +import {CHAT_API_MODELS} from "./gpt3.js"; function makeHistoryList(items) { // create empty list and total cost variables diff --git a/src/popup.js b/src/popup.js index 76443b5..e01c89a 100644 --- a/src/popup.js +++ b/src/popup.js @@ -1,5 +1,5 @@ // GENERAL FUNCTIONS -import CHAT_API_MODELS from "./gpt3.js"; +import {CHAT_API_MODELS} from "./gpt3.js"; function makePromptList(items) { // Clear the node 'list-of-prompts'. diff --git a/src/popup_world.js b/src/popup_world.js index 88a0b70..6d61f47 100644 --- a/src/popup_world.js +++ b/src/popup_world.js @@ -1,5 +1,5 @@ import "@webcomponents/custom-elements/custom-elements.min.js"; -import CHAT_API_MODELS from "./gpt3.js"; +import {CHAT_API_MODELS} from "./gpt3.js"; import { models } from "./sharedfunctions.js" function symbolFromModel(model) { From 6b87088940dc1e2a0f1af8ddbe5c7634bb397ee4 Mon Sep 17 00:00:00 2001 From: giosilvi Date: Sat, 25 May 2024 15:18:08 +0200 Subject: [PATCH 12/12] Reformat custom prompt to match the chatGPT mode. Fix bug with model in popup.js --- src/background.js | 10 +++++----- src/popup.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/background.js b/src/background.js index 75a1197..e742026 100644 --- a/src/background.js +++ b/src/background.js @@ -155,21 +155,21 @@ chrome.runtime.onInstalled.addListener(function (details) { model: "gpt-4-turbo", temperature: 0.1, max_tokens: 4096, - prompt: "Try not to use headings. Tell me more about #TEXT#:", + prompt: JSON.stringify([{"role":"user", "content":"Try not to use headings.. Tell me more about #TEXT#:"}]), twoStage: false, }, { model: "gpt-4-turbo", temperature: 0.1, max_tokens: 4096, - prompt: "Please create an Anki card for: #TEXT#:", + prompt: JSON.stringify([{"role":"user", "content":"Please create an Anki card for: #TEXT#:"}]), twoStage: false, }, { model: "gpt-4-turbo", temperature: 0.1, max_tokens: 4096, - prompt: "Please create an Anki card for the concept below. Explain any intuitions and be sure to include formulas if necessary: #TEXT#", + prompt: JSON.stringify([{"role":"user", "content":"Please create an Anki card for the concept below. Explain any intuitions and be sure to include formulas if necessary: #TEXT#"}]), twoStage: false, }, { @@ -177,8 +177,8 @@ chrome.runtime.onInstalled.addListener(function (details) { temperature: 0.1, max_tokens: 1024, prompt: - 'Answer the question as truthfully as possible using the provided text, and if the answer is not contained within the text below, say "I don\'t know" \nContext:\n#TEXT# \n\nQ:', - title: "Two-stage Q&&A", + JSON.stringify([{"role":"user", "content":"Answer the question as truthfully as possible using the provided text, and if the answer is not contained within the text below, say 'I don\'t know' \nContext:\n#TEXT# \n\nQ:"}]), + title: "Two-stage Q&A", twoStage: true, } ]; diff --git a/src/popup.js b/src/popup.js index e01c89a..e6d2281 100644 --- a/src/popup.js +++ b/src/popup.js @@ -29,7 +29,7 @@ function makePromptList(items) { var modelText = document.createElement("span"); modelText.className = "feature-text"; - modelText.innerText = ` ${items.customprompt[i]["model"]}`; + modelText.innerText = items.customprompt[i]["model"]; modelText.setAttribute("data-title", "Model:"); var promptText = document.createElement("span");