From 3ef694a468d9bb0cc3f6c1a185adc66b92e4a2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=87=E8=B6=A3=E4=BF=9D=E7=BD=97?= Date: Fri, 1 Mar 2024 18:33:29 +0800 Subject: [PATCH] Add Paul's Toolbox Contents --- .vscode/settings.json | 3 + assets/global.css | 55 ++ assets/icon.png | Bin 79750 -> 2459 bytes assets/icons.tsx | 35 + background/messages/read.ts | 26 + background/messages/test.ts | 13 - components/ui/form/form.module.less | 13 + components/ui/form/index.tsx | 17 + components/ui/message/index.tsx | 44 + components/ui/message/message.module.less | 34 + components/ui/message/utils.ts | 27 + components/ui/placeholder/index.tsx | 28 + .../ui/placeholder/placeholder.module.less | 13 + contents/bili.ts | 44 + contents/read.ts | 91 ++ hooks/useForm.ts | 95 +++ options/index.tsx | 72 ++ options/options.module.less | 17 + package.json | 14 +- pnpm-lock.yaml | 801 +++++++++++------- popup.tsx | 43 - popup/bili.module.less | 22 + popup/bili.tsx | 126 +++ popup/index.tsx | 49 ++ popup/menu.tsx | 39 + popup/popup.module.less | 60 ++ popup/read.tsx | 115 +++ utils/index.ts | 4 + 28 files changed, 1534 insertions(+), 366 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 assets/global.css create mode 100644 assets/icons.tsx create mode 100644 background/messages/read.ts delete mode 100644 background/messages/test.ts create mode 100644 components/ui/form/form.module.less create mode 100644 components/ui/form/index.tsx create mode 100644 components/ui/message/index.tsx create mode 100644 components/ui/message/message.module.less create mode 100644 components/ui/message/utils.ts create mode 100644 components/ui/placeholder/index.tsx create mode 100644 components/ui/placeholder/placeholder.module.less create mode 100644 contents/bili.ts create mode 100644 contents/read.ts create mode 100644 hooks/useForm.ts create mode 100644 options/index.tsx create mode 100644 options/options.module.less delete mode 100644 popup.tsx create mode 100644 popup/bili.module.less create mode 100644 popup/bili.tsx create mode 100644 popup/index.tsx create mode 100644 popup/menu.tsx create mode 100644 popup/popup.module.less create mode 100644 popup/read.tsx create mode 100644 utils/index.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ff30c44 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.tabSize": 2 +} \ No newline at end of file diff --git a/assets/global.css b/assets/global.css new file mode 100644 index 0000000..ddfefb2 --- /dev/null +++ b/assets/global.css @@ -0,0 +1,55 @@ +* { + box-sizing: border-box; +} + +body { + margin: 0; +} + +h1, h2, h3, h4, h5, h6, p { + margin: 0; +} + +h2 { + font-size: 1.2em; + font-weight: inherit; +} + +button { + padding: 0; + border: none; + cursor: pointer; + background-color: transparent; +} + +img { + max-width: 100%; +} + +img, svg { + vertical-align: middle; +} + +select, input, textarea, form button { + display: block; + padding: .75em; + width: 100%; + border-radius: .5em; + border: 1px solid #eee; +} + +button { + color: inherit; +} + +button, input, textarea { + font: inherit; +} + +form button { + background-color: #eee; +} + +textarea { + resize: vertical; +} diff --git a/assets/icon.png b/assets/icon.png index cfd931be9f3312acf4042d8dfe6be4d4f2b74b87..e58becc522c3c0cf9cf737a9fad4608b3c982d22 100644 GIT binary patch literal 2459 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®#@um)NH>6r=Ese1ao~VfxaI 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 + ); +} + +export function IconRead() { + return ( + + ); +} + +export function IconBili() { + return ( + + ); +} + +export function IconBack() { + return ( + + ); +} + +export function IconSetting() { + return ( + + ); +} + +export function IconSad() { + return ( + + ); +} diff --git a/background/messages/read.ts b/background/messages/read.ts new file mode 100644 index 0000000..ad469fa --- /dev/null +++ b/background/messages/read.ts @@ -0,0 +1,26 @@ +import type { PlasmoMessaging } from "@plasmohq/messaging"; + +const handler: PlasmoMessaging.MessageHandler = async (req, res) => { + const { token, siteUrl } = await chrome.storage.local.get(["token", "siteUrl"]); + + if (req.body.action === "submitAddForm") { + const { values } = req.body; + const formData = new FormData(); + + Object.keys(values).forEach((item) => { + formData.append(item, String(values[item])); + }); + + const addReq = await fetch(`${siteUrl}/api/read/add`, { + method: "POST", + body: formData, + headers: { + "paul-token-code": token, + }, + }).then((res) => res.json()); + + res.send(addReq); + } +} + +export default handler; diff --git a/background/messages/test.ts b/background/messages/test.ts deleted file mode 100644 index 83cb0d5..0000000 --- a/background/messages/test.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { PlasmoMessaging } from "@plasmohq/messaging" - -const handler: PlasmoMessaging.MessageHandler = async (req, res) => { - const message = await fetch('https://paul.ren/api/note').then((res) => res.json()); - - console.log(message); - - res.send({ - message - }) -} - -export default handler \ No newline at end of file diff --git a/components/ui/form/form.module.less b/components/ui/form/form.module.less new file mode 100644 index 0000000..3edbe3f --- /dev/null +++ b/components/ui/form/form.module.less @@ -0,0 +1,13 @@ +.form { + flex: 1; + gap: 1em; + display: flex; + flex-direction: column; + + label { + opacity: .6; + display: block; + text-align: left; + margin-bottom: .5em; + } +} diff --git a/components/ui/form/index.tsx b/components/ui/form/index.tsx new file mode 100644 index 0000000..209766c --- /dev/null +++ b/components/ui/form/index.tsx @@ -0,0 +1,17 @@ +import type { FormHTMLAttributes } from "react"; +import { clsn } from "~utils"; +import styles from "./form.module.less"; + +interface FormProps extends FormHTMLAttributes { + +} + +function Form({ children, className, ...props }: FormProps) { + return ( +
+ {children} +
+ ); +} + +export default Form; diff --git a/components/ui/message/index.tsx b/components/ui/message/index.tsx new file mode 100644 index 0000000..1f5f63c --- /dev/null +++ b/components/ui/message/index.tsx @@ -0,0 +1,44 @@ +import { useEffect, useState } from "react"; +import { createPortal } from "react-dom"; +import { type MessageItem, addFn, removeFn } from "./utils"; + +import styles from "./message.module.less"; + +function Message() { + const [message, setMessage] = useState(); + + useEffect(() => { + const fn = (nextMessage: MessageItem) => { + const key = `${Math.ceil(performance.now())}-${Math.round(Math.random() * 100)}`; + + setMessage({ ...nextMessage, key }); + + setTimeout(() => { + onClose(); + }, nextMessage.duration || 5000); + }; + + addFn(fn); + + return () => { + removeFn(fn); + }; + }, []); + + const onClose = () => { + setMessage(undefined); + } + + return createPortal(( +
+ {message && ( +
+ {message.content} + +
+ )} +
+ ), document.body); +} + +export default Message; diff --git a/components/ui/message/message.module.less b/components/ui/message/message.module.less new file mode 100644 index 0000000..7bd3626 --- /dev/null +++ b/components/ui/message/message.module.less @@ -0,0 +1,34 @@ +.message { + left: 0; + right: 0; + bottom: 5em; + z-index: 2; + margin: 0 1em; + display: flex; + position: fixed; + align-items: flex-end; + flex-direction: column; +} + +.item { + color: #fff; + padding: 1em; + margin: 0 auto; + max-width: 50em; + overflow: hidden; + position: relative; + border-radius: .5em; + background-color: rgba(0, 0, 0, .6); + box-shadow: 0 0 5em rgba(0, 0, 0, .1); + + .content, .close { + vertical-align: middle; + } + + .close { + line-height: 1; + cursor: pointer; + font-size: 1.5em; + margin-left: 1em; + } +} diff --git a/components/ui/message/utils.ts b/components/ui/message/utils.ts new file mode 100644 index 0000000..e19317b --- /dev/null +++ b/components/ui/message/utils.ts @@ -0,0 +1,27 @@ +export interface MessageItem { + key?: string; + content: React.ReactNode; + duration?: number; +} + +type MessageFn = (Message: MessageItem) => void; + +const addMessageFn: MessageFn[] = []; + +export const add = (Message: MessageItem) => { + addMessageFn.forEach((item) => { + item(Message); + }); +} + +export const addFn = (fn: MessageFn) => { + return addMessageFn.push(fn) - 1; +} + +export const removeFn = (fn: MessageFn) => { + const index = addMessageFn.indexOf(fn); + + if (index > -1) { + addMessageFn.splice(index, 1); + } +} diff --git a/components/ui/placeholder/index.tsx b/components/ui/placeholder/index.tsx new file mode 100644 index 0000000..1258a16 --- /dev/null +++ b/components/ui/placeholder/index.tsx @@ -0,0 +1,28 @@ +import { IconSad } from "~assets/icons"; +import type { PropsWithChildren } from "react"; +import styles from "./placeholder.module.less"; + +interface PlaceholderProps extends PropsWithChildren { + className?: string; + show?: boolean; + value: string; +} + +function Placeholder({ className, show, value, children }: PlaceholderProps) { + if (show === undefined || show) { + return ( +
+ +

{value}

+
+ ); + } + + return ( +
+ {children} +
+ ); +} + +export default Placeholder; diff --git a/components/ui/placeholder/placeholder.module.less b/components/ui/placeholder/placeholder.module.less new file mode 100644 index 0000000..73d4689 --- /dev/null +++ b/components/ui/placeholder/placeholder.module.less @@ -0,0 +1,13 @@ +.placeholder { + margin: 2em 0; + text-align: center; + + svg { + width: 4em; + margin-bottom: 1em; + } + + p { + opacity: .6; + } +} diff --git a/contents/bili.ts b/contents/bili.ts new file mode 100644 index 0000000..0c4f92d --- /dev/null +++ b/contents/bili.ts @@ -0,0 +1,44 @@ +import type { PlasmoCSConfig } from "plasmo"; + +export const config: PlasmoCSConfig = { + matches: ["https://mall.bilibili.com/*"] +}; + +chrome.runtime.onMessage.addListener((req, sender, send) => { + if (req.type === "toolbox:getBiliToy") { + const item = document.querySelectorAll(".silde-item"); + + if (item.length) { + const project = document.querySelector(".tagC-ip .tagC-ip-con").innerText; + const made = document.querySelector(".tagC-ip .tagC-ip-con-brand").innerText; + + const projectExp = new RegExp(`\s?${project}\s?`); + const madeExp = new RegExp(`\s?${made}\s?`); + const name = document.querySelector(".title-text-wrap") + .innerText.replace(/\[\S+\]/, "") + .replace(projectExp, "") + .replace(madeExp, "") + .replaceAll(/\s?Q版手办\s?|\s?粘土人\s?/g, "") + .trim(); + + const images = []; + + item.forEach((item) => { + images.push( + item.style.backgroundImage.replace("url(\"", "").replace("\")", "").replace("//", "https://") + ); + }); + + send({ + name, + project, + made: document.querySelector(".tagC-ip .tagC-ip-con-brand").innerText, + sale: document.querySelector(".item-complex:nth-child(4) .item-complex-value").innerText.replace("-", "/"), + images, + }); + } + else { + send(false); + } + } +}); diff --git a/contents/read.ts b/contents/read.ts new file mode 100644 index 0000000..f32a112 --- /dev/null +++ b/contents/read.ts @@ -0,0 +1,91 @@ +const getAuthor = () => { + const metaAuthor = document.querySelector(`meta[name="author"]`); + const metaOgAuthor = document.querySelector(`meta[property="og:article:author"]`); + + if (metaAuthor) { + return metaAuthor.getAttribute("content"); + } + + if (metaOgAuthor) { + return metaOgAuthor.getAttribute("content"); + } + + return ""; +} + +const getImage = () => { + const metaOgImage = document.querySelector(`meta[property="og:image"]`); + + if (metaOgImage) { + return metaOgImage.getAttribute("content"); + } + + return ""; +} + +const getDesc = () => { + const articleFirstParagraph = document.querySelector("article p") || document.querySelector("p"); + const metaDescription = document.querySelector(`meta[name="description"]`); + const metaOgDescription = document.querySelector(`meta[property="og:description"]`); + + if (metaOgDescription) { + return metaOgDescription.getAttribute("content"); + } + + if (metaDescription) { + return metaDescription.getAttribute("content"); + } + + if (articleFirstParagraph) { + return articleFirstParagraph.innerText; + } + + return ""; +} + +const getSiteName = () => { + const title = document.title; + const metaSiteName = document.querySelector(`meta[property="og:site_name"]`); + + if (metaSiteName) { + return metaSiteName.getAttribute("content"); + } + + if (title.includes(" - ")) { + const start = title.lastIndexOf(" - ") + 3; + + return title.substring(start); + } + + if (title.includes(" | ")) { + const start = title.lastIndexOf(" | ") + 3; + + return title.substring(start); + } + + return ""; +} + +const getFrom = () => { + if (location.host === "mp.weixin.qq.com") { + return "wechat"; + } + + return "web"; +} + +chrome.runtime.onMessage.addListener((req, sender, send) => { + console.log(req); + + if (req.type === "toolbox:getInfo") { + send({ + title: document.title, + link: `${location.origin}${location.pathname}`, + desc: getDesc(), + from: getFrom(), + author: getAuthor(), + image: getImage(), + sitename: getSiteName(), + }); + } +}); diff --git a/hooks/useForm.ts b/hooks/useForm.ts new file mode 100644 index 0000000..de71f8f --- /dev/null +++ b/hooks/useForm.ts @@ -0,0 +1,95 @@ +import { useEffect, useRef, type FormEvent } from "react"; + +type Values = Record; + +interface Props { + initialValues?: Values; + onSubmit?: (values: Values) => void; +} + +type a = (values: Values) => void; + +interface UseFormReturns { + getValue: () => Values; + setValue: (name: string, value: string | number) => void; + setValues: (values: Values) => void; + bindInput: (name: string) => any; + onSubmit: (a: a) => (ev: FormEvent) => void; +} + +function useForm({ initialValues }: Props) { + const formRef = useRef(); + const inputs = useRef({}); + const values = useRef({ ...initialValues }); + const inst = useRef(); + + if (!inst.current) { + const getValue = () => { + return values.current; + } + + const setValue = (name, value) => { + console.log(inputs.current[name]); + + if (inputs.current[name]) { + values.current[name] = value; + inputs.current[name].value = value; + } + } + + const setValues = (values: Values) => { + Object.keys(values).forEach((key) => { + setValue(key, values[key]); + }); + } + + const bindInput = (name: string) => { + console.log('bindinput') + + return { + name, + id: name, + ref: (target) => { + console.log('ref', target); + + if (target) { + inputs.current[name] = target; + } + + return undefined; + }, + defaultValue: initialValues[name], + onChange: (ev) => { + values.current[ev.target.name] = ev.target.value; + }, + } + } + + const onSubmit = (fn) => (ev: SubmitEvent) => { + ev.preventDefault(); + fn(getValue()); + } + + inst.current = { + getValue, + setValue, + setValues, + bindInput, + onSubmit, + }; + } + + useEffect(() => { + console.log('form', formRef.current); + + // formRef.current.onsubmit = (ev: SubmitEvent) => { + // ev.preventDefault(); + // console.log(t.current?.getValue()); + // console.log(inputs); + // } + }, []); + + return inst.current; +} + +export default useForm; diff --git a/options/index.tsx b/options/index.tsx new file mode 100644 index 0000000..039c743 --- /dev/null +++ b/options/index.tsx @@ -0,0 +1,72 @@ +import { useState, type ChangeEvent, type FormEvent, useEffect } from "react"; +import Form from "~components/ui/form"; +import { IconPaul } from "~assets/icons"; +import Message from "~components/ui/message"; +import { add } from "~components/ui/message/utils"; +import "~assets/global.css"; +import styles from "./options.module.less"; + +function Options() { + const [state, setState] = useState({ + token: "", + siteUrl: "", + }); + + useEffect(() => { + chrome.storage.local.get(["token", "siteUrl"]).then((res) => { + setState((prevState) => ({ ...prevState, ...(res as any)})); + }); + }, []); + + const onChange = (ev: ChangeEvent) => { + const { name, value } = ev.target; + + if (!name) { + return; + } + + setState((prevState) => ({ + ...prevState, + [name]: value, + })); + } + + const onSubmit = (ev: FormEvent) => { + ev.preventDefault(); + + chrome.storage.local.set(state); + + add({ + content: "保存成功", + }); + } + + return ( + <> +
+

+ + 小窝工具箱 设置面板 +

+
+
+ + +
+
+ + +
+ + +
+
+ + + ); +} + +export default Options; diff --git a/options/options.module.less b/options/options.module.less new file mode 100644 index 0000000..3e9bb65 --- /dev/null +++ b/options/options.module.less @@ -0,0 +1,17 @@ +.options { + padding: 0 1em; + max-width: 40em; + margin: 3em auto; + + .title { + display: flex; + align-items: center; + margin-bottom: 1.5em; + + svg { + width: 2em; + color: #28b9be; + margin-right: .5em; + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index 6e9c0a0..2e9a592 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { - "name": "give-blue-newt", - "displayName": "Give blue newt", + "name": "home-toolbox", + "displayName": "小窝工具箱", "version": "0.0.1", - "description": "A basic Plasmo extension.", - "author": "Plasmo Corp. ", + "description": "一个借助浏览器插件特性与小窝后端快速交互的方式", + "author": "Dreamer-Paul. ", "scripts": { "dev": "plasmo dev", "build": "plasmo build", @@ -11,7 +11,7 @@ }, "dependencies": { "@plasmohq/messaging": "^0.5.0", - "plasmo": "0.82.1", + "plasmo": "0.84.1", "react": "18.2.0", "react-dom": "18.2.0" }, @@ -21,10 +21,14 @@ "@types/node": "20.5.0", "@types/react": "18.2.20", "@types/react-dom": "18.2.7", + "less": "^4.2.0", "prettier": "3.0.2", "typescript": "5.1.6" }, "manifest": { + "permissions": [ + "tabs", "storage" + ], "host_permissions": [ "https://*/*" ] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0964d4..490c2b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,12 +1,16 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@plasmohq/messaging': specifier: ^0.5.0 version: 0.5.0(react@18.2.0) plasmo: - specifier: 0.82.1 - version: 0.82.1(react-dom@18.2.0)(react@18.2.0) + specifier: 0.84.1 + version: 0.84.1(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -30,6 +34,9 @@ devDependencies: '@types/react-dom': specifier: 18.2.7 version: 18.2.7 + less: + specifier: ^4.2.0 + version: 4.2.0 prettier: specifier: 3.0.2 version: 3.0.2 @@ -483,11 +490,21 @@ packages: '@lezer/common': 0.15.12 dev: false - /@ljharb/through@2.3.9: - resolution: {integrity: sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==} + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 dev: false + /@lmdb/lmdb-darwin-arm64@2.5.2: + resolution: {integrity: sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-darwin-arm64@2.7.11: resolution: {integrity: sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==} cpu: [arm64] @@ -496,6 +513,14 @@ packages: dev: false optional: true + /@lmdb/lmdb-darwin-x64@2.5.2: + resolution: {integrity: sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-darwin-x64@2.7.11: resolution: {integrity: sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==} cpu: [x64] @@ -504,6 +529,14 @@ packages: dev: false optional: true + /@lmdb/lmdb-linux-arm64@2.5.2: + resolution: {integrity: sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-linux-arm64@2.7.11: resolution: {integrity: sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==} cpu: [arm64] @@ -512,6 +545,14 @@ packages: dev: false optional: true + /@lmdb/lmdb-linux-arm@2.5.2: + resolution: {integrity: sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-linux-arm@2.7.11: resolution: {integrity: sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==} cpu: [arm] @@ -520,6 +561,14 @@ packages: dev: false optional: true + /@lmdb/lmdb-linux-x64@2.5.2: + resolution: {integrity: sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-linux-x64@2.7.11: resolution: {integrity: sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==} cpu: [x64] @@ -528,6 +577,14 @@ packages: dev: false optional: true + /@lmdb/lmdb-win32-x64@2.5.2: + resolution: {integrity: sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@lmdb/lmdb-win32-x64@2.7.11: resolution: {integrity: sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==} cpu: [x64] @@ -628,6 +685,19 @@ packages: - '@parcel/core' dev: false + /@parcel/cache@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.8.3 + dependencies: + '@parcel/core': 2.9.3 + '@parcel/fs': 2.8.3(@parcel/core@2.9.3) + '@parcel/logger': 2.8.3 + '@parcel/utils': 2.8.3 + lmdb: 2.5.2 + dev: false + /@parcel/cache@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==} engines: {node: '>= 12.0.0'} @@ -641,6 +711,13 @@ packages: lmdb: 2.7.11 dev: false + /@parcel/codeframe@2.8.3: + resolution: {integrity: sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==} + engines: {node: '>= 12.0.0'} + dependencies: + chalk: 4.1.2 + dev: false + /@parcel/codeframe@2.9.3: resolution: {integrity: sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==} engines: {node: '>= 12.0.0'} @@ -735,6 +812,14 @@ packages: semver: 7.5.4 dev: false + /@parcel/diagnostic@2.8.3: + resolution: {integrity: sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==} + engines: {node: '>= 12.0.0'} + dependencies: + '@mischnic/json-sourcemap': 0.1.0 + nullthrows: 1.1.1 + dev: false + /@parcel/diagnostic@2.9.3: resolution: {integrity: sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==} engines: {node: '>= 12.0.0'} @@ -743,16 +828,42 @@ packages: nullthrows: 1.1.1 dev: false + /@parcel/events@2.8.3: + resolution: {integrity: sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==} + engines: {node: '>= 12.0.0'} + dev: false + /@parcel/events@2.9.3: resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==} engines: {node: '>= 12.0.0'} dev: false + /@parcel/fs-search@2.8.3: + resolution: {integrity: sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + dev: false + /@parcel/fs-search@2.9.3: resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==} engines: {node: '>= 12.0.0'} dev: false + /@parcel/fs@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.8.3 + dependencies: + '@parcel/core': 2.9.3 + '@parcel/fs-search': 2.8.3 + '@parcel/types': 2.8.3(@parcel/core@2.9.3) + '@parcel/utils': 2.8.3 + '@parcel/watcher': 2.2.0 + '@parcel/workers': 2.8.3(@parcel/core@2.9.3) + dev: false + /@parcel/fs@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==} engines: {node: '>= 12.0.0'} @@ -774,6 +885,14 @@ packages: nullthrows: 1.1.1 dev: false + /@parcel/hash@2.8.3: + resolution: {integrity: sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + xxhash-wasm: 0.4.2 + dev: false + /@parcel/hash@2.9.3: resolution: {integrity: sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==} engines: {node: '>= 12.0.0'} @@ -781,6 +900,14 @@ packages: xxhash-wasm: 0.4.2 dev: false + /@parcel/logger@2.8.3: + resolution: {integrity: sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==} + engines: {node: '>= 12.0.0'} + dependencies: + '@parcel/diagnostic': 2.8.3 + '@parcel/events': 2.8.3 + dev: false + /@parcel/logger@2.9.3: resolution: {integrity: sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==} engines: {node: '>= 12.0.0'} @@ -789,6 +916,13 @@ packages: '@parcel/events': 2.9.3 dev: false + /@parcel/markdown-ansi@2.8.3: + resolution: {integrity: sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==} + engines: {node: '>= 12.0.0'} + dependencies: + chalk: 4.1.2 + dev: false + /@parcel/markdown-ansi@2.9.3: resolution: {integrity: sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==} engines: {node: '>= 12.0.0'} @@ -908,6 +1042,22 @@ packages: - '@swc/helpers' dev: false + /@parcel/package-manager@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.8.3 + dependencies: + '@parcel/core': 2.9.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3(@parcel/core@2.9.3) + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3(@parcel/core@2.9.3) + '@parcel/utils': 2.8.3 + '@parcel/workers': 2.8.3(@parcel/core@2.9.3) + semver: 5.7.2 + dev: false + /@parcel/package-manager@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==} engines: {node: '>= 12.0.0'} @@ -987,6 +1137,15 @@ packages: - '@parcel/core' dev: false + /@parcel/plugin@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==} + engines: {node: '>= 12.0.0'} + dependencies: + '@parcel/types': 2.8.3(@parcel/core@2.9.3) + transitivePeerDependencies: + - '@parcel/core' + dev: false + /@parcel/plugin@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==} engines: {node: '>= 12.0.0'} @@ -1044,6 +1203,17 @@ packages: - '@parcel/core' dev: false + /@parcel/runtime-js@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==} + engines: {node: '>= 12.0.0', parcel: ^2.8.3} + dependencies: + '@parcel/plugin': 2.8.3(@parcel/core@2.9.3) + '@parcel/utils': 2.8.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + dev: false + /@parcel/runtime-js@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==} engines: {node: '>= 12.0.0', parcel: ^2.9.3} @@ -1308,6 +1478,20 @@ packages: - '@parcel/core' dev: false + /@parcel/types@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==} + dependencies: + '@parcel/cache': 2.8.3(@parcel/core@2.9.3) + '@parcel/diagnostic': 2.8.3 + '@parcel/fs': 2.8.3(@parcel/core@2.9.3) + '@parcel/package-manager': 2.8.3(@parcel/core@2.9.3) + '@parcel/source-map': 2.1.1 + '@parcel/workers': 2.8.3(@parcel/core@2.9.3) + utility-types: 3.10.0 + transitivePeerDependencies: + - '@parcel/core' + dev: false + /@parcel/types@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==} dependencies: @@ -1322,6 +1506,19 @@ packages: - '@parcel/core' dev: false + /@parcel/utils@2.8.3: + resolution: {integrity: sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==} + engines: {node: '>= 12.0.0'} + dependencies: + '@parcel/codeframe': 2.8.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/hash': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/markdown-ansi': 2.8.3 + '@parcel/source-map': 2.1.1 + chalk: 4.1.2 + dev: false + /@parcel/utils@2.9.3: resolution: {integrity: sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==} engines: {node: '>= 12.0.0'} @@ -1426,17 +1623,6 @@ packages: dev: false optional: true - /@parcel/watcher@2.1.0: - resolution: {integrity: sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==} - engines: {node: '>= 10.0.0'} - requiresBuild: true - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 3.2.1 - node-gyp-build: 4.6.0 - dev: false - /@parcel/watcher@2.2.0: resolution: {integrity: sha512-71S4TF+IMyAn24PK4KSkdKtqJDR3zRzb0HE3yXpacItqTM7XfF2f5q9NEGLEVl0dAaBAGfNwDCjH120y25F6Tg==} engines: {node: '>= 10.0.0'} @@ -1458,6 +1644,21 @@ packages: '@parcel/watcher-win32-x64': 2.2.0 dev: false + /@parcel/workers@2.8.3(@parcel/core@2.9.3): + resolution: {integrity: sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.8.3 + dependencies: + '@parcel/core': 2.9.3 + '@parcel/diagnostic': 2.8.3 + '@parcel/logger': 2.8.3 + '@parcel/types': 2.8.3(@parcel/core@2.9.3) + '@parcel/utils': 2.8.3 + chrome-trace-event: 1.0.3 + nullthrows: 1.1.1 + dev: false + /@parcel/workers@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} engines: {node: '>= 12.0.0'} @@ -1660,8 +1861,8 @@ packages: - '@parcel/core' dev: false - /@plasmohq/parcel-config@0.39.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z7mtSJt+ta7r3nxCWkwZLrbi+5osSBJ9WVAfuDCVYnvHakfcE0BPQCF491r0/oFF7HCN6Ilm8Q6HPAiYcQnsbw==} + /@plasmohq/parcel-config@0.40.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-80zXQHVsIGlEqwbfIUpgiuIv049taaJNJ3aRYg6DT93F6Yc9C2JaJe75N6Qa4O5lLaEEG2PF52Ca9LiSghiuOQ==} dependencies: '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) '@parcel/config-default': 2.9.3(@parcel/core@2.9.3) @@ -1669,7 +1870,7 @@ packages: '@parcel/optimizer-data-url': 2.9.3(@parcel/core@2.9.3) '@parcel/reporter-bundle-buddy': 2.9.3(@parcel/core@2.9.3) '@parcel/resolver-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-js': 2.9.3(@parcel/core@2.9.3) + '@parcel/runtime-js': 2.8.3(@parcel/core@2.9.3) '@parcel/runtime-service-worker': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/transformer-babel': 2.9.3(@parcel/core@2.9.3) @@ -1688,14 +1889,14 @@ packages: '@plasmohq/parcel-compressor-utf8': 0.0.6(@parcel/core@2.9.3) '@plasmohq/parcel-namer-manifest': 0.3.12 '@plasmohq/parcel-optimizer-encapsulate': 0.0.7 - '@plasmohq/parcel-optimizer-es': 0.3.5 + '@plasmohq/parcel-optimizer-es': 0.4.0 '@plasmohq/parcel-packager': 0.6.14 '@plasmohq/parcel-resolver': 0.13.1 - '@plasmohq/parcel-resolver-post': 0.4.1 - '@plasmohq/parcel-runtime': 0.21.1 + '@plasmohq/parcel-resolver-post': 0.4.2 + '@plasmohq/parcel-runtime': 0.23.0 '@plasmohq/parcel-transformer-inject-env': 0.2.11 - '@plasmohq/parcel-transformer-inline-css': 0.3.8 - '@plasmohq/parcel-transformer-manifest': 0.17.7 + '@plasmohq/parcel-transformer-inline-css': 0.3.10 + '@plasmohq/parcel-transformer-manifest': 0.17.8 '@plasmohq/parcel-transformer-svelte': 0.5.2 '@plasmohq/parcel-transformer-vue': 0.5.0(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: @@ -1758,8 +1959,8 @@ packages: - whiskers dev: false - /@plasmohq/parcel-core@0.1.6: - resolution: {integrity: sha512-x6lbPIKHeTL8e1VdJ6J7lDlymPs1Yt0abDfe0y/UAdILG6ZH3zQIwdPE/D99cP9+DPfF9S0AbRKVoCIc9qAVwg==} + /@plasmohq/parcel-core@0.1.8: + resolution: {integrity: sha512-kMWuazvf925ZAn2yHzzrb4Zsje1titFmvi/C5cXrI0TH58eT7n6GUiRXiOYP4JgGDHs/pEygx3WPuyWVTNF2HQ==} engines: {parcel: '>= 2.7.0'} dependencies: '@parcel/cache': 2.9.3(@parcel/core@2.9.3) @@ -1775,7 +1976,7 @@ packages: '@parcel/source-map': 2.1.1 '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - '@parcel/watcher': 2.1.0 + '@parcel/watcher': 2.2.0 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) abortcontroller-polyfill: 1.7.5 nullthrows: 1.1.1 @@ -1801,15 +2002,15 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) dev: false - /@plasmohq/parcel-optimizer-es@0.3.5: - resolution: {integrity: sha512-JrpFR/QCNp06ZkaDlN+ZoxkDWbTuqx4OPZl4tH6gO2OuqgLNBHIKK+wmrwTrTF9JGDhpHeJIS2gsWBWJGQo8Mg==} + /@plasmohq/parcel-optimizer-es@0.4.0: + resolution: {integrity: sha512-Iz1cTuw38wEbSQ36/dVKh5MyRA12/Ecrx90pqaIkoqA9ZSZuxuWWa7rPa3bVMFkzi28BpVHW1z9EnhVN4188kQ==} engines: {parcel: '>= 2.8.0'} dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.3.66 + '@swc/core': 1.3.82 nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -1826,8 +2027,8 @@ packages: nullthrows: 1.1.1 dev: false - /@plasmohq/parcel-resolver-post@0.4.1: - resolution: {integrity: sha512-oJrHEEY7Fb9wcZG6DIWd/j3L0yV+5zVL3wF28lKLhngzrGbprZApc0v9AUs9ogoWv1WFIrwKF9ObicnQLIyuZg==} + /@plasmohq/parcel-resolver-post@0.4.2: + resolution: {integrity: sha512-dbrwjUQEhKqKBEgVJjL5ls1p6bpQ3VlDXI5REoaSpwoPcB7TRAcUfTwV4oNGE4eTnw4ElF08JkyslYvKgxosAw==} engines: {parcel: '>= 2.7.0'} dependencies: '@parcel/core': 2.9.3 @@ -1835,8 +2036,8 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - tsup: 7.2.0(typescript@5.1.6) - typescript: 5.1.6 + tsup: 7.2.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - '@swc/core' - postcss @@ -1857,8 +2058,8 @@ packages: got: 13.0.0 dev: false - /@plasmohq/parcel-runtime@0.21.1: - resolution: {integrity: sha512-Y2O9ZUh2O+TTpT41COLX1LJ1lbqqSQd5jrkZVEAkdSeCRcVpjtqZf/pz3+mdKZpethvxM9O8uU8TIWPhzL3ihA==} + /@plasmohq/parcel-runtime@0.23.0: + resolution: {integrity: sha512-+ZqH9XksSbWPC6pnvjmvmykxh1SfyYkSKyOeNQSeHsPFo40fADUKOda8Hw/vm/g5p8GIlv5YSb2iYZzCWmKs1g==} engines: {parcel: '>= 2.7.0'} dependencies: '@parcel/core': 2.9.3 @@ -1875,19 +2076,19 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) dev: false - /@plasmohq/parcel-transformer-inline-css@0.3.8: - resolution: {integrity: sha512-a2DRyIL/cMP5qWni4EzGjhxhIxXSx/M7GsVZZUY/uPDbyWktupRZTfWrs0YCtBn+VCq2WuiHNyvkn30Kj7p/nw==} + /@plasmohq/parcel-transformer-inline-css@0.3.10: + resolution: {integrity: sha512-SN8r+pW3k0MOxGqBRA4FM+YkNrUL0wXjdmBD8JzzNDjdmHfNmPAfMnLwpsbjjJUuUIjnG6fJ7OAq31rxwoHFhA==} engines: {parcel: '>= 2.7.0'} dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - browserslist: 4.21.9 - lightningcss: 1.21.1 + browserslist: 4.22.1 + lightningcss: 1.21.8 dev: false - /@plasmohq/parcel-transformer-manifest@0.17.7: - resolution: {integrity: sha512-lnszdDYmt7NwDetGhA0hNxn7RhsaOeks4qlEVyKYgbdf3wBeauEixs8I7pieKvZeYP7fmTyX8JQ15x3VSefkwQ==} + /@plasmohq/parcel-transformer-manifest@0.17.8: + resolution: {integrity: sha512-G6XISWddf900Q/4ABlFLBJcqvN1VTYF06NytTOMSDO4dOraxGhgZ0CyC990b+LJEa7nc5xf4xhHQxf3mkjALPQ==} engines: {parcel: '>= 2.7.0'} dependencies: '@mischnic/json-sourcemap': 0.1.0 @@ -1898,7 +2099,7 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 content-security-policy-parser: 0.4.1 - json-schema-to-ts: 2.9.1 + json-schema-to-ts: 2.9.2 nullthrows: 1.1.1 dev: false @@ -2141,15 +2342,6 @@ packages: svgo: 2.8.0 dev: false - /@swc/core-darwin-arm64@1.3.66: - resolution: {integrity: sha512-UijJsvuLy73vxeVYEy7urIHksXS+3BdvJ9s9AY+bRMSQW483NO7RLp8g4FdTyJbRaN0BH15SQnY0dcjQBkVuHw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - /@swc/core-darwin-arm64@1.3.78: resolution: {integrity: sha512-596KRua/d5Gx1buHKKchSyHuwoIL4S1BRD/wCvYNLNZ3xOzcuBBmXOjrDVigKi1ztNDeS07p30RO5UyYur0XAA==} engines: {node: '>=10'} @@ -2159,10 +2351,10 @@ packages: dev: false optional: true - /@swc/core-darwin-x64@1.3.66: - resolution: {integrity: sha512-xGsHKvViQnwTNLF30Y/5OqWdnN6RsiyUI8awZXfz1sHcXCEaLe+v+WLQ+/E8sgw0YUkYVHzzfV/sAN2CezJK5Q==} + /@swc/core-darwin-arm64@1.3.82: + resolution: {integrity: sha512-JfsyDW34gVKD3uE0OUpUqYvAD3yseEaicnFP6pB292THtLJb0IKBBnK50vV/RzEJtc1bR3g1kNfxo2PeurZTrA==} engines: {node: '>=10'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: false @@ -2177,11 +2369,11 @@ packages: dev: false optional: true - /@swc/core-linux-arm-gnueabihf@1.3.66: - resolution: {integrity: sha512-gNbLcSIV2pq90BkMSpzvK4xPXOl8GEF3YR4NaqF0CYSzQsVXXTTqMuX/r26xNYudBKzH0345S1MpoRk2qricnA==} + /@swc/core-darwin-x64@1.3.82: + resolution: {integrity: sha512-ogQWgNMq7qTpITjcP3dnzkFNj7bh6SwMr859GvtOTrE75H7L7jDWxESfH4f8foB/LGxBKiDNmxKhitCuAsZK4A==} engines: {node: '>=10'} - cpu: [arm] - os: [linux] + cpu: [x64] + os: [darwin] requiresBuild: true dev: false optional: true @@ -2195,10 +2387,10 @@ packages: dev: false optional: true - /@swc/core-linux-arm64-gnu@1.3.66: - resolution: {integrity: sha512-cJSQ0oplyWbJqy4rzVcnBYLAi6z1QT3QCcR7iAey0aAmCvfRBZJfXlyjggMjn4iosuadkauwCZR1xYNhBDRn7w==} + /@swc/core-linux-arm-gnueabihf@1.3.82: + resolution: {integrity: sha512-7TMXG1lXlNhD0kUiEqs+YlGV4irAdBa2quuy+XI3oJf2fBK6dQfEq4xBy65B3khrorzQS3O0oDGQ+cmdpHExHA==} engines: {node: '>=10'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: false @@ -2213,8 +2405,8 @@ packages: dev: false optional: true - /@swc/core-linux-arm64-musl@1.3.66: - resolution: {integrity: sha512-GDQZpcB9aGxG9PTA2shdIkoMZlGK5omJ8NR49uoBTtLBVYiGeXAwV0U1Uaw8kXEZj9i7wZDkvjzjSaNH3evRsg==} + /@swc/core-linux-arm64-gnu@1.3.82: + resolution: {integrity: sha512-26JkOujbzcItPAmIbD5vHJxQVy5ihcSu3YHTKwope1h28sApZdtE7S3e2G3gsZRTIdsCQkXUtAQeqHxGWWR3pw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2231,10 +2423,10 @@ packages: dev: false optional: true - /@swc/core-linux-x64-gnu@1.3.66: - resolution: {integrity: sha512-lg8E4O/Pd9KfK0lajdinVMuGME8dSv7V9arhEpmlfGE2eXSDCWqDn5Htk5QVBstt9lt1lsRhWHJ/YYc2eQY30Q==} + /@swc/core-linux-arm64-musl@1.3.82: + resolution: {integrity: sha512-8Izj9tuuMpoc3cqiPBRtwqpO1BZ/+sfZVsEhLxrbOFlcSb8LnKyMle1g3JMMUwI4EU75RGVIzZMn8A6GOKdJbA==} engines: {node: '>=10'} - cpu: [x64] + cpu: [arm64] os: [linux] requiresBuild: true dev: false @@ -2249,8 +2441,8 @@ packages: dev: false optional: true - /@swc/core-linux-x64-musl@1.3.66: - resolution: {integrity: sha512-lo8ZcAO/zL2pZWH+LZIyge8u2MklaeuT6+FpVVpBFktMVdYXbaVtzpvWbgRFBZHvL3SRDF+u8jxjtkXhvGUpTw==} + /@swc/core-linux-x64-gnu@1.3.82: + resolution: {integrity: sha512-0GSrIBScQwTaPv46T2qB7XnDYxndRCpwH4HMjh6FN+I+lfPUhTSJKW8AonqrqT1TbpFIgvzQs7EnTsD7AnSCow==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -2267,11 +2459,11 @@ packages: dev: false optional: true - /@swc/core-win32-arm64-msvc@1.3.66: - resolution: {integrity: sha512-cQoVwBuJY5WkHbfpCOlndNwYr1ZThatRjQQvKy540NUIeAEk9Fa6ozlDBtU75UdaWKtUG6YQ/bWz+KTemheVxw==} + /@swc/core-linux-x64-musl@1.3.82: + resolution: {integrity: sha512-KJUnaaepDKNzrEbwz4jv0iC3/t9x0NSoe06fnkAlhh2+NFKWKKJhVCOBTrpds8n7eylBDIXUlK34XQafjVMUdg==} engines: {node: '>=10'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [linux] requiresBuild: true dev: false optional: true @@ -2285,10 +2477,10 @@ packages: dev: false optional: true - /@swc/core-win32-ia32-msvc@1.3.66: - resolution: {integrity: sha512-y/FrAIINK4UBeUQQknGlWXEyjo+MBvjF7WkUf2KP7sNr9EHHy8+dXohAGd5Anz0eJrqOM1ZXR/GEjxRp7bGQ1Q==} + /@swc/core-win32-arm64-msvc@1.3.82: + resolution: {integrity: sha512-TR3MHKhDYIyGyFcyl2d/p1ftceXcubAhX5wRSOdtOyr5+K/v3jbyCCqN7bbqO5o43wQVCwwR/drHleYyDZvg8Q==} engines: {node: '>=10'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true dev: false @@ -2303,10 +2495,10 @@ packages: dev: false optional: true - /@swc/core-win32-x64-msvc@1.3.66: - resolution: {integrity: sha512-yI64ACzS14qFLrfyO12qW+f/UROTotzDeEbuyJAaPD2IZexoT1cICznI3sBmIfrSt33mVuW8eF5m3AG/NUImzw==} + /@swc/core-win32-ia32-msvc@1.3.82: + resolution: {integrity: sha512-ZX4HzVVt6hs84YUg70UvyBJnBOIspmQQM0iXSzBvOikk3zRoN7BnDwQH4GScvevCEBuou60+i4I6d5kHLOfh8Q==} engines: {node: '>=10'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true dev: false @@ -2321,27 +2513,14 @@ packages: dev: false optional: true - /@swc/core@1.3.66: - resolution: {integrity: sha512-Hpf91kH5ly7fHkWnApwryTQryT+TO4kMMPH3WyciUSQOWLE3UuQz1PtETHQQk7PZ/b1QF0qQurJrgfBr5bSKUA==} + /@swc/core-win32-x64-msvc@1.3.82: + resolution: {integrity: sha512-4mJMnex21kbQoaHeAmHnVwQN9/XAfPszJ6n9HI7SVH+aAHnbBIR0M59/b50/CJMjTj5niUGk7EwQ3nhVNOG32g==} engines: {node: '>=10'} + cpu: [x64] + os: [win32] requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - 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 dev: false + optional: true /@swc/core@1.3.78: resolution: {integrity: sha512-y6DQP571v7fbUUY7nz5G4lNIRGofuO48K5pGhD9VnuOCTuptfooCdi8wnigIrIhM/M4zQ53m/YCMDCbOtDgEww==} @@ -2365,12 +2544,40 @@ packages: '@swc/core-win32-x64-msvc': 1.3.78 dev: false + /@swc/core@1.3.82: + resolution: {integrity: sha512-jpC1a18HMH67018Ij2jh+hT7JBFu7ZKcQVfrZ8K6JuEY+kjXmbea07P9MbQUZbAe0FB+xi3CqEVCP73MebodJQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/types': 0.1.5 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.82 + '@swc/core-darwin-x64': 1.3.82 + '@swc/core-linux-arm-gnueabihf': 1.3.82 + '@swc/core-linux-arm64-gnu': 1.3.82 + '@swc/core-linux-arm64-musl': 1.3.82 + '@swc/core-linux-x64-gnu': 1.3.82 + '@swc/core-linux-x64-musl': 1.3.82 + '@swc/core-win32-arm64-msvc': 1.3.82 + '@swc/core-win32-ia32-msvc': 1.3.82 + '@swc/core-win32-x64-msvc': 1.3.82 + dev: false + /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.2 dev: false + /@swc/types@0.1.5: + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + dev: false + /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -2660,15 +2867,15 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001522 - electron-to-chromium: 1.4.499 + caniuse-lite: 1.0.30001579 + electron-to-chromium: 1.4.643 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: false /buffer@5.7.1: @@ -2718,18 +2925,19 @@ packages: responselike: 3.0.0 dev: false + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + dev: false + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: false - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - dev: false - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2738,12 +2946,8 @@ packages: /caniuse-lite@1.0.30001522: resolution: {integrity: sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==} - /capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 + /caniuse-lite@1.0.30001579: + resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} dev: false /chalk@2.4.2: @@ -2767,21 +2971,8 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false - /change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.6.2 + /change-case@5.1.2: + resolution: {integrity: sha512-CAtbGEDulyjzs05RXy3uKcwqeztz/dMEuAc1Xu9NQBsbrhuGMneL0u9Dj5SoutLKBFYun8txxYIwhjtLNfUmCA==} dev: false /chardet@0.7.0: @@ -2904,14 +3095,6 @@ packages: proto-list: 1.2.4 dev: false - /constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case: 2.0.2 - dev: false - /content-security-policy-parser@0.4.1: resolution: {integrity: sha512-NNJS8XPnx3OKr/CUOSwDSJw+lWTrZMYnclLKj0Y9CYOfJNJTWLFGPg3u2hYgbXMXKVRkZR2fbyReNQ1mUff/Qg==} engines: {node: '>=8.0.0'} @@ -2924,7 +3107,6 @@ packages: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} dependencies: is-what: 3.14.1 - dev: false /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} @@ -3006,6 +3188,7 @@ packages: /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + requiresBuild: true peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -3013,7 +3196,6 @@ packages: optional: true dependencies: ms: 2.1.3 - dev: false optional: true /debug@4.3.4: @@ -3055,6 +3237,15 @@ packages: engines: {node: '>=10'} dev: false + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: false + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3105,13 +3296,6 @@ packages: domhandler: 4.3.1 dev: false - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: false - /dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} @@ -3134,6 +3318,10 @@ packages: /electron-to-chromium@1.4.499: resolution: {integrity: sha512-0NmjlYBLKVHva4GABWAaHuPJolnDuL0AhV3h1hES6rcLCWEIbRL6/8TghfsVwkx6TEroQVdliX7+aLysUpKvjw==} + /electron-to-chromium@1.4.643: + resolution: {integrity: sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg==} + dev: false + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false @@ -3164,7 +3352,6 @@ packages: requiresBuild: true dependencies: prr: 1.0.1 - dev: false optional: true /error-ex@1.3.2: @@ -3275,8 +3462,8 @@ packages: micromatch: 4.0.5 dev: false - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3292,8 +3479,8 @@ packages: reusify: 1.0.4 dev: false - /fflate@0.8.0: - resolution: {integrity: sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==} + /fflate@0.8.1: + resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: false /figures@5.0.0: @@ -3341,10 +3528,23 @@ packages: dev: false optional: true + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: false + /get-port@7.0.0: resolution: {integrity: sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==} engines: {node: '>=16'} @@ -3394,12 +3594,18 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: false + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: false + /got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -3440,7 +3646,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false /graphql-import-macro@1.0.0: resolution: {integrity: sha512-YK4g6iP60H++MpP93tb0VwOg7aM5iIC0hdSQKTrEDANeLWf0KFAT9dwlBeMDrhY+jcW7qsAEDtaw58cgVnQXAw==} @@ -3462,11 +3667,27 @@ packages: engines: {node: '>=8'} dev: false - /header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - capital-case: 1.0.4 - tslib: 2.6.2 + get-intrinsic: 1.2.2 + dev: false + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 dev: false /htmlnano@2.0.4(svgo@2.8.0): @@ -3540,9 +3761,9 @@ packages: /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: safer-buffer: 2.1.2 - dev: false optional: true /ieee754@1.2.1: @@ -3559,7 +3780,6 @@ packages: engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true - dev: false optional: true /immutable@4.3.2: @@ -3589,11 +3809,11 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false - /inquirer@9.2.10: - resolution: {integrity: sha512-tVVNFIXU8qNHoULiazz612GFl+yqNfjMTbLuViNJE/d860Qxrd3NMrse8dm40VUQLOQeULvaQF8lpAhvysjeyA==} + /inquirer@9.2.12: + resolution: {integrity: sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==} engines: {node: '>=14.18.0'} dependencies: - '@ljharb/through': 2.3.9 + '@ljharb/through': 2.3.11 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 @@ -3689,7 +3909,6 @@ packages: /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - dev: false /isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} @@ -3728,8 +3947,8 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json-schema-to-ts@2.9.1: - resolution: {integrity: sha512-8MNpRGERlCUWYeJwsWkMrJ0MWzBz49dfqpG+n9viiIlP4othaahbiaNQZuBzmPxRLUhOv1QJMCzW5WE8nHFGIQ==} + /json-schema-to-ts@2.9.2: + resolution: {integrity: sha512-h9WqLkTVpBbiaPb5OmeUpz/FBLS/kvIJw4oRCPiEisIu2WjMh+aai0QIY2LoOhRFx5r92taGLcerIrzxKBAP6g==} engines: {node: '>=16'} dependencies: '@babel/runtime': 7.22.10 @@ -3774,16 +3993,6 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: false - - /lightningcss-darwin-arm64@1.21.1: - resolution: {integrity: sha512-dljpsZ15RN4AxI958n9qO7sAv29FRuUMCB10CSDBGmDOW+oDDbNLs1k5/7MlYg5FXnZqznUSTtHBFHFyo1Rs2Q==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true /lightningcss-darwin-arm64@1.21.7: resolution: {integrity: sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==} @@ -3794,10 +4003,10 @@ packages: dev: false optional: true - /lightningcss-darwin-x64@1.21.1: - resolution: {integrity: sha512-e/dAKKOcLe2F/A5a89gh03ABxZHn4yjGapGimCFxnCpg68iIdtoPrJTFAyxPV3Jty4djLYRlitoIWNidOK35zA==} + /lightningcss-darwin-arm64@1.21.8: + resolution: {integrity: sha512-BOMoGfcgkk2f4ltzsJqmkjiqRtlZUK+UdwhR+P6VgIsnpQBV3G01mlL6GzYxYqxq+6/3/n/D+4oy2NeknmADZw==} engines: {node: '>= 12.0.0'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: false @@ -3812,6 +4021,15 @@ packages: dev: false optional: true + /lightningcss-darwin-x64@1.21.8: + resolution: {integrity: sha512-YhF64mcVDPKKufL4aNFBnVH7uvzE0bW3YUsPXdP4yUcT/8IXChypOZ/PE1pmt2RlbmsyVuuIIeZU4zTyZe5Amw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /lightningcss-freebsd-x64@1.21.7: resolution: {integrity: sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==} engines: {node: '>= 12.0.0'} @@ -3821,11 +4039,11 @@ packages: dev: false optional: true - /lightningcss-linux-arm-gnueabihf@1.21.1: - resolution: {integrity: sha512-Ak12ti7D4Q9Tk3tX9fktCJVe+spP12/dOcebw67DBeZ3EQ4meIGTkFpl2ryZK8Z7kbIJNUsscVsz3zXW21/25A==} + /lightningcss-freebsd-x64@1.21.8: + resolution: {integrity: sha512-CV6A/vTG2Ryd3YpChEgfWWv4TXCAETo9TcHSNx0IP0dnKcnDEiAko4PIKhCqZL11IGdN1ZLBCVPw+vw5ZYwzfA==} engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] + cpu: [x64] + os: [freebsd] requiresBuild: true dev: false optional: true @@ -3839,10 +4057,10 @@ packages: dev: false optional: true - /lightningcss-linux-arm64-gnu@1.21.1: - resolution: {integrity: sha512-ggCX0iyG/h2C1MfDfmfhB0zpEUTTP+kG9XBbwHRFKrQsmb3b7WC5QiyVuGYkzoGiHy1JNuyi27qR9cNVLCR8FQ==} + /lightningcss-linux-arm-gnueabihf@1.21.8: + resolution: {integrity: sha512-9PMbqh8n/Xq0F4/j2NR/hHM2HRDiFXFSF0iOvV67pNWKJkHIO6mR8jBw/88Aro5Ye/ILsX5OuWsxIVJDFv0NXA==} engines: {node: '>= 12.0.0'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: false @@ -3857,8 +4075,8 @@ packages: dev: false optional: true - /lightningcss-linux-arm64-musl@1.21.1: - resolution: {integrity: sha512-vGaVLju7Zhus/sl5Oz/1YbV7L/Mr/bfjHbThj/DJcFggZPj1wfSeWc6gAAISqK3bIAUMVlcUEm2UnIDGj0tsOQ==} + /lightningcss-linux-arm64-gnu@1.21.8: + resolution: {integrity: sha512-JTM/TuMMllkzaXV7/eDjG4IJKLlCl+RfYZwtsVmC82gc0QX0O37csGAcY2OGleiuA4DnEo/Qea5WoFfZUNC6zg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -3875,10 +4093,10 @@ packages: dev: false optional: true - /lightningcss-linux-x64-gnu@1.21.1: - resolution: {integrity: sha512-W6b+ndCCO/SeIT4s7kJhkJGXZVz96uwb7eY61SwCAibs5HirzRMrIyuMY3JKcRESg9/jysHo4YWrr1icbzWiXw==} + /lightningcss-linux-arm64-musl@1.21.8: + resolution: {integrity: sha512-01gWShXrgoIb8urzShpn1RWtZuaSyKSzF2hfO+flzlTPoACqcO3rgcu/3af4Cw54e8vKzL5hPRo4kROmgaOMLg==} engines: {node: '>= 12.0.0'} - cpu: [x64] + cpu: [arm64] os: [linux] requiresBuild: true dev: false @@ -3893,8 +4111,8 @@ packages: dev: false optional: true - /lightningcss-linux-x64-musl@1.21.1: - resolution: {integrity: sha512-eA2ygIg/IbjglRq/QRCDTgnR8mtmXJ65t/1C1QUUvvexWfr0iiTKJj3iozgUKZmupfomrPIhF3Qya0el9PqjUA==} + /lightningcss-linux-x64-gnu@1.21.8: + resolution: {integrity: sha512-yVB5vYJjJb/Aku0V9QaGYIntvK/1TJOlNB9GmkNpXX5bSSP2pYW4lWW97jxFMHO908M0zjEt1qyOLMyqojHL+Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -3911,11 +4129,11 @@ packages: dev: false optional: true - /lightningcss-win32-x64-msvc@1.21.1: - resolution: {integrity: sha512-2PKZvhrMxr7TjceUkkAtNQtDOEozcbp8GdcOKCrhNmrQ1OT8Mm5p4sMp7bzT0QytT7W5EuhIteWQFW/qI64Wtw==} + /lightningcss-linux-x64-musl@1.21.8: + resolution: {integrity: sha512-TYi+KNtBVK0+FZvxTX/d5XJb+tw3Jq+2Rr9hW359wp1afsi1Vkg+uVGgbn+m2dipa5XwpCseQq81ylMlXuyfPw==} engines: {node: '>= 12.0.0'} cpu: [x64] - os: [win32] + os: [linux] requiresBuild: true dev: false optional: true @@ -3929,21 +4147,14 @@ packages: dev: false optional: true - /lightningcss@1.21.1: - resolution: {integrity: sha512-TKkVZzKnJVtGLI+8QMXLH2JdNcxjodA06So+uXA5qelvuReKvPyCJBX/6ZznADA76zNijmDc3OhjxvTBmNtCoA==} + /lightningcss-win32-x64-msvc@1.21.8: + resolution: {integrity: sha512-mww+kqbPx0/C44l2LEloECtRUuOFDjq9ftp+EHTPiCp2t+avy0sh8MaFwGsrKkj2XfZhaRhi4CPVKBoqF1Qlwg==} engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.21.1 - lightningcss-darwin-x64: 1.21.1 - lightningcss-linux-arm-gnueabihf: 1.21.1 - lightningcss-linux-arm64-gnu: 1.21.1 - lightningcss-linux-arm64-musl: 1.21.1 - lightningcss-linux-x64-gnu: 1.21.1 - lightningcss-linux-x64-musl: 1.21.1 - lightningcss-win32-x64-msvc: 1.21.1 + cpu: [x64] + os: [win32] + requiresBuild: true dev: false + optional: true /lightningcss@1.21.7: resolution: {integrity: sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==} @@ -3962,6 +4173,23 @@ packages: lightningcss-win32-x64-msvc: 1.21.7 dev: false + /lightningcss@1.21.8: + resolution: {integrity: sha512-jEqaL7m/ZckZJjlMAfycr1Kpz7f93k6n7KGF5SJjuPSm6DWI6h3ayLZmgRHgy1OfrwoCed6h4C/gHYPOd1OFMA==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.21.8 + lightningcss-darwin-x64: 1.21.8 + lightningcss-freebsd-x64: 1.21.8 + lightningcss-linux-arm-gnueabihf: 1.21.8 + lightningcss-linux-arm64-gnu: 1.21.8 + lightningcss-linux-arm64-musl: 1.21.8 + lightningcss-linux-x64-gnu: 1.21.8 + lightningcss-linux-x64-musl: 1.21.8 + lightningcss-win32-x64-msvc: 1.21.8 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -3971,6 +4199,24 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false + /lmdb@2.5.2: + resolution: {integrity: sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==} + requiresBuild: true + dependencies: + msgpackr: 1.9.7 + node-addon-api: 4.3.0 + node-gyp-build-optional-packages: 5.0.3 + ordered-binary: 1.4.1 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 2.5.2 + '@lmdb/lmdb-darwin-x64': 2.5.2 + '@lmdb/lmdb-linux-arm': 2.5.2 + '@lmdb/lmdb-linux-arm64': 2.5.2 + '@lmdb/lmdb-linux-x64': 2.5.2 + '@lmdb/lmdb-win32-x64': 2.5.2 + dev: false + /lmdb@2.7.11: resolution: {integrity: sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==} hasBin: true @@ -4022,12 +4268,6 @@ packages: js-tokens: 4.0.0 dev: false - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.6.2 - dev: false - /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4058,7 +4298,6 @@ packages: dependencies: pify: 4.0.1 semver: 5.7.2 - dev: false optional: true /mdn-data@2.0.14: @@ -4091,7 +4330,6 @@ packages: engines: {node: '>=4'} hasBin: true requiresBuild: true - dev: false optional: true /mime@2.6.0: @@ -4138,7 +4376,7 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false + requiresBuild: true optional: true /msgpackr-extract@3.0.2: @@ -4209,16 +4447,8 @@ packages: sax: 1.2.4 transitivePeerDependencies: - supports-color - dev: false optional: true - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - dev: false - /node-abi@3.47.0: resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} @@ -4226,10 +4456,6 @@ packages: semver: 7.5.4 dev: false - /node-addon-api@3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - dev: false - /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} dev: false @@ -4242,6 +4468,11 @@ packages: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} dev: false + /node-gyp-build-optional-packages@5.0.3: + resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} + hasBin: true + dev: false + /node-gyp-build-optional-packages@5.0.6: resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} hasBin: true @@ -4250,14 +4481,10 @@ packages: /node-gyp-build-optional-packages@5.0.7: resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} hasBin: true + requiresBuild: true dev: false optional: true - /node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} - hasBin: true - dev: false - /node-object-hash@3.0.0: resolution: {integrity: sha512-jLF6tlyletktvSAawuPmH1SReP0YfZQ+tBrDiTCK+Ai7eXPMS9odi5xW/iKC7ZhrWJJ0Z5xYcW/x+1fVMn1Qvw==} engines: {node: '>=16', pnpm: '>=8'} @@ -4350,13 +4577,6 @@ packages: semver: 7.5.4 dev: false - /param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: false - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4377,21 +4597,6 @@ packages: /parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - dev: false - - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: false - - /path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -4427,7 +4632,7 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: false + requiresBuild: true optional: true /pirates@4.0.6: @@ -4435,8 +4640,8 @@ packages: engines: {node: '>= 6'} dev: false - /plasmo@0.82.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gXOl+8YsTLrvvsYGnEUXcjzlbkhhfZJ4+ql70azv9nBPZn6d0ajjLiQvRZVvTSlM+bN4EN3Hreszgbvq2IU5uQ==} + /plasmo@0.84.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-87U0ryQGhefBQ8aBRGiRB4l3MShbLQtXpv5aVO90q4e/7fhW6hcRc2Y+XzW1ukK6y65RWwzTGVN6HKwGQze55g==} hasBin: true dependencies: '@expo/spawn-async': 1.7.2 @@ -4445,20 +4650,20 @@ packages: '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) '@parcel/watcher': 2.2.0 '@plasmohq/init': 0.7.0 - '@plasmohq/parcel-config': 0.39.1(react-dom@18.2.0)(react@18.2.0) - '@plasmohq/parcel-core': 0.1.6 + '@plasmohq/parcel-config': 0.40.1(react-dom@18.2.0)(react@18.2.0) + '@plasmohq/parcel-core': 0.1.8 buffer: 6.0.3 chalk: 5.3.0 - change-case: 4.1.2 + change-case: 5.1.2 dotenv: 16.3.1 dotenv-expand: 10.0.0 events: 3.3.0 - fast-glob: 3.3.1 - fflate: 0.8.0 + fast-glob: 3.3.2 + fflate: 0.8.1 get-port: 7.0.0 got: 13.0.0 ignore: 5.2.4 - inquirer: 9.2.10 + inquirer: 9.2.12 is-path-inside: 4.0.0 json5: 2.2.3 mnemonic-id: 3.2.7 @@ -4466,9 +4671,9 @@ packages: package-json: 8.1.1 process: 0.11.10 semver: 7.5.4 - sharp: 0.32.5 + sharp: 0.32.6 tempy: 3.1.0 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - '@swc/core' - '@swc/helpers' @@ -4623,7 +4828,7 @@ packages: /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: false + requiresBuild: true optional: true /pump@3.0.0: @@ -4795,7 +5000,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false /sass@1.66.1: resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} @@ -4809,7 +5013,7 @@ packages: /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: false + requiresBuild: true optional: true /scheduler@0.23.0: @@ -4821,8 +5025,6 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: false - optional: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -4835,16 +5037,19 @@ packages: dependencies: lru-cache: 6.0.0 - /sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 dev: false - /sharp@0.32.5: - resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: @@ -4897,13 +5102,6 @@ packages: engines: {node: '>=8'} dev: false - /snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: false - /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -4912,7 +5110,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -5141,9 +5338,8 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false - /tsup@7.2.0(typescript@5.1.6): + /tsup@7.2.0(typescript@5.2.2): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -5173,7 +5369,7 @@ packages: source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - ts-node @@ -5209,6 +5405,13 @@ packages: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: false /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} @@ -5232,29 +5435,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 dev: false - /upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - dependencies: - tslib: 2.6.2 - dev: false - - /upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - dependencies: - tslib: 2.6.2 - dev: false - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false diff --git a/popup.tsx b/popup.tsx deleted file mode 100644 index 6e698ef..0000000 --- a/popup.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useEffect, useState } from "react" -import { sendToBackground } from "@plasmohq/messaging" - -function IndexPopup() { - const [data, setData] = useState("") - - useEffect(() => { - const resp = sendToBackground({ - name: "test", - body: { - id: 123 - } - }).then((res) => { - console.log(res); - }) - - console.log(resp) - }, []); - - return ( -
-

- Welcome to your test - - {" "} - Plasmo - {" "} - Extension! -

- setData(e.target.value)} value={data} /> - - View Docs - -
- ) -} - -export default IndexPopup diff --git a/popup/bili.module.less b/popup/bili.module.less new file mode 100644 index 0000000..8fd02dc --- /dev/null +++ b/popup/bili.module.less @@ -0,0 +1,22 @@ +.bili { + gap: 1em; + display: flex; + + .image { + flex: 0 0 40%; + } + + .selector { + gap: 1em; + display: flex; + flex-wrap: wrap; + margin-top: 1em; + + img { + width: 3em; + height: 3em; + cursor: pointer; + border: 1px solid #eee; + } + } +} diff --git a/popup/bili.tsx b/popup/bili.tsx new file mode 100644 index 0000000..6afb018 --- /dev/null +++ b/popup/bili.tsx @@ -0,0 +1,126 @@ +import { useEffect, useState, type FormEvent } from "react"; +import Placeholder from "~components/ui/placeholder"; +import Form from "~components/ui/form"; +import { IconBack } from "~assets/icons"; +import styles from "./popup.module.less"; +import stylesB from "./bili.module.less"; +import useForm from "~hooks/useForm"; + +interface ReadProps { + onBack: () => void; +} + +interface FormValue { + name: string; + ename: string; + project: string; + made: string; + sale: string; + type: number; + desc: string; +} + +const getInfo = async () => { + let tab: chrome.tabs.Tab; + + [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true }); + + if (tab && !tab.url.includes("chrome")) { + const a = await chrome.tabs.sendMessage(tab.id, { type: 'toolbox:getBiliToy' }); + + console.log('get toy:', a); + + return a; + } +} + +function Toy({ onBack }: ReadProps) { + const { bindInput, setValues, onSubmit } = useForm({ + initialValues: { + type: 3, + }, + onSubmit: (values) => { + console.log(values); + }, + }); + + const [imgs, setImgs] = useState([]); + const [currentImg, setCurrentImg] = useState(0); + const [failed, setFailed] = useState(false); + + useEffect(() => { + getInfo().then((res) => { + if (!res) { + setFailed(true); + return; + } + + const { image, ...othors } = res; + + setValues(othors); + setImgs(res.images); + setCurrentImg(0); + }) + }, []); + + return ( +
+
+ +

添加手办

+
+
+ +
+ +
+ {imgs.map((item, index) => ( + setCurrentImg(index)} /> + ))} +
+
+
console.log(data))}> +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
+
+ ); +} + +export default Toy; diff --git a/popup/index.tsx b/popup/index.tsx new file mode 100644 index 0000000..fcb94ed --- /dev/null +++ b/popup/index.tsx @@ -0,0 +1,49 @@ +import { useState } from "react"; +import Menu from "./menu"; +import Read from "./read"; +import Toy from "./bili"; +import Message from "~components/ui/message"; +import { clsn } from "~utils"; +import "assets/global.css"; +import styles from "./popup.module.less"; + +function IndexPopup() { + const [data, setData] = useState("") + + const [tab, setTab] = useState(); + + const onBack = () => { + setTab(undefined); + } + + const onClickMenu = (value: string) => { + if (value === "options") { + chrome.runtime.openOptionsPage(); + return; + } + + setTab(value); + } + + const renderBody = () => { + if (tab === "read") { + return ; + } + if (tab === "toy") { + return ; + } + + return ; + } + + return ( + <> +
+ {renderBody()} +
+ + + ); +} + +export default IndexPopup; diff --git a/popup/menu.tsx b/popup/menu.tsx new file mode 100644 index 0000000..73e53af --- /dev/null +++ b/popup/menu.tsx @@ -0,0 +1,39 @@ +import { IconBili, IconRead, IconSetting } from "~assets/icons"; +import styles from "./popup.module.less"; + +const items = [ + { + name: "在看", + icon: , + value: "read", + }, + { + name: "增加手办", + icon: , + value: "toy", + }, + { + name: "插件设置", + icon: , + value: "options", + } +]; + +interface MenuProps { + onClick: (value: string) => void; +} + +function Menu({ onClick }: MenuProps) { + return ( +
+ {items.map((item) => ( +
onClick(item.value)}> + {item.icon && item.icon} + {item.name} +
+ ))} +
+ ); +} + +export default Menu; diff --git a/popup/popup.module.less b/popup/popup.module.less new file mode 100644 index 0000000..01501f9 --- /dev/null +++ b/popup/popup.module.less @@ -0,0 +1,60 @@ +.root { + color: #333; + font-size: 14px; + min-width: 200px; + + &.hasTab { + min-width: 300px; + } +} + +.menu { + .item { + display: flex; + cursor: pointer; + padding: .75em 1em; + border-bottom: 1px solid #eee; + transition: background-color .3s; + + svg { + width: 1em; + color: #28b9be; + margin-right: .5em; + } + } + + .item:hover { + background-color: #eee; + } +} + +.tab { + .header { + padding: .75em; + position: relative; + text-align: center; + border-bottom: 1px solid #eee; + + .back { + top: 0; + left: 0; + bottom: 0; + width: 2em; + font-size: 1.3em; + position: absolute; + transition: background-color .3s; + + &:hover { + background-color: #eee; + } + + svg { + width: 1em; + } + } + } + + .body { + padding: 1em; + } +} diff --git a/popup/read.tsx b/popup/read.tsx new file mode 100644 index 0000000..4ced8ad --- /dev/null +++ b/popup/read.tsx @@ -0,0 +1,115 @@ +import { sendToBackground } from "@plasmohq/messaging"; +import { useEffect, useState } from "react"; +import Form from "~components/ui/form"; +import { IconBack } from "~assets/icons"; +import styles from "./popup.module.less"; +import useForm from "~hooks/useForm"; +import { add } from "~components/ui/message/utils"; + +interface ReadProps { + onBack: () => void; +} + +interface FormValue { + title: string; + link: string; + desc: string; + tips: string; +} + +const getInfo = async () => { + const [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true }); + + if (tab) { + return await chrome.tabs.sendMessage(tab.id, { type: 'toolbox:getInfo' }); + } +} + +const submitForm = (body: FormValue) => { + sendToBackground({ + name: "read", + body: { + action: "submitAddForm", + values: body, + }, + }).then((res) => { + if (res.status === "Success") { + add({ + content: "提交成功", + }); + } + else { + add({ + content: res.msg, + }); + } + }); +} + +function Read({ onBack }: ReadProps) { + const [count, setCount] = useState(0); + const { bindInput, setValues, onSubmit } = useForm({ + initialValues: { + test: 'test', + }, + onSubmit: (values) => { + submitForm(values); + }, + }); + + useEffect(() => { + getInfo().then((res) => { + if (!res) { + return; + } + + setValues(res); + }) + }, []); + + return ( +
+
+ +

在看

+
+
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ {count} + +
+
+ ); +} + +export default Read; diff --git a/utils/index.ts b/utils/index.ts new file mode 100644 index 0000000..7a86661 --- /dev/null +++ b/utils/index.ts @@ -0,0 +1,4 @@ +// Classnames +export const clsn = (...clsn: (string | undefined | null | false)[]) => { + return clsn.filter(item => item).join(" "); +}