diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..22fc5d8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +dist +.github +.vscode diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..50a8462 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,30 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:import/recommended", + "plugin:jsx-a11y/recommended", + "plugin:@typescript-eslint/recommended-type-checked", + "eslint-config-prettier", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + tsconfigRootDir: __dirname, + }, + settings: { + "react": { + version: "detect", + }, + "import/resolver": { + typescript: {}, + }, + }, + env: { + browser: true, + }, + rules: { + "react/display-name": "off", + }, +}; diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..11f19a7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,75 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 18 + cache: yarn + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Lint + run: yarn lint + + format: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 18 + cache: yarn + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Format + run: yarn format + + build: + runs-on: ubuntu-latest + needs: + - lint + - format + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 18 + cache: yarn + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Build for chrome + run: yarn build + env: + TARGET: chrome + - name: Zip chrome extension + run: zip -r ../chrome.zip * + working-directory: ./dist + - name: Build for firefox + run: yarn build + env: + TARGET: firefox + - name: Zip firefox extension + run: zip -r ../firefox.zip * + working-directory: ./dist + - name: Upload extension + uses: actions/upload-artifact@v2 + with: + name: Extension + path: | + chrome.zip + firefox.zip diff --git a/.gitignore b/.gitignore index 2f2f1ea..da3f14f 100644 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,4 @@ bundle/safari .vscode # Xcode project -xcuserdata/ \ No newline at end of file +xcuserdata/ diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..b2b60ca --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,6 @@ +import PostcssPresetEnv from "postcss-preset-env"; +import Tailwind from "tailwindcss"; + +export default { + plugins: [PostcssPresetEnv, Tailwind], +}; diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..22fc5d8 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +node_modules +dist +.github +.vscode diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..426a180 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,16 @@ +/** @type {import("prettier").Options} */ +export default { + plugins: ["prettier-plugin-tailwindcss"], + printWidth: 80, + tabWidth: 4, + useTabs: false, + semi: true, + singleQuote: false, + quoteProps: "consistent", + jsxSingleQuote: false, + trailingComma: "all", + bracketSpacing: true, + bracketSameLine: true, + arrowParens: "always", + endOfLine: "auto", +}; diff --git a/Develop for Safari.md b/Develop for Safari.md deleted file mode 100644 index 11b8ce6..0000000 --- a/Develop for Safari.md +++ /dev/null @@ -1,15 +0,0 @@ -From [developer.apple.com](https://developer.apple.com/documentation/safariservices/safari_app_extensions/building_a_safari_app_extension#2957927): - ->To develop without a certificate, each time you launch Safari, you need to tell it to load unsigned extensions using the Develop menu: -> -> Open Safari and choose Safari > Preferences. -> -> Select the Advanced tab, then select the “Show Develop menu in menu bar” checkbox. -> -> Choose Develop > Allow Unsigned Extensions, enter your password, and click OK. The Allow Unsigned Extensions setting resets when a user quits Safari, so you need to set it again the next time you launch Safari. -> -> Choose Safari > Preferences and click the Extensions tab. This tab shows the localized description, display name, and version number for the selected Safari app extension. It also provides a more nuanced message about the permissions for the extension. -> -> Find your new extension in the list on the left, and enable it by selecting its checkbox. -> -> Close Safari Preferences. \ No newline at end of file diff --git a/PRIVACY.md b/PRIVACY.md index cc2a6fc..c8b0903 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,8 +1,9 @@ TODO: + # Privacy Policy -Sigarra Extension does not store or collect any personal information. All user prefences are stored on the user's device in local storage. +Sigarra Extension does not store or collect any personal information. All user preferences are stored on the user's device in local storage. ## Contact Information -For any questions or concerns regarding the privacy policy, please send an email to ni@aefeup.pt +For any questions or concerns regarding the privacy policy, please send an email to diff --git a/README.md b/README.md index c7f6aae..5d65afa 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,39 @@ -## Development / Building / Bundling the Extension +# SIGARRA Extension + +## Building the extension First, you must have [yarn](https://classic.yarnpkg.com/lang/en/docs/install) installed. -Run -```sh -yarn && yarn bundle [all | firefox | chrome | safari] -``` -at the root directory and you'll get a bundle directory that looks like this: +Then, you can run `yarn` to install the dependencies, and `yarn build` to build the extension, which will be placed in the `dist` folder. + +This will build the extension for chromium based browsers. To build for Firefox, run `yarn build:firefox`. + +## Development -``` -📂 bundle -└ 📁 chrome -└ 📁 firefox -└ 📁 safari -└ 🗄️ chrome.zip -└ 🗄️ firefox.zip -└ 🗄️ safari.zip -``` +Running `yarn dev` will start the development server, which will serve the extension files and reload the extension when changes are made. +In addition, it will also start up a browser instance with the extension loaded and SIGARRA already opened. -## Watch for changes +If for some reason that command does not work, you can run `yarn watch`, but this command is generally slower and less reliable. -```sh -sudo yarn watch [firefox | chrome | safari] -``` +Both commands accept the suffix `:firefox` to build the extension for Firefox instead of Chromium based browsers. -The extension polls the watch webserver for changes, if the page doesn't reload automatically, reload the extension and if that doesn't work, see the service worker/background script console for errors. +## Folder structure -## Load Extension +The `src` folder contains the source code for the extension, which follows the following structure: -You can bundle the extension for `Chrome`, `Firefox`, and `Safari`: +- `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. - - - - - - - - - - - -
Chrome or EdgeFirefoxSafari
-
    -
  1. Open chrome://extensions or edge://extensions
  2. -
  3. Turn on the Developer mode toggle
  4. -
  5. Click on the Load unpacked button
  6. -
  7. Select the folder bundle/chrome
  8. -
-
-
    -
  1. Open about:debugging#/runtime/this-firefox
  2. -
  3. Click on the Load Temporary Add-on... button
  4. -
  5. Select the file bundle/firefox/manifest.json
  6. -
-
-
    -
  1. Open bundle/safari/Sigarra Extension for Sigarra Extension.xcodeproj
  2. -
  3. Click the Play button in Xcode ("start the active scheme")
  4. -
  5. Configure Safari in macOS to run unsigned extensions
  6. -
