diff --git a/app/_lib/test/oss.ts b/app/_lib/test/oss.ts new file mode 100644 index 0000000..f828d01 --- /dev/null +++ b/app/_lib/test/oss.ts @@ -0,0 +1,20 @@ +const OSS = require('ali-oss'); + +// 创建OSS实例 +const client = new OSS({ + accessKeyId: 'LTAI5tNzopZHJFa2Q9vqr1u5', + accessKeySecret: 'qPu7fyft0KJ1l6SGqbS71IW0vDbRlr' + // 先不指定region和bucket,以便后续查询 +}); + +// 列出所有Bucket +client.listBuckets().then((result) => { + console.log('所有的Bucket:', result.buckets); + // 打印每个Bucket的信息 + result.buckets.forEach((bucket) => { + console.log('Bucket名称:', bucket.name); + console.log('Bucket所在区域:', bucket.location); + }); +}).catch((error) => { + console.error('列出Bucket失败:', error); +}); \ No newline at end of file diff --git a/app/_lib/upload.ts b/app/_lib/upload.ts new file mode 100644 index 0000000..25105b0 --- /dev/null +++ b/app/_lib/upload.ts @@ -0,0 +1,34 @@ +import OSS from "ali-oss"; +import { v4 as uuid } from "uuid"; +import { mRequest } from "./request"; + +const ossBase = "https://aihlp.com.cn"; +const accessKeyId = process.env.ALIYUN_RAM_ACCESS_KEY_ID || '' +const accessKeySecret = process.env.ALIYUN_RAM_ACCESS_KEY_SECRET || '' +console.log('id'); + +console.log(accessKeyId); + +export default async function uploadOss(file: File, root: string) { + const path = `/admin/${root}/${uuid()}_${file.name}`; + const res = await mRequest<{ + accessKeyId: string; + accessKeySecret: string; + region: string; + bucket: string; + }>('GET', '/api/uploadKey') + const client = new OSS({ + ...res + }) + return client + .put(path, file, { + mime: file.type, + headers: { + "Content-Type": file.type, + }, + }) + .then((res) => { + console.log(res); + return ossBase + "/" + res.name; + }); +} diff --git a/app/_ui/ImageUpload.tsx b/app/_ui/ImageUpload.tsx new file mode 100644 index 0000000..fe01c0e --- /dev/null +++ b/app/_ui/ImageUpload.tsx @@ -0,0 +1,76 @@ +import { UploadOutlined } from "@ant-design/icons" +import { Button, Input, Space } from "antd" +import { useRef, useState } from "react" +import uploadOss from "../_lib/upload" + +export default function ImageUpload(props: { + accept: string + width?: number + height?: number + value?: string + background?: string + onChange?: (val: string) => void +}) { + const inputRef = useRef(null) + const [loading, setLoading] = useState(false) + + const handleFile = async (file: File) => { + setLoading(true) + try { + + const url = await uploadOss(file, "aibot") + setLoading(false) + if (url) { + props.onChange?.(url) + } + } catch (e) { + setLoading(false) + + } + + } + return ( + <> +
+ + + { + props.onChange?.(e.target.value) + }}> + + + { + const file = e.target.files?.[0] + e.target.value = "" + if (!file) return + handleFile(file) + }} + /> + + + ) +} diff --git a/app/_ui/LinkListBox.tsx b/app/_ui/LinkListBox.tsx new file mode 100644 index 0000000..99860d9 --- /dev/null +++ b/app/_ui/LinkListBox.tsx @@ -0,0 +1,34 @@ +"use client"; +import Link from "next/link"; +import { Link as _Link } from "../api/link/route"; +import { LinkType } from "../api/linkType/route"; + +export default function LinkListBox({ linkTypeList, linkList }: { linkTypeList: LinkType[]; linkList: _Link[] }) { + return
+ { + linkTypeList.map(item => ( +
+
+ + + {item.label} +
+
+ { + linkList.filter(val => val.type === item._id).map(val => ( + + +
+ {val.name} + {val.description} +
+ + )) + } +
+
+ )) + } +
+} \ No newline at end of file diff --git a/app/_ui/SiderNav.tsx b/app/_ui/SiderNav.tsx index 0478553..be6b501 100644 --- a/app/_ui/SiderNav.tsx +++ b/app/_ui/SiderNav.tsx @@ -1,8 +1,15 @@ +"use client"; import Link from "next/link"; import { LinkTypeItem } from "../_lib/types"; import Logo from "./Logo"; +import clsx from "clsx"; +import { usePathname } from "next/navigation"; +import { LinkType } from "../api/linkType/route"; + +export default function SiderNav({ linkList }: { linkList: LinkType[] }) { + const pathname = usePathname() + console.log(pathname); -export default function SiderNav({ linkList }: { linkList: LinkTypeItem[] }) { return (
@@ -13,16 +20,17 @@ export default function SiderNav({ linkList }: { linkList: LinkTypeItem[] }) { linkList.map((item) => { return ( item?.href ? - + { - item.icon + item.iconElement } {item.label} : -
- { - item.icon - } +
+ + {item.label}
@@ -30,7 +38,7 @@ export default function SiderNav({ linkList }: { linkList: LinkTypeItem[] }) { }) } - +
) } \ No newline at end of file diff --git a/app/admin/(default)/dashboard/EditIconContent.tsx b/app/admin/(default)/dashboard/EditIconContent.tsx new file mode 100644 index 0000000..5eb6010 --- /dev/null +++ b/app/admin/(default)/dashboard/EditIconContent.tsx @@ -0,0 +1,79 @@ +import { Button, Form, Input, message } from "antd"; +import { useEffect } from "react"; +import { mRequest } from "@/app/_lib/request"; + +export default function EditIconContent({ + item, + onRefresh, +}: { + item: | null; + onRefresh: () => void; +}) { + const [form] = Form.useForm(); + console.log(item); + + useEffect(() => { + if (item) { + form.setFieldsValue({ ...item }); + } else { + form.resetFields(); + } + }, [item, form]); + return ( +
{ + console.log(res); + mRequest(item ? "PUT" : "POST", "/app/linkIcon", { + data: item ? { id: item.id, ...res } : res, + returnType: "text", + }).then(() => { + message.success((item ? "修改" : "新增") + "成功"); + onRefresh(); + }); + }} + > + + + + { + !item ? + <> + + + + + + + : '' + + } + + + + + +
+ ); +} diff --git a/app/admin/(default)/dashboard/LinkTable.tsx b/app/admin/(default)/dashboard/LinkTable.tsx new file mode 100644 index 0000000..390393c --- /dev/null +++ b/app/admin/(default)/dashboard/LinkTable.tsx @@ -0,0 +1,166 @@ +import { mRequest } from "@/app/_lib/request" +import ImageUpload from "@/app/_ui/ImageUpload" +import { Link } from "@/app/api/link/route" +import { + Button, + Card, + Form, + Image, + Input, + InputNumber, + message, + Modal, + Popconfirm, + Space, + Table, +} from "antd" +import { useCallback, useEffect, useState } from "react" + + +export default function LinkTable(props: { id: string }) { + const [list, setList] = useState([]) + const [loading, setLoading] = useState(false) + const refresh = useCallback(async () => { + setLoading(true) + const res = await mRequest<{ list: Link[] }>( + "GET", + `/api/link?typeId=${props.id}&page=1&pageSize=9999` + ) + setList(res.list) + setLoading(false) + }, [props.id]) + useEffect(() => { + refresh() + }, [refresh]) + const [selected, setSelected] = useState( + undefined + ) + return ( +
+ + + + + + } + > + + loading={loading} + dataSource={list} + pagination={false} + rowKey="_id" + columns={[ + { + title: "名称", + dataIndex: "name", + }, + { + title: "图标", + dataIndex: "logoLink", + render: (_, row) => ( + + ) + }, + + { + title: "操作", + fixed: "right", + width: 200, + render: (_, row) => ( + + + { + await mRequest("DELETE", "/app/link/" + row.id, { + returnType: "text", + }) + refresh() + message.success("删除成功") + }} + > + + + + ), + }, + ]} + /> + + setSelected(undefined)} + destroyOnClose + title={(selected ? "编辑" : "新增") + "链接"} + footer={false} + > +
{ + if (selected) { + await mRequest("PUT", "/api/link", { + id: selected._id, ...res + }) + } else { + await mRequest("POST", "/api/link", { + ...res, type: props.id + }) + } + refresh() + setSelected(undefined) + message.success("操作成功") + }} + > + + + + + + + + + + + + + + + + + + +
+
+
+ ) +} diff --git a/app/admin/(default)/dashboard/ad/page.tsx b/app/admin/(default)/dashboard/ad/page.tsx new file mode 100644 index 0000000..fcbaf74 --- /dev/null +++ b/app/admin/(default)/dashboard/ad/page.tsx @@ -0,0 +1,5 @@ +export default function Page() { + return ( + <>ad + ) +} \ No newline at end of file diff --git a/app/admin/(default)/dashboard/article/page.tsx b/app/admin/(default)/dashboard/article/page.tsx new file mode 100644 index 0000000..7b71fb4 --- /dev/null +++ b/app/admin/(default)/dashboard/article/page.tsx @@ -0,0 +1,5 @@ +export default function Page() { + return ( + <>文章管理 + ) +} \ No newline at end of file diff --git a/app/admin/(default)/dashboard/config.tsx b/app/admin/(default)/dashboard/config.tsx deleted file mode 100644 index acee008..0000000 --- a/app/admin/(default)/dashboard/config.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Space } from 'antd'; -import { ColumnsType } from 'antd/es/table'; - -export default [ - { - title: '姓名', - dataIndex: 'name', - key: 'name', - }, - { - title: '年龄', - dataIndex: 'age', - key: 'age', - }, - { - title: '地址', - dataIndex: 'address', - key: 'address', - }, - { - title: 'Action', - key: 'action', - // eslint-disable-next-line @typescript-eslint/no-unused-vars - render: (_, record) => ( - - < a > Delete - - ), - }, -] as ColumnsType; \ No newline at end of file diff --git a/app/admin/(default)/dashboard/loading.tsx b/app/admin/(default)/dashboard/loading.tsx new file mode 100644 index 0000000..6c0ceac --- /dev/null +++ b/app/admin/(default)/dashboard/loading.tsx @@ -0,0 +1,6 @@ +export default function Loading() { + return <> + + loading + +} \ No newline at end of file diff --git a/app/admin/(default)/dashboard/page.tsx b/app/admin/(default)/dashboard/page.tsx index 19bfb4d..a4088a5 100644 --- a/app/admin/(default)/dashboard/page.tsx +++ b/app/admin/(default)/dashboard/page.tsx @@ -1,132 +1,252 @@ "use client"; -import { Button, Card, Drawer, Form, Input, Space, Table } from "antd"; -import { useState } from "react"; +import { Button, Card, Drawer, Form, Image, Input, message, Modal, Popconfirm, Space, Table } from "antd"; +import { useRef, useState } from "react"; import '@ant-design/v5-patch-for-react-19'; -import tableConfig from "./config" import { useAntdTable } from "ahooks"; -import { User } from "@/app/_lib/data/user"; import { mRequest } from "@/app/_lib/request"; -interface DataType { - key: string; - name: string; - age: number; - address: string; - tags: string[]; -} -const data: DataType[] = [ - { - key: '1', - name: 'John Brown', - age: 32, - address: 'New York No. 1 Lake Park', - tags: ['nice', 'developer'], - }, - { - key: '2', - name: 'Jim Green', - age: 42, - address: 'London No. 1 Lake Park', - tags: ['loser'], - }, - { - key: '3', - name: 'Joe Black', - age: 32, - address: 'Sydney No. 1 Lake Park', - tags: ['cool', 'teacher'], - }, -]; +import { LinkTypeItem } from "@/app/_lib/types"; +import { LinkType } from "@/app/api/linkType/route"; +import LinkTable from "./LinkTable"; +import ImageUpload from "@/app/_ui/ImageUpload"; +import { useForm } from "antd/es/form/Form"; + export default function Page() { - const [open, setOpen] = useState(false) - const { tableProps, loading, error } = useAntdTable(({ current, pageSize }) => mRequest<{ - total: number; - list: User[]; - }>('GET', `/api/links?page=${current}&pageSize=${pageSize}}`), - { - defaultPageSize: 10, - } - ); + const { tableProps, refresh } = useAntdTable( + async ({ current, pageSize }) => { + return mRequest<{ + total: number; + data: LinkTypeItem[] + }>( + "GET", + `/api/linkType?page=${current}&pageSize=${pageSize}` + ).then((res: any) => { + return { + total: res?.total || 0, + list: res?.list || [], + } + }) + }, + + ) + const [selectedType, setSelectedType] = useState( + undefined + ) return ( <> { - setOpen(true) - }}>添加链接 - }> - - - { - setOpen(false) - }} - footer={ - - - + + } + > + + {...tableProps} + rowKey="_id" + expandable={{ + expandedRowRender: (row) => , + }} + columns={[ + { + title: "名称", + dataIndex: "label", + }, + + { + title: "图标", + dataIndex: "icon", + render: (_, item) => ( + <> + + + ) + }, + { + title: "操作", + render: (_, item) => ( + + + + { + mRequest("DELETE", "/api/linkType/" + item._id, { + returnType: "text", + }).then(() => { + refresh() + message.success("删除成功") + }) + }} + > + + + + ), + }, + ]} + /> + + + { + setSelectedType(undefined) + }} >
{ - mRequest('POST', "/api/link").then(res => { - setOpen(false) - }) + initialValues={selectedType ? + selectedType + : {}} + onFinish={async (res) => { + if (selectedType) { + await mRequest("PUT", "/api/linkType", { + _id: selectedType._id, ...res + }) + } else { + await mRequest("POST", "/api/linkType", { + ...res, + }) + } + refresh() + setSelectedType(undefined) + message.success("操作成功") }} > + + + + + + + + + + + + + + +
+ + {/* { + setSelectedType(undefined) + }} + + > +
{ + if (selectedType) { + await mRequest("PUT", "/api/linkType", { + _id: selectedType._id, ...res + }) + } else { + await mRequest("POST", "/api/linkType", { + ...res, + }) + } + refresh() + setSelectedType(undefined) + message.success("操作成功") + }} + > + - + + + + - - - {/* - - */} - - - - + + + + + -
- +
*/} ) diff --git a/app/admin/(default)/layout.tsx b/app/admin/(default)/layout.tsx index f6b22eb..a4c09b3 100644 --- a/app/admin/(default)/layout.tsx +++ b/app/admin/(default)/layout.tsx @@ -1,6 +1,6 @@ import LoginState from "@/app/_ui/LoginState"; import SiderNav from "../../_ui/SiderNav"; -import { faMagnet } from "@fortawesome/free-solid-svg-icons" +import { faAd, faArrowAltCircleLeft, faMagnet, faPenClip } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" export default function Layout({ @@ -8,16 +8,34 @@ export default function Layout({ }: Readonly<{ children: React.ReactNode; }>) { + return (
- , - id: 'add', - href: '/admin' - } - ]}> + , + _id: 'addLink', + href: '/admin/dashboard' + }, + { + label: '广告管理', + iconElement: , + _id: 'adMenagement', + href: '/admin/dashboard/ad' + + }, + { + label: '文章管理', + iconElement: , + _id: 'articleMenagement', + href: '/admin/dashboard/article' + + }, + + ]}>
后台管理面板 diff --git a/app/api/link/route.ts b/app/api/link/route.ts index 7210eb3..aedf5de 100644 --- a/app/api/link/route.ts +++ b/app/api/link/route.ts @@ -3,12 +3,13 @@ import { User } from "@/app/_lib/data/user"; import { getCollection, getDb } from "@/app/_lib/mongodb"; import { message } from "antd"; import bcrypt from 'bcrypt'; +import { ObjectId } from "mongodb"; import { NextRequest } from "next/server"; export type Link = { - title: string; - url?: string; + name: string; + link?: string; description: string; - id: number; + _id: string; type: string; priority: number; logoLink: string; @@ -18,31 +19,25 @@ export async function GET(req: NextRequest) { try { const collection = await getCollection('link'); // Check if the user is authenticated - const session = await verifySession() - if (!session) { - // User is not authenticated - return new Response(null, { status: 401 }) - } - // 获取分页参数 + const page = parseInt(req.nextUrl.searchParams.get('page') || '1') || 1; - const pageSize = parseInt(req.nextUrl.searchParams.get('page') || '10') || 10; - + const pageSize = parseInt(req.nextUrl.searchParams.get('pageSize') || '10') || 10; + const typeId = req.nextUrl.searchParams.get('typeId') // 计算起始索引和结束索引 const startIndex = (page - 1) * pageSize; // 查询数据 - const cursor = collection.find({}).skip(startIndex).limit(pageSize); + const cursor = collection.find({ type: typeId }).skip(startIndex).limit(pageSize); const data = await cursor.toArray(); // 计算总数量 - const total = await collection.countDocuments(); + const total = (await collection.find({ type: typeId }).toArray()).length return Response.json({ total, list: data, }) } catch (e) { - console.log(e); return Response.error() } } @@ -54,7 +49,31 @@ export async function POST(req: NextRequest) { await collection.insertOne(link) return Response.json({ message: '成功' }) } catch (e) { - console.log(e); + return Response.error() + } +} +export async function DELETE(req: NextRequest) { + try { + // 获取路径参数 + const segments = req.nextUrl.pathname.split('/') + const dynamicParam = segments[segments.length - 1] + const collection = await getCollection('link') + collection.deleteOne({ + _id: new ObjectId(dynamicParam) + }) + return Response.json({ message: '删除成功' }) + } catch (e) { + return Response.error() + } +} +export async function PUT(req: NextRequest) { + try { + // 获取待更新的对象 + const link = await req.json() as Link + const collection = await getCollection('link') + await collection.updateOne({ _id: new ObjectId(link.id) }, { $set: link }) + return Response.json({ message: '成功' }) + } catch (e) { return Response.error() } } \ No newline at end of file diff --git a/app/api/linkType/[id]/route.ts b/app/api/linkType/[id]/route.ts new file mode 100644 index 0000000..b769b23 --- /dev/null +++ b/app/api/linkType/[id]/route.ts @@ -0,0 +1,51 @@ +import { verifySession } from "@/app/_lib/dal"; +import { getCollection, getDb } from "@/app/_lib/mongodb"; +import { ObjectId } from "mongodb"; +import { NextRequest } from "next/server"; +import { LinkType } from "../route"; + +export async function GET(req: NextRequest) { + try { + const collection = await getCollection('link-type'); + // Check if the user is authenticated + const session = await verifySession() + if (!session) { + // User is not authenticated + return new Response(null, { status: 401 }) + } + // 获取分页参数 + const page = parseInt(req.nextUrl.searchParams.get('page') || '1') || 1; + const pageSize = parseInt(req.nextUrl.searchParams.get('pageSize') || '10') || 10; + + // 计算起始索引和结束索引 + const startIndex = (page - 1) * pageSize; + + // 查询数据 + const cursor = collection.find({}).skip(startIndex).limit(pageSize); + const data = await cursor.toArray(); + + // 计算总数量 + const total = await collection.countDocuments(); + + return Response.json({ + total, + list: data, + }) + } catch (e) { + return Response.error() + } +} + +export async function DELETE(req: NextRequest, { params }: { params: Promise<{ id: string }> }) { + try { + // 获取路径参数 + const slug = (await params).id + const collection = await getCollection('link-type') + collection.deleteOne({ + _id: new ObjectId(slug) + }) + return Response.json({ message: '删除成功' }) + } catch (e) { + return Response.error() + } +} diff --git a/app/api/linkType/route.ts b/app/api/linkType/route.ts new file mode 100644 index 0000000..5d151ae --- /dev/null +++ b/app/api/linkType/route.ts @@ -0,0 +1,66 @@ +import { verifySession } from "@/app/_lib/dal"; +import { getCollection, getDb } from "@/app/_lib/mongodb"; +import { ObjectId } from "mongodb"; +import { NextRequest } from "next/server"; +import { ReactNode } from "react"; +export type LinkType = { + label: string; + icon?: string; + iconElement?: ReactNode; + _id: string; + href?: string; + location?: string; + +} +export async function GET(req: NextRequest) { + try { + const collection = await getCollection('link-type'); + // Check if the user is authenticated + + // 获取分页参数 + const page = parseInt(req.nextUrl.searchParams.get('page') || '1') || 1; + const pageSize = parseInt(req.nextUrl.searchParams.get('pageSize') || '10') || 10; + + // 计算起始索引和结束索引 + const startIndex = (page - 1) * pageSize; + + // 查询数据 + const cursor = collection.find({}).skip(startIndex).limit(pageSize); + const data = await cursor.toArray(); + + // 计算总数量 + const total = await collection.countDocuments(); + + return Response.json({ + total, + list: data, + }) + } catch (e) { + return Response.error() + } +} +export async function POST(req: NextRequest) { + try { + // 获取待插入的对象 + const link = await req.json() + const collection = await getCollection('link-type') + await collection.insertOne(link) + return Response.json({ message: '成功' }) + } catch (e) { + return Response.error() + } +} + +export async function PUT(req: NextRequest) { + try { + // 获取待更新的对象 + const link = await req.json() as LinkType + const collection = await getCollection('link-type') + await collection.replaceOne({ _id: new ObjectId(link._id) }, { ...link, _id: new ObjectId(link._id) }) + return Response.json({ message: '成功' }) + } catch (e) { + console.log(e); + + return Response.error() + } +} \ No newline at end of file diff --git a/app/api/uploadKey/route.ts b/app/api/uploadKey/route.ts new file mode 100644 index 0000000..0a59b23 --- /dev/null +++ b/app/api/uploadKey/route.ts @@ -0,0 +1,10 @@ +export async function GET() { + const accessKeyId = process.env.ALIYUN_RAM_ACCESS_KEY_ID || '' + const accessKeySecret = process.env.ALIYUN_RAM_ACCESS_KEY_SECRET || '' + return Response.json({ + accessKeyId: accessKeyId, + accessKeySecret: accessKeySecret, + region: 'oss-cn-hangzhou', + bucket: 'newuitab' + }) +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index f181a61..27d988d 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -5,70 +5,30 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowRotateBack, faDeafness, faImage, faMagnet, faMessage, faPenClip, faSearch, faThumbsUp, faVideo } from '@fortawesome/free-solid-svg-icons' import { LinkTypeItem } from "./_lib/types"; import PosterBox from "./_ui/PosterBox"; +import { mRequest } from "./_lib/request"; +import { LinkType } from "./api/linkType/route"; +import { getCollection } from "./_lib/mongodb"; +import { Link as _Link } from "./api/link/route"; +import Link from "next/link"; +import LinkListBox from "./_ui/LinkListBox"; -const defaultLinkList = [ - { - label: 'AI应用集', - icon: , - href: '/ai-apps', - id: 1, - - }, - { - label: 'AI写作工具', - icon: , - href: '/?type=ai-writing', - id: 2, - }, - { - label: 'AI图像工具', - icon: , - href: '/?type=ai-image', - id: 3, - }, - { - label: 'AI办公工具', - icon: , - href: '/?type=ai-office', - id: 4, - }, - { - label: 'AI对话聊天', - icon: , - href: '/?type=ai-chat', - id: 5, - }, - { - label: 'AI编程工具', - icon: , - href: '/?type=ai-programming', - id: 6, - }, - { - label: 'AI搜索引擎', - icon: , - href: '/?type=ai-search', - id: 7, - }, - { - label: 'AI音频工具', - icon: , - href: '/?type=ai-audio', - id: 8, - }, - { - label: 'AI开发平台', - icon: , - href: '/?type=ai-platform', - id: 9, - } -] as LinkTypeItem[]; export default async function Home() { + const collection = await getCollection('link-type') + const result = (await collection.find({}).toArray()) + const linkTypeList = result.map(doc => { + doc._id = doc._id.toString(); // 将 _id 转换为字符串 + return doc; + }); + const linkCollect = await getCollection('link') + const linkList = (await linkCollect.find<_Link>({}).toArray()).map(doc => { + doc._id = doc._id.toString(); // 将 _id 转换为字符串 + return doc; + }) return (
- +
@@ -80,20 +40,7 @@ export default async function Home() { - -
- { - defaultLinkList.map(item => ( -
-
- - {item.icon} - {item.label} -
-
- )) - } -
+
); diff --git a/package.json b/package.json index d349d07..2d88393 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "lint": "next lint" }, "dependencies": { + "@ant-design/icons": "^5.5.2", "@fortawesome/fontawesome-svg-core": "^6.7.2", "@fortawesome/free-solid-svg-icons": "^6.7.2", "@fortawesome/react-fontawesome": "^0.2.2", "ahooks": "^3.8.4", + "ali-oss": "^6.22.0", "antd": "^5.23.2", "bcrypt": "^5.1.1", "clsx": "^2.1.1", @@ -20,13 +22,16 @@ "jose": "^5.9.6", "mongodb": "^6.12.0", "next": "15.1.4", + "proxy-agent": "^6.5.0", "react": "^19.0.0", "react-dom": "^19.0.0", + "uuid": "^11.0.5", "zod": "^3.24.1" }, "devDependencies": { "@ant-design/v5-patch-for-react-19": "^1.0.3", "@eslint/eslintrc": "^3", + "@types/ali-oss": "^6.16.11", "@types/bcrypt": "^5.0.2", "@types/node": "^20", "@types/react": "^19", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 90e2196..27f0857 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ant-design/icons': + specifier: ^5.5.2 + version: 5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@fortawesome/fontawesome-svg-core': specifier: ^6.7.2 version: 6.7.2 @@ -20,6 +23,9 @@ importers: ahooks: specifier: ^3.8.4 version: 3.8.4(react@19.0.0) + ali-oss: + specifier: ^6.22.0 + version: 6.22.0(proxy-agent@6.5.0) antd: specifier: ^5.23.2 version: 5.23.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -37,16 +43,22 @@ importers: version: 5.9.6 mongodb: specifier: ^6.12.0 - version: 6.12.0 + version: 6.12.0(socks@2.8.3) next: specifier: 15.1.4 version: 15.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + proxy-agent: + specifier: ^6.5.0 + version: 6.5.0 react: specifier: ^19.0.0 version: 19.0.0 react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) + uuid: + specifier: ^11.0.5 + version: 11.0.5 zod: specifier: ^3.24.1 version: 3.24.1 @@ -57,6 +69,9 @@ importers: '@eslint/eslintrc': specifier: ^3 version: 3.2.0 + '@types/ali-oss': + specifier: ^6.16.11 + version: 6.16.11 '@types/bcrypt': specifier: ^5.0.2 version: 5.0.2 @@ -509,6 +524,12 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/ali-oss@6.16.11': + resolution: {integrity: sha512-/AyemPZy93ZXGzEokMsoPFgjH37snpzH4X/fwans/n63HLaCleriCG3PyrkHCPkgHEc9vj9Uo6paqsBN3vJ3OA==} + '@types/bcrypt@5.0.2': resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} @@ -598,10 +619,22 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + agentkeepalive@3.5.3: + resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==} + engines: {node: '>= 4.0.0'} + ahooks@3.8.4: resolution: {integrity: sha512-39wDEw2ZHvypaT14EpMMk4AzosHWt0z9bulY0BeDsvc9PqJEV+Kjh/4TZfftSsotBMq52iYIOFPd3PR56e0ZJg==} engines: {node: '>=8.0.0'} @@ -611,6 +644,10 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ali-oss@6.22.0: + resolution: {integrity: sha512-X8CHo+wsjCBvDaEvuibFOi3SZxiCBZSRUURrXH0upoVwu3SuW3e+PTVK7xw+uN6EyTcAESqrngrQimhp8iBzsQ==} + engines: {node: '>=8'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -693,6 +730,10 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -708,6 +749,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + bcrypt@5.1.1: resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} engines: {node: '>= 10.0.0'} @@ -716,6 +761,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bowser@1.9.4: + resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -730,6 +778,9 @@ packages: resolution: {integrity: sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==} engines: {node: '>=16.20.1'} + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -810,9 +861,19 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + copy-to@2.0.1: + resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -828,6 +889,10 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -840,6 +905,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + dateformat@2.2.0: + resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -863,6 +931,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-user-agent@1.0.0: + resolution: {integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==} + engines: {node: '>= 0.10.0'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -871,9 +943,17 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -881,6 +961,10 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + digest-header@1.1.0: + resolution: {integrity: sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==} + engines: {node: '>= 8.0.0'} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -895,12 +979,22 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + end-or-error@1.0.1: + resolution: {integrity: sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==} + engines: {node: '>= 0.11.14'} + enhanced-resolve@5.18.0: resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} @@ -936,10 +1030,18 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-next@15.1.4: resolution: {integrity: sha512-u9+7lFmfhKNgGjhQ9tBeyCFsPJyq0SvGioMJBngPC7HXUpR0U+ckEwQR48s7TrRNHra1REm6evGL2ie38agALg==} peerDependencies: @@ -1040,6 +1142,11 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1056,6 +1163,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1102,6 +1213,9 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + formstream@1.5.1: + resolution: {integrity: sha512-q7ORzFqotpwn3Y/GBK2lK7PjtZZwJHz9QE9Phv8zb5IrL9ftGLyi2zjGURON3voK8TaZ+mqJKERYN4lrHYTkUQ==} + fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -1137,6 +1251,9 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-ready@1.0.0: + resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -1144,6 +1261,10 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-uri@6.0.4: + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} + engines: {node: '>= 14'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1208,10 +1329,25 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1238,6 +1374,10 @@ packages: intersection-observer@0.12.2: resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -1268,6 +1408,9 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + is-class-hotfix@0.0.6: + resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -1280,6 +1423,10 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1332,6 +1479,9 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} + is-type-of@1.4.0: + resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==} + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -1348,12 +1498,18 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -1368,6 +1524,9 @@ packages: jose@5.9.6: resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} + js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} @@ -1379,6 +1538,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -1395,6 +1557,9 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true + jstoxml@2.2.9: + resolution: {integrity: sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -1437,6 +1602,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -1448,6 +1617,9 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1456,6 +1628,11 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1482,6 +1659,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -1531,6 +1712,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + next@15.1.4: resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -1564,6 +1749,10 @@ packages: encoding: optional: true + node-hex@1.0.1: + resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==} + engines: {node: '>=8.0.0'} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -1620,6 +1809,16 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + os-name@1.0.3: + resolution: {integrity: sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==} + engines: {node: '>=0.10.0'} + hasBin: true + + osx-release@1.1.0: + resolution: {integrity: sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==} + engines: {node: '>=0.10.0'} + hasBin: true + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -1632,6 +1831,14 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + pac-proxy-agent@7.1.0: + resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -1658,6 +1865,9 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1673,6 +1883,9 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -1726,13 +1939,30 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -1985,6 +2215,9 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -2039,6 +2272,9 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -2050,6 +2286,12 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} @@ -2060,6 +2302,13 @@ packages: scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + sdk-base@2.0.1: + resolution: {integrity: sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2122,16 +2371,46 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + stream-http@2.8.2: + resolution: {integrity: sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==} + + stream-wormhole@1.1.0: + resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==} + engines: {node: '>=4.0.0'} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -2170,6 +2449,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2242,6 +2524,12 @@ packages: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2303,12 +2591,33 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unescape@1.0.1: + resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==} + engines: {node: '>=0.10.0'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urllib@2.44.0: + resolution: {integrity: sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==} + engines: {node: '>= 0.10.0'} + peerDependencies: + proxy-agent: ^5.0.0 + peerDependenciesMeta: + proxy-agent: + optional: true + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + utility@1.18.0: + resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==} + engines: {node: '>= 0.12.0'} + + uuid@11.0.5: + resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} + hasBin: true + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -2347,6 +2656,10 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + win-release@1.1.1: + resolution: {integrity: sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==} + engines: {node: '>=0.10.0'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2362,6 +2675,18 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -2766,6 +3091,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/ali-oss@6.16.11': {} + '@types/bcrypt@5.0.2': dependencies: '@types/node': 20.17.13 @@ -2879,12 +3208,20 @@ snapshots: acorn@8.14.0: {} + address@1.2.2: {} + agent-base@6.0.2: dependencies: debug: 4.4.0 transitivePeerDependencies: - supports-color + agent-base@7.1.3: {} + + agentkeepalive@3.5.3: + dependencies: + humanize-ms: 1.2.1 + ahooks@3.8.4(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 @@ -2905,6 +3242,37 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ali-oss@6.22.0(proxy-agent@6.5.0): + dependencies: + address: 1.2.2 + agentkeepalive: 3.5.3 + bowser: 1.9.4 + copy-to: 2.0.1 + dateformat: 2.2.0 + debug: 4.4.0 + destroy: 1.2.0 + end-or-error: 1.0.1 + get-ready: 1.0.0 + humanize-ms: 1.2.1 + is-type-of: 1.4.0 + js-base64: 2.6.4 + jstoxml: 2.2.9 + lodash: 4.17.21 + merge-descriptors: 1.0.3 + mime: 2.6.0 + platform: 1.3.6 + pump: 3.0.2 + qs: 6.14.0 + sdk-base: 2.0.1 + stream-http: 2.8.2 + stream-wormhole: 1.1.0 + urllib: 2.44.0(proxy-agent@6.5.0) + utility: 1.18.0 + xml2js: 0.6.2 + transitivePeerDependencies: + - proxy-agent + - supports-color + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -3059,6 +3427,10 @@ snapshots: ast-types-flow@0.0.8: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -3069,6 +3441,8 @@ snapshots: balanced-match@1.0.2: {} + basic-ftp@5.0.5: {} + bcrypt@5.1.1: dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -3079,6 +3453,8 @@ snapshots: binary-extensions@2.3.0: {} + bowser@1.9.4: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -3094,6 +3470,8 @@ snapshots: bson@6.10.1: {} + builtin-status-codes@3.0.0: {} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -3174,10 +3552,16 @@ snapshots: console-control-strings@1.1.0: {} + content-type@1.0.5: {} + copy-to-clipboard@3.3.3: dependencies: toggle-selection: 1.0.6 + copy-to@2.0.1: {} + + core-util-is@1.0.3: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3190,6 +3574,8 @@ snapshots: damerau-levenshtein@1.0.8: {} + data-uri-to-buffer@6.0.2: {} + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.3 @@ -3208,6 +3594,8 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + dateformat@2.2.0: {} + dayjs@1.11.13: {} debug@3.2.7: @@ -3220,6 +3608,10 @@ snapshots: deep-is@0.1.4: {} + default-user-agent@1.0.0: + dependencies: + os-name: 1.0.3 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -3232,12 +3624,22 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + delegates@1.0.0: {} + destroy@1.2.0: {} + detect-libc@2.0.3: {} didyoumean@1.2.2: {} + digest-header@1.1.0: {} + dlv@1.1.3: {} doctrine@2.1.0: @@ -3252,10 +3654,18 @@ snapshots: eastasianwidth@0.2.0: {} + ee-first@1.1.1: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + end-or-error@1.0.1: {} + enhanced-resolve@5.18.0: dependencies: graceful-fs: 4.2.11 @@ -3359,8 +3769,18 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + escape-html@1.0.3: {} + escape-string-regexp@4.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + eslint-config-next@15.1.4(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3): dependencies: '@next/eslint-plugin-next': 15.1.4 @@ -3546,6 +3966,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 + esprima@4.0.1: {} + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -3558,6 +3980,10 @@ snapshots: esutils@2.0.3: {} + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + fast-deep-equal@3.1.3: {} fast-glob@3.3.1: @@ -3613,6 +4039,13 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + formstream@1.5.1: + dependencies: + destroy: 1.2.0 + mime: 2.6.0 + node-hex: 1.0.1 + pause-stream: 0.0.11 + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -3665,6 +4098,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-ready@1.0.0: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.3 @@ -3675,6 +4110,14 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-uri@6.0.4: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -3738,6 +4181,13 @@ snapshots: dependencies: function-bind: 1.1.2 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -3745,6 +4195,21 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ignore@5.3.2: {} import-fresh@3.3.0: @@ -3769,6 +4234,11 @@ snapshots: intersection-observer@0.12.2: {} + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -3804,6 +4274,8 @@ snapshots: is-callable@1.2.7: {} + is-class-hotfix@0.0.6: {} + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -3819,6 +4291,8 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -3871,6 +4345,12 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 + is-type-of@1.4.0: + dependencies: + core-util-is: 1.0.3 + is-class-hotfix: 0.0.6 + isstream: 0.1.2 + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.18 @@ -3886,10 +4366,14 @@ snapshots: call-bound: 1.0.3 get-intrinsic: 1.2.7 + isarray@1.0.0: {} + isarray@2.0.5: {} isexe@2.0.0: {} + isstream@0.1.2: {} + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -3909,6 +4393,8 @@ snapshots: jose@5.9.6: {} + js-base64@2.6.4: {} + js-cookie@3.0.5: {} js-tokens@4.0.0: {} @@ -3917,6 +4403,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -3931,6 +4419,8 @@ snapshots: dependencies: minimist: 1.2.8 + jstoxml@2.2.9: {} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 @@ -3971,6 +4461,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@7.18.3: {} + make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -3979,6 +4471,8 @@ snapshots: memory-pager@1.5.0: {} + merge-descriptors@1.0.3: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -3986,6 +4480,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime@2.6.0: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4009,6 +4505,10 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mkdirp@1.0.4: {} mongodb-connection-string-url@3.0.2: @@ -4016,11 +4516,13 @@ snapshots: '@types/whatwg-url': 11.0.5 whatwg-url: 14.1.0 - mongodb@6.12.0: + mongodb@6.12.0(socks@2.8.3): dependencies: '@mongodb-js/saslprep': 1.1.9 bson: 6.10.1 mongodb-connection-string-url: 3.0.2 + optionalDependencies: + socks: 2.8.3 ms@2.1.3: {} @@ -4034,6 +4536,8 @@ snapshots: natural-compare@1.4.0: {} + netmask@2.0.2: {} + next@15.1.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@next/env': 15.1.4 @@ -4065,6 +4569,8 @@ snapshots: dependencies: whatwg-url: 5.0.0 + node-hex@1.0.1: {} + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -4134,6 +4640,15 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + os-name@1.0.3: + dependencies: + osx-release: 1.1.0 + win-release: 1.1.1 + + osx-release@1.1.0: + dependencies: + minimist: 1.2.8 + own-keys@1.0.1: dependencies: get-intrinsic: 1.2.7 @@ -4148,6 +4663,24 @@ snapshots: dependencies: p-limit: 3.1.0 + pac-proxy-agent@7.1.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.3 + debug: 4.4.0 + get-uri: 6.0.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + package-json-from-dist@1.0.1: {} parent-module@1.0.1: @@ -4167,6 +4700,10 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4175,6 +4712,8 @@ snapshots: pirates@4.0.6: {} + platform@1.3.6: {} + possible-typed-array-names@1.0.0: {} postcss-import@15.1.0(postcss@8.5.1): @@ -4222,14 +4761,40 @@ snapshots: prelude-ls@1.2.1: {} + process-nextick-args@2.0.1: {} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.1.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + queue-microtask@1.2.3: {} rc-cascader@3.33.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): @@ -4567,6 +5132,16 @@ snapshots: dependencies: pify: 2.3.0 + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -4635,6 +5210,8 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 + safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} safe-push-apply@1.0.0: @@ -4648,6 +5225,10 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safer-buffer@2.1.2: {} + + sax@1.4.1: {} + scheduler@0.25.0: {} screenfull@5.2.0: {} @@ -4656,6 +5237,12 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 + sdk-base@2.0.1: + dependencies: + get-ready: 1.0.0 + + semver@5.7.2: {} + semver@6.3.1: {} semver@7.6.3: {} @@ -4754,14 +5341,46 @@ snapshots: is-arrayish: 0.3.2 optional: true + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + source-map-js@1.2.1: {} + source-map@0.6.1: + optional: true + sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 + sprintf-js@1.1.3: {} + stable-hash@0.0.4: {} + statuses@1.5.0: {} + + stream-http@2.8.2: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + stream-wormhole@1.1.0: {} + streamsearch@1.1.0: {} string-convert@0.2.1: {} @@ -4828,6 +5447,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -4915,6 +5538,10 @@ snapshots: throttle-debounce@5.0.2: {} + through@2.3.8: {} + + to-arraybuffer@1.0.1: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -4990,12 +5617,43 @@ snapshots: undici-types@6.19.8: {} + unescape@1.0.1: + dependencies: + extend-shallow: 2.0.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 + urllib@2.44.0(proxy-agent@6.5.0): + dependencies: + any-promise: 1.3.0 + content-type: 1.0.5 + default-user-agent: 1.0.0 + digest-header: 1.1.0 + ee-first: 1.1.1 + formstream: 1.5.1 + humanize-ms: 1.2.1 + iconv-lite: 0.6.3 + pump: 3.0.2 + qs: 6.14.0 + statuses: 1.5.0 + utility: 1.18.0 + optionalDependencies: + proxy-agent: 6.5.0 + util-deprecate@1.0.2: {} + utility@1.18.0: + dependencies: + copy-to: 2.0.1 + escape-html: 1.0.3 + mkdirp: 0.5.6 + mz: 2.7.0 + unescape: 1.0.1 + + uuid@11.0.5: {} + webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {} @@ -5058,6 +5716,10 @@ snapshots: dependencies: string-width: 4.2.3 + win-release@1.1.1: + dependencies: + semver: 5.7.2 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -5074,6 +5736,15 @@ snapshots: wrappy@1.0.2: {} + xml2js@0.6.2: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xtend@4.0.2: {} + yallist@4.0.0: {} yaml@2.7.0: {}