From ac66dc11ca6b1bbf83faab3a2b2947424d7a3300 Mon Sep 17 00:00:00 2001 From: toino Date: Mon, 17 Jul 2023 16:15:10 +0100 Subject: [PATCH] Rewrite post-install, use polyfill --- .eslintrc.cjs | 10 +- .postcssrc.js | 5 +- .prettierrc.js | 1 + README.md | 31 +- package.json | 24 +- src/background/index.ts | 42 +- src/common/options.ts | 5 +- src/components/controls/CheckboxControl.tsx | 11 +- src/components/controls/SwitchControl.tsx | 9 +- src/components/layout/Container.tsx | 2 +- src/components/layout/Footer.tsx | 4 +- src/components/layout/Header.tsx | 4 +- src/components/layout/Main.tsx | 2 +- src/components/sections/Layout.tsx | 2 +- src/components/sections/LayoutContent.tsx | 2 +- src/content-scripts/index.ts | 11 +- src/content-scripts/modules/base/selector.ts | 12 +- .../modules/overrideFunctions.ts | 3 +- src/content-scripts/options/autoLogin.ts | 24 +- src/content-scripts/options/base/style.ts | 3 +- src/content-scripts/pages/schedule.ts | 6 +- src/content-scripts/pages/teacher.ts | 3 +- src/content-styles/components/icon.css | 1 + src/manifest.ts | 33 +- src/options/index.html | 2 + src/popup/index.html | 2 + src/popup/index.tsx | 3 +- src/post-install/Authorize.tsx | 20 +- src/post-install/AuthorizeButton.tsx | 23 +- src/post-install/Authorized.tsx | 17 +- src/post-install/Loading.tsx | 15 +- src/post-install/PostInstall.tsx | 36 + src/post-install/index.css | 36 + src/post-install/index.html | 4 +- src/post-install/index.tsx | 31 +- src/script-overrides/index.ts | 8 + src/styles/globals.css | 2 +- tailwind.config.js | 11 + vite.config.ts | 4 +- yarn.lock | 630 ++++++++---------- 40 files changed, 563 insertions(+), 531 deletions(-) create mode 100644 src/post-install/PostInstall.tsx create mode 100644 src/post-install/index.css create mode 100644 tailwind.config.js diff --git a/.eslintrc.cjs b/.eslintrc.cjs index d9e968b..50a8462 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,9 +5,14 @@ module.exports = { "plugin:react/recommended", "plugin:import/recommended", "plugin:jsx-a11y/recommended", - "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-type-checked", "eslint-config-prettier", ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + tsconfigRootDir: __dirname, + }, settings: { "react": { version: "detect", @@ -19,4 +24,7 @@ module.exports = { env: { browser: true, }, + rules: { + "react/display-name": "off", + }, }; diff --git a/.postcssrc.js b/.postcssrc.js index fc044bc..b2b60ca 100644 --- a/.postcssrc.js +++ b/.postcssrc.js @@ -2,8 +2,5 @@ import PostcssPresetEnv from "postcss-preset-env"; import Tailwind from "tailwindcss"; export default { - plugins: [ - PostcssPresetEnv, - // Tailwind - ], + plugins: [PostcssPresetEnv, Tailwind], }; diff --git a/.prettierrc.js b/.prettierrc.js index 56fbdcb..426a180 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,5 +1,6 @@ /** @type {import("prettier").Options} */ export default { + plugins: ["prettier-plugin-tailwindcss"], printWidth: 80, tabWidth: 4, useTabs: false, diff --git a/README.md b/README.md index 91acc4c..5d65afa 100644 --- a/README.md +++ b/README.md @@ -21,18 +21,19 @@ Both commands accept the suffix `:firefox` to build the extension for Firefox in The `src` folder contains the source code for the extension, which follows the following structure: -- `background`: Contains the background script, which runs in the background and can listen for events. -- `common`: Contains code that is shared between all parts of the extension. -- `components`: Contains the React components used in the extension. -- `content-scripts`: Contains the content scripts, which run in the context of the page and can interact with the DOM. - - `components`: Contains scripts that modify a small part of the page. - - `options`: Contains scripts that modify the page in a configurable way. - - `pages`: Contains scripts that modify a singular page extensively. - -- `content-styles`: Contains the stylesheets for the content scripts. -- `options`: Contains the options page, which is used to configure the extension. -- `popup`: Contains the popup page, which is the page that opens when the extension icon is clicked. -- `post-install`: Contains the post-install page, which is the page that opens after the extension is installed. -- `script-overrides`: Contains the script overrides, which are used to override the default SIGARRA scripts and functions. -- `styles`: Contains the stylesheets for the extension. -- `manifest.ts`: Contains the manifest for the extension, which defines the extension's name, description, permissions, etc. +- `background`: Contains the background script, which runs in the background and can listen for events. +- `common`: Contains code that is shared between all parts of the extension. +- `components`: Contains the React components used in the extension. +- `content-scripts`: Contains the content scripts, which run in the context of the page and can interact with the DOM. + + - `components`: Contains scripts that modify a small part of the page. + - `options`: Contains scripts that modify the page in a configurable way. + - `pages`: Contains scripts that modify a singular page extensively. + +- `content-styles`: Contains the stylesheets for the content scripts. +- `options`: Contains the options page, which is used to configure the extension. +- `popup`: Contains the popup page, which is the page that opens when the extension icon is clicked. +- `post-install`: Contains the post-install page, which is the page that opens after the extension is installed. +- `script-overrides`: Contains the script overrides, which are used to override the default SIGARRA scripts and functions. +- `styles`: Contains the stylesheets for the extension. +- `manifest.ts`: Contains the manifest for the extension, which defines the extension's name, description, permissions, etc. diff --git a/package.json b/package.json index a37c07b..30253c3 100644 --- a/package.json +++ b/package.json @@ -22,20 +22,20 @@ "format:fix": "prettier --log-level warn --write ." }, "dependencies": { + "flowbite": "^1.7.0", + "flowbite-react": "^0.4.11", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/chrome": "^0.0.240", "@types/eslint": "^8.44.0", - "@types/react": "^18.2.14", - "@types/react-dom": "^18.2.6", - "@types/react-refresh": "^0.14.0", + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", "@types/webextension-polyfill": "^0.10.1", - "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react-swc": "^3.3.2", - "eslint": "^8.44.0", + "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-import": "^2.27.5", @@ -43,12 +43,12 @@ "eslint-plugin-react": "^7.32.2", "postcss-preset-env": "^9.0.0", "prettier": "^3.0.0", - "ts-node": "^10.9.1", + "prettier-plugin-tailwindcss": "^0.4.1", + "remixicon": "^3.4.0", + "tailwindcss": "^3.3.3", "typescript": "^5.1.6", - "vite": "~4.4.2", + "vite": "^4.4.4", "vite-plugin-web-extension": "^3.1.2", - "webextension-polyfill": "^0.10.0", - "remixicon": "^3.4.0", - "tailwindcss": "^3.3.2" + "webextension-polyfill": "^0.10.0" } } diff --git a/src/background/index.ts b/src/background/index.ts index eb3fd77..a839fae 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -1,39 +1,45 @@ -chrome.runtime.onInstalled.addListener((object) => { +import Browser from "webextension-polyfill"; + +Browser.runtime.onInstalled.addListener((object) => { if (object.reason === "install") { - chrome.tabs.query({ url: "*://sigarra.up.pt/feup/*" }, (tabs) => { - tabs.forEach( - (tab) => tab.id !== undefined && chrome.tabs.reload(tab.id), - ); - }); + Browser.tabs + .query({ url: "*://sigarra.up.pt/feup/*" }) + .then((tabs) => { + tabs.forEach( + (tab) => + tab.id !== undefined && + void Browser.tabs.reload(tab.id), + ); + }) + .catch(console.error); - chrome.tabs.create({ - url: chrome.runtime.getURL("src/post-install/index.html"), + void Browser.tabs.create({ + url: Browser.runtime.getURL("src/post-install/index.html"), }); } }); -chrome.runtime.onMessage.addListener(async (message, sender, sendResponse) => { +Browser.runtime.onMessage.addListener(async (message, sender) => { if (!sender.tab || !sender.tab.active) { console.log("tab not active skipping message..."); return; } if (message.type == "login") { - const cookie = await chrome.cookies.get({ + const cookie = await Browser.cookies.get({ name: "SI_SESSION", url: sender.tab.url ?? "", }); - console.log(cookie); - if (cookie == null || cookie.value === "0") { - sendResponse(false); - return; - } + + if (cookie == null || cookie.value === "0") return false; + message.auto_login.verifed = true; - await chrome.storage.local.set({ auto_login: message.auto_login }); - if (sender.tab.id !== undefined) chrome.tabs.reload(sender.tab.id); + await Browser.storage.local.set({ auto_login: message.auto_login }); + if (sender.tab.id !== undefined) + void Browser.tabs.reload(sender.tab.id); } }); -chrome.permissions.onRemoved.addListener((permissions) => { +Browser.permissions.onRemoved.addListener((permissions) => { //TODO: }); diff --git a/src/common/options.ts b/src/common/options.ts index 932c1dd..a6c8d20 100644 --- a/src/common/options.ts +++ b/src/common/options.ts @@ -1,3 +1,4 @@ +import Browser from "webextension-polyfill"; import { map } from "./objects"; export type OptionTypeString = "boolean" | "string" | "number"; @@ -42,10 +43,10 @@ export type OptionValues = { export const getOption = async ( name: T, ): Promise> => - (await chrome.storage.local.get(name))[name] ?? options[name].default; + (await Browser.storage.local.get(name))[name] ?? options[name].default; export const getOptions = async (): Promise => { - const values = (await chrome.storage.local.get(null)) as OptionValues; + const values = (await Browser.storage.local.get(null)) as OptionValues; return map(options, (option, key) => values[key] ?? option.default); }; diff --git a/src/components/controls/CheckboxControl.tsx b/src/components/controls/CheckboxControl.tsx index 9d5bfee..9bd822f 100644 --- a/src/components/controls/CheckboxControl.tsx +++ b/src/components/controls/CheckboxControl.tsx @@ -1,10 +1,9 @@ import React, { useEffect, useState } from "react"; +import Browser from "webextension-polyfill"; // import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; // import { CheckIcon } from "@radix-ui/react-icons"; // import { styled } from "@stitches/react"; -import { getStorage, setStorage } from "~/common/storage"; - interface Props { label: string; storageKey: string; @@ -17,7 +16,9 @@ function CheckboxControl({ label, storageKey, defaultState = false }: Props) { useEffect(() => { const getDefaultState = async () => { try { - const userSetting = await getStorage(storageKey); + const userSetting = ( + await Browser.storage.local.get(storageKey) + )[storageKey]; userSetting && setLocalState(userSetting === "on" ? true : false); } catch (error) { @@ -30,13 +31,13 @@ function CheckboxControl({ label, storageKey, defaultState = false }: Props) { return ( <> -
+
-
+
{/* { setLocalState(checked); diff --git a/src/components/controls/SwitchControl.tsx b/src/components/controls/SwitchControl.tsx index 950db7c..c5d0a0f 100644 --- a/src/components/controls/SwitchControl.tsx +++ b/src/components/controls/SwitchControl.tsx @@ -1,9 +1,8 @@ import React, { useEffect, useState } from "react"; +import Browser from "webextension-polyfill"; // import * as SwitchPrimitive from "@radix-ui/react-switch"; // import { styled } from "@stitches/react"; -import { getStorage, setStorage } from "~/common/storage"; - interface Props { label: string; storageKey: string; @@ -16,7 +15,9 @@ function SwitchControl({ label, storageKey, defaultState = false }: Props) { useEffect(() => { const getDefaultState = async () => { try { - const userDefault = await getStorage(storageKey); + const userDefault = ( + await Browser.storage.local.get(storageKey) + )[storageKey]; userDefault && setLocalState(userDefault === "on" ? true : false); } catch (error) { @@ -28,7 +29,7 @@ function SwitchControl({ label, storageKey, defaultState = false }: Props) { }, [storageKey]); return ( -
+
diff --git a/src/components/layout/Container.tsx b/src/components/layout/Container.tsx index 17ca505..d714ac1 100644 --- a/src/components/layout/Container.tsx +++ b/src/components/layout/Container.tsx @@ -1,7 +1,7 @@ import React, { PropsWithChildren } from "react"; const Container = ({ children }: PropsWithChildren) => ( -
+
{children}
); diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx index b3cc0c0..4be7a69 100644 --- a/src/components/layout/Footer.tsx +++ b/src/components/layout/Footer.tsx @@ -2,11 +2,11 @@ import React from "react"; const Footer = () => { return ( -
+
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 58782ad..7304e58 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -7,13 +7,13 @@ const Header = () => ( Sigarra Extension
-

+

Made by{" "} + className="text-red cursor-pointer font-bold hover:underline"> niaefeup

diff --git a/src/components/layout/Main.tsx b/src/components/layout/Main.tsx index 7000651..0fcbcdb 100644 --- a/src/components/layout/Main.tsx +++ b/src/components/layout/Main.tsx @@ -2,7 +2,7 @@ import React from "react"; import Layout from "../sections/Layout"; const Main = () => ( -
+
); diff --git a/src/components/sections/Layout.tsx b/src/components/sections/Layout.tsx index 96ca649..fda6754 100644 --- a/src/components/sections/Layout.tsx +++ b/src/components/sections/Layout.tsx @@ -5,7 +5,7 @@ const Layout = () => (
diff --git a/src/components/sections/LayoutContent.tsx b/src/components/sections/LayoutContent.tsx index 6b95f62..04a3d71 100644 --- a/src/components/sections/LayoutContent.tsx +++ b/src/components/sections/LayoutContent.tsx @@ -2,7 +2,7 @@ import React from "react"; import SwitchControl from "../controls/SwitchControl"; const LayoutContent = () => ( -
+
pages.forEach( @@ -25,9 +26,11 @@ const main = async () => { attributes: true, }); - loadOptions(await getOptions()); + Browser.storage.onChanged.addListener((changes) => + loadOptions(map(changes, (change) => change.newValue) as OptionValues), + ); - console.log(await getOptions()); + loadOptions(await getOptions()); }; -main(); +void main(); diff --git a/src/content-scripts/modules/base/selector.ts b/src/content-scripts/modules/base/selector.ts index b2b7a78..0b71de2 100644 --- a/src/content-scripts/modules/base/selector.ts +++ b/src/content-scripts/modules/base/selector.ts @@ -13,11 +13,13 @@ export const selectorModule = ): Module => (mutation) => { (mutation.addedNodes ?? [mutation.target]).forEach((node) => { - (selector instanceof Array ? selector : [selector]).forEach((s) => { - if (!(node instanceof HTMLElement)) return; + (selector instanceof Array ? selector : [selector]).forEach( + (s: S extends string[] ? S[number] : S) => { + if (!(node instanceof HTMLElement)) return; - if (node.matches(s)) module(node as T, s); - node.querySelectorAll(s).forEach((e) => module(e, s)); - }); + if (node.matches(s)) module(node as T, s); + node.querySelectorAll(s).forEach((e) => module(e, s)); + }, + ); }); }; diff --git a/src/content-scripts/modules/overrideFunctions.ts b/src/content-scripts/modules/overrideFunctions.ts index 09471cb..2248af5 100644 --- a/src/content-scripts/modules/overrideFunctions.ts +++ b/src/content-scripts/modules/overrideFunctions.ts @@ -1,8 +1,9 @@ +import Browser from "webextension-polyfill"; import { onceModule } from "./base/once"; export default onceModule(() => { const scriptElement = document.createElement("script"); - const scriptURL = chrome.runtime.getURL("src/script-overrides/index.ts"); + const scriptURL = Browser.runtime.getURL("src/script-overrides/index.ts"); scriptElement.src = scriptURL; scriptElement.id = "se-script-overrides"; document.head.appendChild(scriptElement); diff --git a/src/content-scripts/options/autoLogin.ts b/src/content-scripts/options/autoLogin.ts index aff74db..68c94fd 100644 --- a/src/content-scripts/options/autoLogin.ts +++ b/src/content-scripts/options/autoLogin.ts @@ -1,3 +1,5 @@ +import Browser from "webextension-polyfill"; + export default (value: boolean) => { if (value) rememberLogin(); }; @@ -12,12 +14,12 @@ const emptyLogin = { verified: false, userInfo: "" } as const; let autoLogin: AutoLogin; const rememberLogin = async () => { - autoLogin = (await chrome.storage.local.get("autoLoginCache"))[ + autoLogin = (await Browser.storage.local.get("autoLoginCache"))[ "autoLoginCache" ]; if (autoLogin === undefined) { - await chrome.storage.local.set({ autoLogin: emptyLogin }); + await Browser.storage.local.set({ autoLogin: emptyLogin }); autoLogin = emptyLogin; } @@ -38,19 +40,21 @@ const rememberLogin = async () => { const htmlRes = document.createElement("html"); htmlRes.innerHTML = await res.text(); if (htmlRes.querySelector("p.aviso-invalidado") != null) { - await chrome.storage.local.set({ autoLoginCache: emptyLogin }); + await Browser.storage.local.set({ autoLoginCache: emptyLogin }); } - await chrome.runtime.sendMessage({ + await Browser.runtime.sendMessage({ type: "login", autoLogin, }); } if (document.querySelector(".autenticado") != null) { - document - .querySelector(".terminar-sessao") - ?.addEventListener("click", () => - chrome.storage.local.set({ autoLoginCache: emptyLogin }), - ); + document.querySelector(".terminar-sessao")?.addEventListener( + "click", + () => + void Browser.storage.local.set({ + autoLoginCache: emptyLogin, + }), + ); } }; @@ -68,7 +72,7 @@ function loginButtonHandler(event: SubmitEvent) { console.log("Something went wrong while logging in..."); return; } - const loggedIn = await chrome.runtime.sendMessage({ + const loggedIn = await Browser.runtime.sendMessage({ type: "login", autoLogin, }); diff --git a/src/content-scripts/options/base/style.ts b/src/content-scripts/options/base/style.ts index 1872f34..8d5617c 100644 --- a/src/content-scripts/options/base/style.ts +++ b/src/content-scripts/options/base/style.ts @@ -1,8 +1,9 @@ import { removeElement } from "~/common/elements"; import type { Option } from ".."; +import Browser from "webextension-polyfill"; export const toggleStyleOption = (url: string): Option<"boolean"> => { - const extUrl = chrome.runtime.getURL(url); + const extUrl = Browser.runtime.getURL(url); return (value) => { if (value) { diff --git a/src/content-scripts/pages/schedule.ts b/src/content-scripts/pages/schedule.ts index 629fe85..29305b5 100644 --- a/src/content-scripts/pages/schedule.ts +++ b/src/content-scripts/pages/schedule.ts @@ -46,7 +46,7 @@ export default () => { fixScheduleTable(scheduleElem); createLegend(scheduleElem); - if (overlapping) fixOverlappingClasses(scheduleElem, overlapping); + if (overlapping) void fixOverlappingClasses(scheduleElem, overlapping); }; const fixScheduleTable = (table: HTMLTableElement) => { @@ -340,7 +340,7 @@ const fixOverlappingClasses = async ( } }; -const createLegend = async (table: HTMLTableElement) => { +const createLegend = (table: HTMLTableElement) => { const newLegend = document.createElement("div"); newLegend.id = "new-legend"; @@ -364,7 +364,7 @@ const createLegend = async (table: HTMLTableElement) => { table.appendChild(foot); }; -const fixForm = async () => { +const fixForm = () => { const form = document.querySelector( "#conteudoinner > form", ); diff --git a/src/content-scripts/pages/teacher.ts b/src/content-scripts/pages/teacher.ts index fa03675..b59aec8 100644 --- a/src/content-scripts/pages/teacher.ts +++ b/src/content-scripts/pages/teacher.ts @@ -5,6 +5,7 @@ import { moveChildrenToAncestor, removeTwoColumnTable, } from "~/common/layout"; +import Browser from "webextension-polyfill"; const publicationWebsites = { "authenticus.pt": { icon: "authenticusID.png", text: "Authenticus ID" }, @@ -141,7 +142,7 @@ function makePublicationWebsiteButtons() { if (link.includes(website)) { found = true; const image = document.createElement("img"); - image.src = chrome.runtime.getURL( + image.src = Browser.runtime.getURL( "images/publicationWebsiteLogo/" + publicationWebsites[website].icon, ); diff --git a/src/content-styles/components/icon.css b/src/content-styles/components/icon.css index 8b8e6d9..233f7a4 100644 --- a/src/content-styles/components/icon.css +++ b/src/content-styles/components/icon.css @@ -9,6 +9,7 @@ width: 1em !important; height: 1em !important; text-decoration: none !important; + font-weight: normal !important; &::before { display: inline-block; diff --git a/src/manifest.ts b/src/manifest.ts index b306a21..2775364 100644 --- a/src/manifest.ts +++ b/src/manifest.ts @@ -1,18 +1,9 @@ +import Browser from "webextension-polyfill"; import pkg from "../package.json"; const target = process.env.TARGET ?? "chrome"; -type Manifest = - | chrome.runtime.ManifestV3 - | (Omit & { - background: - | chrome.runtime.ManifestV3["background"] - | { - scripts: string[]; - }; - }); - -export function getManifest(): Manifest { +export function getManifest(): Browser.Manifest.WebExtensionManifest { return { author: pkg.author, description: pkg.description, @@ -20,18 +11,11 @@ export function getManifest(): Manifest { version: pkg.version, manifest_version: 3, action: { - default_icon: { - 16: "logo/logo-16.png", - 32: "logo/logo-32.png", - 48: "logo/logo-48.png", - 64: "logo/logo-64.png", - 128: "logo/logo-128.png", - }, default_popup: "src/popup/index.html", }, - content_security_policy: { - extension_pages: "script-src 'self'; object-src 'self';", - }, + // content_security_policy: { + // extension_pages: "script-src 'self' localhost; object-src 'self' localhost;", + // }, content_scripts: [ { run_at: "document_start", @@ -49,6 +33,13 @@ export function getManifest(): Manifest { type: "module", }, host_permissions: ["*://sigarra.up.pt/feup/*"], + icons: { + 16: "logo/logo-16.png", + 32: "logo/logo-32.png", + 48: "logo/logo-48.png", + 64: "logo/logo-64.png", + 128: "logo/logo-128.png", + }, permissions: ["storage", "tabs", "cookies"], options_ui: { page: "src/options/index.html", diff --git a/src/options/index.html b/src/options/index.html index 329727d..2ab7dbd 100644 --- a/src/options/index.html +++ b/src/options/index.html @@ -6,4 +6,6 @@ Document + + diff --git a/src/popup/index.html b/src/popup/index.html index 329727d..2ab7dbd 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -6,4 +6,6 @@ Document + + diff --git a/src/popup/index.tsx b/src/popup/index.tsx index f6d0794..33e685b 100644 --- a/src/popup/index.tsx +++ b/src/popup/index.tsx @@ -1,4 +1,5 @@ import React from "react"; +import renderRoot from "~/common/renderRoot"; import Container from "~/components/layout/Container"; import Footer from "~/components/layout/Footer"; import Header from "~/components/layout/Header"; @@ -12,4 +13,4 @@ const IndexPage = () => ( ); -export default IndexPage; +renderRoot(IndexPage); diff --git a/src/post-install/Authorize.tsx b/src/post-install/Authorize.tsx index 6932441..0e9aee1 100644 --- a/src/post-install/Authorize.tsx +++ b/src/post-install/Authorize.tsx @@ -1,20 +1,12 @@ import React from "react"; import AuthorizeButton from "./AuthorizeButton"; -const Authorize = () => { +export default function () { return ( -
-
-
-

Autorizar extensão

-

- Para poderes usar a extensão, precisas de autorizar o acesso - da extensão à página da secretaria virtual da FEUP. -

-
+ <> +

Quase lá

+

Autoriza-nos a melhorar o Sigarra

-
+ ); -}; - -export default Authorize; +} diff --git a/src/post-install/AuthorizeButton.tsx b/src/post-install/AuthorizeButton.tsx index 56c2124..38120c7 100644 --- a/src/post-install/AuthorizeButton.tsx +++ b/src/post-install/AuthorizeButton.tsx @@ -1,14 +1,15 @@ import React, { useCallback } from "react"; +import Browser from "webextension-polyfill"; +import { Button } from "flowbite-react"; -const AuthorizeButton = () => { - const onClick = useCallback(() => { - console.log("clicked"); - return chrome.permissions.request({ - origins: ["*://sigarra.up.pt/feup/*"], - }); - }, []); +export default function () { + const onClick = useCallback( + () => + void Browser.permissions.request({ + origins: ["*://sigarra.up.pt/feup/*"], + }), + [], + ); - return ; -}; - -export default AuthorizeButton; + return ; +} diff --git a/src/post-install/Authorized.tsx b/src/post-install/Authorized.tsx index 646f040..84c75fa 100644 --- a/src/post-install/Authorized.tsx +++ b/src/post-install/Authorized.tsx @@ -1,17 +1,10 @@ import React from "react"; -const Authorized = () => { +export default function () { return ( -
-
-
-

Extensão autorizada!

-

- A extensão está agora autorizada a aceder à página da secr -

-
+
+ + Extensão pronta a usar!
); -}; - -export default Authorized; +} diff --git a/src/post-install/Loading.tsx b/src/post-install/Loading.tsx index 119fd4e..2bc9285 100644 --- a/src/post-install/Loading.tsx +++ b/src/post-install/Loading.tsx @@ -1,11 +1,12 @@ import React from "react"; -const Loading = () => { +export default function () { return ( -
-
-
+ <> +

Quase lá

+

+ A verificar se podemos melhorar o Sigarra +

+ ); -}; - -export default Loading; +} diff --git a/src/post-install/PostInstall.tsx b/src/post-install/PostInstall.tsx new file mode 100644 index 0000000..4a4d6a6 --- /dev/null +++ b/src/post-install/PostInstall.tsx @@ -0,0 +1,36 @@ +import React, { useCallback, useEffect, useState } from "react"; +import Browser from "webextension-polyfill"; +import Loading from "./Loading"; +import Authorized from "./Authorized"; +import Authorize from "./Authorize"; + +export default function () { + const [authorized, setAuthorized] = useState(null); + + const onAdded = useCallback(() => setAuthorized(true), []); + const onRemoved = useCallback(() => setAuthorized(false), []); + + useEffect(() => { + Browser.permissions + .contains({ + origins: ["*://sigarra.up.pt/feup/*"], + }) + .then(setAuthorized) + .catch(console.error); + Browser.permissions.onAdded.addListener(onAdded); + Browser.permissions.onRemoved.addListener(onRemoved); + + return () => { + Browser.permissions.onAdded.removeListener(onAdded); + Browser.permissions.onRemoved.removeListener(onRemoved); + }; + }, [onAdded, onRemoved]); + + return authorized === null ? ( + + ) : authorized ? ( + + ) : ( + + ); +} diff --git a/src/post-install/index.css b/src/post-install/index.css new file mode 100644 index 0000000..4dd405a --- /dev/null +++ b/src/post-install/index.css @@ -0,0 +1,36 @@ +@import "remixicon/fonts/remixicon.css"; +@import "/src/styles/globals.css"; + +body { + @apply flex h-full flex-col place-content-center place-items-center gap-2 text-white; + + background-image: url("/background.jpg"); + background-position: center center; + background-size: 100% auto; + background-repeat: no-repeat; + animation: shrink 4s infinite alternate; + + @media (aspect-ratio < 16/9) { + background-size: auto 100%; + } +} + +@keyframes shrink { + 0% { + background-size: 100% auto; + } + 100% { + background-size: 110% auto; + } +} + +@media (aspect-ratio < 16/9) { + @keyframes shrink { + 0% { + background-size: auto 100%; + } + 100% { + background-size: auto 110%; + } + } +} diff --git a/src/post-install/index.html b/src/post-install/index.html index 2ef594b..d3208d4 100644 --- a/src/post-install/index.html +++ b/src/post-install/index.html @@ -4,8 +4,8 @@ Sigarra extension - - + + diff --git a/src/post-install/index.tsx b/src/post-install/index.tsx index a7ae47a..bfa65cb 100644 --- a/src/post-install/index.tsx +++ b/src/post-install/index.tsx @@ -1,30 +1,5 @@ -import React, { useEffect, useState } from "react"; -import renderRoot from "../common/renderRoot"; -import Loading from "./Loading"; -import Authorized from "./Authorized"; -import Authorize from "./Authorize"; - -const PostInstall = () => { - const [authorized, setAuthorized] = useState(null); - - useEffect(() => { - chrome.permissions.contains( - { - origins: ["*://sigarra.up.pt/feup/*"], - }, - setAuthorized, - ); - chrome.permissions.onAdded.addListener(() => setAuthorized(true)); - chrome.permissions.onRemoved.addListener(() => setAuthorized(false)); - }, []); - - return authorized === null ? ( - - ) : authorized ? ( - - ) : ( - - ); -}; +import renderRoot from "~/common/renderRoot"; +import PostInstall from "./PostInstall"; +import "./index.css"; renderRoot(PostInstall); diff --git a/src/script-overrides/index.ts b/src/script-overrides/index.ts index c4e2724..1c16ff2 100644 --- a/src/script-overrides/index.ts +++ b/src/script-overrides/index.ts @@ -1 +1,9 @@ import { expandir_colapsar } from "./expand-collapse"; + +declare global { + interface Window { + expandir_colapsar: typeof expandir_colapsar; + } +} + +window.expandir_colapsar = expandir_colapsar; diff --git a/src/styles/globals.css b/src/styles/globals.css index 6852f43..7cb1154 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -14,7 +14,7 @@ body { } body { - @apply antialiased dark:bg-bgOneDark bg-bgOne; + @apply antialiased; } img, diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..f77aa26 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import("tailwindcss").Config} */ +module.exports = { + content: [ + "src/**/*.{html,js,jsx,ts,tsx}", + "node_modules/flowbite-react/**/*.{js,jsx,ts,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [require("flowbite/plugin")], +}; diff --git a/vite.config.ts b/vite.config.ts index fa2b8dc..4d9ece8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react-swc"; import webExtension from "vite-plugin-web-extension"; -import path from "path"; +import path from "node:path"; import { getManifest } from "./src/manifest"; // https://vitejs.dev/config/ @@ -19,7 +19,7 @@ export default defineConfig({ ], resolve: { alias: { - "~": path.resolve(__dirname, "./src"), + "~": path.resolve("src"), // In dev mode, make sure fast refresh works "/@react-refresh": path.resolve( "node_modules/@vitejs/plugin-react-swc/refresh-runtime.js", diff --git a/yarn.lock b/yarn.lock index 175bb10..9b7a356 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,11 +19,6 @@ dependencies: "@babel/highlight" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" @@ -38,11 +33,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.6.tgz#201f8b47be20c76c7c5743b9c16129760bf9a975" - integrity sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw== - "@babel/runtime@7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -57,22 +47,6 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/types@^7.0.0", "@babel/types@^7.20.7": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@csstools/cascade-layer-name-parser@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.3.tgz#7f049a670c1e071102243ab6c392174844ca6cd7" @@ -443,14 +417,14 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz#6526c7e1b40d5b9f0a222c6b767c22f6fb97aa57" integrity sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.3.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0": version "4.5.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== @@ -480,6 +454,34 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== +"@floating-ui/core@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.3.1.tgz#4d795b649cc3b1cbb760d191c80dcb4353c9a366" + integrity sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g== + +"@floating-ui/dom@^1.3.0": + version "1.4.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.4.5.tgz#336dfb9870c98b471ff5802002982e489b8bd1c5" + integrity sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw== + dependencies: + "@floating-ui/core" "^1.3.1" + +"@floating-ui/react-dom@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.1.tgz#7972a4fc488a8c746cded3cfe603b6057c308a91" + integrity sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA== + dependencies: + "@floating-ui/dom" "^1.3.0" + +"@floating-ui/react@^0.24.3": + version "0.24.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.24.8.tgz#e079e2836990be3fce9665ab509360a5447251a1" + integrity sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA== + dependencies: + "@floating-ui/react-dom" "^2.0.1" + aria-hidden "^1.2.3" + tabbable "^6.0.1" + "@fluent/syntax@0.19.0": version "0.19.0" resolved "https://registry.yarnpkg.com/@fluent/syntax/-/syntax-0.19.0.tgz#43f882faba6908b0f1013f6a94e009d0dfbdcb77" @@ -518,11 +520,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -538,14 +535,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -613,76 +602,81 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" +"@popperjs/core@^2.9.3": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "@sindresorhus/is@^5.2.0": version "5.4.1" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.4.1.tgz#c4383ce702fb90531c3d310506bab89e70427c53" integrity sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw== -"@swc/core-darwin-arm64@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.68.tgz#cf7fe9550a09eb18e6ceb30362da39886dbaf9d6" - integrity sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA== - -"@swc/core-darwin-x64@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.68.tgz#83e1077a9a0f607f2a0050db2c9b288464c885cf" - integrity sha512-ZHl42g6yXhfX4PzAQ0BNvBXpt/OcbAHfubWRN6eXELK3fiNnxL7QBW1if7iizlq6iA+Mj1pwHyyUit1pz0+fgA== - -"@swc/core-linux-arm-gnueabihf@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.68.tgz#c2f7ed599eac5f85ae2ca018cb2df6ae256256cd" - integrity sha512-Mk8f6KCOQ2CNAR4PtWajIjS6XKSSR7ZYDOCf1GXRxhS3qEyQH7V8elWvqWYqHcT4foO60NUmxA/NOM/dQrdO1A== - -"@swc/core-linux-arm64-gnu@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.68.tgz#5f10476668bf68d671d0e23f754fb7192038b6df" - integrity sha512-RhBllggh9t9sIxaRgRcGrVaS7fDk6KsIqR6b9+dwU5OyDr4ZyHWw1ZaH/1/HAebuXYhNBjoNUiRtca6lKRIPgQ== - -"@swc/core-linux-arm64-musl@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.68.tgz#141c575acd84911801da5c93e5ee1b1a90d7e04b" - integrity sha512-8K3zjU+tFgn6yGDEeD343gkKaHU9dhz77NiVkI1VzwRaT/Ag5pwl5eMQ1yStm8koNFzn3zq6rGjHfI5g2yI5Wg== - -"@swc/core-linux-x64-gnu@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.68.tgz#d9d5ceb218bea38d312e04336b37a2b312c29cc3" - integrity sha512-4xAnvsBOyeTL0AB8GWlRKDM/hsysJ5jr5qvdKKI3rZfJgnnxl/xSX6TJKPsJ8gygfUJ3BmfCbmUmEyeDZ3YPvA== - -"@swc/core-linux-x64-musl@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.68.tgz#440174a638d86f0c4d53de632bd6782a5ae61b57" - integrity sha512-RCpaBo1fcpy1EFdjF+I7N4lfzOaHXVV0iMw/ABM+0PD6tp3V/9pxsguaZyeAHyEiUlDA6PZ4TfXv5zfnXEgW4Q== - -"@swc/core-win32-arm64-msvc@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.68.tgz#c04936c621e2990ff3e88896cc435c094edd3e29" - integrity sha512-v2WZvXrSslYEpY1nqpItyamL4DyaJinmOkXvM8Bc1LLKU5rGuvmBdjUYg/5Y+o0AUynuiWubpgHNOkBWiCvfqw== - -"@swc/core-win32-ia32-msvc@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.68.tgz#d4f75ead1fe56436d7cd3676b7d7b42bfeb952c1" - integrity sha512-HH5NJrIdzkJs+1xxprie0qSCMBeL9yeEhcC1yZTzYv8bwmabOUSdtKIqS55iYP/2hLWn9CTbvKPmLOIhCopW3Q== - -"@swc/core-win32-x64-msvc@1.3.68": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.68.tgz#6ac56e87d994deb1917fc1b24285599e12e7a7b9" - integrity sha512-9HZVtLQUgK8r/yXQdwe0VBexbIcrY6+fBROhs7AAPWdewpaUeLkwQEJk6TbYr9CQuHw26FFGg6SjwAiqXF+kgQ== +"@swc/core-darwin-arm64@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.69.tgz#e22032471244ec80c22bee8efc2100e456bb9488" + integrity sha512-IjZTf12zIPWkV3D7toaLDoJPSkLhQ4fDH8G6/yCJUI27cBFOI3L8LXqptYmISoN5yYdrcnNpdqdapD09JPuNJg== + +"@swc/core-darwin-x64@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.69.tgz#4c2034ba409b9e061b9e8ad56a762b8bb7815f18" + integrity sha512-/wBO0Rn5oS5dJI/L9kJRkPAdksVwl5H9nleW/NM3A40N98VV8T7h/i1nO051mxIjq0R6qXVGOWFbBoLrPYucJg== + +"@swc/core-linux-arm-gnueabihf@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.69.tgz#3d89053b6de2fd8553ce5c5808251246f2870e1e" + integrity sha512-NShCjMv6Xn8ckMKBRqmprXvUF14+jXY0TcNKXwjYErzoIUFOnG72M36HxT4QEeAtKZ4Eg4CZFE4zlJ27fDp1gg== + +"@swc/core-linux-arm64-gnu@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.69.tgz#df12d3befc5e86555ee561202dc9c279d8865bf3" + integrity sha512-VRPOJj4idopSHIj1bOVXX0SgaB18R8yZNunb7eXS5ZcjVxAcdvqyIz3RdQX1zaJFCGzcdPLzBRP32DZWWGE8Ng== + +"@swc/core-linux-arm64-musl@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.69.tgz#8372222a3298fdd0bd18da564a3009614a6c0920" + integrity sha512-QxeSiZqo5x1X8vq8oUWLibq+IZJcxl9vy0sLUmzdjF2b/Z+qxKP3gutxnb2tzJaHqPVBbEZaILERIGy1qWdumQ== + +"@swc/core-linux-x64-gnu@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.69.tgz#6879057d28f261b051fac52daca6c256f3a7fb7d" + integrity sha512-b+DUlVxYox3BwD3PyTwhLvqtu6TYZtW+S6O0FnttH11o4skHN0XyJ/cUZSI0X2biSmfDsizRDUt1PWPFM+F7SA== + +"@swc/core-linux-x64-musl@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.69.tgz#bf4f9a74156524211472bb713d34f0bb7265669f" + integrity sha512-QXjsI+f8n9XPZHUvmGgkABpzN4M9kdSbhqBOZmv3o0AsDGNCA4uVowQqgZoPFAqlJTpwHeDmrv5sQ13HN+LOGw== + +"@swc/core-win32-arm64-msvc@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.69.tgz#8242e4a406d11f0e078da39cf9962695e6b73d2d" + integrity sha512-wn7A8Ws1fyviuCUB2Vg6IotiZeuqiO1Mz3d+YDae2EYyNpj1kNHvjBip8GHkfGzZG+jVrvG6NHsDo0KO/pGb8A== + +"@swc/core-win32-ia32-msvc@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.69.tgz#68dbd41e200e5db71aa6644d793acff3607862f0" + integrity sha512-LsFBXtXqxEcVaaOGEZ9X3qdMzobVoJqKv8DnksuDsWcBk+9WCeTz2u/iB+7yZ2HGuPXkCqTRqhFo6FX9aC00kQ== + +"@swc/core-win32-x64-msvc@1.3.69": + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.69.tgz#304e1050d59bae21215a15839b05668d48a92837" + integrity sha512-ieBscU0gUgKjaseFI07tAaGqHvKyweNknPeSYEZOasVZUczhD6fK2GRnVREhv2RB2qdKC/VGFBsgRDMgzq1VLw== "@swc/core@^1.3.61": - version "1.3.68" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.68.tgz#f1eba0b90f529b0accb7910ef742be88d285e719" - integrity sha512-njGQuJO+Wy06dEayt70cf0c/KI3HGjm4iW9LLViVLBuYNzJ4SSdNfzejludzufu6im+dsDJ0i3QjgWhAIcVHMQ== + version "1.3.69" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.69.tgz#b4a41e84de11832c233fbe714c6e412d8404bab0" + integrity sha512-Khc/DE9D5+2tYTHgAIp5DZARbs8kldWg3b0Jp6l8FQLjelcLFmlQWSwKhVZrgv4oIbgZydIp8jInsvTalMHqnQ== optionalDependencies: - "@swc/core-darwin-arm64" "1.3.68" - "@swc/core-darwin-x64" "1.3.68" - "@swc/core-linux-arm-gnueabihf" "1.3.68" - "@swc/core-linux-arm64-gnu" "1.3.68" - "@swc/core-linux-arm64-musl" "1.3.68" - "@swc/core-linux-x64-gnu" "1.3.68" - "@swc/core-linux-x64-musl" "1.3.68" - "@swc/core-win32-arm64-msvc" "1.3.68" - "@swc/core-win32-ia32-msvc" "1.3.68" - "@swc/core-win32-x64-msvc" "1.3.68" + "@swc/core-darwin-arm64" "1.3.69" + "@swc/core-darwin-x64" "1.3.69" + "@swc/core-linux-arm-gnueabihf" "1.3.69" + "@swc/core-linux-arm64-gnu" "1.3.69" + "@swc/core-linux-arm64-musl" "1.3.69" + "@swc/core-linux-x64-gnu" "1.3.69" + "@swc/core-linux-x64-musl" "1.3.69" + "@swc/core-win32-arm64-msvc" "1.3.69" + "@swc/core-win32-ia32-msvc" "1.3.69" + "@swc/core-win32-x64-msvc" "1.3.69" "@szmarczak/http-timer@^5.0.1": version "5.0.1" @@ -691,67 +685,6 @@ dependencies: defer-to-connect "^2.0.1" -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/babel__core@*": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/chrome@^0.0.240": - version "0.0.240" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.240.tgz#bcfa354d6b149960dab4a6016f88dbc6d610b8c4" - integrity sha512-aiA2V8+WeJeOqtghX9KLqPT2GfaR2ksmgEZm84TsHAxTwl+tkEKax5oLO2hLptNRc5xQ2tbIRiUc5olIe0TnoQ== - dependencies: - "@types/filesystem" "*" - "@types/har-format" "*" - "@types/eslint@^8.44.0": version "8.44.0" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.0.tgz#55818eabb376e2272f77fbf5c96c43137c3c1e53" @@ -765,29 +698,12 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/filesystem@*": - version "0.0.32" - resolved "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz" - integrity sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ== - dependencies: - "@types/filewriter" "*" - -"@types/filewriter@*": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz" - integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ== - -"@types/har-format@*": - version "1.2.10" - resolved "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.10.tgz" - integrity sha512-o0J30wqycjF5miWDKYKKzzOU1ZTLuA42HZ4HE7/zqTOc/jTLdQ5NhYWvsRQo45Nfi1KHoRdNhteSI4BAxTF1Pg== - "@types/http-cache-semantics@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/json-schema@*", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.11": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== @@ -812,22 +728,14 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react-dom@^18.2.6": - version "18.2.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.6.tgz#ad621fa71a8db29af7c31b41b2ea3d8a6f4144d1" - integrity sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A== +"@types/react-dom@^18.2.7": + version "18.2.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" + integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== dependencies: "@types/react" "*" -"@types/react-refresh@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@types/react-refresh/-/react-refresh-0.14.0.tgz#09fbf0faf4c31086616f9aa5dee981ed5f47c0a8" - integrity sha512-Lkn0lde3joqS+Cf1fa1B7ROEeiYi12xmE6VPBEbyJalOE8PkozGNOC1chqXljhM9UXo8SLwtVTBpmmdvzGTbtg== - dependencies: - "@types/babel__core" "*" - csstype "^3.0.2" - -"@types/react@*", "@types/react@^18.2.14": +"@types/react@*": version "18.2.14" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.14.tgz#fa7a6fecf1ce35ca94e74874f70c56ce88f7a127" integrity sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g== @@ -836,6 +744,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.2.15": + version "18.2.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.15.tgz#14792b35df676c20ec3cf595b262f8c615a73066" + integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.3" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" @@ -858,89 +775,93 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz#a1a5290cf33863b4db3fb79350b3c5275a7b1223" - integrity sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/type-utils" "5.61.0" - "@typescript-eslint/utils" "5.61.0" +"@typescript-eslint/eslint-plugin@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.0.0.tgz#19ff4f1cab8d6f8c2c1825150f7a840bc5d9bdc4" + integrity sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + "@typescript-eslint/scope-manager" "6.0.0" + "@typescript-eslint/type-utils" "6.0.0" + "@typescript-eslint/utils" "6.0.0" + "@typescript-eslint/visitor-keys" "6.0.0" debug "^4.3.4" + grapheme-splitter "^1.0.4" graphemer "^1.4.0" - ignore "^5.2.0" + ignore "^5.2.4" + natural-compare "^1.4.0" natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + semver "^7.5.0" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.61.0.tgz#7fbe3e2951904bb843f8932ebedd6e0635bffb70" - integrity sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg== +"@typescript-eslint/parser@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.0.0.tgz#46b2600fd1f67e62fc00a28093a75f41bf7effc4" + integrity sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg== dependencies: - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/typescript-estree" "5.61.0" + "@typescript-eslint/scope-manager" "6.0.0" + "@typescript-eslint/types" "6.0.0" + "@typescript-eslint/typescript-estree" "6.0.0" + "@typescript-eslint/visitor-keys" "6.0.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz#b670006d069c9abe6415c41f754b1b5d949ef2b2" - integrity sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw== +"@typescript-eslint/scope-manager@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz#8ede47a37cb2b7ed82d329000437abd1113b5e11" + integrity sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg== dependencies: - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/visitor-keys" "5.61.0" + "@typescript-eslint/types" "6.0.0" + "@typescript-eslint/visitor-keys" "6.0.0" -"@typescript-eslint/type-utils@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz#e90799eb2045c4435ea8378cb31cd8a9fddca47a" - integrity sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg== +"@typescript-eslint/type-utils@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.0.0.tgz#0478d8a94f05e51da2877cc0500f1b3c27ac7e18" + integrity sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ== dependencies: - "@typescript-eslint/typescript-estree" "5.61.0" - "@typescript-eslint/utils" "5.61.0" + "@typescript-eslint/typescript-estree" "6.0.0" + "@typescript-eslint/utils" "6.0.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.61.0.tgz#e99ff11b5792d791554abab0f0370936d8ca50c0" - integrity sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ== +"@typescript-eslint/types@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.0.0.tgz#19795f515f8decbec749c448b0b5fc76d82445a1" + integrity sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg== -"@typescript-eslint/typescript-estree@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz#4c7caca84ce95bb41aa585d46a764bcc050b92f3" - integrity sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw== +"@typescript-eslint/typescript-estree@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz#1e09aab7320e404fb9f83027ea568ac24e372f81" + integrity sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ== dependencies: - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/visitor-keys" "5.61.0" + "@typescript-eslint/types" "6.0.0" + "@typescript-eslint/visitor-keys" "6.0.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + semver "^7.5.0" + ts-api-utils "^1.0.1" -"@typescript-eslint/utils@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.61.0.tgz#5064838a53e91c754fffbddd306adcca3fe0af36" - integrity sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ== +"@typescript-eslint/utils@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.0.0.tgz#27a16d0d8f2719274a39417b9782f7daa3802db0" + integrity sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" + "@eslint-community/eslint-utils" "^4.3.0" + "@types/json-schema" "^7.0.11" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/typescript-estree" "5.61.0" + "@typescript-eslint/scope-manager" "6.0.0" + "@typescript-eslint/types" "6.0.0" + "@typescript-eslint/typescript-estree" "6.0.0" eslint-scope "^5.1.1" - semver "^7.3.7" + semver "^7.5.0" -"@typescript-eslint/visitor-keys@5.61.0": - version "5.61.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz#c79414fa42158fd23bd2bb70952dc5cdbb298140" - integrity sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg== +"@typescript-eslint/visitor-keys@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz#0b49026049fbd096d2c00c5e784866bc69532a31" + integrity sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA== dependencies: - "@typescript-eslint/types" "5.61.0" - eslint-visitor-keys "^3.3.0" + "@typescript-eslint/types" "6.0.0" + eslint-visitor-keys "^3.4.1" "@vitejs/plugin-react-swc@^3.3.2": version "3.3.2" @@ -961,12 +882,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1, acorn@^8.8.0, acorn@^8.9.0: +acorn@^8.8.0, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -1100,11 +1016,6 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -1115,6 +1026,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" + integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== + dependencies: + tslib "^2.0.0" + aria-query@^5.1.3: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" @@ -1531,6 +1449,11 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +classnames@^2.2.6: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + cli-boxes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" @@ -1665,11 +1588,6 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1765,7 +1683,7 @@ data-uri-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== -debounce@1.2.1: +debounce@1.2.1, debounce@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== @@ -1888,11 +1806,6 @@ didyoumean@^1.2.2: resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1968,6 +1881,11 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +easy-bem@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/easy-bem/-/easy-bem-1.1.1.tgz#1bfcc10425498090bcfddc0f9c000aba91399e03" + integrity sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2324,10 +2242,10 @@ eslint@8.36.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -eslint@^8.44.0: - version "8.44.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.44.0.tgz#51246e3889b259bbcd1d7d736a0c10add4f0e500" - integrity sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A== +eslint@^8.45.0: + version "8.45.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" + integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" @@ -2354,7 +2272,6 @@ eslint@^8.44.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -2366,7 +2283,6 @@ eslint@^8.44.0: natural-compare "^1.4.0" optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" espree@9.5.0: @@ -2600,6 +2516,25 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flowbite-react@^0.4.11: + version "0.4.11" + resolved "https://registry.yarnpkg.com/flowbite-react/-/flowbite-react-0.4.11.tgz#2d0864d029bdf5c6e2bbb9e1cb15fe60285472bf" + integrity sha512-QB0PWB/kiogL0YQlT+X1x4Ue0D3cpd+WaiCbGsMqo2LCYySRsctHxEciRQji3JELGuc6O1OaBtK9ZUSErQkJEg== + dependencies: + "@floating-ui/react" "^0.24.3" + flowbite "^1.6.6" + react-icons "^4.10.1" + react-indiana-drag-scroll "^2.2.0" + tailwind-merge "^1.13.2" + +flowbite@^1.6.6, flowbite@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/flowbite/-/flowbite-1.7.0.tgz#82359dbd5e3b2b9591eaf18ea929fb77871346b2" + integrity sha512-OTTmnhRgv85Rs+mcMaVU7zB6EvRQs7BaQziyMUsZLRjW9aUpeQyqKjLmxsVMMCdr8isYPCLd6UL7X1IaSVI0WQ== + dependencies: + "@popperjs/core" "^2.9.3" + mini-svg-data-uri "^1.4.3" + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3049,7 +2984,7 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -3668,7 +3603,7 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -make-error@^1.1.1, make-error@^1.3.2: +make-error@^1.3.2: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -3753,6 +3688,11 @@ mimic-response@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== +mini-svg-data-uri@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== + "minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -4572,11 +4512,25 @@ postcss@^8.4.24: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.25: + version "8.4.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.26.tgz#1bc62ab19f8e1e5463d98cf74af39702a00a9e94" + integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier-plugin-tailwindcss@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.4.1.tgz#f7ed664199540978b2cbd037bac3a337d6689e86" + integrity sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag== + prettier@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" @@ -4688,6 +4642,20 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-icons@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.10.1.tgz#3f3b5eec1f63c1796f6a26174a1091ca6437a500" + integrity sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw== + +react-indiana-drag-scroll@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-indiana-drag-scroll/-/react-indiana-drag-scroll-2.2.0.tgz#657e14bbdf4888cc738e9fa8dc4384d76c348c0b" + integrity sha512-+W/3B2OQV0FrbdnsoIo4dww/xpH0MUQJz6ziQb7H+oBko3OCbXuzDFYnho6v6yhGrYDNWYPuFUewb89IONEl/A== + dependencies: + classnames "^2.2.6" + debounce "^1.2.0" + easy-bem "^1.1.1" + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -4972,6 +4940,13 @@ semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: dependencies: lru-cache "^6.0.0" +semver@^7.5.0: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -5300,10 +5275,20 @@ synckit@^0.8.5: "@pkgr/utils" "^2.3.1" tslib "^2.5.0" -tailwindcss@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" - integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== +tabbable@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + +tailwind-merge@^1.13.2: + version "1.14.0" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-1.14.0.tgz#e677f55d864edc6794562c63f5001f45093cdb8b" + integrity sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ== + +tailwindcss@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" + integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -5325,7 +5310,6 @@ tailwindcss@^3.3.2: postcss-load-config "^4.0.1" postcss-nested "^6.0.1" postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" resolve "^1.22.2" sucrase "^3.32.0" @@ -5377,11 +5361,6 @@ tmp@0.2.1: dependencies: rimraf "^3.0.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -5402,30 +5381,16 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +ts-api-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d" + integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tsconfig-paths@^3.14.1: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -5436,23 +5401,11 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.5.0: +tslib@^2.0.0, tslib@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5610,11 +5563,6 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -5642,7 +5590,7 @@ vite-plugin-web-extension@^3.1.2: webextension-polyfill "^0.10.0" yaml "^2.2.1" -vite@^4.1.4, vite@~4.4.2: +vite@^4.1.4: version "4.4.2" resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.2.tgz#acd47de771c498aec80e4900f30133d9529b278a" integrity sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA== @@ -5653,6 +5601,17 @@ vite@^4.1.4, vite@~4.4.2: optionalDependencies: fsevents "~2.3.2" +vite@^4.4.4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.4.tgz#b76e6049c0e080cb54e735ad2d18287753752118" + integrity sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.25" + rollup "^3.25.2" + optionalDependencies: + fsevents "~2.3.2" + watchpack@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -5868,11 +5827,6 @@ yauzl@2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"