-
+ - `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. -#### This respository was based on the [typefully/minimal-twitter](https://github.com/typefully/minimal-twitter) extension repository +- `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/assets/mac-icon/README.md b/assets/mac-icon/README.md deleted file mode 100644 index 6bb7d2c..0000000 --- a/assets/mac-icon/README.md +++ /dev/null @@ -1,18 +0,0 @@ -This folder contains the source files for the Mac icon. These files can be selected and dragged in the `Assets.xcassets` folder in Xcode, on the `AppIcon` tab. - -The icons assets are generated from a single `mac-icon.png` file with ImageMagick, which you can install on your Mac with `brew install imagemagick`. - -To generate the assets, `cd` into this folder and run: - -``` -convert mac-icon.png -resize 16x16 -gravity center -background transparent -extent 16x16 mac-icon-16.png -convert mac-icon.png -resize 32x32 -gravity center -background transparent -extent 32x32 mac-icon-32.png -convert mac-icon.png -resize 128x128 -gravity center -background transparent -extent 128x128 mac-icon-128.png -convert mac-icon.png -resize 256x256 -gravity center -background transparent -extent 256x256 mac-icon-256.png -convert mac-icon.png -resize 512x512 -gravity center -background transparent -extent 512x512 mac-icon-512.png -convert mac-icon.png -resize 32x32 -gravity center -background transparent -extent 32x32 mac-icon-16@2x.png -convert mac-icon.png -resize 64x64 -gravity center -background transparent -extent 64x64 mac-icon-32@2x.png -convert mac-icon.png -resize 256x256 -gravity center -background transparent -extent 256x256 mac-icon-128@2x.png -convert mac-icon.png -resize 512x512 -gravity center -background transparent -extent 512x512 mac-icon-256@2x.png -convert mac-icon.png -resize 1024x1024 -gravity center -background transparent -extent 1024x1024 mac-icon-512@2x.png -``` \ No newline at end of file diff --git a/assets/mac-icon/mac-icon-128.png b/assets/mac-icon/mac-icon-128.png deleted file mode 100644 index 55edd96..0000000 Binary files a/assets/mac-icon/mac-icon-128.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-128@2x.png b/assets/mac-icon/mac-icon-128@2x.png deleted file mode 100644 index 7c8b110..0000000 Binary files a/assets/mac-icon/mac-icon-128@2x.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-16.png b/assets/mac-icon/mac-icon-16.png deleted file mode 100644 index c0fbb49..0000000 Binary files a/assets/mac-icon/mac-icon-16.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-16@2x.png b/assets/mac-icon/mac-icon-16@2x.png deleted file mode 100644 index d8d6270..0000000 Binary files a/assets/mac-icon/mac-icon-16@2x.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-256.png b/assets/mac-icon/mac-icon-256.png deleted file mode 100644 index 7c8b110..0000000 Binary files a/assets/mac-icon/mac-icon-256.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-256@2x.png b/assets/mac-icon/mac-icon-256@2x.png deleted file mode 100644 index 6cc37db..0000000 Binary files a/assets/mac-icon/mac-icon-256@2x.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-32.png b/assets/mac-icon/mac-icon-32.png deleted file mode 100644 index 57a4468..0000000 Binary files a/assets/mac-icon/mac-icon-32.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-32@2x.png b/assets/mac-icon/mac-icon-32@2x.png deleted file mode 100644 index ed522ea..0000000 Binary files a/assets/mac-icon/mac-icon-32@2x.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-512.png b/assets/mac-icon/mac-icon-512.png deleted file mode 100644 index 6cc37db..0000000 Binary files a/assets/mac-icon/mac-icon-512.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon-512@2x.png b/assets/mac-icon/mac-icon-512@2x.png deleted file mode 100644 index 636c317..0000000 Binary files a/assets/mac-icon/mac-icon-512@2x.png and /dev/null differ diff --git a/assets/mac-icon/mac-icon.png b/assets/mac-icon/mac-icon.png deleted file mode 100644 index 7dc00fc..0000000 Binary files a/assets/mac-icon/mac-icon.png and /dev/null differ diff --git a/background.js b/background.js deleted file mode 100644 index 40397dc..0000000 --- a/background.js +++ /dev/null @@ -1,44 +0,0 @@ -const sigarraRegex = /.*:\/\/sigarra\.up\.pt\/feup\/.*/; - -chrome.runtime.onInstalled.addListener((object) => { - if (object.reason === "install") { - chrome.tabs.query({ url: "*://sigarra.up.pt/feup/*" }, (tabs) => { - tabs.forEach((tab) => { - chrome.tabs.reload(tab.id); - }); - }); - - if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) { - chrome.tabs.create({ - url: chrome.runtime.getURL("html/autorize.html") - }); - }else{ - chrome.tabs.create({ - url: chrome.runtime.getURL("html/installed.html") - }); - } - } -}); - - -chrome.runtime.onMessage.addListener(async (message, sender, sendResponse) => { - if(!sender.tab.active){ - console.log("tab not active skipping message...") - return; - } - if (message.type == "login") { - const cookie = await chrome.cookies.get({ name: "SI_SESSION", url: sender.tab.url }) - console.log(cookie) - if(cookie == null || cookie.value === "0"){ - sendResponse(false); - return; - } - message.auto_login.verifed = true; - await chrome.storage.local.set({ auto_login: message.auto_login }); - chrome.tabs.reload(sender.tab.id); - } -}); - -chrome.permissions.onRemoved.addListener((permissions) => { - //TODO: -}); \ No newline at end of file diff --git a/bundle-script.js b/bundle-script.js deleted file mode 100644 index 1ac4941..0000000 --- a/bundle-script.js +++ /dev/null @@ -1,256 +0,0 @@ -import { exec } from "child_process"; -import { copy, pathExists } from "fs-extra"; -import { copyFile, rm, writeFile, appendFile, readFile} from "fs/promises"; -import process, { argv } from "process"; -import zipper from "zip-local"; -import { MANIFEST_CHROME, MANIFEST_FIREFOX } from "./manifest.js"; -import klaw from "klaw"; -import * as path from 'path'; - -const CHANGES_FILENAME = ".changes.json" - - -let lastChangedFiles = new Map(); -const loadLastChangedFiles = async () => { - if(await pathExists(CHANGES_FILENAME)){ - lastChangedFiles = new Map(Object.entries( - JSON.parse( - (await readFile(CHANGES_FILENAME)).toString() - ) - )); - } -} - -let newChangedFiles = new Map(); -const writeNewChangedFiles = async () => { - await writeFile(CHANGES_FILENAME, JSON.stringify(Object.fromEntries(newChangedFiles))); -} - - - -const runCommand = (command, yes) => - new Promise((resolve, reject) => { - exec(yes ? `echo "y" | ${command}` : command, (error, stdout, stderr) => { - if (error) { - reject(error); - } else { - resolve({ stdout, stderr }); - } - }); - }); - -const bundle = async (manifest, bundleDirectory, browserFunc) => { - try { - // Remove old bundle directory - await rm(bundleDirectory, { recursive: true, force: true }); // requires node 14+ - console.log(`🧹 Cleaned up \`${bundleDirectory}\` directory.`); - - // Run both build scripts - const runBuildScript = (directory) => { - return new Promise(async (resolve, reject) => { - let intervalId; - let files = new Map(); - klaw(directory, {filter: (path) => { - return !(path.includes("out") - || path.includes("node_modules") || path.includes(".next") || path.includes(".parcel-cache")); - }}) - .on("data", (item) => { - if(!files.has(item.path) && !item.stats.isDirectory()) files.set(item.path, item.stats.mtimeMs); - }) - .on("end", async () => { - let shouldRunBool = false; - for(let file of files.entries()){ - if(!lastChangedFiles.has(file[0])){ - shouldRunBool = true; - break; - } else if(lastChangedFiles.get(file[0]) < file[1]){ - shouldRunBool = true; - break; - } - } - newChangedFiles = new Map([...newChangedFiles, ...files]); - if(!shouldRunBool){ - console.log(`⏭️ Skipping building of ${directory} because there are no modifications...`); - resolve(); - return; - } - console.log(`🏗️ Building ${directory} after modifications...`); - try { - await runCommand(`cd ./${directory} && yarn && yarn build`); - resolve(); - } catch (error) { - console.error( - `Error running build script for ${directory}: ${error}` - ); - reject(error); - } - }); - - - }); - }; - - await loadLastChangedFiles(); - await runBuildScript("popup"); - await runBuildScript("content-scripts"); - await writeNewChangedFiles(); - - console.log("🔥 Built popup and content scripts."); - - // Bundle popup Next.js export - await copy("popup/out", `${bundleDirectory}`); - console.log(`🚗 Moved export to bundle.`); - - // Bundle content-scripts - await copy("content-scripts/dist", `${bundleDirectory}/dist`); - console.log(`🚗 Moved content_scripts to bundle.`); - - // Bundle background.js - await copyFile("background.js", `${bundleDirectory}/background.js`); - console.log(`🚗 Moved background.js to bundle.`); - - // Bundle css - await copy("css", `${bundleDirectory}/css`); - console.log(`🚗 Moved css to bundle.`); - - // Bundle js - await copy("js", `${bundleDirectory}/js`); - console.log(`🚗 Moved js to bundle.`); - - // Bundle custom fonts - // await copy("fonts", `${bundleDirectory}/fonts`); - // console.log(`🚗 Moved fonts to bundle.`); - - // Bundle images - await copy("images", `${bundleDirectory}/images`); - console.log(`🚗 Moved images to bundle.`); - - // Bundle html - await copy("html", `${bundleDirectory}/html`); - console.log(`🚗 Moved extension pages to bundle.`); - - // Create manifest - await writeFile( - `${bundleDirectory}/manifest.json`, - Buffer.from(JSON.stringify(manifest, null, 2)), - "utf8" - ); - - await browserFunc(bundleDirectory); - - // Done. - console.log(`📦 Bundled \`${bundleDirectory}\`.`); - - // Zip the directory - zipper.sync - .zip(`./${bundleDirectory}`) - .compress() - .save(`./bundle/${bundleDirectory.replace("bundle/", "")}.zip`); - - console.log( - `🧬 Zipped \`${bundleDirectory}\` to \`bundle/${bundleDirectory.replace( - "bundle/", - "" - )}.zip\`.` - ); - } catch (error) { - console.error(error); - } -}; - - - -const processArguments = async () => { - if(process.argv.length < 3){ - console.log("Error: didn't supply a build option..."); - printUsageAndExit(); - } - let option = process.argv[2].toLowerCase(); - let debugMode = true; - if(process.argv.length >= 4){ - if(!(process.argv[3] === "release" || process.argv[3] === "debug")){ - console.log("Error: 2nd argument should be either release or debug"); - printUsageAndExit(); - } - debugMode = argv[3] === "debug"; - } - const allBrowserDebug = (bundleDirectory) => { - return new Promise((resolve) => { - let allBrowserFiles = [] - klaw("dev", {depthLimit: 1}) - .on("data", (item) => { - if(!item.stats.isDirectory()){ - allBrowserFiles.push(item.path) - } - }) - .on("end", async () => { - for(let file of allBrowserFiles){ - await appendFile(`${bundleDirectory}/${path.basename(file)}`, await (await readFile(file)).toString()); - } - resolve(); - }); - }) - - } - - const firefoxDebug = async (bundleDirectory) => { - if(debugMode){ - await allBrowserDebug(bundleDirectory); - } - }; - switch (option) { - case "all": - case "chrome": - var manifest = MANIFEST_CHROME; - if(debugMode){ - manifest.host_permissions = [...manifest.host_permissions, "https://localhost:8069/*"] - manifest.permissions = [...manifest.permissions, "alarms"]; - } - await bundle(manifest, "bundle/chrome", - async (bundleDirectory) => { - if(debugMode){ - await allBrowserDebug(bundleDirectory); - } - }); - if(option != "all") break; - - case "firefox": - var manifest = MANIFEST_FIREFOX; - if(debugMode){ - manifest.host_permissions = [...manifest.host_permissions, "https://localhost:8069/*"] - manifest.permissions = [...manifest.permissions, "alarms"] - } - await bundle(manifest, "bundle/firefox", firefoxDebug); - if(option != "all") break; - - case "safari": - var manifest = MANIFEST_FIREFOX; - if(debugMode){ - manifest.host_permissions = [...manifest.host_permissions, "https://localhost:8069/*"] - manifest.permissions = [...manifest.permissions, "alarms"] - } - if(process.platform !== "darwin"){ - console.log("Skipping safari build since we are not on MacOS..."); - break; - } - if(option != "all") await bundle(MANIFEST_FIREFOX, "bundle/firefox"); - - await runCommand(generateSafariProjectCommand, true); - await runCommand(fixBundleIdentifierCommand, true); - - break; - } -}; - - - -const generateSafariProjectCommand = `xcrun /Applications/Xcode.app/Contents/Developer/usr/bin/safari-web-extension-converter bundle/firefox --project-location bundle/safari --app-name 'Sigarra Extension' --bundle-identifier 'pt.up.fe.ni.sigarra-extension'`; -// The first command currently ignores the full --bundle-identifier flag (it still take the company name), so a replace is required to make sure it matches our bundle identifier -const fixBundleIdentifierCommand = `find "bundle/safari/Sigarra Extension" \\( -name "*.swift" -or -name "*.pbxproj" \\) -type f -exec sed -i '' 's/pt.up.fe.ni.sigarra-extension/pt.up.fe.ni.sigarra-extension/g' {} +`; - -await processArguments(); - -function printUsageAndExit() { - console.log("Usage: yarn bundle all | firefox | chrome | safari "); - process.exit(1); -} diff --git a/content-scripts/package.json b/content-scripts/package.json deleted file mode 100644 index 914966b..0000000 --- a/content-scripts/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "sigarra-extension-content-scripts", - "source": "src/index.js", - "main": "dist/main.js", - "scripts": { - "clean": "rimraf dist && rimraf .parcel-cache", - "watch": "parcel watch", - "build": "parcel build" - }, - "devDependencies": { - "parcel": "^2.8.0", - "rimraf": "^5.0.1" - }, - "license": "MIT" -} diff --git a/content-scripts/src/index.js b/content-scripts/src/index.js deleted file mode 100644 index 2085b8d..0000000 --- a/content-scripts/src/index.js +++ /dev/null @@ -1,48 +0,0 @@ -import { - injectOverrideFunctions, - reverseDateDirection, - currentAccountPage -} from "./modules/initialize"; -import { injectAllChanges, userPreferences } from "./modules/options/all"; -import constructNewData from "./modules/utilities/constructNewData"; -import { getStorage } from "./modules/utilities/storage"; -import { changeProfileLink } from "./modules/links"; -import { rememberLogin } from "./modules/login"; -import { replaceIcons } from "./modules/icons"; -import { teacherPage } from "./pages/teacher_page"; -import { improveSchedule } from "./modules/schedule"; -/*-- -- Docs: https://developer.chrome.com/docs/extensions/reference/storage/#synchronous-response-to-storage-updates -- Listen to Chrome Storage changes -- Inject styles in respond to changes ---*/ -chrome.storage.onChanged.addListener((changes) => { - const newChangesData = constructNewData(changes); - rememberLogin(); - injectAllChanges(newChangesData); -}); - -/*-- -- Initializing function, runs once at start -- Get Chrome Storage and inject respective styles ---*/ -const init = async () => { - // // Watch for resize events - // addResizeListener(); - - // // Inject user preferences - const data = await getStorage(userPreferences); - injectAllChanges(data); - rememberLogin(data); - changeProfileLink(); - teacherPage(); - - injectOverrideFunctions(); - - reverseDateDirection(); //TO FIX: the sort funcionality stop working because of this - currentAccountPage(); - replaceIcons(); - improveSchedule(); -}; - -init(); diff --git a/content-scripts/src/modules/icons/index.js b/content-scripts/src/modules/icons/index.js deleted file mode 100644 index 6abfa9a..0000000 --- a/content-scripts/src/modules/icons/index.js +++ /dev/null @@ -1,162 +0,0 @@ -import { - BANNER_ICON_MAP, - BG_IMAGE_ICON_MAP, - FA_ICON_MAP, - IMG_ICON_MAP, - EVENTS, -} from "./constants"; - -const addCSS = () => { - if (!document.querySelector('link[href$="remixicon.css"]')) - document.head.innerHTML += - ''; -}; - -const replaceImages = () => { - /** @type {(i: HTMLImageElement) => any} */ - const handleImage = (i) => { - const icon = IMG_ICON_MAP[i.src.substring(i.src.lastIndexOf("/") + 1)]; - - let span = null; - - if (i.nextElementSibling?.matches(".se-icon")) - span = i.nextElementSibling; - - if (icon === undefined) { - span?.remove(); - i.classList.remove("se-hidden-icon"); - return; - } - - i.classList.add("se-hidden-icon"); - - if (icon === "") { - span?.remove(); - return; - } - - if (!span) { - span = document.createElement("span"); - i.insertAdjacentElement("afterend", span); - copyEvents(i, span); - } - - size = Math.max(Math.round(Math.max(i.width, i.height) / 24) * 24, 24); - - copyAttrs(i, span); - span.classList.add(`ri-${icon}-line`); - span.style.fontSize = `${size}px`; - span.classList.add("se-icon"); - span.classList.remove("se-hidden-icon"); - }; - - new MutationObserver((ms) => - ms.forEach((m) => { - if (m.target instanceof HTMLImageElement) handleImage(m.target); - else if (m.addedNodes) - m.addedNodes.forEach((n) => { - if (n instanceof HTMLImageElement) handleImage(n); - else if (n instanceof HTMLElement) - n.querySelectorAll("img").forEach(handleImage); - }); - }) - ).observe(document, { - subtree: true, - childList: true, - attributeFilter: ["src"], - }); - - document.querySelectorAll("img").forEach(handleImage); -}; - -const copyAttrs = (el1, el2) => { - for (const attr of el1.attributes) - try { - el2.setAttribute(attr.name, attr.value); - } catch (error) { - console.error(error); - } -}; - -const copyEvents = (el1, el2) => { - for (const event of EVENTS) - el2.addEventListener(event, (e) => - el1.dispatchEvent(new e.constructor(e.type, e)) - ); -}; - -/** - * @param {HTMLElement} el1 - * @param {HTMLElement} el2 - */ -const replaceWithKeepAttrs = (el1, el2) => { - for (const attr of el1.attributes) - try { - el2.setAttribute(attr.name, attr.value); - } catch (error) { - console.error(error); - } - - el2.append(...el1.children); - - el1.replaceWith(el2); -}; - -const replaceFA = () => { - document.querySelectorAll(".fa").forEach((i) => { - i.classList.remove("fa", "fa-fw"); - - i.classList.forEach((c) => { - if (!c.startsWith("fa-")) return; - - const icon = FA_ICON_MAP[c.replace("fa-", "")]; - if (icon) { - i.classList.remove(c); - i.classList.add(`ri-${icon}-line`, "se-icon"); - } - }); - }); -}; - -const replaceBgImages = () => { - Object.entries(BG_IMAGE_ICON_MAP).forEach(([selector, icon]) => { - document.querySelectorAll(selector).forEach((i) => { - if (icon === "") return i.classList.add("se-hidden-icon"); - - const span = document.createElement("span"); - span.classList.add("se-icon"); - span.classList.add(`ri-${icon}-line`); - - i.classList.add("se-remove-icon"); - - if (i.tagName == "img") replaceWithKeepAttrs(i, span); - else i.insertBefore(span, i.firstChild); - }); - }); -}; - -const replaceBanners = () => { - Object.entries(BANNER_ICON_MAP).forEach(([k, v]) => { - document.querySelectorAll(`.${k}`).forEach((i) => { - const span = document.createElement("span"); - span.innerHTML = i.innerHTML; - i.innerText = ""; - - const icon = document.createElement("span"); - icon.classList.add("se-icon", `ri-${v}-line`); - - i.append(icon, span); - }); - }); -}; - -// TODO (toino): handle this mess of a page -// https://sigarra.up.pt/feup/pt/FEST_GERAL.INQ_RAIDES_EDIT - -export const replaceIcons = () => { - addCSS(); - replaceImages(); - replaceFA(); - replaceBgImages(); - replaceBanners(); -}; diff --git a/content-scripts/src/modules/initialize.js b/content-scripts/src/modules/initialize.js deleted file mode 100644 index 4a2e922..0000000 --- a/content-scripts/src/modules/initialize.js +++ /dev/null @@ -1,254 +0,0 @@ -import throttle from "./utilities/throttle"; -import { getPath } from "./utilities/sigarra"; - -// Resize Listener -export const addResizeListener = () => { - window.addEventListener( - "resize", - throttle(async () => { - /* - - Code here - - */ - }, 1000) - ); -}; - -// Append override-functions.js to the page -export const injectOverrideFunctions = () => { - const script = document.createElement("script"); - script.src = chrome.runtime.getURL("js/override-functions.js"); - document.body.appendChild(script); -} - -/** - * Reverse the date direction - * Ex: 2023-10-05 to 05-10-2023 - */ -export const reverseDateDirection = () => { - document.querySelectorAll(".data").forEach(date => { - const dateObj = new Date(date.innerHTML); - if(dateObj instanceof Date && !isNaN(dateObj)){ - date.innerHTML = date.innerHTML.split('-').reverse().join('-'); - } - }); -} - -export const currentAccountPage = () => { - if(getPath() != "gpag_ccorrente_geral.conta_corrente_view") return; - - const contaCorrente = document.getElementById("GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW"); - if(contaCorrente){ - - tabs = contaCorrente.querySelectorAll(".tab") - - // merge "Crédito" and "Débito" collumns and remove collumns - tabs.forEach((tab, tab_index) => { - let creditColumnIndex; - let columnsToRemove = []; - rows = [...(tab.querySelectorAll("thead > tr, tbody > tr"))]; - if(rows.length == 0) return; - - headerTitles = document.querySelectorAll("ul.ui-tabs-nav > li > a") - headerTitles = [...headerTitles].map(title => title.textContent) - headerCells = rows[0].querySelectorAll("th"); - headerCells.forEach((th, index) => { - if(th.innerHTML == "Débito"){ - th.innerHTML = "Valor"; - }else if(th.innerHTML == "Crédito"){ - creditColumnIndex = index - // Colspan - colSpan = headerCells[0].colSpan; - if(colSpan > 1) creditColumnIndex += colSpan; - th.remove() - } - - // Remove "Valor Pago" Column - if(th.innerHTML == "Valor Pago"){ - columnsToRemove.push(index + headerCells[0].colSpan - 1); - th.remove() - } - - // Remove "Valor em Falta" Column - if(th.innerHTML == "Valor em Falta"){ - th.innerHTML = ""; - th.colSpan = 1; - columnsToRemove.push(index + headerCells[0].colSpan - 1); - } - - // Rename "Juros em Mora" Column - if(th.innerHTML == "Juros de Mora"){ - th.innerHTML = "Juros"; - // Remove "Juros de Mora" Column in "Juros de mora Proprinas" tab - if(headerTitles[tab_index] == "Juros de mora Propinas"){ - columnsToRemove.push(index + headerCells[0].colSpan - 1); - th.remove() - } - } - - // Remove "Débito em Falta" Column - if(th.innerHTML == "Débito em Falta"){ - columnsToRemove.push(index + headerCells[0].colSpan - 1); - th.remove() - } - - // Remove "Valor em Falta" Column - if(th.innerHTML == "Documento"){ - th.colSpan = 1; - columnsToRemove.push(index + headerCells[0].colSpan - 1); - } - - // Remove "Estado" Column - if(th.innerHTML == "Estado"){ - columnsToRemove.push(index + headerCells[0].colSpan - 1); - th.remove(); - } - }); - - rows.shift(); - - rows.forEach(row => { - cells = [...row.querySelectorAll("td")] - columnsToRemove.forEach(columnIndex => { - if(!cells[0].classList.contains("credito")){ - cells[columnIndex].remove(); - } - }) - }) - - if(creditColumnIndex){ - rows.forEach((row, index) => { - isGeralExtract = headerTitles[tab_index] == "Extrato Geral"; - - cells = [...row.querySelectorAll("td")] - debitCell = cells[creditColumnIndex-1]; - - if(debitCell.innerHTML == " "){ - debitCell.innerHTML = "" - debitCell.classList.add("n"); - if(isGeralExtract){ - debitCell.classList.add("positive") - debitCell.innerHTML = "+" - } - debitCell.innerHTML += cells[creditColumnIndex].innerHTML; - }else{ - if(isGeralExtract){ - debitCell.classList.add("negative") - debitCell.innerHTML = "-" + debitCell.innerHTML; - } - } - cells[creditColumnIndex].remove(); - if(cells[0].classList.contains("credito")){ //remove "Multibanco - SIBS" row - //TODO: adicionar data a "pago em" - - //change the last cell of the last row to the value of the last cell of the current row - lastRowCells = rows[index-1].querySelectorAll("td") - - document_file = cells[cells.length - 1].querySelector("a") - if(document_file){ - lastRowCells[lastRowCells.length - 1].innerHTML = ""; - lastRowCells[lastRowCells.length - 1].appendChild(document_file) - lastRowCells[lastRowCells.length - 1].style.paddingRight = "0.6rem"; - } - row.remove(); - } - }); - } - }) - - // Change "Data" collumn position in "Extrato Geral" tab - const geralExtractTable = document.querySelector("#tab_extracto_geral"); - if(geralExtractTable){ - geralExtractTable.querySelectorAll("tr").forEach(row => { - cells = [...row.querySelectorAll("td"), ...row.querySelectorAll("th")] - len = cells.length; - row.insertBefore(cells[1], cells[0]); - }) - } - - // Switch "Refência" action button to the right - if(tabs.length > 0){ - tabs[0].querySelectorAll("tbody > tr").forEach(row => { - cells = [...row.querySelectorAll("td"), ...row.querySelectorAll("th")] - len = cells.length; - row.insertBefore(cells[len - 1], cells[len - 2]); - }) - } - - statusProperties = { - "Pago":{ - class: "success", - text: "Pago" - }, - "Não pago mas prazo ainda não foi excedido":{ - class: "pending", - text: "Pendente" - }, - "Anulado":{ - class:"cancelled", - text: "Anulado" - }, - "Prazo excedido": { - class: "danger", - text: "Excedido" - } - } - - // Improve the status badge - tabs.forEach((tab) => { - tab.querySelectorAll("tbody > tr").forEach(row => { - cells = [...row.querySelectorAll("td")] - if(cells.length == 0) return; - - // Get title atriuibute from the first cell - const cellStatus = cells[0].querySelector("img")?.getAttribute("title") ?? null; - if(cellStatus == null) return; - - // Creating a new status badge - statusDiv = document.createElement("div"); - statusDiv.innerHTML = statusProperties[cellStatus].text - statusDiv.classList.add("badge"); - statusDiv.classList.add("badge-" + statusProperties[cellStatus].class); - statusDiv.title = cellStatus; - - cells[0].innerHTML = statusDiv.outerHTML; - }) - }) - - // Remove "Movimentos" h2 - contaCorrente.previousElementSibling.remove() - - // Create Balance and NIF cards - const saldo = document.querySelector(".formulario #span_saldo_total").textContent; - const saldoCard = document.createElement("div"); - saldoCard.classList.add("card"); - const title = document.createElement("p"); - title.innerHTML = "Saldo"; - const saldoValue = document.createElement("h3"); - saldoValue.innerHTML = saldo + "€"; - saldoCard.appendChild(title); - saldoCard.appendChild(saldoValue); - - const nif = Array.from(document.querySelectorAll(".formulario .formulario-legenda")).filter(el => el.innerHTML.includes("N.I.F."))[0].nextElementSibling.innerHTML; - const nifCard = document.createElement("div"); - nifCard.classList.add("card"); - const nifTitle = document.createElement("p"); - nifTitle.innerHTML = "NIF"; - const nifValue = document.createElement("h3"); - nifValue.innerHTML = nif; - nifCard.appendChild(nifTitle); - nifCard.appendChild(nifValue); - - accountDetails = document.createElement("div"); - accountDetails.style.display = "flex"; - accountDetails.style.gap = "1rem"; - accountDetails.style.marginBottom = "0.5rem"; - - accountDetails.appendChild(saldoCard); - accountDetails.appendChild(nifCard); - contaCorrente.insertBefore(accountDetails, contaCorrente.firstChild); - - return; - } -} \ No newline at end of file diff --git a/content-scripts/src/modules/links.js b/content-scripts/src/modules/links.js deleted file mode 100644 index 66f7a48..0000000 --- a/content-scripts/src/modules/links.js +++ /dev/null @@ -1,16 +0,0 @@ -import { isAuth, getUP } from "./utilities/sigarra"; - -/** - * Changes the link on the top bar Profile Picture and Name - */ -export const changeProfileLink = async () => { - if (isAuth()) { - const nome = document.querySelector('.autenticado > .nome'); - const pfp = document.querySelector('.autenticado > .fotografia'); - const up = await getUP(); - const newLink = `https://sigarra.up.pt/feup/pt/fest_geral.cursos_list?pv_num_unico=${up}`; - nome.href = newLink; - pfp.href = newLink; - } - } - \ No newline at end of file diff --git a/content-scripts/src/modules/login.js b/content-scripts/src/modules/login.js deleted file mode 100644 index 0365daf..0000000 --- a/content-scripts/src/modules/login.js +++ /dev/null @@ -1,89 +0,0 @@ -import { getStorage, setStorage } from "./utilities/storage"; - -const emptyLogin = { auto_login: { verifed: false, user_info: "" } }; - -var auto_login; - -export const rememberLogin = async (data) => { - if (!(data?.autoLogin === "on")) return; - - auto_login = await getStorage("auto_login"); - console.log(auto_login); - if (auto_login === undefined) { - await setStorage(emptyLogin); - auto_login = emptyLogin; - } - if (!auto_login.verifed) { - if (document.querySelector(".autenticado") == null) { - //inject button onClick - document - .querySelector(".autenticacao > form") - .addEventListener("submit", loginButtonHandler); - } - - } else if (document.querySelector(".autenticado") == null) { - const res = await tryLogin(auto_login); - if (res.status != 200) { - console.log("Something went wrong while logging in..."); - return; - } - //check if there is a error while loading page - const htmlRes = document.createElement('html'); - htmlRes.innerHTML = await res.text(); - if(htmlRes.querySelector("p.aviso-invalidado") != null){ - await setStorage(emptyLogin); - } - await chrome.runtime.sendMessage({ type: "login", auto_login: auto_login }); - - } - if (document.querySelector(".autenticado") != null) { - document.querySelector(".terminar-sessao").onclick = function () { - setStorage(emptyLogin); - } - }; -}; - - - -function loginButtonHandler(event) { - event.preventDefault(); - auto_login.user_info = btoa(JSON.stringify({ - user: document.getElementById("user").value, - pass: document.getElementById("pass").value - })); - - tryLogin(auto_login).then( - async (res) => { - if (res.status != 200) { - console.log("Something went wrong while logging in..."); - return; - } - const loggedIn = await chrome.runtime.sendMessage({ type: "login", auto_login: auto_login }); - if (loggedIn === false) { - //TODO: (issue #59) show error to user - console.log("Wrong details... try again"); - return; - } - } - ); -} - -async function tryLogin(auto_login) { - const user_info = JSON.parse(atob(auto_login.user_info)); - const formBody = new URLSearchParams(); - formBody.append("p_app", 162); - formBody.append("p_amo", 55); - formBody.append("p_address", "WEB_PAGE.INICIAL"); - formBody.append("p_user", user_info.user); - formBody.append("p_pass", user_info.pass); - const url = new URL('https://sigarra.up.pt/feup/pt/vld_validacao.validacao'); - url.search = formBody.toString(); - return await fetch(url, - { - method: "POST", - headers: { - "Content-Type": "application/x-www-form-urlencoded" - } - } - ); -} diff --git a/content-scripts/src/modules/options/all.js b/content-scripts/src/modules/options/all.js deleted file mode 100644 index ade2944..0000000 --- a/content-scripts/src/modules/options/all.js +++ /dev/null @@ -1,13 +0,0 @@ -import { - hideShortcuts, -} from "./some_options"; - -// Array of user preferences, passed to `injectAllChanges` -export const userPreferences = [ - "shortcuts", - "autoLogin" -]; - -export const injectAllChanges = (data) => { - hideShortcuts(data?.shortcuts); -}; diff --git a/content-scripts/src/modules/options/some_options.js b/content-scripts/src/modules/options/some_options.js deleted file mode 100644 index fd03c85..0000000 --- a/content-scripts/src/modules/options/some_options.js +++ /dev/null @@ -1,24 +0,0 @@ -//import selectors from "../../selectors"; -import addStyles from "../utilities/addStyles"; -import removeElement from "../utilities/removeElement"; -//import { getStorage } from "../utilities/storage"; - -// Function to hide shortcuts -export const hideShortcuts = (shortcuts) => { - switch (shortcuts) { - case "on": - addStyles( - "se-hide-shortcuts", - ` - #caixa-atalhos{ - display: none - } - ` - ); - break; - - case "off": - removeElement("se-hide-shortcuts"); - break; - } -}; \ No newline at end of file diff --git a/content-scripts/src/modules/utilities/addStyles.js b/content-scripts/src/modules/utilities/addStyles.js deleted file mode 100644 index 9943f0e..0000000 --- a/content-scripts/src/modules/utilities/addStyles.js +++ /dev/null @@ -1,13 +0,0 @@ -import removeElement from "./removeElement"; - -// Utility function to inject CSS into page -export default function addStyles(id, css) { - // First remove before adding - removeElement(id); - - const head = document.querySelector("head"); - const style = document.createElement("style"); - style.id = id; - style.textContent = `${css}`; - head.appendChild(style); -} diff --git a/content-scripts/src/modules/utilities/constructNewData.js b/content-scripts/src/modules/utilities/constructNewData.js deleted file mode 100644 index 4ae3229..0000000 --- a/content-scripts/src/modules/utilities/constructNewData.js +++ /dev/null @@ -1,21 +0,0 @@ -// Utility function to create data for `injectAllChanges()` -export default function constructNewData(changes) { - // Creates an array of objects from changes - // The value of each object is the new value - const newValuesArray = Object.entries(changes).map((item) => { - const itemKey = item[0]; - const itemValue = item[1]?.newValue; - return { [itemKey]: itemValue }; - }); - - // Recreate a hash map to pass to `injectAllChanges()` - const newChangesData = Object.fromEntries( - newValuesArray.map((item) => { - const itemKey = Object.keys(item)[0]; - const itemValue = Object.values(item)[0]; - return [itemKey, itemValue]; - }) - ); - - return newChangesData; -} diff --git a/content-scripts/src/modules/utilities/math.js b/content-scripts/src/modules/utilities/math.js deleted file mode 100644 index 981d664..0000000 --- a/content-scripts/src/modules/utilities/math.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @param {number} a - * @param {number} b - * @returns {number} - */ -export const gcd = (a, b) => (!b ? a : gcd(b, a % b)); - -/** - * @param {number} a - * @param {number} b - * @returns {number} - */ -export const lcm = (a, b) => (a * b) / gcd(a, b); - -/** - * - * @param {...number} numbers - * @returns {number} - */ -export const lcmAll = (...numbers) => numbers.reduce(lcm); diff --git a/content-scripts/src/modules/utilities/pageUtils.js b/content-scripts/src/modules/utilities/pageUtils.js deleted file mode 100644 index 8a2858d..0000000 --- a/content-scripts/src/modules/utilities/pageUtils.js +++ /dev/null @@ -1,122 +0,0 @@ -export function groupSectionTitleAndContent(selector) { - //this detects if an element is an h3 and groups - //with the next element until the next h3 appears, if any - const outerElement = document.querySelector(selector); - let elementList = []; - const listOfRows = [...outerElement.children] - for (const row of listOfRows) { - if (row.nodeName === "H3" && elementList.length === 0) { - elementList.push(row) - continue - } - if (row.nodeName === "H3" && elementList.length !== 0) { - const div = document.createElement("div") - elementList.forEach((element) => { - element.remove() - div.appendChild(element) - }) - outerElement.appendChild(div) - elementList = [row] - continue - } - if (elementList.length === 0) { - continue - } - elementList.push(row) - } - if (elementList.length !== 0) { - const div = document.createElement("div") - elementList.forEach((element) => { - element.remove() - div.appendChild(element) - }) - outerElement.appendChild(div) - } -} - -export function moveChildrenToAncestor(selector){ - const element = document.querySelector(selector); - const parent = element.parentElement; - const listOfChildren = [...element.children]; - listOfChildren.forEach((child)=>{ - child.remove(); - parent.insertBefore(child, element); - }); - element.remove(); -} - - -export function removeTwoColumnTable(tableSelector, inverted=false){ - const table = document.querySelector(tableSelector); - if(table === null || table.tagName !== "TABLE") - throw Error("Couldnt find table with " + tableSelector + " selector"); - const tbody = table.children[0]; - const div = document.createElement("div"); - div.classList.add("se-key-pair-table") - for(const tr of tbody.children){ - if(tr.children.length !== 2){ - throw Error("Table with selector " + tableSelector + " isn't a two column table"); - } - if (tr.children[0].children.length === 0){ - const p = document.createElement("p"); - p.textContent = tr.children[0].textContent; - if(!inverted) p.classList.add("se-highlighted-part") - p.classList.add("se-pair-start"); - div.appendChild(p); - } else { - const element = tr.children[0].children[0]; - if(!inverted) element.classList.add("se-highlighted-part"); - p.classList.add("se-pair-start"); - - div.append(element); - } - - - if (tr.children[1].children.length === 0){ - const p = document.createElement("p"); - p.textContent = tr.children[1].textContent; - if(inverted) p.classList.add("se-highlighted-part"); - p.classList.add("se-content-part"); - div.appendChild(p); - - } //sometimes table elements will not also include ::text but also a child element - //aka villate's cellphone when the user is logged on :) - else { - const innerDiv = document.createElement("div") - if(tr.children[1].childNodes[0].nodeValue != ""){ - const p = document.createElement("p"); - p.style.display = "inline"; - p.textContent = tr.children[1].childNodes[0].nodeValue; - innerDiv.append(p); - } - const element = tr.children[1].children[0]; - if(inverted) innerDiv.classList.add("se-highlighted-part"); - innerDiv.classList.add("se-content-part"); - innerDiv.append(element); - div.append(innerDiv); - } - - } - table.parentElement.appendChild(div); - table.remove(); -} - - -export function groupChildrenBySelector(childSelectors, classList){ - if(childSelectors === null) return; - if(childSelectors.length === 0) return; - const parent = document.querySelector(childSelectors[0]).parentElement; - - const groupElement = document.createElement("div"); - - parent.insertBefore(groupElement, document.querySelector(childSelectors[0])); - if(classList !== null) groupElement.classList.add(...classList); - - childSelectors.forEach((childSelector) => { - const child = document.querySelector(childSelector); - if(child === null) return; - child.remove(); - groupElement.appendChild(child); - }); - -} \ No newline at end of file diff --git a/content-scripts/src/modules/utilities/removeElement.js b/content-scripts/src/modules/utilities/removeElement.js deleted file mode 100644 index 75d2bb1..0000000 --- a/content-scripts/src/modules/utilities/removeElement.js +++ /dev/null @@ -1,5 +0,0 @@ -// Utility function to remove DOM element -export default function removeElement(query) { - const element = document.querySelector(query); - element && element.remove(); -} diff --git a/content-scripts/src/modules/utilities/sigarra.js b/content-scripts/src/modules/utilities/sigarra.js deleted file mode 100644 index ff99009..0000000 --- a/content-scripts/src/modules/utilities/sigarra.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Checks if user is authenticated - * - * @returns true if user is authenticated, false otherwise - */ -export const isAuth = async () => { - const authDiv = document.getElementsByClassName("autenticado"); - return authDiv.length > 0; -}; - -/** - * Fetches the user's "up" number - * - * @returns the "up" number unique to each user - */ -export const getUP = async () => { - if (isAuth()) { - const pfp = document.querySelector(".autenticado > .fotografia > img"); - - return pfp.src.substr(-9, pfp.src.length); - } -}; - -/** - * @returns the current location path - */ -export const getPath = () => { - const url = window.location.pathname; - return url.split("/").pop().toLowerCase(); -}; - - diff --git a/content-scripts/src/modules/utilities/storage.js b/content-scripts/src/modules/utilities/storage.js deleted file mode 100644 index 6e6d20c..0000000 --- a/content-scripts/src/modules/utilities/storage.js +++ /dev/null @@ -1,36 +0,0 @@ -/*-- -- Docs: https://developer.chrome.com/docs/extensions/reference/storage/ -- Use storage.local to allow user to store customizations ---*/ - -/* -- Get storage with storage.local -- k => "[key]" (String) -- Don't need to throttle -*/ -export const getStorage = async (k) => { - const promise = new Promise((resolve, _reject) => { - const storageKey = Array.isArray(k) ? k : [k]; - chrome?.storage?.local.get(storageKey, (data) => { - return resolve(Array.isArray(k) ? data : data[k]); - }); - }); - return promise; -}; - -/*-- -- Set storage with storage.local -- kv => {key: value} (Single key value pair) -- Throttle function to prevent hitting API limits -- The maximum number of set, remove, or clear operations = 120 - - 1 min = 60000 ms - - 60000 ms / 120 operations = 500 ms/operation ---*/ -export const setStorage = async (kv) => { - const promise = new Promise((resolve, _reject) => { - chrome?.storage?.local.set(kv, () => { - return resolve(kv); - }); - }); - return promise; -}; diff --git a/content-scripts/src/modules/utilities/throttle.js b/content-scripts/src/modules/utilities/throttle.js deleted file mode 100644 index 24cdba8..0000000 --- a/content-scripts/src/modules/utilities/throttle.js +++ /dev/null @@ -1,27 +0,0 @@ -/*-- -- Simple utility throttle function with no return value -- Example usage: - const throttledFunc = throttle(function() { - // This function will only be called at most once every 1000 milliseconds - }, 1000) ---*/ -export default function throttle(func, limit) { - let lastFunc; - let lastRan; - return function () { - const context = this; - const args = arguments; - if (!lastRan) { - func.apply(context, args); - lastRan = Date.now(); - } else { - clearTimeout(lastFunc); - lastFunc = setTimeout(function () { - if (Date.now() - lastRan >= limit) { - func.apply(context, args); - lastRan = Date.now(); - } - }, limit - (Date.now() - lastRan)); - } - }; -} diff --git a/content-scripts/src/pages/teacher_page.js b/content-scripts/src/pages/teacher_page.js deleted file mode 100644 index 45d4e94..0000000 --- a/content-scripts/src/pages/teacher_page.js +++ /dev/null @@ -1,187 +0,0 @@ -import {groupSectionTitleAndContent, groupChildrenBySelector, moveChildrenToAncestor, moveChildrenToAncestor, removeTwoColumnTable} from "../modules/utilities/pageUtils" - - -const publicationWebsites = { - "authenticus.pt": { icon: "authenticusID.png", text: "Authenticus ID" }, - "orcid.org": { icon: "orcid.png", text: "ORCID" }, - "cienciavitae.pt": { icon: "cienciaID.png", text: "Ciência ID" }, - "publons.com": { icon: "researchID.png", text: "Research-ID" }, - "scopus.com": { icon: "scopus.png", text: "Scopus" } -} - - -export const teacherPage = () => { - if (!document.location.href.toLowerCase().includes("func_geral.formview")) { - return; - } - makeTitleBar(); - moveResearchSection(); - makePublicationWebsiteButtons(); - groupSectionTitleAndContent(".informacao-pessoal-funcoes"); - groupSectionTitleAndContent(".informacao-pessoal-dados-dados"); - makeWebsiteButtonIfExists(); - - tagGroupedElements(); - - //nuke the html structure, leaving only the elements that contain the information - moveChildrenToAncestor(".informacao-pessoal-dados-dados"); - moveChildrenToAncestor(".informacao-pessoal-dados"); - moveChildrenToAncestor(".informacao-pessoal-funcoes"); - - - //we group the page contents to be easier to style to - groupChildrenBySelector([".se-teacher-title-bar", ".tabelasz", ".se-website-button"], - ["se-main-info-content"]); - - groupChildrenBySelector([".informacao-pessoal-dados-foto", ".se-main-info-content"], - ["se-main-info-row"]); - - groupChildrenBySelector([".se-contact-info", ".se-roles", ".se-publication-website-list"], - ["se-extra-information-row"]); - - removeTwoColumnTable(".se-contact-info > table", true); - - //i hate sigarra, for some reason it nests one table inside each other - const rolesTable = document.querySelector(".se-roles > table > tbody > tr > td > table"); - if(rolesTable !== null){ - document.querySelector(".se-roles > table").remove(); - document.querySelector(".se-roles").appendChild(rolesTable); - removeTwoColumnTable(".se-roles > table", true); - } - - const investigationTable = document.querySelector(".informacao-pessoal-outras > table > tbody > tr > td > table"); - if(investigationTable !== null){ - document.querySelector(".informacao-pessoal-outras > table").remove(); - document.querySelector(".informacao-pessoal-outras").appendChild(investigationTable); - removeTwoColumnTable(".informacao-pessoal-outras > table", true); - - } - - - - -}; - - -function tagGroupedElements(){ - let contacts = document.querySelector(".informacao-pessoal-dados-dados > div:not(.se-website-button)"); - if(contacts !== null){ - contacts.classList.add("se-contact-info") - } else { - contacts = document.querySelector(".informacao-pessoal-dados-dados > table:not(.tabelasz)") - const div = document.createElement("div") - const informacao_pessoal = document.querySelector(".informacao-pessoal-dados-dados") - const h3 = document.createElement("h3") - h3.textContent = "Contactos" - div.append(h3, contacts) - div.classList.add("se-contact-info") - informacao_pessoal.appendChild(div) - } - const roles = document.querySelector(".informacao-pessoal-funcoes"); - if(roles !== null){ - if(roles.childElementCount === 1){ - roles.children[0].classList.add("se-roles"); - } else if (roles.childElementCount > 1){ - roles.children[0].classList.add("se-roles"); - roles.children[1].classList.add("se-positions"); - } - } - -} - - - -function makeWebsiteButtonIfExists(){ - const websiteIcon = document - .querySelector(".informacao-pessoal-dados-dados > table > tbody > tr:nth-child(1) > td:nth-child(2) > a"); - const informationElement = document.querySelector(".informacao-pessoal-dados-dados") - if(websiteIcon === null) return; - - const websiteLink = websiteIcon.href; - const websiteButton = document.createElement("a"); - websiteButton.classList.add("se-website-button"); - websiteButton.href = websiteLink - websiteButton.textContent = "Website"; - - informationElement.append(websiteButton); - websiteIcon.remove(); - - -} - - - -function makePublicationWebsiteButtons() { - const tabelasz = document.querySelector(".tabelasz > tbody") - const informacaoPessoal = document.querySelector(".informacao-pessoal-dados"); - const websiteList = document.createElement("div") - websiteList.classList.add("se-publication-website-list") - const listOfRows = [...tabelasz.children] - listOfRows.forEach((row) => { - const linkElement = row.querySelector("td:nth-child(2) > a") - if (linkElement === null) { - return; - } - const link = linkElement.href - let found = false; - for (website of Object.keys(publicationWebsites)) { - if (link.includes(website)) { - found = true - const image = document.createElement("img") - image.src = chrome.runtime.getURL("images/publicationWebsiteLogo/" + - publicationWebsites[website].icon); - const text = document.createElement("p") - text.textContent = publicationWebsites[website].text - - const a = document.createElement("a") - a.appendChild(image) - a.appendChild(text) - a.classList.add("se-publication-website-button") - a.href = link - websiteList.appendChild(a) - break; - } - } - - if (found) row.remove() - }) - - - informacaoPessoal.appendChild(websiteList) - -} - -function moveResearchSection() { - const researchSection = document.querySelector(".informacao-pessoal-outras"); - const informacaoPessoal = document.querySelector(".informacao-pessoal-dados"); - researchSection.remove(); - const rolesSection = document.querySelector(".informacao-pessoal-funcoes"); - informacaoPessoal.insertBefore(researchSection, rolesSection); -} - -function makeTitleBar() { - const informacaoPessoal = document.querySelector(".informacao-pessoal"); - - const titleElement = document.querySelectorAll("#conteudoinner > h1")[1]; - const title = titleElement.textContent; - titleElement.remove(); - const siglaRow = document.querySelector(".tabelasz > tbody:nth-child(1) > tr:nth-child(2)"); - const sigla = document.querySelector(".tabelasz > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2) > b:nth-child(1)") - .textContent; - siglaRow.remove(); - - const titleBar = document.createElement("div"); - titleBar.classList.add("se-teacher-title-bar"); - - const newTitle = document.createElement("h1"); - newTitle.textContent = title; - - const newSigla = document.createElement("h3"); - newSigla.textContent = sigla; - - titleBar.appendChild(newTitle); - titleBar.appendChild(newSigla); - - - informacaoPessoal.prepend(titleBar); -} diff --git a/content-scripts/src/selectors.js b/content-scripts/src/selectors.js deleted file mode 100644 index 4ef799b..0000000 --- a/content-scripts/src/selectors.js +++ /dev/null @@ -1,15 +0,0 @@ -const selectors = {}; - -// Layout - -/* Some examples - -selectors.mainWrapper = `main[role="main"]`; -selectors.sidebarLinks = { - home: `[data-testid="AppTabBar_Home_Link"]`, - explore: `[data-testid="AppTabBar_Explore_Link"]`, -}; - -*/ - -export default selectors; diff --git a/content-scripts/yarn.lock b/content-scripts/yarn.lock deleted file mode 100644 index 3a023dd..0000000 --- a/content-scripts/yarn.lock +++ /dev/null @@ -1,1700 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== - dependencies: - "@babel/highlight" "^7.22.5" - -"@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" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" - integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig== - -"@lezer/lr@^0.15.4": - version "0.15.8" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== - dependencies: - "@lezer/common" "^0.15.0" - -"@lmdb/lmdb-darwin-arm64@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.7.11.tgz#b717e72f023d4215d14e4c57433c711a53c782cf" - integrity sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw== - -"@lmdb/lmdb-darwin-x64@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.7.11.tgz#b42898b0742b4a82b8224b742b2d174c449cd170" - integrity sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q== - -"@lmdb/lmdb-linux-arm64@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.7.11.tgz#a8dc8e386d27006cfccbf2a8598290b63d03a9ec" - integrity sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A== - -"@lmdb/lmdb-linux-arm@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.7.11.tgz#2103f48af28336efccaac008fe882dfce33e4ac5" - integrity sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw== - -"@lmdb/lmdb-linux-x64@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.7.11.tgz#d21ac368022a662610540f2ba8bb6ff0b96a9940" - integrity sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng== - -"@lmdb/lmdb-win32-x64@2.7.11": - version "2.7.11" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.7.11.tgz#af2cb4ae6d3a92ecdeb1503b73079417525476d2" - integrity sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng== - -"@mischnic/json-sourcemap@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" - integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA== - dependencies: - "@lezer/common" "^0.15.7" - "@lezer/lr" "^0.15.4" - json5 "^2.2.1" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" - integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" - integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" - integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" - integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" - integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" - integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== - -"@parcel/bundler-default@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.9.2.tgz#0330fac2a39f0c7f91dfed6e4a96e2c0a86fcecc" - integrity sha512-tmhyeNQYJla9509Sq/U12j2fZg0hDojyIyM4wuVWKhkAnDnZjbMKj3m11S1COR5i2aqx9lJjTWj0XPJl5lrcvg== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/graph" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/cache@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.9.2.tgz#fb430cfc6c14c5cf5db8f43e28a0dde655d83313" - integrity sha512-Bde9HmxaO+H5qPbcxBl/JzzZ/7ewoHFDWLOQ4zdfyh+q4IyLS257WAUGm4x6BeNjc1S7YjoelEbBKdgw8mQOig== - dependencies: - "@parcel/fs" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/utils" "2.9.2" - lmdb "2.7.11" - -"@parcel/codeframe@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.9.2.tgz#e4110a46ed082f6821f9c47093ecec3866b847e3" - integrity sha512-+T1POu9uU2tkPi3P25ojtU3CKoGYfirc2bE/1iNyvbuEtpkAzl9UQFXphGqFyuJSI429mP2pWL8SeKG0b5zaUw== - dependencies: - chalk "^4.1.0" - -"@parcel/compressor-raw@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.9.2.tgz#31d7d25fdf4ee201c3bdcfa05bc0209841a7cae6" - integrity sha512-QRrxyiztMjk8Tt4AmP1ibgH7bRrAcrWCjTY/W1wa0fCkEn2QyCg20BGxONg280qXTQD4x2N98X4B3ctAPAxpDw== - dependencies: - "@parcel/plugin" "2.9.2" - -"@parcel/config-default@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.9.2.tgz#deba8e805d5f2efae9bac8ce3bd2d70ab2fa8bcd" - integrity sha512-dRqUKn6YIKTxvKbfO5xfxzMhOMWMCNoZzEWuP/bESW6zXI8krdGmgdu6HxSfCmvPnkz+0SAz8ig2QnjV0KtCcw== - dependencies: - "@parcel/bundler-default" "2.9.2" - "@parcel/compressor-raw" "2.9.2" - "@parcel/namer-default" "2.9.2" - "@parcel/optimizer-css" "2.9.2" - "@parcel/optimizer-htmlnano" "2.9.2" - "@parcel/optimizer-image" "2.9.2" - "@parcel/optimizer-svgo" "2.9.2" - "@parcel/optimizer-swc" "2.9.2" - "@parcel/packager-css" "2.9.2" - "@parcel/packager-html" "2.9.2" - "@parcel/packager-js" "2.9.2" - "@parcel/packager-raw" "2.9.2" - "@parcel/packager-svg" "2.9.2" - "@parcel/reporter-dev-server" "2.9.2" - "@parcel/resolver-default" "2.9.2" - "@parcel/runtime-browser-hmr" "2.9.2" - "@parcel/runtime-js" "2.9.2" - "@parcel/runtime-react-refresh" "2.9.2" - "@parcel/runtime-service-worker" "2.9.2" - "@parcel/transformer-babel" "2.9.2" - "@parcel/transformer-css" "2.9.2" - "@parcel/transformer-html" "2.9.2" - "@parcel/transformer-image" "2.9.2" - "@parcel/transformer-js" "2.9.2" - "@parcel/transformer-json" "2.9.2" - "@parcel/transformer-postcss" "2.9.2" - "@parcel/transformer-posthtml" "2.9.2" - "@parcel/transformer-raw" "2.9.2" - "@parcel/transformer-react-refresh-wrap" "2.9.2" - "@parcel/transformer-svg" "2.9.2" - -"@parcel/core@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.9.2.tgz#edaf55b1ebbf2c3553cb823acc8b1c73376510be" - integrity sha512-Qwn9Fp85gchfDq94chr+of9+xgWQP0G48chP+J/PmZ3TP29sOZ9NsVf+qiGO47UAeNnamBRPeMXyK/Nvv0zQdg== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.9.2" - "@parcel/diagnostic" "2.9.2" - "@parcel/events" "2.9.2" - "@parcel/fs" "2.9.2" - "@parcel/graph" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/package-manager" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/profiler" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - "@parcel/workers" "2.9.2" - abortcontroller-polyfill "^1.1.9" - base-x "^3.0.8" - browserslist "^4.6.6" - clone "^2.1.1" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - json5 "^2.2.0" - msgpackr "^1.5.4" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/diagnostic@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.9.2.tgz#d97cdc1614a6066f04655af5e9cf7c34c93a7476" - integrity sha512-cHvQ3GtC0dJixtt5Ne1SG0vogt6PE9Fu2KmrFMLcL57rowi3sl+W+Lh02sujd/V0ZQOSRV01WdXJXDsiI/na8g== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - nullthrows "^1.1.1" - -"@parcel/events@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.9.2.tgz#6ea1a588b682b4fe3c96d47b12dbd38e2c16ff7e" - integrity sha512-aDKq9gl8vK/LTTsAs3k8wBsFYVQ8NOSa0aC0Thq+l5KRN04U/ljNiDVmxDkwJgAvT0Iv62kT9ooBl6aQPUWNyQ== - -"@parcel/fs-search@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.9.2.tgz#653ee95411a8335d0610aaaac382d233baf60f6f" - integrity sha512-PP1aFLaH5rk8mF8AN62/R68Ne9Xq/VNhj3h1BxdESiHkhRIrM1ZcQ4t4WBaMjPaLXi1jSKLQ8fY50QBVIJKy4Q== - -"@parcel/fs@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.9.2.tgz#6d38258efb52a28babe09d5f7b51e40b3fb3b9f4" - integrity sha512-URKchUywNyoOIcOsmwcxr8gp+CBVjD502Fb6RhAdFhdZV2o3X2BLTGf03fQzSSJ0IDO3jKUTK0UUg/Mz8Vd3Rw== - dependencies: - "@parcel/fs-search" "2.9.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - "@parcel/watcher" "^2.0.7" - "@parcel/workers" "2.9.2" - -"@parcel/graph@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.9.2.tgz#2165ec9bf2503b32045436c186c88929d912c442" - integrity sha512-2lraupLwe6JTzy4KFOsFphV6/Fn3OF6PUOnHY2oQhHdBzWw43a0cbVpyIn8ChvXKlB3YqdId6X7oOutbmh3X8A== - dependencies: - nullthrows "^1.1.1" - -"@parcel/hash@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.9.2.tgz#23ef45b293e70d26918902a5aab96b51e2f32f4d" - integrity sha512-zXjg3BTxevsTe2Ylqsmm2Cw6gcIObaSz2dBjeRXO3LM8ziXJ4c7tOBKIXHPcnc2JmOyp3pmFB1sQaE+qXKh0DQ== - dependencies: - xxhash-wasm "^0.4.2" - -"@parcel/logger@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.9.2.tgz#357303d195b045a0c0ba3eb025ab61817d25f6c7" - integrity sha512-rhb+CZZ4tKbrH585GTec32qxEpbjqrjaAbBRmyjGknsTleoiazcrLiutE7h+VRItKmv5QG+yPgrZ0PFx83fmhw== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/events" "2.9.2" - -"@parcel/markdown-ansi@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.9.2.tgz#2e34692f4012e0c4ed9f3911f8cd706d29e358be" - integrity sha512-2iWqdaQhDEPL11V4TAssghJLZUXwB4RXzCgOEniWv7Hj/3ymXA4VzCyOncRoIqpm4MvxBV3tLPGM7qVqbCzN8Q== - dependencies: - chalk "^4.1.0" - -"@parcel/namer-default@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.9.2.tgz#510ddc64adf707b448824d5cee0b4d4f54182fd2" - integrity sha512-7hHEPhSPGnQadQmqghreRpREM8BheEA2BXhpXcemLYhFcCtQwrQUe14laOFy70+E8lK3SRf4QvQKXroHscL3ZQ== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.0.2.tgz#47e15ece0a723b50f4b50ec424fa3cf46b08128c" - integrity sha512-fDsELMiEZoMOfqVKQY+BpGA92egLy4rTCC0ra1J+rKpevOubh/qNL2px3+FZUlfsxFO59iaR4qBSjBUzfD3zlg== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/diagnostic" "2.9.2" - "@parcel/fs" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/optimizer-css@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.9.2.tgz#90972942a2851235f26993b75639799590dfc8f4" - integrity sha512-tNkoeCqy6yK21D+EMMWmmUHJL+abwNjhUC3LKJbi7YBrj1DswSaARiFMzLNlNQysa39VtWbo42VD+GV/5F6LAQ== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - browserslist "^4.6.6" - lightningcss "^1.16.1" - nullthrows "^1.1.1" - -"@parcel/optimizer-htmlnano@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.9.2.tgz#04ab8abece3a671ee47f592c5551012a175dc205" - integrity sha512-PfZ5bK9Xh5Yi6B++cilRDslSnkkzoEldGAAQ4qeX1njT6/VmQcOsG+ZV1lA344sXogu9nhmdjl+TVbpxzrs+Og== - dependencies: - "@parcel/plugin" "2.9.2" - htmlnano "^2.0.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - svgo "^2.4.0" - -"@parcel/optimizer-image@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.9.2.tgz#98d0bb013c6ba42154ede95e0fd2dae550440de5" - integrity sha512-FhYo3j/olcojmDGBxwYXrD1+xzLTulsWosqgs0BpU4E2mGwqpK2IqC+VUs66wKLsCWB3EQStHY1ax7o3ODAmjA== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - "@parcel/workers" "2.9.2" - -"@parcel/optimizer-svgo@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.9.2.tgz#0ee924751453b98031c9434ccb8d07de68ef80c3" - integrity sha512-k14TS8IM46Lsffr9MdlSO+/2Np4x1en1viKBfqUHjoJSRwpV12o7Jy81XRTaLekBTe+NvUPem4nzvE1/x+4QKA== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - svgo "^2.4.0" - -"@parcel/optimizer-swc@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.9.2.tgz#40b4dc3767b3a0816f8ee39563fb7992ded5be7b" - integrity sha512-agy/gE70tPoALRapJEbbjP7Q52N3sV0sZDvR83lrmdc+B1KLGPAswGJe/RXyzXfiA76NGlTQTDxrExSbPa9B4Q== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - "@swc/core" "^1.3.36" - nullthrows "^1.1.1" - -"@parcel/package-manager@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.9.2.tgz#9f38cfe32d11eb582449c458c0694eb1eff7270e" - integrity sha512-4/ytXWzm0456gbT93klZNM1CMSqG9SCbJWKk7m5pqy5f8hCYDSrd9Qza+tTynK73cNCHzl4ehS3wsHDhsT+q+Q== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/fs" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/node-resolver-core" "3.0.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - "@parcel/workers" "2.9.2" - semver "^5.7.1" - -"@parcel/packager-css@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.9.2.tgz#4a52dcb4f5b031bacc80e4163a8a3b8c558770ff" - integrity sha512-/FV8KmAONUbbfd0ybuXfD56EIPmMRQJGtKINFK4gRLLFOotgR9NSNoAUsEUxYblodZsC4RbKqwMhPpWdRMhcZg== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.9.2.tgz#ebaecd8f369d3a96ccecbd5a3ae8fed9f05b091f" - integrity sha512-CdOdKc0O6lxdsbnQs+Cai2sBSePvVZty+hUIHf/TeKKiYz1SDu51BEbsH+cppbMl08vbzQcUVkpgaatzaHzUMQ== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - posthtml "^0.16.5" - -"@parcel/packager-js@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.9.2.tgz#2583aa3c6fc84f3896169a7bd53df82a4d650247" - integrity sha512-BgtouTdfTio4xe+o7pX4ys9+6hpNf70Ae+xEk8elwUhq+u+r1NlM8Iv/irtxIAQNCG0fGMdM4OCZofUQ4DMyvw== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - globals "^13.2.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.9.2.tgz#4502e144b80f6e6e848aaeb2163cc611eb1b2cf5" - integrity sha512-p7eHwSSGHk8t1SjL72xKZHe8BsfkuixBhLnWVa+hscB0UGeYqIkQ+OQ34+gg9DkcL98Zc0/ZN1qHzsOdhd/2jg== - dependencies: - "@parcel/plugin" "2.9.2" - -"@parcel/packager-svg@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.9.2.tgz#6fd674466bac477ccff48f720492ac6688547b77" - integrity sha512-ywAk84WtHe+QIPlvKM36oefzfEN1anyj60bldZjzvSFoU2cBkwgtp1F80Do4lXdaaNCSvcLScD37EIVhAD2ASA== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - posthtml "^0.16.4" - -"@parcel/plugin@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.9.2.tgz#0fe8cee91f5b7d2cc3725073c702fca695b1a639" - integrity sha512-5v4sdeD5Cft4Vg2D61HW9TK0oi50X2jrm0hVFbUbCG2/TPWs77BMN6Nq+dMV38wEaGbnPjRolxBtRp+ungF09w== - dependencies: - "@parcel/types" "2.9.2" - -"@parcel/profiler@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.9.2.tgz#ff4e3e2870a98011afed7a6cb3aa51b16c9ddb54" - integrity sha512-C846buL+bmnP/F360rUp4I9dwkdUkVM+gFe/AK3JCjtA0TZQIysLqntIQ7g6JK8VUa3e9Q8GwmTfncPAFoiaNQ== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/events" "2.9.2" - chrome-trace-event "^1.0.2" - -"@parcel/reporter-cli@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.9.2.tgz#05174815189b7b1e82aa1615eac6e4622c0b953f" - integrity sha512-9BSK9FzdrEq0dCfwkuh78ds7hvPn8aY/fLcYwWOaWz2PxjnhmAwpuPMluybQxtfsSGS3gFnSFlnABA+ptEZczQ== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - chalk "^4.1.0" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.9.2.tgz#a0228fbd4b6fb57eab60611d840a9a25d98120d4" - integrity sha512-lnspjm17GqeJB2D6e0qbymSv9ssiOnicxUm+slrOkYr5QjGKMffIuxqi822gpE0y4rZmxLDmYO3bsVBO/gxtkg== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - -"@parcel/reporter-tracer@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.9.2.tgz#9df2cf4a52358143579310a91afe3933eab06005" - integrity sha512-wEe5k4uVVEw6SxtEOP34YXPPj/HSFEQfO2tKbLCOQHp8F+/g4LTnV8pFrWWkpFlyhxHwI9qhOHxPAKv1QjRIBw== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - chrome-trace-event "^1.0.3" - nullthrows "^1.1.1" - -"@parcel/resolver-default@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.9.2.tgz#2404093fcb80bd7ac62d576feeec5b25a3e6134d" - integrity sha512-aGk0yx4g0ps0PWa/f8jEAtdF5b1I3VFQRnNA5hNYdyTrV3l+vTtzxw4ssahIctqFkCz5J26F/iYsauyZ5SpDgg== - dependencies: - "@parcel/node-resolver-core" "3.0.2" - "@parcel/plugin" "2.9.2" - -"@parcel/runtime-browser-hmr@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.9.2.tgz#33c10757eceef057c9b847e41fb09e9e4c9a577a" - integrity sha512-TuICC8LicFobsNBPsBXWl0bg7e20jtcA7Eec6ZWNRNQUoE7MNiYIb4Te1Yo9glSirqcoAGolOqqBCRo05QJyew== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - -"@parcel/runtime-js@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.9.2.tgz#daaf54a218c9e3d605d4c7b19045df158865f1a3" - integrity sha512-9+a7+pBIKd9ESqykc9HeqaMjfmnnWW9dSxEeo5LAeSfI1rAZeMzkxSsYMtyneFgQGaCyVxjXvEWxJLBUINloQA== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/runtime-react-refresh@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.9.2.tgz#9e238db2ad23415fea12679c83ff51d2eadb1571" - integrity sha512-/JUwVwwJ1GLIssYXZxR/stjPxYFo4hOuxgrCnDiLCUQDDY04ivzZnjZM4jZncE4TsfolP0CTkOoz+A211G8gRA== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - react-error-overlay "6.0.9" - react-refresh "^0.9.0" - -"@parcel/runtime-service-worker@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.9.2.tgz#07c3d1448d547ab3c9a0e914e548985294aef558" - integrity sha512-U/Q+7/WVcqtoXwrqN86Rg6ygiultSAPW6t5OEa6DUsER9A0ytNRJ2PPEgrXXEN7gjkswXRCkfZxitRdbzzk63Q== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/source-map@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" - integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.9.2.tgz#06a74cc08ede3002372c3157dcfd40be510728e2" - integrity sha512-7Xpp5mizzRuRlrIPtlBSLzWHqniXOajrsANlNXHuMDTRmHL5KF9ZdmJdMFspO2lkFN/PiNC7abHJ4IigtKYPfQ== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - browserslist "^4.6.6" - json5 "^2.2.0" - nullthrows "^1.1.1" - semver "^5.7.0" - -"@parcel/transformer-css@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.9.2.tgz#cb0fd91a7d1ccc136c9cc458300197d691693cad" - integrity sha512-jX/A8BmTyJFtNtaIlj/6jXX8/TiVGAFwcFRbQOpwlio2HL/NgdDgeVCEyWMSMumQm5FlnfONl29jBmHS7Q2xVw== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - browserslist "^4.6.6" - lightningcss "^1.16.1" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.9.2.tgz#80e1b208cb71f9be7e468ebdc9ba75227128c649" - integrity sha512-w883gggwb2AL8PnH7/87pwGMmR3dO/kctwxm/DO83yEXjfkUBB0u1ruYNSuhBFuNAQsrYobC54QrJ/ERcTB96w== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/plugin" "2.9.2" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - srcset "4" - -"@parcel/transformer-image@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.9.2.tgz#9c8501dd98c9fc16f7299986c5685d5598002910" - integrity sha512-0ZH1Lyob6P28DE6gVizPDbWWCORF/5exQJzjmeFrpUTJep/Aep0bwboYlNUTGrO5phjMp1/aIyzGDqbVhTHhBw== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - "@parcel/workers" "2.9.2" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.9.2.tgz#14841a4a74a14b2a8dfc7a26b82d47b953cd3ce2" - integrity sha512-d4JkEEPh99ON345dhkBc9pAqlM/jXgtQ1K7IW/P8Shd6Z+1vdVkGiTMWH9KNXob/fBm511UvbIhJtmj68MUfug== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.9.2" - "@parcel/workers" "2.9.2" - "@swc/helpers" "^0.5.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - regenerator-runtime "^0.13.7" - semver "^5.7.1" - -"@parcel/transformer-json@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.9.2.tgz#53ca3da3e5c40b2bbf302eef38806e54d8d55699" - integrity sha512-V4SfaBBYHKhFXvORAeUEn3SHyIXevlN4VKKU2838SokHoJ7FbJUXv5QjSS9Fgc8JBeAyIilFoHKQ3CdKI+29qA== - dependencies: - "@parcel/plugin" "2.9.2" - json5 "^2.2.0" - -"@parcel/transformer-postcss@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.9.2.tgz#1b314a75744cb0b3195ae9e587f883919632f626" - integrity sha512-zkP7Th+MyGJnUXS0aPJCMCMI6wUL6kV4zPuNu59hDLIcm4+H8qeq0s6UyCOIdxjdhHxWKQxKFmlRiPJ9bs0hxg== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - clone "^2.1.1" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^5.7.1" - -"@parcel/transformer-posthtml@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.9.2.tgz#f6fb0f467c934d241cd1ef5435d7d97d1866756f" - integrity sha512-z4I+FDL13XFHCH32BqryXN9HcocG9a0KyfTPIphJrtBRGW8lR9rX4rukp8X3gGZIdYMuRMvU4jj6BpPRYJzzXA== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-raw@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.9.2.tgz#4b899e88265887589b8a4c30a7f9cfcd2aed0b6a" - integrity sha512-0Lo44e4KX7lKGLnnOe52JvtptGTLl1kV3UACbOATApR1Rklte0RfNFxL/TRymic7wxRwt/aAXKhZCzFHmJp5Hg== - dependencies: - "@parcel/plugin" "2.9.2" - -"@parcel/transformer-react-refresh-wrap@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.9.2.tgz#c99f72746d33aa7dc33512bc5548a83dfe21ccb5" - integrity sha512-y2GPoIG7fjizqXq3xl6vvDeGSsOJGcPqm/WvbaxekR1+Yl/U5T4vAD0CaC8EJcVyostCT3G835DdNX7O7rkW/w== - dependencies: - "@parcel/plugin" "2.9.2" - "@parcel/utils" "2.9.2" - react-refresh "^0.9.0" - -"@parcel/transformer-svg@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.9.2.tgz#16a627cbe80d6401e2fba31b5a4d0adc2810e790" - integrity sha512-R9YTE9T7UcwtrZY7LNO4qAhgByqn7mSyt5/cEFN925XtlLSt0TsX2A4cv4s28hGsaABWGB0WL4IAbgATwbOq7w== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/plugin" "2.9.2" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/types@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.9.2.tgz#195ce0075c9d084c5f57cdffba9ba75ea96e4993" - integrity sha512-i8WOfWuvBQ88Q0frgJOmIPOZDUZ6BaGtyq+seo0B1Y0Bt04/KF4qPFo9E1umpL8ZgtA1kMtyZd1gsSmXLP5COw== - dependencies: - "@parcel/cache" "2.9.2" - "@parcel/diagnostic" "2.9.2" - "@parcel/fs" "2.9.2" - "@parcel/package-manager" "2.9.2" - "@parcel/source-map" "^2.1.1" - "@parcel/workers" "2.9.2" - utility-types "^3.10.0" - -"@parcel/utils@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.9.2.tgz#2d84cbae82ebb79b29967bdbee0463e07fc9296a" - integrity sha512-Gvl23c54ZYmBmXqpk7Kbw1S6+taWncgdqTo+XaokOzh3jjih1bmMVSMS+CwtBrYhPZ32x84JNeOxsxz01zsrAA== - dependencies: - "@parcel/codeframe" "2.9.2" - "@parcel/diagnostic" "2.9.2" - "@parcel/hash" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/markdown-ansi" "2.9.2" - "@parcel/source-map" "^2.1.1" - chalk "^4.1.0" - nullthrows "^1.1.1" - -"@parcel/watcher@^2.0.7": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.1.0.tgz#5f32969362db4893922c526a842d8af7a8538545" - integrity sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw== - dependencies: - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@parcel/workers@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.9.2.tgz#c2f6f62061d3ec7d082e55b4a97304be28a819db" - integrity sha512-38jd6jWMPNx41gWSJVtdRiTfE+6TvLfM35mkGg3ykpESk8QwwumaV2CLgvdfnFjxeUlRtOGi8m+bWiWqKJetww== - dependencies: - "@parcel/diagnostic" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/profiler" "2.9.2" - "@parcel/types" "2.9.2" - "@parcel/utils" "2.9.2" - nullthrows "^1.1.1" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@swc/core-darwin-arm64@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.66.tgz#b34a396479ca8fc82876d6dfb28c78a51010e6ce" - integrity sha512-UijJsvuLy73vxeVYEy7urIHksXS+3BdvJ9s9AY+bRMSQW483NO7RLp8g4FdTyJbRaN0BH15SQnY0dcjQBkVuHw== - -"@swc/core-darwin-x64@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.66.tgz#b778e434d29652eae6da6ee7ed335605f7cfd866" - integrity sha512-xGsHKvViQnwTNLF30Y/5OqWdnN6RsiyUI8awZXfz1sHcXCEaLe+v+WLQ+/E8sgw0YUkYVHzzfV/sAN2CezJK5Q== - -"@swc/core-linux-arm-gnueabihf@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.66.tgz#a7ab556dc9fc770069fea292ff5551161df83a70" - integrity sha512-gNbLcSIV2pq90BkMSpzvK4xPXOl8GEF3YR4NaqF0CYSzQsVXXTTqMuX/r26xNYudBKzH0345S1MpoRk2qricnA== - -"@swc/core-linux-arm64-gnu@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.66.tgz#00591f5fd0d9f1d1ed565329936451eb6d0d5433" - integrity sha512-cJSQ0oplyWbJqy4rzVcnBYLAi6z1QT3QCcR7iAey0aAmCvfRBZJfXlyjggMjn4iosuadkauwCZR1xYNhBDRn7w== - -"@swc/core-linux-arm64-musl@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.66.tgz#dd8e5e7b1154b5a42a32d57914e0de2cef6686ff" - integrity sha512-GDQZpcB9aGxG9PTA2shdIkoMZlGK5omJ8NR49uoBTtLBVYiGeXAwV0U1Uaw8kXEZj9i7wZDkvjzjSaNH3evRsg== - -"@swc/core-linux-x64-gnu@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.66.tgz#35de4b88e3f256e7923503a8031569c733859b68" - integrity sha512-lg8E4O/Pd9KfK0lajdinVMuGME8dSv7V9arhEpmlfGE2eXSDCWqDn5Htk5QVBstt9lt1lsRhWHJ/YYc2eQY30Q== - -"@swc/core-linux-x64-musl@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.66.tgz#623de62c638a31cda5d44014b981290e3f79f6de" - integrity sha512-lo8ZcAO/zL2pZWH+LZIyge8u2MklaeuT6+FpVVpBFktMVdYXbaVtzpvWbgRFBZHvL3SRDF+u8jxjtkXhvGUpTw== - -"@swc/core-win32-arm64-msvc@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.66.tgz#49a432f43a314666e681a98801d7b2d303e5ef75" - integrity sha512-cQoVwBuJY5WkHbfpCOlndNwYr1ZThatRjQQvKy540NUIeAEk9Fa6ozlDBtU75UdaWKtUG6YQ/bWz+KTemheVxw== - -"@swc/core-win32-ia32-msvc@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.66.tgz#80c8af627b46de67fbac05908025e764194669ad" - integrity sha512-y/FrAIINK4UBeUQQknGlWXEyjo+MBvjF7WkUf2KP7sNr9EHHy8+dXohAGd5Anz0eJrqOM1ZXR/GEjxRp7bGQ1Q== - -"@swc/core-win32-x64-msvc@1.3.66": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.66.tgz#7984da6bf1f1a5410c2e6514dc2814abb2e6c91a" - integrity sha512-yI64ACzS14qFLrfyO12qW+f/UROTotzDeEbuyJAaPD2IZexoT1cICznI3sBmIfrSt33mVuW8eF5m3AG/NUImzw== - -"@swc/core@^1.3.36": - version "1.3.66" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.66.tgz#d07e4c9cd49205881171ee1ffd04f824ecea2f25" - integrity sha512-Hpf91kH5ly7fHkWnApwryTQryT+TO4kMMPH3WyciUSQOWLE3UuQz1PtETHQQk7PZ/b1QF0qQurJrgfBr5bSKUA== - optionalDependencies: - "@swc/core-darwin-arm64" "1.3.66" - "@swc/core-darwin-x64" "1.3.66" - "@swc/core-linux-arm-gnueabihf" "1.3.66" - "@swc/core-linux-arm64-gnu" "1.3.66" - "@swc/core-linux-arm64-musl" "1.3.66" - "@swc/core-linux-x64-gnu" "1.3.66" - "@swc/core-linux-x64-musl" "1.3.66" - "@swc/core-win32-arm64-msvc" "1.3.66" - "@swc/core-win32-ia32-msvc" "1.3.66" - "@swc/core-win32-x64-msvc" "1.3.66" - -"@swc/helpers@^0.5.0": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" - integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== - dependencies: - tslib "^2.4.0" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -abortcontroller-polyfill@^1.1.9: - version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.6.6: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== - dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -caniuse-lite@^1.0.30001503: - version "1.0.30001506" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001506.tgz#35bd814b310a487970c585430e9e80ee23faf14b" - integrity sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -cosmiconfig@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" - integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== - dependencies: - import-fresh "^3.2.1" - js-yaml "^4.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.4.431: - version "1.4.438" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.438.tgz#425f0d51862d36f90817d6dfb7fa2a53ff6a0a73" - integrity sha512-x94U0FhphEsHsOloCvlsujHCvoir0ZQ73ZAs/QN4PLx98uNvyEU79F75rq1db75Bx/atvuh7KPeuxelh+xfYJw== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -glob@^10.2.5: - version "10.3.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.0.tgz#763d02a894f3cdfc521b10bbbbc8e0309e750cce" - integrity sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2" - path-scurry "^1.7.0" - -globals@^13.2.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -htmlnano@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.4.tgz#315108063ed0bb6a16ccb53ad1b601f02d3fe721" - integrity sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA== - dependencies: - cosmiconfig "^8.0.0" - posthtml "^0.16.5" - timsort "^0.3.0" - -htmlparser2@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" - integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@^2.2.0, json5@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -lightningcss-darwin-arm64@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.21.0.tgz#8d74d3fd5e6fdff4697e1d72a31ee6e30c244c35" - integrity sha512-WcJmVmbNUnCbUqqXV46ZsriFtWJujcPkn+w2cu4R+EgpXuibyTP/gzahmX0gc4RYQxTz2zXIeGx4cF2gr8fLwA== - -lightningcss-darwin-x64@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.21.0.tgz#7d7ceec31af2fac955e1409fa571dd1d5170bba3" - integrity sha512-xHwMHfcTIHX6fY4YQimI1V/KcbozoNVeKMncZzrp/3NAj0sp3ktxobCj1e0sGqVJMUMaHu/SWvt0mS8jAIhkYw== - -lightningcss-linux-arm-gnueabihf@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.21.0.tgz#bb74da249368006d822cd1a9831c21c38fe2e498" - integrity sha512-rk1cr+C2IA1QHvh0QJAPXsQ2vrwCksms7fgfaw43RIERBWa6EEM5p0/1CWhdZ5zrl9veUdY6NRaNGRJjJL0iLw== - -lightningcss-linux-arm64-gnu@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.21.0.tgz#49ce48a034686d864e358e16c8d10af8456ef7c8" - integrity sha512-JkOG8K2Y4m5MeP3DlaHOgGDDtHbhbJcN8JcizFN0snUIIru1qxYNWPhAQsEwysuTRY9aANP0nScZJkALpcYmgA== - -lightningcss-linux-arm64-musl@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.21.0.tgz#d5963868d6c20f2ea697f3ee19a34f38737d4ff5" - integrity sha512-4Zx51DbR41neTFMs28CI9cZpX/mF5Urc6pChTio5nZhrz6FC1pRGiwxNJ+G15a/YPvRmPmvQd3Mz1N4WEgbj2A== - -lightningcss-linux-x64-gnu@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.21.0.tgz#535079a9dd0f6b2efde496134192608c82ad2068" - integrity sha512-PN33pPK/O3b4qMfWcJ2eis7NLqEkyW2NEh9X4rWfJrBtOnSbgafuYUuEtO5Ylu+dL3oUKc5usB07FGeil3RzeA== - -lightningcss-linux-x64-musl@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.21.0.tgz#d1f7f43e9744959a2ba2996488989d7b9cb06f85" - integrity sha512-S51OT7TRfS5x8aN/8frv/JSXCGm+11VuhM4WCiTqDPjhHUDWd8nwiN/7s5juiwrlrpOxb5UKq21EKDrISoGQpw== - -lightningcss-win32-x64-msvc@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.21.0.tgz#5e87f2409b7cd2b8a52703058c6ec06e69f3a4b0" - integrity sha512-yW6/ZDJAHrSWtRltH1tr2I+2sn374gK2yclc44HMfpxfjIYgXMUkzqstalloMUQpZFR6M0ltXo5/tuLWoBydGQ== - -lightningcss@^1.16.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.21.0.tgz#31ebf4717f42e801e622186f28cd58db7c914ef7" - integrity sha512-HDznZexdDMvC98c79vRE+oW5vFncTlLjJopzK4azReOilq6n4XIscCMhvgiXkstYMM/dCe6FJw0oed06ck8AtA== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.21.0" - lightningcss-darwin-x64 "1.21.0" - lightningcss-linux-arm-gnueabihf "1.21.0" - lightningcss-linux-arm64-gnu "1.21.0" - lightningcss-linux-arm64-musl "1.21.0" - lightningcss-linux-x64-gnu "1.21.0" - lightningcss-linux-x64-musl "1.21.0" - lightningcss-win32-x64-msvc "1.21.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lmdb@2.7.11: - version "2.7.11" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.7.11.tgz#a24b6d36b5c7ed9889cc2d9e103fdd3f5e144d7e" - integrity sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw== - dependencies: - msgpackr "1.8.5" - node-addon-api "^4.3.0" - node-gyp-build-optional-packages "5.0.6" - ordered-binary "^1.4.0" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.7.11" - "@lmdb/lmdb-darwin-x64" "2.7.11" - "@lmdb/lmdb-linux-arm" "2.7.11" - "@lmdb/lmdb-linux-arm64" "2.7.11" - "@lmdb/lmdb-linux-x64" "2.7.11" - "@lmdb/lmdb-win32-x64" "2.7.11" - -lru-cache@^9.1.1: - version "9.1.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.2.tgz#255fdbc14b75589d6d0e73644ca167a8db506835" - integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ== - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -minimatch@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" - integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== - -msgpackr-extract@^3.0.1, msgpackr-extract@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" - integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== - dependencies: - node-gyp-build-optional-packages "5.0.7" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" - -msgpackr@1.8.5: - version "1.8.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.5.tgz#8cadfb935357680648f33699d0e833c9179dbfeb" - integrity sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg== - optionalDependencies: - msgpackr-extract "^3.0.1" - -msgpackr@^1.5.4: - version "1.9.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.9.5.tgz#ac548c5f4546db895e84e46d39d813be961dc527" - integrity sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg== - optionalDependencies: - msgpackr-extract "^3.0.2" - -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -node-gyp-build-optional-packages@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.6.tgz#2949f5cc7dace3ac470fa2ff1a37456907120a1d" - integrity sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw== - -node-gyp-build-optional-packages@5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" - integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== - -node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== - -node-releases@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -ordered-binary@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" - integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== - -parcel@^2.8.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.9.2.tgz#158c3565e342e698ac1dd7edd23c4467b9278d11" - integrity sha512-nTpT/0JIhGW5rKXVnVGHyLBFK/KxteqzsSjQNzeGybiBttnIYRXnM03e2QJX0GWqiS9OtM4rJro04DNHoqx3Ug== - dependencies: - "@parcel/config-default" "2.9.2" - "@parcel/core" "2.9.2" - "@parcel/diagnostic" "2.9.2" - "@parcel/events" "2.9.2" - "@parcel/fs" "2.9.2" - "@parcel/logger" "2.9.2" - "@parcel/package-manager" "2.9.2" - "@parcel/reporter-cli" "2.9.2" - "@parcel/reporter-dev-server" "2.9.2" - "@parcel/reporter-tracer" "2.9.2" - "@parcel/utils" "2.9.2" - chalk "^4.1.0" - commander "^7.0.0" - get-port "^4.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.7.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" - integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== - dependencies: - lru-cache "^9.1.1" - minipass "^5.0.0 || ^6.0.2" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -posthtml-parser@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" - integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-parser@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" - integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-render@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" - integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== - dependencies: - is-json "^2.0.1" - -posthtml@^0.16.4, posthtml@^0.16.5: - version "0.16.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" - integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== - dependencies: - posthtml-parser "^0.11.0" - posthtml-render "^3.0.0" - -react-error-overlay@6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== - -regenerator-runtime@^0.13.7: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -rimraf@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.1.tgz#0881323ab94ad45fec7c0221f27ea1a142f3f0d0" - integrity sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg== - dependencies: - glob "^10.2.5" - -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -srcset@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" - integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svgo@^2.4.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -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" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^2.4.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -xxhash-wasm@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" - integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== diff --git a/css/custom.css b/css/custom.css deleted file mode 100644 index d31ad83..0000000 --- a/css/custom.css +++ /dev/null @@ -1,53 +0,0 @@ -/* Página: Inscrições nas Turmas */ - -ul[id^="list_"]{ - opacity: 0; - visibility: hidden; - overflow: hidden; - height: 0; - margin: 0; - - display: grid !important; - flex-wrap: wrap; - gap: 1rem; - grid-template-columns: 1fr 1fr; - padding: 0; - margin: 0; - - transition: opacity 0.3s ease-in, height 0.2s ease-out; -} - -ul[id^="list_"] br{ - display: none; -} - -ul[id^="list_"] > li{ - list-style-type: none; - width: fit-content; - background: whitesmoke; - padding: 0.8rem; - border-radius: 8px; - width: 100%; -} - -ul[id^="list_"] li ul{ - padding: 0; - padding-top: 0.4rem; - display: flex; -} - -ul[id^="list_"] li ul br{ - display: none; -} - -ul[id^="list_"] li ul li{ - padding: 0; - display: flex; - flex-wrap: wrap; - list-style-type: none; - padding-right: 1em; -} - -ul[id^="list_"] li ul li a{ - cursor: pointer; -} \ No newline at end of file diff --git a/css/simpler.css b/css/simpler.css deleted file mode 100644 index cbb2333..0000000 --- a/css/simpler.css +++ /dev/null @@ -1,948 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Kanit&display=swap'); - -/* Usefull selectors examples: - - [custom-atribute="CustomValue"] {} - - a[href*="aLinkHere"] {} - -*/ - -/* First Sigarra breakpoint at 1100px */ -@media only screen and (min-width: 900px) and (max-width: 1100px) { - -} - -/* Second Sigarra breakpoint at 900px */ -@media only screen and (max-width: 900px) { - -} - -/* Fix accessibility not being actually accessible <.< */ -.acessibilidade, .acs { - clip: rect(0 0 0 0); - clip-path: inset(50%); - height: 1px; - overflow: hidden; - position: absolute; - white-space: nowrap; - width: 1px; - display: unset !important; -} - -/* Smoother scroll */ -html { - scroll-behavior: smooth; -} - -/* Disable smooth scrolling when users have prefers-reduced-motion enabled */ - @media screen and (prefers-reduced-motion: reduce) { - html { - scroll-behavior: auto; - } -} - -/* ----------------- HOMEPAGE ----------------- */ - -#barralocalizacao { - display: none; -} - -#colunaextra img { - display: none; -} - -img.sama { - display: none !important; -} - -.container-fluid .destacar-menor { - display: none; -} - -.container-fluid .encaixar100.portlet-banner-new { - display: none; -} - -p.flex-caption a { - letter-spacing: 0.2em; - text-transform: uppercase; - font-weight: bold; - text-align: center; - word-spacing: 0.7em; - font-family: 'Kanit', sans-serif !important; -} - -.ajuda-contextual { - display: none !important; -} - -/* News Section */ - -.col-md-7 { - padding-top: 1em; - background: #f0f0f0; - border-radius: 1em; -} - -.col-md-7 h2 { - margin: 0 !important; - font-size: 2em !important; - border-bottom: 2px solid rgb(140,45,25); -} - -.col-md-7 h3 { - margin: revert !important; -} - -.col-md-7 .ri-add-circle-line::before { - font-size: 0.5em; - content: "Ler Mais" !important; - font-weight: bold; - text-transform: uppercase; - width: unset !important; - height: unset !important; -} - -.col-md-7 .ri-add-circle-line { - display: block; - font-family: "NoticiaText", serif !important; - color: white !important; - padding: 0.2em 0.5em 0.5em 0.5em !important; - border-radius: 8px; - width: auto; - max-width: 14% !important; - position: absolute; - text-align: center; - top: 3%; - right: 3%; - width: unset !important; - height: unset !important; -} - -.col-md-7 .novo-portlet-noticias p { - width: 85%; -} - -.col-md-7 .novo-portlet-noticias p a > span{ - float: right; - background-image: linear-gradient(rgb(110,110,110), rgb(130,130,130)) !important; - background-size: 100% 200% !important; - background-position: initial !important; - transition: background-position 0.3s; -} - -.col-md-7 .novo-portlet-noticias p a > span:hover { - background-position: 0 -100% !important; -} - -.mais-noticias a { - color: white !important; - display: block; - background-image: linear-gradient(rgb(140,45,25), rgb(165,45,25)); - background-size: 100% 200%; - transition: background-position 0.3s; - border-radius: 8px !important; - -} - -.mais-noticias a:link { - color: white; - font-weight: bold; -} - -p.mais-noticias { - width: 40%; - margin: 0 auto; - padding-bottom: 2em; - text-transform: uppercase; - text-align: center !important; -} - -p.mais-noticias a:hover { - color: white !important; - background-position: 0 -100%; -} - - - - -/* Calendar and Events*/ - -.col-md-5 { - padding-top: 1em; -} - -.col-md-5 h2 { - margin: 0 !important; - font-size: 2em !important; - border-bottom: 2px solid rgb(140,40,25); -} - -.mais-eventos a { - color: white !important; - display: block; - background-image: linear-gradient(rgb(140,45,25), rgb(165,45,25)); - background-size: 100% 200%; - transition: background-position 0.3s; -} - -.calendario-inicio { - margin-top: 1em; -} - -.calendario-inicio .calendtable { - border-spacing: 1em 0 !important; -} - -.calendario-inicio table{ - width: 100%; -} - -p.mais-eventos { - text-transform: uppercase; - text-align: center !important; - padding-left: 1em; -} - -.mais-eventos a:link { - color: white; - font-weight: bold; -} - -.col-md-7.col-sm-6 a:link { - text-decoration: none; -} - -p.mais-eventos a:link, p.mais-eventos a:visited { - text-decoration: none !important; -} - -ul.agenda li { - border-left: 6px solid rgb(140,45,25) !important; - background-color: #f0f0f0 !important; - border-top-right-radius: 0.5em; - border-bottom-right-radius: 0.5em; -} - -p.mais-eventos a:hover { - background-position: 0 -100%; - color: white !important; -} - -.calendario-inicio form { - display: flex; - gap: 1em; -} - -.calendario-inicio input[type="submit"] { - width: 30%; - margin: 0; - text-transform: uppercase; - color: white !important; - background-image: linear-gradient(rgb(140,45,25), rgb(165,45,25)) !important; - background-size: 100% 200%; - transition: background-position 0.3s; - border-radius: 8px; - border: none; - font-family: "NoticiaText", serif !important; - font-weight: bold; -} - -.calendario-inicio input[type="submit"]:hover { - background-position: 0 -100%; -} - -.calendario-inicio select { - width: 70%; - padding: 12px 14px ; - margin: 0; - background-color: #fff; - border-radius: 4px; - cursor: pointer; -} - -table.calendtable td.calendevent { - border-bottom: 0.2em solid rgb(140,45,25) !important; -} - -table.calendtable .calendeventsel { - background-color: rgb(140,45,25) !important; - border-color: rgb(140,45,25) !important; - color: white !important; -} - -.calendevent a { - text-decoration: none !important; - color: black !important; -} - -.calendeventsel a { - color: white !important; - text-decoration: none !important; - font-weight: bold; -} - -.calendevent a:hover, .calendeventsel a:hover, .calendeventsel a:visited { - color: black !important; - font-weight: bold; -} - -.calendtable tbody { - line-height: 2em; -} - - -table.calendtable { - background-color: rgb(240, 240, 240) !important; - border: 10px solid rgb(240, 240, 240) !important; - font-family: sans-serif; -} - -table.calendtable td { - color: black !important; - background-color: rgb(240, 240, 240) !important; -} - -table.calendtable th { - color: black !important; - background-color: rgb(240, 240, 240) !important; -} - -table.calendtable tbody { - line-height: 2em; -} - -table.calendtable .calendfdssel { - text-align: center !important; -} - -table.calendtable:first-child tr:first-child > td:nth-child(2) { - /* Aligns calendar year */ - text-align: center !important; -} - - - -/* Footer */ - -.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1.col-xs-12 { - display: none; -} - -.col-md-3 { - padding-top: 1em; -} - -#rodape { - display: none; -} - -/* ----------------- POPUP ----------------- */ - -.popup > table > tbody > tr:first-child, .popup > table > tbody > tr:last-child{ - display: none; -} - -.popup td.b{ - display: none; -} -.popup td.body{ - padding: 1.5rem !important; - border: 1px solid #b0b0b0; - box-shadow: 0px 25px 102px -44px rgb(87 87 87); - border: 0; -} -.popup td.body > .content > h2{ - margin: 0 0 1em 0; -} -.popup td.body > .footer{ - display: none; -} -#facebox{ - position: fixed !important; - top: 50% !important; - left: 50% !important; - transform: translate(-50%, -50%); - - max-height: 90vh; - overflow: auto; - border-radius: 8px; -} -#facebox table{ - border-spacing: 0 !important; -} -#facebox_overlay{ - opacity: 0.3 !important; -} -body:has(#facebox_overlay){ - overflow-y: hidden; -} - -/* ----------------- Conta Corrente Page ----------------- */ - -/* Status badges */ -.badge{ - padding: 0.2rem 0.5rem; - border: 1px solid; - border-radius: 0.5rem; - width: fit-content; - display: inline-flex; - align-items: center; -} -.badge::before{ - content: ""; - display: inline-block; - width: 0.5rem; - height: 0.5rem; - border-radius: 50%; - margin-right: 0.5rem; -} - -.badge.badge-success{ - border-color: #cce6d5; - background: #effdf4; - color: #368e50; -} -.badge.badge-success::before{ - background: #0cb143; -} - -.badge.badge-pending{ - border-color: #f0eac6; - background: #fefde9; - color: #956e30; -} -.badge.badge-pending::before{ - background: #f2bc30; -} - -.badge.badge-cancelled{ - border-color: #e3e5e6; - background: #f9fafc; - color: #4d535d; -} -.badge.badge-cancelled::before{ - background: #8f8f9c; -} - -.badge.badge-danger{ - border-color: #e3c3b9; - background: #fef7f9; - color: #b25943; -} -.badge.badge-danger::before{ - background: #fc6a44; -} - -abbr[title]{ - text-decoration: none; - border: none !important; -} - -section.entidade { - display: none; -} - -section.entidade ~ .formulario{ - display: none; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW ~ .alerta{ - display: none; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW{ - border: none; - padding: 0; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > div.ui-tabs-panel{ - padding: 1rem 0; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > ul.ui-tabs-nav{ - background: none; - border: none; - display: flex; - flex-wrap: wrap; - gap: 0.7rem; - padding: 0; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW .ui-tabs-anchor{ - width: 100%; - text-align: center; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > ul.ui-tabs-nav::before, -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > ul.ui-tabs-nav::after{ - content: ""; - flex: 1 0 100%; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > ul.ui-tabs-nav > li{ - border: none; - border-radius: 5px; - cursor: pointer; - flex: 1; - margin: 0; - padding: 0; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > ul.ui-tabs-nav > li > a{ - outline-color: #8e2915 !important; - outline-width: 5px !important; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW > .ui-tabs-nav > li > a > em{ - font-style: normal; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW li.ui-tabs-active{ - background: #8c2d19; - color: white; -} - -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW li.ui-tabs-active:hover a:hover, -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW li.ui-tabs-active a:active, -#GPAG_CCORRENTE_GERAL_CONTA_CORRENTE_VIEW li.ui-tabs-active a:focus{ - color: white !important; - cursor: pointer; -} - -#tab_extracto_geral .positive { - color: #5fd17f; -} - -#tab_extracto_geral .negative { - color: #fa8078; -} - -/* TABLES DESIGN */ - -.tabela { - border-spacing: 0 !important; - width: 100%; -} - -.tabela .data{ - color:rgb(112, 112, 112); -} - - -.tabela th { - color: #676767; - background: none; - text-align: left; -} - -.tabela > tbody > tr.i, -.tabela > tbody > tr.p -{ - background: none; -} - -.tabela th, -.tabela td { - padding: 0.6rem 1rem !important; - border-bottom: 1.4px solid #f3f3f3; - text-align: left !important; -} - -.tabela tr td:first-child, -.tabela tr th:first-child{ - text-align: left; - padding-left: 0 !important; -} - -.tabela tr td:last-child, -.tabela tr th:last-child{ - text-align: right !important; - padding-right: 0 !important; -} - -.tabela th{ - font-weight: 400; -} - -.tabela i{ - font-style: normal; -} - -/* ----------------- Generic New Components ----------------- */ - -.card{ - border: 1px solid #f3f3f3; - border-radius: 15px; - padding: 1rem; - margin-bottom: 0.5rem; - background: #f6f6f6; - width: fit-content; - padding: 1rem 2rem; -} - -.card > h3, .card > p{ - margin: 0; -} - -/* ----------------- INPUT ----------------- */ - -input, select, button{ - border-radius: 8px !important; - border-color: #cfcfcf !important; - box-sizing: border-box; - padding: 0.5rem !important; - box-shadow: 0px 0px 23px -17px rgba(0,0,0,0.3); - background: rgb(248, 248, 248) !important; - box-shadow: none !important; - font-weight: 500 !important; - transition: all 0.2s ease-in-out; -} - -button:hover{ - cursor: pointer; - background-color: #e8e8e8 !important; -} - -select{ - appearance: none; - /*background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right 0.5rem center; - background-size: 1em;*/ -} - -button:active, button:focus, input:active, input:focus, select:active, select:focus{ - outline-color: #dc8877 !important; - outline-width: 5px !important; -} - -/* ----------------- COOKIES BAR ----------------- */ - -#cookie-bar.fixed{ - padding: 0.8rem; - background: #111111d9; -} - -#cookie-bar a.cb-enable{ - background: #842918; - padding: 0.3rem 0.7rem; - margin-left: 20px; -} - -#cookie-bar a.cb-enable:hover{ - background: #9d3c29; - color: white !important; -} - -#cookie-bar a.cb-policy{ - background: #2b2b2b; - padding: 0.3rem 0.7rem; - margin-left: 15px; -} - -#cookie-bar a.cb-policy:hover{ - background: #353535; - color: white !important; -} - -/* ----------------- DATE INPUT ----------------- */ - -.yui-skin-sam table{ - border-spacing: 0.8rem 0.2rem !important; -} - -.yui-skin-sam .yui-calcontainer{ - background-color: #fbfbfb !important; - border: 1px solid #c8c8c8 !important; - padding: 1rem !important; - border-radius: 8px; - box-shadow: 1px 1px 10px #00000014; -} - -.yui-skin-sam .yui-calcontainer .title{ - margin: 0 !important; - background: none !important; - border-bottom: none !important; - padding: 0 !important; -} - -.yui-skin-sam .yui-calendar a.calnav{ - color: #1A1A1A !important; - border: none !important; -} -.yui-skin-sam .yui-calendar a.calnav:hover{ - background: none !important; -} - -.yui-skin-sam .yui-calendar .calweekdaycell{ - background-color: none !important; - background: none; - color: #575757 !important; -} -.yui-skin-sam .yui-calendar td.calcell{ - border: none !important; - background: none !important; - border-radius: 8px !important; - transition: all 0.2s ease-out; -} -.yui-skin-sam .yui-calendar td.calcell:hover{ - background: #1A1A1A !important; -} -.yui-skin-sam .yui-calendar td.calcell:hover a{ - color: #FFFFFF !important; -} -.yui-skin-sam .yui-calendar td.calcell a { - color: #1A1A1A !important; - background: none !important; -} - -.yui-skin-sam .yui-calendar td.calcell.oom{ - color: #BABABA !important; - background: none !important; -} - -.yui-skin-sam .yui-calendar td.calcell.today{ - background: #F2F2F2 !important; -} -.yui-skin-sam .yui-calendar td.calcell.today a{ - color: #1A1A1A !important; -} - -.yui-skin-sam .yui-calcontainer .yui-cal-nav{ - background-color: #f5f5f5 !important; - border-radius: 8px; - border: 1px solid #a0a0a0; - width: fit-content !important; - align-items: center; - margin-left: -20% !important; -} - -.yui-skin-sam .yui-calcontainer .yui-cal-nav-mc { - width: auto; -} -div.yui-cal-nav{ - padding: 0.5rem !important; - display: grid; - grid-template-columns: auto auto; - gap: 0.5rem; -} - -.yui-cal-nav-m, .yui-cal-nav-y, .yui-cal-nav-b{ - padding: 0 !important; -} -.yui-cal-nav-y{ - margin: 0.5rem 0; -} -.yui-cal-nav-b{ - display: flex; - flex-direction: row-reverse; - justify-content: center; - gap: 0.5rem; -} -.yui-cal-nav-b{ - grid-column: 1/3; -} -.yui-skin-sam .yui-calcontainer .yui-cal-nav label{ - display: none !important; -} -.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button{ - background: #1A1A1A !important; -} -.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn { - border: none !important; - background: none !important; - margin: 0 !important; -} - -.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn:hover{ - background: none !important; -} - -.yui-skin-sam .yui-calcontainer .yui-cal-nav-yc{ - width: 7.5rem !important; -} - -/* ----------------- SCHEDULE ----------------- */ - -.horario { - table-layout: fixed !important; - width: 100% !important; - height: fit-content; - border-collapse: collapse !important; - border: solid 1px #b5b5b5 !important; -} - -.horario tr { - height: fit-content; - position: relative; -} - -.horario :is(td, th) { - border: none !important; - background: unset !important; - color: unset !important; - height: 100%; -} - -.horario tbody :is(td, th) { - padding: 4px !important; -} - -.horario .column-start { - border-left: solid 1px #b5b5b5 !important; -} - -.horario tfoot { - border-top: solid 1px #b5b5b5; -} - -.horario thead { - border-bottom: solid 1px #b5b5b5 !important; - background-color: white !important; -} - -.horario thead th:first-of-type { - width: 6ch; -} - -.horario [data-se-hour-rule]::before { - content: attr(data-se-hour-rule); - position: absolute; - left: 0; - width: 6ch; - top: 0; - transform: translateY(-50%); -} - -.horario [data-se-hour-rule]::after { - content: ""; - position: absolute; - background-color: #b5b5b5; - height: 1px; - left: 6ch; - right: 0; - top: 0; -} - -.horario :is(.TP, .TE, .P, .OT, .PL, .TC, .S, .O)>* { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(10ch, 1fr)); - grid-auto-rows: 1fr; - place-items: center; - gap: 4px; - border-radius: 4px; - padding: 4px; - height: 100%; - position: relative; - z-index: 1; -} - -.horario :is(.TP, .TE, .P, .OT, .PL, .TC, .S, .O) a { - color: white !important; - text-decoration: none !important; - font-weight: bold !important; -} - -.horario :is(.TP, .TE, .P, .OT, .PL, .TC, .S, .O) a:hover { - text-decoration: underline !important; -} - -.horario:not(:has(.TP)) #new-legend #TP, -.horario:not(:has(.TE)) #new-legend #TE, -.horario:not(:has(.P)) #new-legend #P, -.horario:not(:has(.OT)) #new-legend #OT, -.horario:not(:has(.PL)) #new-legend #PL, -.horario:not(:has(.TC)) #new-legend #TC, -.horario:not(:has(.S)) #new-legend #S, -.horario:not(:has(.O)) #new-legend #O { - display: none !important; -} - -.horario .TP>*, -#new-legend #TP::before { - background-color: #D3944C; -} - -.horario .P>*, -#new-legend #P::before { - background-color: #AB4D39; -} - -.horario .TE>*, -#new-legend #TE::before { - background-color: #FBD56C; -} - -.horario .OT>*, -#new-legend #OT::before { - background-color: #7CA5B8; -} - -.horario .PL>*, -#new-legend #PL::before { - background-color: #769C87; -} - -.horario .TC>*, -#new-legend #TC::before { - background-color: #CDBEB1; -} - -.horario .S>*, -#new-legend #S::before { - background-color: #917C9B; -} - -.horario .O>*, -#new-legend #O::before { - background-color: #b3b3b3; -} - -.horario .almoco, -#new-legend #almoco::before { - background-color: #FFBCB5 !important; -} - -.horario .today { - background-color: rgba(100, 100, 255, 10%); -} - -.legend-item { - display: flex; - flex-direction: row; - align-items: center; - gap: 8px; - font-size: 1.25em; -} - -.legend-item::before { - content: ""; - width: 1em; - height: 1em; - border-radius: 50%; -} - -.schedule-form { - display: flex; - gap: 1em; - margin-block: 1em; -} - -.schedule-form select { - flex: 1; -} - -#new-legend { - display: flex; - flex-direction: row; - flex-wrap: wrap; - gap: 16px; - padding: 8px; - width: 100%; -} - -p[id^="legend-abbrv-"] { - margin: 0px; -} diff --git a/dev/background.js b/dev/background.js deleted file mode 100644 index 9346b1d..0000000 --- a/dev/background.js +++ /dev/null @@ -1,24 +0,0 @@ -chrome.alarms.create("watch", {periodInMinutes:0.05, when:200}); - -chrome.alarms.onAlarm.addListener(async (alarm) => { - if(alarm.name === "watch"){ - let request = await fetch( - "https://localhost:8069/hasUpdate" - ); - if(request.status !== 200){ - console.log(`request has throwed ${request.status}: ${request.statusText}`); - return; - } - let requestJson = await request.json(); - if(requestJson.update){ - console.log("Detected updated command..."); - let tabList = await chrome.tabs.query({url:"*://sigarra.up.pt/feup/*"}); - for(let tab of tabList){ - console.log("Reloading tab ID: %d", tab.id) - await chrome.tabs.reload(tab.id); - } - console.log("Reloading extension...") - chrome.runtime.reload(); - } - } -}); \ No newline at end of file diff --git a/html/autorize.html b/html/autorize.html deleted file mode 100644 index 510e159..0000000 --- a/html/autorize.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - -

Quase lá

-

Autoriza-nos a melhorar o Sigarra

-
Autorizar
- - \ No newline at end of file diff --git a/html/autorize.js b/html/autorize.js deleted file mode 100644 index c5f9c46..0000000 --- a/html/autorize.js +++ /dev/null @@ -1,17 +0,0 @@ - -document.addEventListener('DOMContentLoaded', () =>{ - document.getElementById("permissions").addEventListener("click", () => { - chrome.permissions.request({origins:["https://sigarra.up.pt/*"]}).then((granted) => { - if(granted){ - chrome.tabs.query({ url: "*://sigarra.up.pt/feup/*" }, (tabs) => { - tabs.forEach((tab) => { - chrome.tabs.reload(tab.id); - }); - }); - chrome.tabs.update({url: chrome.runtime.getURL("html/installed.html")}); - }else{ - //TODO: Handle when the user didn't grant permissions - } - }); - }); -}); \ No newline at end of file diff --git a/html/installed.html b/html/installed.html deleted file mode 100644 index 7a0c9c6..0000000 --- a/html/installed.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -
- success -

Extensão pronta a usar!

-
- - \ No newline at end of file diff --git a/html/style.css b/html/style.css deleted file mode 100644 index 3276090..0000000 --- a/html/style.css +++ /dev/null @@ -1,103 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@100;200;300;400;500&display=swap'); - -*{ - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body#autorize{ - background-image: url("./images/background.jpg"); - background-repeat: no-repeat; - background-attachment: fixed; - background-size: 100% 100%; - background-position: center center; - animation: shrink 6s infinite alternate; -} - -body{ - font-family: 'Lexend Deca', sans-serif; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - height: 100vh; - color: rgb(236, 226, 226); - background: #231012; -} - -@keyframes shrink { - 0% { - background-size: 100% 100%; - } - 100% { - background-size: 110% 110%; - } -} - -@keyframes zoom { - 0% { - transform: scale(1); - } - 100% { - transform: scale(0.95); - } -} - -h1{ - font-size: 7rem; - font-weight: 100; - text-shadow: 0 10px 20px #000000d0; - animation: zoom 6s infinite alternate; -} - -h3{ - font-size: 2rem; - font-weight: 300; - text-shadow: 0 10px 20px #000000d0; - animation: zoom 6s infinite alternate; -} - -#permissions{ - background-color: #518886; - padding: 0.7rem 2rem; - border-radius: 10px; - cursor: pointer; - font-size: 2rem; - margin-top: 2rem; - font-weight: 300; - box-shadow: 0 10px 50px #0000007e; - transition: all 0.3s ease; -} - -#permissions:hover{ - background-color: #3a6463; - box-shadow: 0 10px 50px #0000004c; - transform: translateY(-5px) scale(1.01); -} - -#ready{ - background: rgba(153, 51, 51, 0.3); - padding: 1.2rem; - border-radius: 15px; - display: flex; - align-items: center; - gap: 1rem; - font-size: 1.5rem; - font-weight: 300; - animation: 0.5s ease-in-out 0s 1 slideInFromDown; -} -#ready > img{ - height: 50px; -} - -@keyframes slideInFromDown { - 0% { - transform: translatey(10%); - opacity: 0.2; - } - 100% { - transform: translateX(0); - opacity: 1; - } - } \ No newline at end of file diff --git a/manifest.js b/manifest.js deleted file mode 100644 index d35ef0b..0000000 --- a/manifest.js +++ /dev/null @@ -1,77 +0,0 @@ -let manifest = { - name: "Sigarra extension", - short_name: "Sigarra extension", - description: "Sigarra in a simpler way.", - version: "1.0.0", - manifest_version: 3, - icons: { - 16: "images/logo/logo-16.png", - 32: "images/logo/logo-32.png", - 48: "images/logo/logo-48.png", - 128: "images/logo/logo-128.png", - }, - content_security_policy: { - extension_pages: "script-src 'self'; object-src 'self';" - }, - content_scripts: [ - { - run_at: "document_start", - matches: ["https://sigarra.up.pt/feup/*"], - css: [ - "css/simpler.css", - "css/custom.css", - "css/icons.css", - "css/teacherPage.css" - ], - }, - { - run_at: "document_end", - matches: ["https://sigarra.up.pt/feup/*"], - js: ["dist/main.js"], - }, - ], - web_accessible_resources: [ - { - resources: [ - "css/main.css", - "css/custom.css", - "css/simpler.css", - "js/override-functions.js", - "css/icons.css", - "images/publicationWebsiteLogo/*" - ], - matches: ["https://sigarra.up.pt/*"], - }, - ], - host_permissions: ["https://sigarra.up.pt/*"], - action: { - default_icon: { - 16: "images/logo/logo-16.png", - 32: "images/logo/logo-32.png", - 48: "images/logo/logo-48.png", - }, - default_title: "Sigarra extension", - default_popup: "index.html", - }, - permissions: ["storage", "tabs", "cookies"], -}; - -export const MANIFEST_CHROME = { - ...manifest, - background: { - service_worker: "background.js", - type: "module", - } - }; - -export const MANIFEST_FIREFOX = { - ...manifest, - browser_specific_settings: { - gecko: { - //id: "", //TODO: add this - }, - }, - background: { - scripts: ["background.js"], - } -}; \ No newline at end of file diff --git a/package.json b/package.json index 4067ada..804e314 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,54 @@ { - "name": "sigarra-extension", - "type": "module", - "scripts": { - "build": "node ./bundle-script.js", - "bundle": "node ./bundle-script.js", - "watch": "node ./watch-script.js", - "release": "yarn bundle all release" - }, - "dependencies": { - "fs-extra": "^11.1.0", - "node-cmd": "^5.0.0", - "zip-local": "^0.3.5" - }, - "devDependencies": { - "@types/fs-extra": "^9.0.13", - "watch": "^1.0.2", - "klaw": "^4.1.0", - "@types/klaw": "^3.0.3", - "@types/chrome": "^0.0.218", - "https-localhost": "^4.7.1" - } + "name": "sigarra-extension", + "version": "1.0.0", + "displayName": "Sigarra Extension", + "author": "NIAEFEUP", + "description": "For a better sigarra.", + "license": "MIT", + "type": "module", + "engines": { + "node": ">=18" + }, + "scripts": { + "build": "tsc && vite build", + "build:firefox": "tsc && TARGET=firefox vite build", + "watch": "vite build --watch --mode development --minify false", + "watch:firefox": "TARGET=firefox vite build --watch --mode development --minify false", + "dev": "vite", + "dev:firefox": "TARGET=firefox vite", + "lint": "eslint src vite.config.ts", + "lint:fix": "eslint --fix src vite.config.ts", + "format": "prettier --check .", + "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/eslint": "^8.44.0", + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@types/webextension-polyfill": "^0.10.1", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@vitejs/plugin-react-swc": "^3.3.2", + "eslint": "^8.45.0", + "eslint-config-prettier": "^8.8.0", + "eslint-import-resolver-typescript": "^3.5.5", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.32.2", + "postcss-preset-env": "^9.0.0", + "prettier": "^3.0.0", + "prettier-plugin-tailwindcss": "^0.4.1", + "remixicon": "^3.4.0", + "tailwindcss": "^3.3.3", + "typescript": "^5.1.6", + "vite": "^4.4.4", + "vite-plugin-web-extension": "^3.1.2", + "webextension-polyfill": "^0.10.0" + } } diff --git a/popup/.babelrc b/popup/.babelrc deleted file mode 100644 index 9fcef03..0000000 --- a/popup/.babelrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": ["next/babel"], - "plugins": [] -} diff --git a/popup/.eslintrc.json b/popup/.eslintrc.json deleted file mode 100644 index a2ceebe..0000000 --- a/popup/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["next/babel", "next/core-web-vitals"] -} diff --git a/popup/.gitignore b/popup/.gitignore deleted file mode 100644 index 3b3b2e9..0000000 --- a/popup/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env.local -.env.development.local -.env.test.local -.env.production.local - -# vercel -.vercel diff --git a/popup/.prettierrc b/popup/.prettierrc deleted file mode 100644 index d615ebe..0000000 --- a/popup/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "endOfLine": "lf", - "semi": false, - "singleQuote": false, - "tabWidth": 2, - "trailingComma": "none" -} diff --git a/popup/components/controls/CheckboxControl.js b/popup/components/controls/CheckboxControl.js deleted file mode 100644 index 707d298..0000000 --- a/popup/components/controls/CheckboxControl.js +++ /dev/null @@ -1,74 +0,0 @@ -import * as CheckboxPrimitive from "@radix-ui/react-checkbox" -import { CheckIcon } from "@radix-ui/react-icons" -import { styled } from "@stitches/react" -import { useEffect, useState } from "react" - -import { getStorage, setStorage } from "../../utilities/chromeStorage" - -function CheckboxControl({ - label, - storageKey, - defaultState = false -}) { - const [localState, setLocalState] = useState(defaultState) - - useEffect(() => { - const getDefaultState = async () => { - try { - const userSetting = await getStorage(storageKey) - userSetting && setLocalState(userSetting === "on" ? true : false) - } catch (error) { - console.warn(error) - } - } - - getDefaultState() - }, [storageKey]) - - return ( - <> -
- -
- { - setLocalState(checked) - try { - await setStorage({ [storageKey]: checked ? "on" : "off" }) - } catch (error) { - console.warn(error) - } - }} - checked={localState} - id={storageKey} - className="flex items-center justify-center w-5 h-5 rounded-[4px] bg-accentThree" - > - - - - -
-
- - ) -} - -const StyledCheckbox = styled(CheckboxPrimitive.Root, { - position: "relative", - "&::after": { - content: "", - position: "absolute", - inset: `min( - 0px, - calc((100% - 2.25rem) / 2) - )` - }, - '&[data-state="unchecked"]': { - backgroundColor: "transparent", - border: "2px solid var(--twitter-accent-one)" - } -}) - -export default CheckboxControl \ No newline at end of file diff --git a/popup/components/controls/SwitchControl.js b/popup/components/controls/SwitchControl.js deleted file mode 100644 index ef50115..0000000 --- a/popup/components/controls/SwitchControl.js +++ /dev/null @@ -1,80 +0,0 @@ -import * as SwitchPrimitive from "@radix-ui/react-switch" -import { styled } from "@stitches/react" -import { useEffect, useState } from "react" - -import { getStorage, setStorage } from "../../utilities/chromeStorage" - -function SwitchControl({ - label, - storageKey, - defaultState = false -}) { - const [localState, setLocalState] = useState(defaultState) - - useEffect(() => { - const getDefaultState = async () => { - try { - const userDefault = await getStorage(storageKey) - userDefault && setLocalState(userDefault === "on" ? true : false) - } catch (error) { - console.warn(error) - } - } - - getDefaultState() - }, [storageKey]) - - return ( -
- - { - setLocalState(checked) - try { - await setStorage({ [storageKey]: checked ? "on" : "off" }) - } catch (error) { - console.warn(error) - } - }} - checked={localState} - id={storageKey} - > - - -
- ) -} - -const StyledSwitch = styled(SwitchPrimitive.Root, { - all: "unset", - width: 40, - height: 14, - backgroundColor: "#939393", - borderRadius: "9999px", - position: "relative", - WebkitTapHighlightColor: "#1DA1F2", - display: "flex", - alignItems: "center", - cursor: "pointer", - '&[data-state="checked"]': { backgroundColor: "#c24a4a" } -}) - -const StyledThumb = styled(SwitchPrimitive.Thumb, { - display: "block", - width: 20, - height: 20, - backgroundColor: "#fafafa", - boxShadow: "rgb(0 0 0 / 50%) 0px 1px 3px", - borderRadius: "9999px", - transition: "transform 100ms", - transform: "translateX(0px)", - willChange: "transform", - '&[data-state="checked"]': { - backgroundColor: "#993333", - transform: "translateX(20px)" - } -}) - -export default SwitchControl \ No newline at end of file diff --git a/popup/components/layout/Container.js b/popup/components/layout/Container.js deleted file mode 100644 index 8ccdd38..0000000 --- a/popup/components/layout/Container.js +++ /dev/null @@ -1,7 +0,0 @@ -const Container = ({ children }) => ( -
- {children} -
-) - -export default Container diff --git a/popup/components/layout/Footer.js b/popup/components/layout/Footer.js deleted file mode 100644 index c3846d8..0000000 --- a/popup/components/layout/Footer.js +++ /dev/null @@ -1,15 +0,0 @@ -const Footer = () => { - return ( -
- -
- ) -} - -export default Footer diff --git a/popup/components/layout/Header.js b/popup/components/layout/Header.js deleted file mode 100644 index 3c79018..0000000 --- a/popup/components/layout/Header.js +++ /dev/null @@ -1,22 +0,0 @@ -const Header = () => ( -
-
-

- Sigarra Extension -

-
-

- Made by{" "} - - niaefeup - -

-
-) - -export default Header diff --git a/popup/components/layout/Main.js b/popup/components/layout/Main.js deleted file mode 100644 index 4e1f644..0000000 --- a/popup/components/layout/Main.js +++ /dev/null @@ -1,9 +0,0 @@ -import Layout from "../sections/Layout" - -const Main = () => ( -
- -
-) - -export default Main diff --git a/popup/components/sections/Layout.js b/popup/components/sections/Layout.js deleted file mode 100644 index 6c3c4c5..0000000 --- a/popup/components/sections/Layout.js +++ /dev/null @@ -1,17 +0,0 @@ -import LayoutContent from './LayoutContent' - -const Layout = () => ( -
- -
- -
-
-) - -export default Layout \ No newline at end of file diff --git a/popup/components/sections/LayoutContent.js b/popup/components/sections/LayoutContent.js deleted file mode 100644 index 447b495..0000000 --- a/popup/components/sections/LayoutContent.js +++ /dev/null @@ -1,21 +0,0 @@ -import SwitchControl from '../controls/SwitchControl' - -const LayoutContent = () => ( -
-
-
- - - -
-
-
-) - -export default LayoutContent \ No newline at end of file diff --git a/popup/package.json b/popup/package.json deleted file mode 100644 index 209af5a..0000000 --- a/popup/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "sigarra-extension-popup", - "private": true, - "scripts": { - "dev": "next dev", - "lint": "next lint", - "build": "next build && next export && node ./sanitize.js", - "start": "next start", - "check:prettier": "npx prettier --check .", - "write:prettier": "npx prettier --write ." - }, - "dependencies": { - "@codemirror/lang-css": "^6.0.1", - "@radix-ui/react-checkbox": "^0.1.4", - "@radix-ui/react-icons": "^1.0.3", - "@radix-ui/react-separator": "^0.1.3", - "@radix-ui/react-slider": "^0.1.3", - "@radix-ui/react-switch": "^0.1.4", - "@radix-ui/react-toggle": "^0.1.3", - "@stitches/react": "^1.2.6", - "@uiw/react-codemirror": "^4.19.6", - "lodash.debounce": "^4.0.8", - "lodash.startcase": "^4.4.0", - "lodash.throttle": "^4.1.1", - "next": "12.0.7", - "react": "17.0.2", - "react-dom": "17.0.2" - }, - "devDependencies": { - "autoprefixer": "^10.4.1", - "eslint": "7.32.0", - "eslint-config-next": "12.0.7", - "postcss": "^8.4.5", - "tailwindcss": "^3.0.12" - } -} diff --git a/popup/pages/_app.js b/popup/pages/_app.js deleted file mode 100644 index 4b8a98b..0000000 --- a/popup/pages/_app.js +++ /dev/null @@ -1,7 +0,0 @@ -import "../styles/globals.css" - -const MyApp = ({ Component, pageProps }) => { - return -} - -export default MyApp diff --git a/popup/pages/index.js b/popup/pages/index.js deleted file mode 100644 index 6a92bb6..0000000 --- a/popup/pages/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import Container from "../components/layout/Container" -import Footer from "../components/layout/Footer" -import Header from "../components/layout/Header" -import Main from "../components/layout/Main" - -const IndexPage = () => ( - -
-
-