├── src ├── commands │ ├── constants.ts │ ├── set.ts │ └── get.ts ├── app │ ├── favicon.ico │ ├── actions │ │ └── get-all-summarized-articles.ts │ ├── libs │ │ ├── requester.ts │ │ └── redis-client.ts │ ├── layout.tsx │ ├── api │ │ ├── stories │ │ │ └── route.ts │ │ └── summarize │ │ │ └── route.ts │ ├── components │ │ └── time-until-next.tsx │ ├── globals.css │ └── page.tsx └── services │ ├── link-parser.ts │ ├── hackernews.ts │ └── summarizer.ts ├── next.config.js ├── postcss.config.js ├── .gitignore ├── tailwind.config.ts ├── public ├── vercel.svg └── next.svg ├── tsconfig.json ├── .eslintrc.json ├── package.json ├── prettier.config.mjs ├── README.md └── pnpm-lock.yaml /src/commands/constants.ts: -------------------------------------------------------------------------------- 1 | export const redisKey = "hackerdigest" 2 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upstash/hackerdigest/master/src/app/favicon.ico -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {} 3 | 4 | module.exports = nextConfig 5 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src/app/actions/get-all-summarized-articles.ts: -------------------------------------------------------------------------------- 1 | import { getArticles } from "../../commands/get" 2 | 3 | export async function getAllSummarizedArticles() { 4 | const res = await getArticles() 5 | return { stories: res?.stories, lastFetched: res?.lastFetched } 6 | } 7 | -------------------------------------------------------------------------------- /src/app/libs/requester.ts: -------------------------------------------------------------------------------- 1 | import ky from "ky" 2 | 3 | const HN_BASE_URL = "https://hacker-news.firebaseio.com/v0/" 4 | 5 | export const requester = ky.create({ 6 | cache: "no-cache", 7 | prefixUrl: HN_BASE_URL, 8 | headers: { 9 | pragma: "no-cache", 10 | }, 11 | }) 12 | -------------------------------------------------------------------------------- /src/app/libs/redis-client.ts: -------------------------------------------------------------------------------- 1 | import { Redis } from "@upstash/redis"; 2 | 3 | export const redisClient = () => { 4 | const token = process.env.UPSTASH_REDIS_REST_TOKEN; 5 | const url = process.env.UPSTASH_REDIS_REST_URL; 6 | 7 | if (!url) throw new Error("Redis URL is missing!"); 8 | if (!token) throw new Error("Redis TOKEN is missing!"); 9 | 10 | const redis = new Redis({ 11 | url, 12 | token, 13 | }); 14 | 15 | return redis; 16 | }; 17 | -------------------------------------------------------------------------------- /src/commands/set.ts: -------------------------------------------------------------------------------- 1 | import { redisClient } from "../app/libs/redis-client" 2 | import { HackerNewsStoryWithParsedContent } from "../services/link-parser" 3 | import { redisKey } from "./constants" 4 | import { ArticlesType } from "./get" 5 | 6 | export const setArticles = async (stories: HackerNewsStoryWithParsedContent[]) => { 7 | const redis = redisClient() 8 | await redis.set(redisKey, { stories, lastFetched: new Date().toJSON() }) 9 | } 10 | -------------------------------------------------------------------------------- /src/commands/get.ts: -------------------------------------------------------------------------------- 1 | import { redisClient } from "../app/libs/redis-client" 2 | import { HackerNewsStoryWithParsedContent } from "../services/link-parser" 3 | import { redisKey } from "./constants" 4 | 5 | export type ArticlesType = { 6 | stories: (HackerNewsStoryWithParsedContent | null)[] 7 | lastFetched: string 8 | } 9 | 10 | export const getArticles = async () => { 11 | const redis = redisClient() 12 | return await redis.get(redisKey) 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from 'tailwindcss' 2 | 3 | const config: Config = { 4 | content: [ 5 | './src/pages/**/*.{js,ts,jsx,tsx,mdx}', 6 | './src/components/**/*.{js,ts,jsx,tsx,mdx}', 7 | './src/app/**/*.{js,ts,jsx,tsx,mdx}', 8 | ], 9 | theme: { 10 | extend: { 11 | backgroundImage: { 12 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 13 | 'gradient-conic': 14 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', 15 | }, 16 | }, 17 | }, 18 | plugins: [], 19 | } 20 | export default config 21 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next" 2 | import { Open_Sans } from "next/font/google" 3 | 4 | import "./globals.css" 5 | 6 | const poppins = Open_Sans({ 7 | subsets: ["latin"], 8 | weight: ["400", "500", "600", "700", "800"], 9 | }) 10 | 11 | export const metadata: Metadata = { 12 | title: "HackerDigest", 13 | description: "Powered by Upstash", 14 | } 15 | 16 | export default function RootLayout({ children }: { children: React.ReactNode }) { 17 | return ( 18 | 19 | {children} 20 | 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/eslintrc", 3 | "root": true, 4 | "extends": [ 5 | "next/core-web-vitals", 6 | "prettier", 7 | "plugin:tailwindcss/recommended" 8 | ], 9 | "plugins": ["tailwindcss"], 10 | "rules": { 11 | "@next/next/no-html-link-for-pages": "off", 12 | "tailwindcss/no-custom-classname": "off", 13 | "tailwindcss/classnames-order": "error", 14 | "no-unused-vars": "error" 15 | }, 16 | "settings": { 17 | "tailwindcss": { 18 | "callees": ["cn", "cva"], 19 | "config": "tailwind.config.cjs" 20 | }, 21 | "next": { 22 | "rootDir": ["src/apps/*/"] 23 | } 24 | }, 25 | "overrides": [ 26 | { 27 | "files": ["*.ts", "*.tsx"], 28 | "parser": "@typescript-eslint/parser" 29 | } 30 | ] 31 | } -------------------------------------------------------------------------------- /src/app/api/stories/route.ts: -------------------------------------------------------------------------------- 1 | import { NextRequest, NextResponse } from "next/server"; 2 | import { Ratelimit } from "@upstash/ratelimit"; 3 | import { Redis } from "@upstash/redis"; 4 | 5 | import { getAllSummarizedArticles } from "@/app/actions/get-all-summarized-articles"; 6 | 7 | export async function GET(req: NextRequest) { 8 | const ratelimit = new Ratelimit({ 9 | redis: Redis.fromEnv(), 10 | limiter: Ratelimit.slidingWindow(10, "10s"), 11 | prefix: "hackerdigest-stories", 12 | analytics: true, 13 | }); 14 | 15 | const ip = (req.headers.get("x-forwarded-for") ?? "127.0.0.1").split(",")[0]; 16 | const { success } = await ratelimit.limit(ip); 17 | if (!success) { 18 | return NextResponse.json({ message: "You shall not pass!" }); 19 | } 20 | const { stories } = await getAllSummarizedArticles(); 21 | 22 | return NextResponse.json({ stories }); 23 | } 24 | -------------------------------------------------------------------------------- /src/app/api/summarize/route.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server" 2 | import { setArticles } from "@/commands/set" 3 | import { getSummarizedArticles } from "@/services/summarizer" 4 | import { verifySignatureAppRouter } from "@upstash/qstash/dist/nextjs" 5 | 6 | export const maxDuration = 300 7 | 8 | async function handler() { 9 | try { 10 | const articles = await getSummarizedArticles(15) 11 | if (articles) { 12 | await setArticles(articles) 13 | return NextResponse.json({ articles }) 14 | } else { 15 | console.error("Stories are missing!") 16 | return NextResponse.json({}, { status: 400 }) 17 | } 18 | } catch (error) { 19 | console.error( 20 | `Something went wrong when saving to cache or retriving stories ${(error as Error).message}` 21 | ) 22 | return NextResponse.json({}, { status: 400 }) 23 | } 24 | } 25 | 26 | export const POST = verifySignatureAppRouter(handler) 27 | -------------------------------------------------------------------------------- /src/app/components/time-until-next.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | export function timeUntilNextFetch(): string { 4 | const now = new Date() 5 | let nextFetchDate = new Date() 6 | 7 | nextFetchDate.setHours(0, 0, 0, 0) 8 | 9 | while (nextFetchDate <= now) { 10 | nextFetchDate.setHours(nextFetchDate.getHours() + 6) 11 | } 12 | 13 | const diff = nextFetchDate.getTime() - now.getTime() 14 | 15 | const hoursLeft = Math.floor(diff / (3600 * 1000)) 16 | const minutesLeft = Math.floor((diff % (3600 * 1000)) / (60 * 1000)) 17 | 18 | let timeLeftString = "" 19 | if (hoursLeft > 0) { 20 | timeLeftString += hoursLeft + " hour(s) " 21 | } 22 | if (minutesLeft > 0) { 23 | timeLeftString += `${hoursLeft > 0 ? "and " : ""}` + minutesLeft + " minute(s) " 24 | } 25 | 26 | timeLeftString = timeLeftString.trim() + " left until refresh" 27 | 28 | return timeLeftString 29 | } 30 | 31 | export const TimeUntilNext = () => { 32 | return
{timeUntilNextFetch()}
33 | } 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tech-news-summarizer", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@upstash/qstash": "^2.2.0", 13 | "@upstash/ratelimit": "^0.4.4", 14 | "@upstash/redis": "^1.24.3", 15 | "ky": "^1.1.3", 16 | "next": "14.0.1", 17 | "node-html-parser": "^6.1.11", 18 | "openai": "^4.14.2", 19 | "react": "^18", 20 | "react-dom": "^18" 21 | }, 22 | "devDependencies": { 23 | "@ianvs/prettier-plugin-sort-imports": "^4.1.1", 24 | "@types/node": "^20", 25 | "@types/react": "^18", 26 | "@types/react-dom": "^18", 27 | "@typescript-eslint/parser": "^6.9.1", 28 | "autoprefixer": "^10.0.1", 29 | "eslint": "^8", 30 | "eslint-config-next": "14.0.1", 31 | "eslint-config-prettier": "^9.0.0", 32 | "eslint-plugin-react": "^7.33.2", 33 | "eslint-plugin-tailwindcss": "^3.13.0", 34 | "postcss": "^8", 35 | "prettier-plugin-tailwindcss": "^0.5.6", 36 | "tailwindcss": "^3.3.0", 37 | "typescript": "^5" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /prettier.config.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {import('prettier').Config & import('prettier-plugin-tailwindcss').options & 3 | * import("@ianvs/prettier-plugin-sort-imports").PluginConfig} 4 | */ 5 | const config = { 6 | endOfLine: "lf", 7 | semi: false, 8 | singleQuote: false, 9 | tabWidth: 2, 10 | trailingComma: "es5", 11 | printWidth: 100, 12 | arrowParens: "always", 13 | importOrder: [ 14 | "^(react/(.*)$)|^(react$)", 15 | "^(next/(.*)$)|^(next$)", 16 | "", 17 | "", 18 | "^types$", 19 | "^@/types/(.*)$", 20 | "^@/config/(.*)$", 21 | "^@/lib/(.*)$", 22 | "^@/hooks/(.*)$", 23 | "^@/components/ui/(.*)$", 24 | "^@/components/(.*)$", 25 | "^@/registry/(.*)$", 26 | "^@/styles/(.*)$", 27 | "^@/app/(.*)$", 28 | "", 29 | "^[./]", 30 | ], 31 | importOrderSeparation: false, 32 | importOrderSortSpecifiers: true, 33 | importOrderBuiltinModulesToTop: true, 34 | importOrderParserPlugins: ["typescript", "jsx", "decorators-legacy"], 35 | importOrderMergeDuplicateImports: true, 36 | importOrderCombineTypeAndValueImports: true, 37 | plugins: ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"], 38 | } 39 | 40 | export default config 41 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HackerDigest 2 | 3 | > [!NOTE] 4 | > **This project is a Community Project.** 5 | > 6 | > The project is maintained and supported by the community. Upstash may contribute but does not officially support or assume responsibility for it. 7 | 8 | HackerDigest is a modern app designed to summarize top scoring, up to date Hackernews stories for TLDR lovers. This app showcases [https://upstash.com/](Upstash) products. HackerDigest is perfect for tech lovers who don't like spending ton of time reading every bit of word. 9 | 10 | ## Features 11 | 12 | - **Top Stories Summary**: Get the latest high-scoring Hacker News stories in a condensed form. 13 | - **Frequent Updates**: Stories are updated in every 6 hour, ensuring you never miss out on trending topics. 14 | - **Custom Summaries**: Tailor the summary length to fit your reading preferences. 15 | 16 | ## Built With 17 | 18 | - [NextJS 14](https://nextjs.org/) 19 | - [Vercel](https://vercel.com) 20 | - [Tailwind](https://tailwindcss.com/) 21 | - [Upstash Redis](https://github.com/upstash/upstash-redis) 22 | - [Upstash Qstash](https://github.com/upstash/sdk-qstash-ts) 23 | - [Upstash Ratelimit](https://github.com/upstash/ratelimit) 24 | 25 | ## Installation 26 | 27 | To install HackerDigest, follow these steps: 28 | 29 | ```bash 30 | pnpm install 31 | 32 | pnpm dev 33 | ``` 34 | 35 | ## Environment Keys 36 | 37 | ```bash 38 | OPENAI_API_KEY=XXX 39 | OPENAI_ORGANIZATION_API=XXX 40 | 41 | UPSTASH_REDIS_REST_URL=XXX 42 | UPSTASH_REDIS_REST_TOKEN=XXX 43 | 44 | QSTASH_CURRENT_SIGNING_KEY=XXX 45 | QSTASH_NEXT_SIGNING_KEY=XXX 46 | ``` 47 | 48 | 49 | ## Contributing to HackerDigest 50 | 51 | We welcome contributions to HackerDigest. If you have a suggestion that would make this better, please fork the repository and create a pull request. Don't forget to give the project a star! Thanks again! 52 | 53 | 54 | ## Feature Pipeline 55 | 56 | [ ] - Create a newsletter with Resend and send it every 24 hour to users! 57 | -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body { 6 | background-color: #0B0A0A 7 | } 8 | .button { 9 | width: 200px; 10 | padding: 8px; 11 | text-align: center; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | position: relative; 16 | } 17 | 18 | .button-1 { 19 | background-color: transparent; 20 | border: 1px solid #00a372; 21 | border-bottom: 2px solid #00a372; 22 | border-radius: 5px; 23 | -webkit-transition: all 0.15s ease-in-out; 24 | transition: all 0.15s ease-in-out; 25 | color: #00a372; 26 | background-image: -webkit-linear-gradient(30deg, #00a372 50%, transparent 50%); 27 | background-image: linear-gradient(30deg, #00a372 50%, transparent 50%); 28 | background-size: 600px; 29 | background-repeat: no-repeat; 30 | background-position: 100%; 31 | -webkit-transition: background 300ms ease-in-out; 32 | transition: background 300ms ease-in-out; 33 | box-shadow: 34 | 0 0 10px 0 #00a372 inset, 35 | 0 0 20px 2px #00a372; 36 | border: 3px solid #00a372; 37 | animation: pulse 1s infinite; 38 | background-position: 0%; 39 | color: #FBFBFB; 40 | } 41 | 42 | @keyframes pulse { 43 | 0% { 44 | transform: scale(1); 45 | } 46 | 70% { 47 | transform: scale(0.9); 48 | } 49 | 100% { 50 | transform: scale(1); 51 | } 52 | } 53 | 54 | .light { 55 | overflow: hidden; 56 | } 57 | 58 | .light:before { 59 | content: ""; 60 | width: 200%; 61 | height: 200%; 62 | background: rgba(255, 255, 255, 0.3); 63 | transform: rotate(45deg); 64 | position: absolute; 65 | top: -10%; 66 | left: -200%; 67 | transition: 0.2s ease-in-out; 68 | } 69 | 70 | .light:hover:before { 71 | left: -10%; 72 | } 73 | 74 | .neon-border:hover { 75 | box-shadow: 0 0 .2rem #fff, 76 | 0 0 .2rem #fff, 77 | 0 0 2rem #00a372, 78 | 0 0 0.8rem #00a372, 79 | 0 0 2rem #00a372, 80 | inset 0 0 1.3rem #00a372; 81 | } -------------------------------------------------------------------------------- /src/services/link-parser.ts: -------------------------------------------------------------------------------- 1 | import parse, { HTMLElement } from "node-html-parser" 2 | 3 | import { fetchTopStoriesFromLast12Hours, HackerNewsStory } from "./hackernews" 4 | 5 | type Content = (string | string[]) | null 6 | export type HackerNewsStoryWithRawContent = HackerNewsStory & { rawContent: Content } 7 | export type HackerNewsStoryWithParsedContent = HackerNewsStory & { 8 | parsedContent: Content 9 | } 10 | 11 | async function fetchInnerContent(url?: string): Promise { 12 | if (!url) throw new Error("URL is missing!") 13 | if (!isValidUrl(url)) throw new Error("URL is not valid") 14 | 15 | try { 16 | const response = await fetch(url) 17 | const html = await response.text() 18 | const root = parse(html) 19 | 20 | let content = extractText(root.querySelectorAll("p")) 21 | 22 | if (!content) { 23 | // If no content was found in

tags, fallback to

tags 24 | content = extractText(root.querySelectorAll("div")) 25 | } 26 | 27 | // Assuming chunkString splits the string into manageable pieces 28 | return chunkString(content) // Ensure chunkString handles an empty string properly 29 | } catch (error) { 30 | console.error("Error fetching content:", error) 31 | return null 32 | } 33 | } 34 | 35 | export async function getContentsOfArticles( 36 | articleLimit: number 37 | ): Promise { 38 | const articleLinksAndTitles = await fetchTopStoriesFromLast12Hours(articleLimit) 39 | return await Promise.all( 40 | articleLinksAndTitles.map(async (article) => ({ 41 | ...article, 42 | rawContent: await fetchInnerContent(article.url), 43 | })) 44 | ) 45 | } 46 | 47 | function isValidUrl(urlString: string): boolean { 48 | try { 49 | new URL(urlString) 50 | return true 51 | } catch (err) { 52 | return false 53 | } 54 | } 55 | 56 | function chunkString(inputString: string, chunkSize = 4000) { 57 | if (inputString.length <= chunkSize) return inputString 58 | else { 59 | const chunks = [] 60 | for (let i = 0; i < inputString.length; i += chunkSize) { 61 | chunks.push(inputString.slice(i, i + chunkSize)) 62 | } 63 | return chunks 64 | } 65 | } 66 | 67 | // A function to clean and prepare text content 68 | function cleanText(text: string) { 69 | return text.replace(/\s+/g, " ").trim() 70 | } 71 | 72 | // A function to extract text from a collection of nodes 73 | function extractText(nodes: HTMLElement[]) { 74 | return nodes.map((node) => cleanText(node.innerText)).join(" ") 75 | } 76 | -------------------------------------------------------------------------------- /src/services/hackernews.ts: -------------------------------------------------------------------------------- 1 | import { requester } from "@/app/libs/requester" 2 | 3 | type HackerNewsStoryRaw = { 4 | id: number 5 | by: string // Author of the story 6 | score: number 7 | time: number 8 | title: string 9 | url: string 10 | descendants: number // Number of comments 11 | type: "story" | "comment" // Ensures the type is strictly 'story' 12 | kids: number[] 13 | } 14 | 15 | type HackerNewsComment = { 16 | id: number 17 | by: string // Author of the story 18 | time: string 19 | type: "story" | "comment" 20 | text: string 21 | } 22 | 23 | export type HackerNewsStory = { 24 | author: string 25 | score: number 26 | title: string 27 | url: string 28 | numOfComments: number 29 | commentUrl: string 30 | postedDate: string 31 | comments: (HackerNewsComment | null)[] 32 | } 33 | 34 | // Fetch the top story IDs 35 | async function fetchTopStoryIds(): Promise { 36 | const storyIds: number[] = await requester.get(`topstories.json`).json() 37 | return storyIds 38 | } 39 | 40 | // Fetch story details by ID 41 | async function fetchStoryDetails(id: number): Promise { 42 | const story: HackerNewsStoryRaw | null = await requester.get(`item/${id}.json`).json() 43 | // Check if the story has a URL and is of type 'story' 44 | if (story && story.url && story.type === "story") { 45 | return story 46 | } 47 | return null 48 | } 49 | 50 | // Fetch top 3 comments by ID 51 | async function fetchTopThreeComments(ids: number[]): Promise { 52 | const comments = (await Promise.all( 53 | ids.map((id) => requester.get(`item/${id}.json`).json()) 54 | )) as HackerNewsComment[] 55 | 56 | return comments 57 | .map( 58 | (comment) => 59 | comment && { 60 | by: comment.by, 61 | //@ts-ignore 62 | time: timeSince((comment.time as number) * 1000), 63 | id: comment.id, 64 | type: comment.type, 65 | text: comment.text, 66 | } 67 | ) 68 | .filter(Boolean) 69 | } 70 | 71 | // Fetch top stories from the last 12 hours 72 | export async function fetchTopStoriesFromLast12Hours( 73 | limit: number = 10 74 | ): Promise { 75 | const twelveHoursAgoTimestamp = Date.now() - 12 * 60 * 60 * 1000 76 | const topStoryIds = await fetchTopStoryIds() 77 | 78 | const storyDetailsPromises = topStoryIds.map(fetchStoryDetails) 79 | const allStories = (await Promise.all(storyDetailsPromises)).filter((story) => story !== null) 80 | 81 | const topStoriesFromLast12Hours = allStories 82 | .filter((story) => story && story.time * 1000 >= twelveHoursAgoTimestamp) 83 | .sort((a, b) => b!.score - a!.score) 84 | .slice(0, limit) as HackerNewsStoryRaw[] 85 | 86 | const topStoriesWithCommentsPromises = topStoriesFromLast12Hours.map(async (story) => { 87 | const comments = await fetchTopThreeComments(story.kids.slice(0, 3)) 88 | return { 89 | comments, 90 | commentUrl: `https://news.ycombinator.com/item?id=${story.id}`, 91 | postedDate: timeSince(story.time * 1000), 92 | numOfComments: story.descendants, 93 | author: story.by, 94 | url: story.url, 95 | title: story.title, 96 | score: story.score, 97 | } 98 | }) 99 | 100 | const topStoriesWithComments = await Promise.all(topStoriesWithCommentsPromises) 101 | 102 | return topStoriesWithComments 103 | } 104 | 105 | export function timeSince(date: number) { 106 | var seconds = Math.floor((new Date().valueOf() - date) / 1000) 107 | 108 | var interval = seconds / 31536000 109 | 110 | if (interval > 1) { 111 | return Math.floor(interval) + " year(s) ago" 112 | } 113 | interval = seconds / 2592000 114 | if (interval > 1) { 115 | return Math.floor(interval) + " month(s) ago" 116 | } 117 | interval = seconds / 86400 118 | if (interval > 1) { 119 | return Math.floor(interval) + " day(s) ago" 120 | } 121 | interval = seconds / 3600 122 | if (interval > 1) { 123 | return Math.floor(interval) + " hour(s) ago" 124 | } 125 | interval = seconds / 60 126 | if (interval > 1) { 127 | return Math.floor(interval) + " minute(s) ago" 128 | } 129 | return Math.floor(seconds) + " second(s) ago" 130 | } 131 | -------------------------------------------------------------------------------- /src/services/summarizer.ts: -------------------------------------------------------------------------------- 1 | import { 2 | getContentsOfArticles, 3 | HackerNewsStoryWithParsedContent, 4 | HackerNewsStoryWithRawContent, 5 | } from "@/services/link-parser" 6 | import { OpenAI } from "openai" 7 | 8 | const openai = new OpenAI({ 9 | apiKey: process.env.OPENAI_API_KEY, 10 | organization: process.env.OPENAI_ORGANIZATION_API, 11 | }) 12 | 13 | async function summarizeText(title: string, content: string): Promise { 14 | const prompt = ` 15 | Title: "${title}" 16 | Summarize the following news article in 2-3 clear and concise sentences without repetition: "${content}"` 17 | 18 | try { 19 | const chatCompletion = await openai.completions.create({ 20 | model: "gpt-3.5-turbo-instruct", 21 | prompt, 22 | temperature: 0.2, 23 | frequency_penalty: 0, 24 | presence_penalty: 0, 25 | max_tokens: 150, 26 | stream: false, 27 | n: 1, 28 | }) 29 | return chatCompletion.choices[0]?.text 30 | } catch (error) { 31 | console.error("summarizeText failed", (error as Error).message) 32 | } 33 | } 34 | 35 | async function summarizeComment(content: string): Promise { 36 | const prompt = `Summarize the following fellow hackernews enjoyer comment: "${content}"` 37 | 38 | try { 39 | const chatCompletion = await openai.completions.create({ 40 | model: "gpt-3.5-turbo-instruct", 41 | prompt, 42 | temperature: 0.2, 43 | frequency_penalty: 0, 44 | presence_penalty: 0, 45 | max_tokens: 100, 46 | stream: false, 47 | n: 1, 48 | }) 49 | return chatCompletion.choices[0]?.text 50 | } catch (error) { 51 | console.error("summarizeText failed", (error as Error).message) 52 | } 53 | } 54 | 55 | async function summarizeChunk(chunk?: string) { 56 | if (!chunk) return null 57 | 58 | const prompt = ` 59 | Please provide a concise summary of the following text and please ensure that the summary avoids any unnecessary information or repetition: "${chunk}" 60 | ` 61 | const chatCompletion = await openai.completions.create({ 62 | model: "gpt-3.5-turbo-instruct", 63 | prompt, 64 | temperature: 0.2, 65 | frequency_penalty: 0, 66 | presence_penalty: 0, 67 | max_tokens: 300, 68 | stream: false, 69 | n: 1, 70 | }) 71 | return chatCompletion.choices[0]?.text 72 | } 73 | 74 | async function summarizeArticles( 75 | article: HackerNewsStoryWithRawContent 76 | ): Promise { 77 | if (!Array.isArray(article.rawContent)) { 78 | try { 79 | if (!article.rawContent) throw new Error("Content is missing from summarizeArticles!") 80 | const summarizedText = await summarizeText(article.title, article.rawContent) 81 | 82 | if (!summarizedText) throw new Error("summarizedText is missing!") 83 | return summarizedText 84 | } catch (error) { 85 | console.error( 86 | `Something went wrong when summarizing single article ${(error as Error).message}` 87 | ) 88 | } 89 | } else { 90 | const summarizedChunks = await Promise.all( 91 | article.rawContent.map((chunk) => summarizeChunk(chunk)) 92 | ) 93 | 94 | try { 95 | const summarizedText = await summarizeText( 96 | article.title, 97 | summarizedChunks.filter(Boolean).join(" ") 98 | ) 99 | if (!summarizedText) throw new Error("chunkedSummarizedText is missing!") 100 | return summarizedText 101 | } catch (error) { 102 | console.error( 103 | `Something went wrong when summarizing chunked articles ${(error as Error).message}` 104 | ) 105 | } 106 | } 107 | } 108 | 109 | export async function getSummarizedArticles( 110 | articleLimit: number 111 | ): Promise { 112 | const res = await getContentsOfArticles(articleLimit) 113 | 114 | if (res && res.length > 0) { 115 | const summarizedArticlesPromises = res.map(async (article) => { 116 | if (article.rawContent) { 117 | // eslint-disable-next-line no-unused-vars 118 | const { rawContent, ...articleWithoutRawContent } = article 119 | 120 | // Summarize the main article content 121 | const parsedContent = await summarizeArticles(article) 122 | 123 | const parsedCommentsPromises = article.comments.map(async (article) => 124 | article ? { ...article, text: await summarizeComment(article.text) } : null 125 | ) 126 | 127 | const awaitedParsedComments = await Promise.all(parsedCommentsPromises) 128 | 129 | if (!parsedContent) return null 130 | 131 | return { parsedContent, ...articleWithoutRawContent, comments: awaitedParsedComments } 132 | } 133 | 134 | return null 135 | }) 136 | 137 | const summarizedArticles = await Promise.all(summarizedArticlesPromises) 138 | 139 | // Filter out any null values (articles without raw content or failed parsing) 140 | return summarizedArticles.filter(Boolean) as HackerNewsStoryWithParsedContent[] 141 | } 142 | 143 | return undefined 144 | } 145 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { getAllSummarizedArticles } from "./actions/get-all-summarized-articles" 2 | 3 | export default async function Home() { 4 | const { stories } = await getAllSummarizedArticles() 5 | 6 | return ( 7 |
8 |
9 | {/* */} 10 |
11 |
12 |
13 |

HackerDigest

14 |

15 | Overwhelmed by endless Hacker News feeds? Get the lowdown fast with HackerDigest. We 16 | serve up the latest in tech, condensed into quick, easy-to-read summaries. Stay in 17 | the loop without the time sink. 🚀 18 |

19 | 23 | View on Github 24 | 25 |
26 |
27 |
28 | 29 | {stories?.length ? ( 30 |
31 |

Stories

32 |
33 | {stories.map((article, index) => ( 34 |
38 |
39 |

40 | {article?.title} 41 |

42 | 43 | {article?.postedDate} 44 | 45 |
46 |

{article?.parsedContent}

47 | 48 |
49 |
Top three comments:
50 |
51 | {article?.comments?.map( 52 | (comment) => 53 | comment?.text && ( 54 |

55 | ###{" "} 56 | {comment?.text} 57 |

58 |

59 | Author: {comment?.by} 60 |

61 |

62 | Posted: {comment?.time} 63 |

64 |
65 |

66 | ) 67 | )} 68 |
69 |
70 | 71 |
72 |
73 |

74 | Author: {article?.author} 75 |

76 |

77 | Num of comments:{" "} 78 | {article?.numOfComments} 79 |

80 |

81 | Score: {article?.score} 82 |

83 |
84 |
85 | {article?.url && ( 86 | 92 | Go to original article 93 | 94 | )} 95 | {article?.commentUrl && ( 96 | 102 | Go to comments 103 | 104 | )} 105 |
106 |
107 |
108 | ))} 109 |
110 |
111 | ) : ( 112 |
113 | Nothing to digest 114 |
115 | )} 116 |
117 | 152 |
153 | ) 154 | } 155 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@upstash/qstash': 9 | specifier: ^2.2.0 10 | version: 2.2.0 11 | '@upstash/ratelimit': 12 | specifier: ^0.4.4 13 | version: 0.4.4 14 | '@upstash/redis': 15 | specifier: ^1.24.3 16 | version: 1.24.3 17 | ky: 18 | specifier: ^1.1.3 19 | version: 1.1.3 20 | next: 21 | specifier: 14.0.1 22 | version: 14.0.1(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0) 23 | node-html-parser: 24 | specifier: ^6.1.11 25 | version: 6.1.11 26 | openai: 27 | specifier: ^4.14.2 28 | version: 4.16.1 29 | react: 30 | specifier: ^18 31 | version: 18.2.0 32 | react-dom: 33 | specifier: ^18 34 | version: 18.2.0(react@18.2.0) 35 | 36 | devDependencies: 37 | '@ianvs/prettier-plugin-sort-imports': 38 | specifier: ^4.1.1 39 | version: 4.1.1(prettier@3.0.3) 40 | '@types/node': 41 | specifier: ^20 42 | version: 20.8.10 43 | '@types/react': 44 | specifier: ^18 45 | version: 18.2.36 46 | '@types/react-dom': 47 | specifier: ^18 48 | version: 18.2.14 49 | '@typescript-eslint/parser': 50 | specifier: ^6.9.1 51 | version: 6.10.0(eslint@8.53.0)(typescript@5.2.2) 52 | autoprefixer: 53 | specifier: ^10.0.1 54 | version: 10.4.16(postcss@8.4.31) 55 | eslint: 56 | specifier: ^8 57 | version: 8.53.0 58 | eslint-config-next: 59 | specifier: 14.0.1 60 | version: 14.0.1(eslint@8.53.0)(typescript@5.2.2) 61 | eslint-config-prettier: 62 | specifier: ^9.0.0 63 | version: 9.0.0(eslint@8.53.0) 64 | eslint-plugin-react: 65 | specifier: ^7.33.2 66 | version: 7.33.2(eslint@8.53.0) 67 | eslint-plugin-tailwindcss: 68 | specifier: ^3.13.0 69 | version: 3.13.0(tailwindcss@3.3.5) 70 | postcss: 71 | specifier: ^8 72 | version: 8.4.31 73 | prettier-plugin-tailwindcss: 74 | specifier: ^0.5.6 75 | version: 0.5.6(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.0.3) 76 | tailwindcss: 77 | specifier: ^3.3.0 78 | version: 3.3.5 79 | typescript: 80 | specifier: ^5 81 | version: 5.2.2 82 | 83 | packages: 84 | 85 | /@aashutoshrathi/word-wrap@1.2.6: 86 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 87 | engines: {node: '>=0.10.0'} 88 | dev: true 89 | 90 | /@alloc/quick-lru@5.2.0: 91 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 92 | engines: {node: '>=10'} 93 | dev: true 94 | 95 | /@ampproject/remapping@2.2.1: 96 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 97 | engines: {node: '>=6.0.0'} 98 | dependencies: 99 | '@jridgewell/gen-mapping': 0.3.3 100 | '@jridgewell/trace-mapping': 0.3.20 101 | 102 | /@babel/code-frame@7.22.13: 103 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} 104 | engines: {node: '>=6.9.0'} 105 | dependencies: 106 | '@babel/highlight': 7.22.20 107 | chalk: 2.4.2 108 | 109 | /@babel/compat-data@7.23.2: 110 | resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} 111 | engines: {node: '>=6.9.0'} 112 | 113 | /@babel/core@7.23.2: 114 | resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} 115 | engines: {node: '>=6.9.0'} 116 | dependencies: 117 | '@ampproject/remapping': 2.2.1 118 | '@babel/code-frame': 7.22.13 119 | '@babel/generator': 7.23.0 120 | '@babel/helper-compilation-targets': 7.22.15 121 | '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) 122 | '@babel/helpers': 7.23.2 123 | '@babel/parser': 7.23.0 124 | '@babel/template': 7.22.15 125 | '@babel/traverse': 7.23.2 126 | '@babel/types': 7.23.0 127 | convert-source-map: 2.0.0 128 | debug: 4.3.4 129 | gensync: 1.0.0-beta.2 130 | json5: 2.2.3 131 | semver: 6.3.1 132 | transitivePeerDependencies: 133 | - supports-color 134 | 135 | /@babel/generator@7.23.0: 136 | resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} 137 | engines: {node: '>=6.9.0'} 138 | dependencies: 139 | '@babel/types': 7.23.0 140 | '@jridgewell/gen-mapping': 0.3.3 141 | '@jridgewell/trace-mapping': 0.3.20 142 | jsesc: 2.5.2 143 | 144 | /@babel/helper-compilation-targets@7.22.15: 145 | resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} 146 | engines: {node: '>=6.9.0'} 147 | dependencies: 148 | '@babel/compat-data': 7.23.2 149 | '@babel/helper-validator-option': 7.22.15 150 | browserslist: 4.22.1 151 | lru-cache: 5.1.1 152 | semver: 6.3.1 153 | 154 | /@babel/helper-environment-visitor@7.22.20: 155 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 156 | engines: {node: '>=6.9.0'} 157 | 158 | /@babel/helper-function-name@7.23.0: 159 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 160 | engines: {node: '>=6.9.0'} 161 | dependencies: 162 | '@babel/template': 7.22.15 163 | '@babel/types': 7.23.0 164 | 165 | /@babel/helper-hoist-variables@7.22.5: 166 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 167 | engines: {node: '>=6.9.0'} 168 | dependencies: 169 | '@babel/types': 7.23.0 170 | 171 | /@babel/helper-module-imports@7.22.15: 172 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} 173 | engines: {node: '>=6.9.0'} 174 | dependencies: 175 | '@babel/types': 7.23.0 176 | 177 | /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): 178 | resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} 179 | engines: {node: '>=6.9.0'} 180 | peerDependencies: 181 | '@babel/core': ^7.0.0 182 | dependencies: 183 | '@babel/core': 7.23.2 184 | '@babel/helper-environment-visitor': 7.22.20 185 | '@babel/helper-module-imports': 7.22.15 186 | '@babel/helper-simple-access': 7.22.5 187 | '@babel/helper-split-export-declaration': 7.22.6 188 | '@babel/helper-validator-identifier': 7.22.20 189 | 190 | /@babel/helper-simple-access@7.22.5: 191 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 192 | engines: {node: '>=6.9.0'} 193 | dependencies: 194 | '@babel/types': 7.23.0 195 | 196 | /@babel/helper-split-export-declaration@7.22.6: 197 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 198 | engines: {node: '>=6.9.0'} 199 | dependencies: 200 | '@babel/types': 7.23.0 201 | 202 | /@babel/helper-string-parser@7.22.5: 203 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 204 | engines: {node: '>=6.9.0'} 205 | 206 | /@babel/helper-validator-identifier@7.22.20: 207 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 208 | engines: {node: '>=6.9.0'} 209 | 210 | /@babel/helper-validator-option@7.22.15: 211 | resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} 212 | engines: {node: '>=6.9.0'} 213 | 214 | /@babel/helpers@7.23.2: 215 | resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} 216 | engines: {node: '>=6.9.0'} 217 | dependencies: 218 | '@babel/template': 7.22.15 219 | '@babel/traverse': 7.23.2 220 | '@babel/types': 7.23.0 221 | transitivePeerDependencies: 222 | - supports-color 223 | 224 | /@babel/highlight@7.22.20: 225 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 226 | engines: {node: '>=6.9.0'} 227 | dependencies: 228 | '@babel/helper-validator-identifier': 7.22.20 229 | chalk: 2.4.2 230 | js-tokens: 4.0.0 231 | 232 | /@babel/parser@7.23.0: 233 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 234 | engines: {node: '>=6.0.0'} 235 | hasBin: true 236 | dependencies: 237 | '@babel/types': 7.23.0 238 | 239 | /@babel/runtime@7.23.2: 240 | resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} 241 | engines: {node: '>=6.9.0'} 242 | dependencies: 243 | regenerator-runtime: 0.14.0 244 | dev: true 245 | 246 | /@babel/template@7.22.15: 247 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 248 | engines: {node: '>=6.9.0'} 249 | dependencies: 250 | '@babel/code-frame': 7.22.13 251 | '@babel/parser': 7.23.0 252 | '@babel/types': 7.23.0 253 | 254 | /@babel/traverse@7.23.2: 255 | resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} 256 | engines: {node: '>=6.9.0'} 257 | dependencies: 258 | '@babel/code-frame': 7.22.13 259 | '@babel/generator': 7.23.0 260 | '@babel/helper-environment-visitor': 7.22.20 261 | '@babel/helper-function-name': 7.23.0 262 | '@babel/helper-hoist-variables': 7.22.5 263 | '@babel/helper-split-export-declaration': 7.22.6 264 | '@babel/parser': 7.23.0 265 | '@babel/types': 7.23.0 266 | debug: 4.3.4 267 | globals: 11.12.0 268 | transitivePeerDependencies: 269 | - supports-color 270 | 271 | /@babel/types@7.23.0: 272 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 273 | engines: {node: '>=6.9.0'} 274 | dependencies: 275 | '@babel/helper-string-parser': 7.22.5 276 | '@babel/helper-validator-identifier': 7.22.20 277 | to-fast-properties: 2.0.0 278 | 279 | /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): 280 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 281 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 282 | peerDependencies: 283 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 284 | dependencies: 285 | eslint: 8.53.0 286 | eslint-visitor-keys: 3.4.3 287 | dev: true 288 | 289 | /@eslint-community/regexpp@4.10.0: 290 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 291 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 292 | dev: true 293 | 294 | /@eslint/eslintrc@2.1.3: 295 | resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} 296 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 297 | dependencies: 298 | ajv: 6.12.6 299 | debug: 4.3.4 300 | espree: 9.6.1 301 | globals: 13.23.0 302 | ignore: 5.2.4 303 | import-fresh: 3.3.0 304 | js-yaml: 4.1.0 305 | minimatch: 3.1.2 306 | strip-json-comments: 3.1.1 307 | transitivePeerDependencies: 308 | - supports-color 309 | dev: true 310 | 311 | /@eslint/js@8.53.0: 312 | resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} 313 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 314 | dev: true 315 | 316 | /@humanwhocodes/config-array@0.11.13: 317 | resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} 318 | engines: {node: '>=10.10.0'} 319 | dependencies: 320 | '@humanwhocodes/object-schema': 2.0.1 321 | debug: 4.3.4 322 | minimatch: 3.1.2 323 | transitivePeerDependencies: 324 | - supports-color 325 | dev: true 326 | 327 | /@humanwhocodes/module-importer@1.0.1: 328 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 329 | engines: {node: '>=12.22'} 330 | dev: true 331 | 332 | /@humanwhocodes/object-schema@2.0.1: 333 | resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} 334 | dev: true 335 | 336 | /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.0.3): 337 | resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} 338 | peerDependencies: 339 | '@vue/compiler-sfc': '>=3.0.0' 340 | prettier: 2 || 3 341 | peerDependenciesMeta: 342 | '@vue/compiler-sfc': 343 | optional: true 344 | dependencies: 345 | '@babel/core': 7.23.2 346 | '@babel/generator': 7.23.0 347 | '@babel/parser': 7.23.0 348 | '@babel/traverse': 7.23.2 349 | '@babel/types': 7.23.0 350 | prettier: 3.0.3 351 | semver: 7.5.4 352 | transitivePeerDependencies: 353 | - supports-color 354 | dev: true 355 | 356 | /@jridgewell/gen-mapping@0.3.3: 357 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 358 | engines: {node: '>=6.0.0'} 359 | dependencies: 360 | '@jridgewell/set-array': 1.1.2 361 | '@jridgewell/sourcemap-codec': 1.4.15 362 | '@jridgewell/trace-mapping': 0.3.20 363 | 364 | /@jridgewell/resolve-uri@3.1.1: 365 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 366 | engines: {node: '>=6.0.0'} 367 | 368 | /@jridgewell/set-array@1.1.2: 369 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 370 | engines: {node: '>=6.0.0'} 371 | 372 | /@jridgewell/sourcemap-codec@1.4.15: 373 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 374 | 375 | /@jridgewell/trace-mapping@0.3.20: 376 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 377 | dependencies: 378 | '@jridgewell/resolve-uri': 3.1.1 379 | '@jridgewell/sourcemap-codec': 1.4.15 380 | 381 | /@next/env@14.0.1: 382 | resolution: {integrity: sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==} 383 | dev: false 384 | 385 | /@next/eslint-plugin-next@14.0.1: 386 | resolution: {integrity: sha512-bLjJMwXdzvhnQOnxvHoTTUh/+PYk6FF/DCgHi4BXwXCINer+o1ZYfL9aVeezj/oI7wqGJOqwGIXrlBvPbAId3w==} 387 | dependencies: 388 | glob: 7.1.7 389 | dev: true 390 | 391 | /@next/swc-darwin-arm64@14.0.1: 392 | resolution: {integrity: sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==} 393 | engines: {node: '>= 10'} 394 | cpu: [arm64] 395 | os: [darwin] 396 | requiresBuild: true 397 | dev: false 398 | optional: true 399 | 400 | /@next/swc-darwin-x64@14.0.1: 401 | resolution: {integrity: sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==} 402 | engines: {node: '>= 10'} 403 | cpu: [x64] 404 | os: [darwin] 405 | requiresBuild: true 406 | dev: false 407 | optional: true 408 | 409 | /@next/swc-linux-arm64-gnu@14.0.1: 410 | resolution: {integrity: sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==} 411 | engines: {node: '>= 10'} 412 | cpu: [arm64] 413 | os: [linux] 414 | requiresBuild: true 415 | dev: false 416 | optional: true 417 | 418 | /@next/swc-linux-arm64-musl@14.0.1: 419 | resolution: {integrity: sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==} 420 | engines: {node: '>= 10'} 421 | cpu: [arm64] 422 | os: [linux] 423 | requiresBuild: true 424 | dev: false 425 | optional: true 426 | 427 | /@next/swc-linux-x64-gnu@14.0.1: 428 | resolution: {integrity: sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==} 429 | engines: {node: '>= 10'} 430 | cpu: [x64] 431 | os: [linux] 432 | requiresBuild: true 433 | dev: false 434 | optional: true 435 | 436 | /@next/swc-linux-x64-musl@14.0.1: 437 | resolution: {integrity: sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==} 438 | engines: {node: '>= 10'} 439 | cpu: [x64] 440 | os: [linux] 441 | requiresBuild: true 442 | dev: false 443 | optional: true 444 | 445 | /@next/swc-win32-arm64-msvc@14.0.1: 446 | resolution: {integrity: sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==} 447 | engines: {node: '>= 10'} 448 | cpu: [arm64] 449 | os: [win32] 450 | requiresBuild: true 451 | dev: false 452 | optional: true 453 | 454 | /@next/swc-win32-ia32-msvc@14.0.1: 455 | resolution: {integrity: sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==} 456 | engines: {node: '>= 10'} 457 | cpu: [ia32] 458 | os: [win32] 459 | requiresBuild: true 460 | dev: false 461 | optional: true 462 | 463 | /@next/swc-win32-x64-msvc@14.0.1: 464 | resolution: {integrity: sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==} 465 | engines: {node: '>= 10'} 466 | cpu: [x64] 467 | os: [win32] 468 | requiresBuild: true 469 | dev: false 470 | optional: true 471 | 472 | /@nodelib/fs.scandir@2.1.5: 473 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 474 | engines: {node: '>= 8'} 475 | dependencies: 476 | '@nodelib/fs.stat': 2.0.5 477 | run-parallel: 1.2.0 478 | dev: true 479 | 480 | /@nodelib/fs.stat@2.0.5: 481 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 482 | engines: {node: '>= 8'} 483 | dev: true 484 | 485 | /@nodelib/fs.walk@1.2.8: 486 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 487 | engines: {node: '>= 8'} 488 | dependencies: 489 | '@nodelib/fs.scandir': 2.1.5 490 | fastq: 1.15.0 491 | dev: true 492 | 493 | /@rushstack/eslint-patch@1.5.1: 494 | resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} 495 | dev: true 496 | 497 | /@swc/helpers@0.5.2: 498 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 499 | dependencies: 500 | tslib: 2.6.2 501 | dev: false 502 | 503 | /@types/json5@0.0.29: 504 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 505 | dev: true 506 | 507 | /@types/node-fetch@2.6.9: 508 | resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} 509 | dependencies: 510 | '@types/node': 20.8.10 511 | form-data: 4.0.0 512 | dev: false 513 | 514 | /@types/node@18.18.8: 515 | resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==} 516 | dependencies: 517 | undici-types: 5.26.5 518 | dev: false 519 | 520 | /@types/node@20.8.10: 521 | resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} 522 | dependencies: 523 | undici-types: 5.26.5 524 | 525 | /@types/prop-types@15.7.9: 526 | resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} 527 | dev: true 528 | 529 | /@types/react-dom@18.2.14: 530 | resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} 531 | dependencies: 532 | '@types/react': 18.2.36 533 | dev: true 534 | 535 | /@types/react@18.2.36: 536 | resolution: {integrity: sha512-o9XFsHYLLZ4+sb9CWUYwHqFVoG61SesydF353vFMMsQziiyRu8np4n2OYMUSDZ8XuImxDr9c5tR7gidlH29Vnw==} 537 | dependencies: 538 | '@types/prop-types': 15.7.9 539 | '@types/scheduler': 0.16.5 540 | csstype: 3.1.2 541 | dev: true 542 | 543 | /@types/scheduler@0.16.5: 544 | resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} 545 | dev: true 546 | 547 | /@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): 548 | resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} 549 | engines: {node: ^16.0.0 || >=18.0.0} 550 | peerDependencies: 551 | eslint: ^7.0.0 || ^8.0.0 552 | typescript: '*' 553 | peerDependenciesMeta: 554 | typescript: 555 | optional: true 556 | dependencies: 557 | '@typescript-eslint/scope-manager': 6.10.0 558 | '@typescript-eslint/types': 6.10.0 559 | '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) 560 | '@typescript-eslint/visitor-keys': 6.10.0 561 | debug: 4.3.4 562 | eslint: 8.53.0 563 | typescript: 5.2.2 564 | transitivePeerDependencies: 565 | - supports-color 566 | dev: true 567 | 568 | /@typescript-eslint/scope-manager@6.10.0: 569 | resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} 570 | engines: {node: ^16.0.0 || >=18.0.0} 571 | dependencies: 572 | '@typescript-eslint/types': 6.10.0 573 | '@typescript-eslint/visitor-keys': 6.10.0 574 | dev: true 575 | 576 | /@typescript-eslint/types@6.10.0: 577 | resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} 578 | engines: {node: ^16.0.0 || >=18.0.0} 579 | dev: true 580 | 581 | /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): 582 | resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} 583 | engines: {node: ^16.0.0 || >=18.0.0} 584 | peerDependencies: 585 | typescript: '*' 586 | peerDependenciesMeta: 587 | typescript: 588 | optional: true 589 | dependencies: 590 | '@typescript-eslint/types': 6.10.0 591 | '@typescript-eslint/visitor-keys': 6.10.0 592 | debug: 4.3.4 593 | globby: 11.1.0 594 | is-glob: 4.0.3 595 | semver: 7.5.4 596 | ts-api-utils: 1.0.3(typescript@5.2.2) 597 | typescript: 5.2.2 598 | transitivePeerDependencies: 599 | - supports-color 600 | dev: true 601 | 602 | /@typescript-eslint/visitor-keys@6.10.0: 603 | resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} 604 | engines: {node: ^16.0.0 || >=18.0.0} 605 | dependencies: 606 | '@typescript-eslint/types': 6.10.0 607 | eslint-visitor-keys: 3.4.3 608 | dev: true 609 | 610 | /@ungap/structured-clone@1.2.0: 611 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 612 | dev: true 613 | 614 | /@upstash/core-analytics@0.0.6: 615 | resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==} 616 | engines: {node: '>=16.0.0'} 617 | dependencies: 618 | '@upstash/redis': 1.24.3 619 | dev: false 620 | 621 | /@upstash/qstash@2.2.0: 622 | resolution: {integrity: sha512-9ZdTp1r0geB3VWshBFu/mbzjjZpSsU2kz2T3cbYZ17EPe3DSrBVO2ij1PrESTYKUlDt33WcJdbwSssOyHzz83g==} 623 | dependencies: 624 | crypto-js: 4.2.0 625 | jose: 4.15.4 626 | dev: false 627 | 628 | /@upstash/ratelimit@0.4.4: 629 | resolution: {integrity: sha512-y3q6cNDdcRQ2MRPRf5UNWBN36IwnZ4kAEkGoH3i6OqdWwz4qlBxNsw4/Rpqn9h93+Nx1cqg5IOq7O2e2zMJY1w==} 630 | dependencies: 631 | '@upstash/core-analytics': 0.0.6 632 | dev: false 633 | 634 | /@upstash/redis@1.24.3: 635 | resolution: {integrity: sha512-gw6d4IA1biB4eye5ESaXc0zOlVQI94aptsBvVcTghYWu1kRmOrJFoMFEDCa8p5uzluyYAOFCuY2GWLR6O4ZoIw==} 636 | dependencies: 637 | crypto-js: 4.2.0 638 | dev: false 639 | 640 | /abort-controller@3.0.0: 641 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 642 | engines: {node: '>=6.5'} 643 | dependencies: 644 | event-target-shim: 5.0.1 645 | dev: false 646 | 647 | /acorn-jsx@5.3.2(acorn@8.11.2): 648 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 649 | peerDependencies: 650 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 651 | dependencies: 652 | acorn: 8.11.2 653 | dev: true 654 | 655 | /acorn@8.11.2: 656 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} 657 | engines: {node: '>=0.4.0'} 658 | hasBin: true 659 | dev: true 660 | 661 | /agentkeepalive@4.5.0: 662 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 663 | engines: {node: '>= 8.0.0'} 664 | dependencies: 665 | humanize-ms: 1.2.1 666 | dev: false 667 | 668 | /ajv@6.12.6: 669 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 670 | dependencies: 671 | fast-deep-equal: 3.1.3 672 | fast-json-stable-stringify: 2.1.0 673 | json-schema-traverse: 0.4.1 674 | uri-js: 4.4.1 675 | dev: true 676 | 677 | /ansi-regex@5.0.1: 678 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 679 | engines: {node: '>=8'} 680 | dev: true 681 | 682 | /ansi-styles@3.2.1: 683 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 684 | engines: {node: '>=4'} 685 | dependencies: 686 | color-convert: 1.9.3 687 | 688 | /ansi-styles@4.3.0: 689 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 690 | engines: {node: '>=8'} 691 | dependencies: 692 | color-convert: 2.0.1 693 | dev: true 694 | 695 | /any-promise@1.3.0: 696 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 697 | dev: true 698 | 699 | /anymatch@3.1.3: 700 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 701 | engines: {node: '>= 8'} 702 | dependencies: 703 | normalize-path: 3.0.0 704 | picomatch: 2.3.1 705 | dev: true 706 | 707 | /arg@5.0.2: 708 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 709 | dev: true 710 | 711 | /argparse@2.0.1: 712 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 713 | dev: true 714 | 715 | /aria-query@5.3.0: 716 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 717 | dependencies: 718 | dequal: 2.0.3 719 | dev: true 720 | 721 | /array-buffer-byte-length@1.0.0: 722 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 723 | dependencies: 724 | call-bind: 1.0.5 725 | is-array-buffer: 3.0.2 726 | dev: true 727 | 728 | /array-includes@3.1.7: 729 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 730 | engines: {node: '>= 0.4'} 731 | dependencies: 732 | call-bind: 1.0.5 733 | define-properties: 1.2.1 734 | es-abstract: 1.22.3 735 | get-intrinsic: 1.2.2 736 | is-string: 1.0.7 737 | dev: true 738 | 739 | /array-union@2.1.0: 740 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 741 | engines: {node: '>=8'} 742 | dev: true 743 | 744 | /array.prototype.findlastindex@1.2.3: 745 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 746 | engines: {node: '>= 0.4'} 747 | dependencies: 748 | call-bind: 1.0.5 749 | define-properties: 1.2.1 750 | es-abstract: 1.22.3 751 | es-shim-unscopables: 1.0.2 752 | get-intrinsic: 1.2.2 753 | dev: true 754 | 755 | /array.prototype.flat@1.3.2: 756 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 757 | engines: {node: '>= 0.4'} 758 | dependencies: 759 | call-bind: 1.0.5 760 | define-properties: 1.2.1 761 | es-abstract: 1.22.3 762 | es-shim-unscopables: 1.0.2 763 | dev: true 764 | 765 | /array.prototype.flatmap@1.3.2: 766 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 767 | engines: {node: '>= 0.4'} 768 | dependencies: 769 | call-bind: 1.0.5 770 | define-properties: 1.2.1 771 | es-abstract: 1.22.3 772 | es-shim-unscopables: 1.0.2 773 | dev: true 774 | 775 | /array.prototype.tosorted@1.1.2: 776 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} 777 | dependencies: 778 | call-bind: 1.0.5 779 | define-properties: 1.2.1 780 | es-abstract: 1.22.3 781 | es-shim-unscopables: 1.0.2 782 | get-intrinsic: 1.2.2 783 | dev: true 784 | 785 | /arraybuffer.prototype.slice@1.0.2: 786 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} 787 | engines: {node: '>= 0.4'} 788 | dependencies: 789 | array-buffer-byte-length: 1.0.0 790 | call-bind: 1.0.5 791 | define-properties: 1.2.1 792 | es-abstract: 1.22.3 793 | get-intrinsic: 1.2.2 794 | is-array-buffer: 3.0.2 795 | is-shared-array-buffer: 1.0.2 796 | dev: true 797 | 798 | /ast-types-flow@0.0.8: 799 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 800 | dev: true 801 | 802 | /asynciterator.prototype@1.0.0: 803 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 804 | dependencies: 805 | has-symbols: 1.0.3 806 | dev: true 807 | 808 | /asynckit@0.4.0: 809 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 810 | dev: false 811 | 812 | /autoprefixer@10.4.16(postcss@8.4.31): 813 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 814 | engines: {node: ^10 || ^12 || >=14} 815 | hasBin: true 816 | peerDependencies: 817 | postcss: ^8.1.0 818 | dependencies: 819 | browserslist: 4.22.1 820 | caniuse-lite: 1.0.30001561 821 | fraction.js: 4.3.7 822 | normalize-range: 0.1.2 823 | picocolors: 1.0.0 824 | postcss: 8.4.31 825 | postcss-value-parser: 4.2.0 826 | dev: true 827 | 828 | /available-typed-arrays@1.0.5: 829 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 830 | engines: {node: '>= 0.4'} 831 | dev: true 832 | 833 | /axe-core@4.7.0: 834 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 835 | engines: {node: '>=4'} 836 | dev: true 837 | 838 | /axobject-query@3.2.1: 839 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 840 | dependencies: 841 | dequal: 2.0.3 842 | dev: true 843 | 844 | /balanced-match@1.0.2: 845 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 846 | dev: true 847 | 848 | /base-64@0.1.0: 849 | resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} 850 | dev: false 851 | 852 | /binary-extensions@2.2.0: 853 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 854 | engines: {node: '>=8'} 855 | dev: true 856 | 857 | /boolbase@1.0.0: 858 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 859 | dev: false 860 | 861 | /brace-expansion@1.1.11: 862 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 863 | dependencies: 864 | balanced-match: 1.0.2 865 | concat-map: 0.0.1 866 | dev: true 867 | 868 | /braces@3.0.2: 869 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 870 | engines: {node: '>=8'} 871 | dependencies: 872 | fill-range: 7.0.1 873 | dev: true 874 | 875 | /browserslist@4.22.1: 876 | resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} 877 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 878 | hasBin: true 879 | dependencies: 880 | caniuse-lite: 1.0.30001561 881 | electron-to-chromium: 1.4.577 882 | node-releases: 2.0.13 883 | update-browserslist-db: 1.0.13(browserslist@4.22.1) 884 | 885 | /busboy@1.6.0: 886 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 887 | engines: {node: '>=10.16.0'} 888 | dependencies: 889 | streamsearch: 1.1.0 890 | dev: false 891 | 892 | /call-bind@1.0.5: 893 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 894 | dependencies: 895 | function-bind: 1.1.2 896 | get-intrinsic: 1.2.2 897 | set-function-length: 1.1.1 898 | dev: true 899 | 900 | /callsites@3.1.0: 901 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 902 | engines: {node: '>=6'} 903 | dev: true 904 | 905 | /camelcase-css@2.0.1: 906 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 907 | engines: {node: '>= 6'} 908 | dev: true 909 | 910 | /caniuse-lite@1.0.30001561: 911 | resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==} 912 | 913 | /chalk@2.4.2: 914 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 915 | engines: {node: '>=4'} 916 | dependencies: 917 | ansi-styles: 3.2.1 918 | escape-string-regexp: 1.0.5 919 | supports-color: 5.5.0 920 | 921 | /chalk@4.1.2: 922 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 923 | engines: {node: '>=10'} 924 | dependencies: 925 | ansi-styles: 4.3.0 926 | supports-color: 7.2.0 927 | dev: true 928 | 929 | /charenc@0.0.2: 930 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} 931 | dev: false 932 | 933 | /chokidar@3.5.3: 934 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 935 | engines: {node: '>= 8.10.0'} 936 | dependencies: 937 | anymatch: 3.1.3 938 | braces: 3.0.2 939 | glob-parent: 5.1.2 940 | is-binary-path: 2.1.0 941 | is-glob: 4.0.3 942 | normalize-path: 3.0.0 943 | readdirp: 3.6.0 944 | optionalDependencies: 945 | fsevents: 2.3.3 946 | dev: true 947 | 948 | /client-only@0.0.1: 949 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 950 | dev: false 951 | 952 | /color-convert@1.9.3: 953 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 954 | dependencies: 955 | color-name: 1.1.3 956 | 957 | /color-convert@2.0.1: 958 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 959 | engines: {node: '>=7.0.0'} 960 | dependencies: 961 | color-name: 1.1.4 962 | dev: true 963 | 964 | /color-name@1.1.3: 965 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 966 | 967 | /color-name@1.1.4: 968 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 969 | dev: true 970 | 971 | /combined-stream@1.0.8: 972 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 973 | engines: {node: '>= 0.8'} 974 | dependencies: 975 | delayed-stream: 1.0.0 976 | dev: false 977 | 978 | /commander@4.1.1: 979 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 980 | engines: {node: '>= 6'} 981 | dev: true 982 | 983 | /concat-map@0.0.1: 984 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 985 | dev: true 986 | 987 | /convert-source-map@2.0.0: 988 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 989 | 990 | /cross-spawn@7.0.3: 991 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 992 | engines: {node: '>= 8'} 993 | dependencies: 994 | path-key: 3.1.1 995 | shebang-command: 2.0.0 996 | which: 2.0.2 997 | dev: true 998 | 999 | /crypt@0.0.2: 1000 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} 1001 | dev: false 1002 | 1003 | /crypto-js@4.2.0: 1004 | resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} 1005 | dev: false 1006 | 1007 | /css-select@5.1.0: 1008 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 1009 | dependencies: 1010 | boolbase: 1.0.0 1011 | css-what: 6.1.0 1012 | domhandler: 5.0.3 1013 | domutils: 3.1.0 1014 | nth-check: 2.1.1 1015 | dev: false 1016 | 1017 | /css-what@6.1.0: 1018 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 1019 | engines: {node: '>= 6'} 1020 | dev: false 1021 | 1022 | /cssesc@3.0.0: 1023 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1024 | engines: {node: '>=4'} 1025 | hasBin: true 1026 | dev: true 1027 | 1028 | /csstype@3.1.2: 1029 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 1030 | dev: true 1031 | 1032 | /damerau-levenshtein@1.0.8: 1033 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 1034 | dev: true 1035 | 1036 | /debug@3.2.7: 1037 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1038 | peerDependencies: 1039 | supports-color: '*' 1040 | peerDependenciesMeta: 1041 | supports-color: 1042 | optional: true 1043 | dependencies: 1044 | ms: 2.1.3 1045 | dev: true 1046 | 1047 | /debug@4.3.4: 1048 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1049 | engines: {node: '>=6.0'} 1050 | peerDependencies: 1051 | supports-color: '*' 1052 | peerDependenciesMeta: 1053 | supports-color: 1054 | optional: true 1055 | dependencies: 1056 | ms: 2.1.2 1057 | 1058 | /deep-is@0.1.4: 1059 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1060 | dev: true 1061 | 1062 | /define-data-property@1.1.1: 1063 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 1064 | engines: {node: '>= 0.4'} 1065 | dependencies: 1066 | get-intrinsic: 1.2.2 1067 | gopd: 1.0.1 1068 | has-property-descriptors: 1.0.1 1069 | dev: true 1070 | 1071 | /define-properties@1.2.1: 1072 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1073 | engines: {node: '>= 0.4'} 1074 | dependencies: 1075 | define-data-property: 1.1.1 1076 | has-property-descriptors: 1.0.1 1077 | object-keys: 1.1.1 1078 | dev: true 1079 | 1080 | /delayed-stream@1.0.0: 1081 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1082 | engines: {node: '>=0.4.0'} 1083 | dev: false 1084 | 1085 | /dequal@2.0.3: 1086 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1087 | engines: {node: '>=6'} 1088 | dev: true 1089 | 1090 | /didyoumean@1.2.2: 1091 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1092 | dev: true 1093 | 1094 | /digest-fetch@1.3.0: 1095 | resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} 1096 | dependencies: 1097 | base-64: 0.1.0 1098 | md5: 2.3.0 1099 | dev: false 1100 | 1101 | /dir-glob@3.0.1: 1102 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1103 | engines: {node: '>=8'} 1104 | dependencies: 1105 | path-type: 4.0.0 1106 | dev: true 1107 | 1108 | /dlv@1.1.3: 1109 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1110 | dev: true 1111 | 1112 | /doctrine@2.1.0: 1113 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1114 | engines: {node: '>=0.10.0'} 1115 | dependencies: 1116 | esutils: 2.0.3 1117 | dev: true 1118 | 1119 | /doctrine@3.0.0: 1120 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1121 | engines: {node: '>=6.0.0'} 1122 | dependencies: 1123 | esutils: 2.0.3 1124 | dev: true 1125 | 1126 | /dom-serializer@2.0.0: 1127 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1128 | dependencies: 1129 | domelementtype: 2.3.0 1130 | domhandler: 5.0.3 1131 | entities: 4.5.0 1132 | dev: false 1133 | 1134 | /domelementtype@2.3.0: 1135 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1136 | dev: false 1137 | 1138 | /domhandler@5.0.3: 1139 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1140 | engines: {node: '>= 4'} 1141 | dependencies: 1142 | domelementtype: 2.3.0 1143 | dev: false 1144 | 1145 | /domutils@3.1.0: 1146 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 1147 | dependencies: 1148 | dom-serializer: 2.0.0 1149 | domelementtype: 2.3.0 1150 | domhandler: 5.0.3 1151 | dev: false 1152 | 1153 | /electron-to-chromium@1.4.577: 1154 | resolution: {integrity: sha512-/5xHPH6f00SxhHw6052r+5S1xO7gHNc89hV7tqlvnStvKbSrDqc/u6AlwPvVWWNj+s4/KL6T6y8ih+nOY0qYNA==} 1155 | 1156 | /emoji-regex@9.2.2: 1157 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1158 | dev: true 1159 | 1160 | /enhanced-resolve@5.15.0: 1161 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 1162 | engines: {node: '>=10.13.0'} 1163 | dependencies: 1164 | graceful-fs: 4.2.11 1165 | tapable: 2.2.1 1166 | dev: true 1167 | 1168 | /entities@4.5.0: 1169 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1170 | engines: {node: '>=0.12'} 1171 | dev: false 1172 | 1173 | /es-abstract@1.22.3: 1174 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1175 | engines: {node: '>= 0.4'} 1176 | dependencies: 1177 | array-buffer-byte-length: 1.0.0 1178 | arraybuffer.prototype.slice: 1.0.2 1179 | available-typed-arrays: 1.0.5 1180 | call-bind: 1.0.5 1181 | es-set-tostringtag: 2.0.2 1182 | es-to-primitive: 1.2.1 1183 | function.prototype.name: 1.1.6 1184 | get-intrinsic: 1.2.2 1185 | get-symbol-description: 1.0.0 1186 | globalthis: 1.0.3 1187 | gopd: 1.0.1 1188 | has-property-descriptors: 1.0.1 1189 | has-proto: 1.0.1 1190 | has-symbols: 1.0.3 1191 | hasown: 2.0.0 1192 | internal-slot: 1.0.6 1193 | is-array-buffer: 3.0.2 1194 | is-callable: 1.2.7 1195 | is-negative-zero: 2.0.2 1196 | is-regex: 1.1.4 1197 | is-shared-array-buffer: 1.0.2 1198 | is-string: 1.0.7 1199 | is-typed-array: 1.1.12 1200 | is-weakref: 1.0.2 1201 | object-inspect: 1.13.1 1202 | object-keys: 1.1.1 1203 | object.assign: 4.1.4 1204 | regexp.prototype.flags: 1.5.1 1205 | safe-array-concat: 1.0.1 1206 | safe-regex-test: 1.0.0 1207 | string.prototype.trim: 1.2.8 1208 | string.prototype.trimend: 1.0.7 1209 | string.prototype.trimstart: 1.0.7 1210 | typed-array-buffer: 1.0.0 1211 | typed-array-byte-length: 1.0.0 1212 | typed-array-byte-offset: 1.0.0 1213 | typed-array-length: 1.0.4 1214 | unbox-primitive: 1.0.2 1215 | which-typed-array: 1.1.13 1216 | dev: true 1217 | 1218 | /es-iterator-helpers@1.0.15: 1219 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1220 | dependencies: 1221 | asynciterator.prototype: 1.0.0 1222 | call-bind: 1.0.5 1223 | define-properties: 1.2.1 1224 | es-abstract: 1.22.3 1225 | es-set-tostringtag: 2.0.2 1226 | function-bind: 1.1.2 1227 | get-intrinsic: 1.2.2 1228 | globalthis: 1.0.3 1229 | has-property-descriptors: 1.0.1 1230 | has-proto: 1.0.1 1231 | has-symbols: 1.0.3 1232 | internal-slot: 1.0.6 1233 | iterator.prototype: 1.1.2 1234 | safe-array-concat: 1.0.1 1235 | dev: true 1236 | 1237 | /es-set-tostringtag@2.0.2: 1238 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1239 | engines: {node: '>= 0.4'} 1240 | dependencies: 1241 | get-intrinsic: 1.2.2 1242 | has-tostringtag: 1.0.0 1243 | hasown: 2.0.0 1244 | dev: true 1245 | 1246 | /es-shim-unscopables@1.0.2: 1247 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1248 | dependencies: 1249 | hasown: 2.0.0 1250 | dev: true 1251 | 1252 | /es-to-primitive@1.2.1: 1253 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1254 | engines: {node: '>= 0.4'} 1255 | dependencies: 1256 | is-callable: 1.2.7 1257 | is-date-object: 1.0.5 1258 | is-symbol: 1.0.4 1259 | dev: true 1260 | 1261 | /escalade@3.1.1: 1262 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1263 | engines: {node: '>=6'} 1264 | 1265 | /escape-string-regexp@1.0.5: 1266 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1267 | engines: {node: '>=0.8.0'} 1268 | 1269 | /escape-string-regexp@4.0.0: 1270 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1271 | engines: {node: '>=10'} 1272 | dev: true 1273 | 1274 | /eslint-config-next@14.0.1(eslint@8.53.0)(typescript@5.2.2): 1275 | resolution: {integrity: sha512-QfIFK2WD39H4WOespjgf6PLv9Bpsd7KGGelCtmq4l67nGvnlsGpuvj0hIT+aIy6p5gKH+lAChYILsyDlxP52yg==} 1276 | peerDependencies: 1277 | eslint: ^7.23.0 || ^8.0.0 1278 | typescript: '>=3.3.1' 1279 | peerDependenciesMeta: 1280 | typescript: 1281 | optional: true 1282 | dependencies: 1283 | '@next/eslint-plugin-next': 14.0.1 1284 | '@rushstack/eslint-patch': 1.5.1 1285 | '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) 1286 | eslint: 8.53.0 1287 | eslint-import-resolver-node: 0.3.9 1288 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0) 1289 | eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) 1290 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.53.0) 1291 | eslint-plugin-react: 7.33.2(eslint@8.53.0) 1292 | eslint-plugin-react-hooks: 4.6.0(eslint@8.53.0) 1293 | typescript: 5.2.2 1294 | transitivePeerDependencies: 1295 | - eslint-import-resolver-webpack 1296 | - supports-color 1297 | dev: true 1298 | 1299 | /eslint-config-prettier@9.0.0(eslint@8.53.0): 1300 | resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} 1301 | hasBin: true 1302 | peerDependencies: 1303 | eslint: '>=7.0.0' 1304 | dependencies: 1305 | eslint: 8.53.0 1306 | dev: true 1307 | 1308 | /eslint-import-resolver-node@0.3.9: 1309 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1310 | dependencies: 1311 | debug: 3.2.7 1312 | is-core-module: 2.13.1 1313 | resolve: 1.22.8 1314 | transitivePeerDependencies: 1315 | - supports-color 1316 | dev: true 1317 | 1318 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0): 1319 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1320 | engines: {node: ^14.18.0 || >=16.0.0} 1321 | peerDependencies: 1322 | eslint: '*' 1323 | eslint-plugin-import: '*' 1324 | dependencies: 1325 | debug: 4.3.4 1326 | enhanced-resolve: 5.15.0 1327 | eslint: 8.53.0 1328 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) 1329 | eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) 1330 | fast-glob: 3.3.2 1331 | get-tsconfig: 4.7.2 1332 | is-core-module: 2.13.1 1333 | is-glob: 4.0.3 1334 | transitivePeerDependencies: 1335 | - '@typescript-eslint/parser' 1336 | - eslint-import-resolver-node 1337 | - eslint-import-resolver-webpack 1338 | - supports-color 1339 | dev: true 1340 | 1341 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0): 1342 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1343 | engines: {node: '>=4'} 1344 | peerDependencies: 1345 | '@typescript-eslint/parser': '*' 1346 | eslint: '*' 1347 | eslint-import-resolver-node: '*' 1348 | eslint-import-resolver-typescript: '*' 1349 | eslint-import-resolver-webpack: '*' 1350 | peerDependenciesMeta: 1351 | '@typescript-eslint/parser': 1352 | optional: true 1353 | eslint: 1354 | optional: true 1355 | eslint-import-resolver-node: 1356 | optional: true 1357 | eslint-import-resolver-typescript: 1358 | optional: true 1359 | eslint-import-resolver-webpack: 1360 | optional: true 1361 | dependencies: 1362 | '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) 1363 | debug: 3.2.7 1364 | eslint: 8.53.0 1365 | eslint-import-resolver-node: 0.3.9 1366 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.53.0) 1367 | transitivePeerDependencies: 1368 | - supports-color 1369 | dev: true 1370 | 1371 | /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0): 1372 | resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} 1373 | engines: {node: '>=4'} 1374 | peerDependencies: 1375 | '@typescript-eslint/parser': '*' 1376 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1377 | peerDependenciesMeta: 1378 | '@typescript-eslint/parser': 1379 | optional: true 1380 | dependencies: 1381 | '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) 1382 | array-includes: 3.1.7 1383 | array.prototype.findlastindex: 1.2.3 1384 | array.prototype.flat: 1.3.2 1385 | array.prototype.flatmap: 1.3.2 1386 | debug: 3.2.7 1387 | doctrine: 2.1.0 1388 | eslint: 8.53.0 1389 | eslint-import-resolver-node: 0.3.9 1390 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.53.0) 1391 | hasown: 2.0.0 1392 | is-core-module: 2.13.1 1393 | is-glob: 4.0.3 1394 | minimatch: 3.1.2 1395 | object.fromentries: 2.0.7 1396 | object.groupby: 1.0.1 1397 | object.values: 1.1.7 1398 | semver: 6.3.1 1399 | tsconfig-paths: 3.14.2 1400 | transitivePeerDependencies: 1401 | - eslint-import-resolver-typescript 1402 | - eslint-import-resolver-webpack 1403 | - supports-color 1404 | dev: true 1405 | 1406 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.53.0): 1407 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1408 | engines: {node: '>=4.0'} 1409 | peerDependencies: 1410 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1411 | dependencies: 1412 | '@babel/runtime': 7.23.2 1413 | aria-query: 5.3.0 1414 | array-includes: 3.1.7 1415 | array.prototype.flatmap: 1.3.2 1416 | ast-types-flow: 0.0.8 1417 | axe-core: 4.7.0 1418 | axobject-query: 3.2.1 1419 | damerau-levenshtein: 1.0.8 1420 | emoji-regex: 9.2.2 1421 | es-iterator-helpers: 1.0.15 1422 | eslint: 8.53.0 1423 | hasown: 2.0.0 1424 | jsx-ast-utils: 3.3.5 1425 | language-tags: 1.0.9 1426 | minimatch: 3.1.2 1427 | object.entries: 1.1.7 1428 | object.fromentries: 2.0.7 1429 | dev: true 1430 | 1431 | /eslint-plugin-react-hooks@4.6.0(eslint@8.53.0): 1432 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1433 | engines: {node: '>=10'} 1434 | peerDependencies: 1435 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1436 | dependencies: 1437 | eslint: 8.53.0 1438 | dev: true 1439 | 1440 | /eslint-plugin-react@7.33.2(eslint@8.53.0): 1441 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1442 | engines: {node: '>=4'} 1443 | peerDependencies: 1444 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1445 | dependencies: 1446 | array-includes: 3.1.7 1447 | array.prototype.flatmap: 1.3.2 1448 | array.prototype.tosorted: 1.1.2 1449 | doctrine: 2.1.0 1450 | es-iterator-helpers: 1.0.15 1451 | eslint: 8.53.0 1452 | estraverse: 5.3.0 1453 | jsx-ast-utils: 3.3.5 1454 | minimatch: 3.1.2 1455 | object.entries: 1.1.7 1456 | object.fromentries: 2.0.7 1457 | object.hasown: 1.1.3 1458 | object.values: 1.1.7 1459 | prop-types: 15.8.1 1460 | resolve: 2.0.0-next.5 1461 | semver: 6.3.1 1462 | string.prototype.matchall: 4.0.10 1463 | dev: true 1464 | 1465 | /eslint-plugin-tailwindcss@3.13.0(tailwindcss@3.3.5): 1466 | resolution: {integrity: sha512-Fcep4KDRLWaK3KmkQbdyKHG0P4GdXFmXdDaweTIPcgOP60OOuWFbh1++dufRT28Q4zpKTKaHwTsXPJ4O/EjU2Q==} 1467 | engines: {node: '>=12.13.0'} 1468 | peerDependencies: 1469 | tailwindcss: ^3.3.2 1470 | dependencies: 1471 | fast-glob: 3.3.2 1472 | postcss: 8.4.31 1473 | tailwindcss: 3.3.5 1474 | dev: true 1475 | 1476 | /eslint-scope@7.2.2: 1477 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1478 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1479 | dependencies: 1480 | esrecurse: 4.3.0 1481 | estraverse: 5.3.0 1482 | dev: true 1483 | 1484 | /eslint-visitor-keys@3.4.3: 1485 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1486 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1487 | dev: true 1488 | 1489 | /eslint@8.53.0: 1490 | resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} 1491 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1492 | hasBin: true 1493 | dependencies: 1494 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) 1495 | '@eslint-community/regexpp': 4.10.0 1496 | '@eslint/eslintrc': 2.1.3 1497 | '@eslint/js': 8.53.0 1498 | '@humanwhocodes/config-array': 0.11.13 1499 | '@humanwhocodes/module-importer': 1.0.1 1500 | '@nodelib/fs.walk': 1.2.8 1501 | '@ungap/structured-clone': 1.2.0 1502 | ajv: 6.12.6 1503 | chalk: 4.1.2 1504 | cross-spawn: 7.0.3 1505 | debug: 4.3.4 1506 | doctrine: 3.0.0 1507 | escape-string-regexp: 4.0.0 1508 | eslint-scope: 7.2.2 1509 | eslint-visitor-keys: 3.4.3 1510 | espree: 9.6.1 1511 | esquery: 1.5.0 1512 | esutils: 2.0.3 1513 | fast-deep-equal: 3.1.3 1514 | file-entry-cache: 6.0.1 1515 | find-up: 5.0.0 1516 | glob-parent: 6.0.2 1517 | globals: 13.23.0 1518 | graphemer: 1.4.0 1519 | ignore: 5.2.4 1520 | imurmurhash: 0.1.4 1521 | is-glob: 4.0.3 1522 | is-path-inside: 3.0.3 1523 | js-yaml: 4.1.0 1524 | json-stable-stringify-without-jsonify: 1.0.1 1525 | levn: 0.4.1 1526 | lodash.merge: 4.6.2 1527 | minimatch: 3.1.2 1528 | natural-compare: 1.4.0 1529 | optionator: 0.9.3 1530 | strip-ansi: 6.0.1 1531 | text-table: 0.2.0 1532 | transitivePeerDependencies: 1533 | - supports-color 1534 | dev: true 1535 | 1536 | /espree@9.6.1: 1537 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1538 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1539 | dependencies: 1540 | acorn: 8.11.2 1541 | acorn-jsx: 5.3.2(acorn@8.11.2) 1542 | eslint-visitor-keys: 3.4.3 1543 | dev: true 1544 | 1545 | /esquery@1.5.0: 1546 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1547 | engines: {node: '>=0.10'} 1548 | dependencies: 1549 | estraverse: 5.3.0 1550 | dev: true 1551 | 1552 | /esrecurse@4.3.0: 1553 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1554 | engines: {node: '>=4.0'} 1555 | dependencies: 1556 | estraverse: 5.3.0 1557 | dev: true 1558 | 1559 | /estraverse@5.3.0: 1560 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1561 | engines: {node: '>=4.0'} 1562 | dev: true 1563 | 1564 | /esutils@2.0.3: 1565 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1566 | engines: {node: '>=0.10.0'} 1567 | dev: true 1568 | 1569 | /event-target-shim@5.0.1: 1570 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1571 | engines: {node: '>=6'} 1572 | dev: false 1573 | 1574 | /fast-deep-equal@3.1.3: 1575 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1576 | dev: true 1577 | 1578 | /fast-glob@3.3.2: 1579 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1580 | engines: {node: '>=8.6.0'} 1581 | dependencies: 1582 | '@nodelib/fs.stat': 2.0.5 1583 | '@nodelib/fs.walk': 1.2.8 1584 | glob-parent: 5.1.2 1585 | merge2: 1.4.1 1586 | micromatch: 4.0.5 1587 | dev: true 1588 | 1589 | /fast-json-stable-stringify@2.1.0: 1590 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1591 | dev: true 1592 | 1593 | /fast-levenshtein@2.0.6: 1594 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1595 | dev: true 1596 | 1597 | /fastq@1.15.0: 1598 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1599 | dependencies: 1600 | reusify: 1.0.4 1601 | dev: true 1602 | 1603 | /file-entry-cache@6.0.1: 1604 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1605 | engines: {node: ^10.12.0 || >=12.0.0} 1606 | dependencies: 1607 | flat-cache: 3.1.1 1608 | dev: true 1609 | 1610 | /fill-range@7.0.1: 1611 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1612 | engines: {node: '>=8'} 1613 | dependencies: 1614 | to-regex-range: 5.0.1 1615 | dev: true 1616 | 1617 | /find-up@5.0.0: 1618 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1619 | engines: {node: '>=10'} 1620 | dependencies: 1621 | locate-path: 6.0.0 1622 | path-exists: 4.0.0 1623 | dev: true 1624 | 1625 | /flat-cache@3.1.1: 1626 | resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} 1627 | engines: {node: '>=12.0.0'} 1628 | dependencies: 1629 | flatted: 3.2.9 1630 | keyv: 4.5.4 1631 | rimraf: 3.0.2 1632 | dev: true 1633 | 1634 | /flatted@3.2.9: 1635 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1636 | dev: true 1637 | 1638 | /for-each@0.3.3: 1639 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1640 | dependencies: 1641 | is-callable: 1.2.7 1642 | dev: true 1643 | 1644 | /form-data-encoder@1.7.2: 1645 | resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} 1646 | dev: false 1647 | 1648 | /form-data@4.0.0: 1649 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1650 | engines: {node: '>= 6'} 1651 | dependencies: 1652 | asynckit: 0.4.0 1653 | combined-stream: 1.0.8 1654 | mime-types: 2.1.35 1655 | dev: false 1656 | 1657 | /formdata-node@4.4.1: 1658 | resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} 1659 | engines: {node: '>= 12.20'} 1660 | dependencies: 1661 | node-domexception: 1.0.0 1662 | web-streams-polyfill: 4.0.0-beta.3 1663 | dev: false 1664 | 1665 | /fraction.js@4.3.7: 1666 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1667 | dev: true 1668 | 1669 | /fs.realpath@1.0.0: 1670 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1671 | dev: true 1672 | 1673 | /fsevents@2.3.3: 1674 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1675 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1676 | os: [darwin] 1677 | requiresBuild: true 1678 | dev: true 1679 | optional: true 1680 | 1681 | /function-bind@1.1.2: 1682 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1683 | dev: true 1684 | 1685 | /function.prototype.name@1.1.6: 1686 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1687 | engines: {node: '>= 0.4'} 1688 | dependencies: 1689 | call-bind: 1.0.5 1690 | define-properties: 1.2.1 1691 | es-abstract: 1.22.3 1692 | functions-have-names: 1.2.3 1693 | dev: true 1694 | 1695 | /functions-have-names@1.2.3: 1696 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1697 | dev: true 1698 | 1699 | /gensync@1.0.0-beta.2: 1700 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1701 | engines: {node: '>=6.9.0'} 1702 | 1703 | /get-intrinsic@1.2.2: 1704 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 1705 | dependencies: 1706 | function-bind: 1.1.2 1707 | has-proto: 1.0.1 1708 | has-symbols: 1.0.3 1709 | hasown: 2.0.0 1710 | dev: true 1711 | 1712 | /get-symbol-description@1.0.0: 1713 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1714 | engines: {node: '>= 0.4'} 1715 | dependencies: 1716 | call-bind: 1.0.5 1717 | get-intrinsic: 1.2.2 1718 | dev: true 1719 | 1720 | /get-tsconfig@4.7.2: 1721 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1722 | dependencies: 1723 | resolve-pkg-maps: 1.0.0 1724 | dev: true 1725 | 1726 | /glob-parent@5.1.2: 1727 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1728 | engines: {node: '>= 6'} 1729 | dependencies: 1730 | is-glob: 4.0.3 1731 | dev: true 1732 | 1733 | /glob-parent@6.0.2: 1734 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1735 | engines: {node: '>=10.13.0'} 1736 | dependencies: 1737 | is-glob: 4.0.3 1738 | dev: true 1739 | 1740 | /glob-to-regexp@0.4.1: 1741 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1742 | dev: false 1743 | 1744 | /glob@7.1.6: 1745 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1746 | dependencies: 1747 | fs.realpath: 1.0.0 1748 | inflight: 1.0.6 1749 | inherits: 2.0.4 1750 | minimatch: 3.1.2 1751 | once: 1.4.0 1752 | path-is-absolute: 1.0.1 1753 | dev: true 1754 | 1755 | /glob@7.1.7: 1756 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1757 | dependencies: 1758 | fs.realpath: 1.0.0 1759 | inflight: 1.0.6 1760 | inherits: 2.0.4 1761 | minimatch: 3.1.2 1762 | once: 1.4.0 1763 | path-is-absolute: 1.0.1 1764 | dev: true 1765 | 1766 | /glob@7.2.3: 1767 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1768 | dependencies: 1769 | fs.realpath: 1.0.0 1770 | inflight: 1.0.6 1771 | inherits: 2.0.4 1772 | minimatch: 3.1.2 1773 | once: 1.4.0 1774 | path-is-absolute: 1.0.1 1775 | dev: true 1776 | 1777 | /globals@11.12.0: 1778 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1779 | engines: {node: '>=4'} 1780 | 1781 | /globals@13.23.0: 1782 | resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} 1783 | engines: {node: '>=8'} 1784 | dependencies: 1785 | type-fest: 0.20.2 1786 | dev: true 1787 | 1788 | /globalthis@1.0.3: 1789 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1790 | engines: {node: '>= 0.4'} 1791 | dependencies: 1792 | define-properties: 1.2.1 1793 | dev: true 1794 | 1795 | /globby@11.1.0: 1796 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1797 | engines: {node: '>=10'} 1798 | dependencies: 1799 | array-union: 2.1.0 1800 | dir-glob: 3.0.1 1801 | fast-glob: 3.3.2 1802 | ignore: 5.2.4 1803 | merge2: 1.4.1 1804 | slash: 3.0.0 1805 | dev: true 1806 | 1807 | /gopd@1.0.1: 1808 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1809 | dependencies: 1810 | get-intrinsic: 1.2.2 1811 | dev: true 1812 | 1813 | /graceful-fs@4.2.11: 1814 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1815 | 1816 | /graphemer@1.4.0: 1817 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1818 | dev: true 1819 | 1820 | /has-bigints@1.0.2: 1821 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1822 | dev: true 1823 | 1824 | /has-flag@3.0.0: 1825 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1826 | engines: {node: '>=4'} 1827 | 1828 | /has-flag@4.0.0: 1829 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1830 | engines: {node: '>=8'} 1831 | dev: true 1832 | 1833 | /has-property-descriptors@1.0.1: 1834 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 1835 | dependencies: 1836 | get-intrinsic: 1.2.2 1837 | dev: true 1838 | 1839 | /has-proto@1.0.1: 1840 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1841 | engines: {node: '>= 0.4'} 1842 | dev: true 1843 | 1844 | /has-symbols@1.0.3: 1845 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1846 | engines: {node: '>= 0.4'} 1847 | dev: true 1848 | 1849 | /has-tostringtag@1.0.0: 1850 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1851 | engines: {node: '>= 0.4'} 1852 | dependencies: 1853 | has-symbols: 1.0.3 1854 | dev: true 1855 | 1856 | /hasown@2.0.0: 1857 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 1858 | engines: {node: '>= 0.4'} 1859 | dependencies: 1860 | function-bind: 1.1.2 1861 | dev: true 1862 | 1863 | /he@1.2.0: 1864 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1865 | hasBin: true 1866 | dev: false 1867 | 1868 | /humanize-ms@1.2.1: 1869 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 1870 | dependencies: 1871 | ms: 2.1.3 1872 | dev: false 1873 | 1874 | /ignore@5.2.4: 1875 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1876 | engines: {node: '>= 4'} 1877 | dev: true 1878 | 1879 | /import-fresh@3.3.0: 1880 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1881 | engines: {node: '>=6'} 1882 | dependencies: 1883 | parent-module: 1.0.1 1884 | resolve-from: 4.0.0 1885 | dev: true 1886 | 1887 | /imurmurhash@0.1.4: 1888 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1889 | engines: {node: '>=0.8.19'} 1890 | dev: true 1891 | 1892 | /inflight@1.0.6: 1893 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1894 | dependencies: 1895 | once: 1.4.0 1896 | wrappy: 1.0.2 1897 | dev: true 1898 | 1899 | /inherits@2.0.4: 1900 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1901 | dev: true 1902 | 1903 | /internal-slot@1.0.6: 1904 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 1905 | engines: {node: '>= 0.4'} 1906 | dependencies: 1907 | get-intrinsic: 1.2.2 1908 | hasown: 2.0.0 1909 | side-channel: 1.0.4 1910 | dev: true 1911 | 1912 | /is-array-buffer@3.0.2: 1913 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1914 | dependencies: 1915 | call-bind: 1.0.5 1916 | get-intrinsic: 1.2.2 1917 | is-typed-array: 1.1.12 1918 | dev: true 1919 | 1920 | /is-async-function@2.0.0: 1921 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1922 | engines: {node: '>= 0.4'} 1923 | dependencies: 1924 | has-tostringtag: 1.0.0 1925 | dev: true 1926 | 1927 | /is-bigint@1.0.4: 1928 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1929 | dependencies: 1930 | has-bigints: 1.0.2 1931 | dev: true 1932 | 1933 | /is-binary-path@2.1.0: 1934 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1935 | engines: {node: '>=8'} 1936 | dependencies: 1937 | binary-extensions: 2.2.0 1938 | dev: true 1939 | 1940 | /is-boolean-object@1.1.2: 1941 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1942 | engines: {node: '>= 0.4'} 1943 | dependencies: 1944 | call-bind: 1.0.5 1945 | has-tostringtag: 1.0.0 1946 | dev: true 1947 | 1948 | /is-buffer@1.1.6: 1949 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 1950 | dev: false 1951 | 1952 | /is-callable@1.2.7: 1953 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1954 | engines: {node: '>= 0.4'} 1955 | dev: true 1956 | 1957 | /is-core-module@2.13.1: 1958 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1959 | dependencies: 1960 | hasown: 2.0.0 1961 | dev: true 1962 | 1963 | /is-date-object@1.0.5: 1964 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1965 | engines: {node: '>= 0.4'} 1966 | dependencies: 1967 | has-tostringtag: 1.0.0 1968 | dev: true 1969 | 1970 | /is-extglob@2.1.1: 1971 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1972 | engines: {node: '>=0.10.0'} 1973 | dev: true 1974 | 1975 | /is-finalizationregistry@1.0.2: 1976 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1977 | dependencies: 1978 | call-bind: 1.0.5 1979 | dev: true 1980 | 1981 | /is-generator-function@1.0.10: 1982 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1983 | engines: {node: '>= 0.4'} 1984 | dependencies: 1985 | has-tostringtag: 1.0.0 1986 | dev: true 1987 | 1988 | /is-glob@4.0.3: 1989 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1990 | engines: {node: '>=0.10.0'} 1991 | dependencies: 1992 | is-extglob: 2.1.1 1993 | dev: true 1994 | 1995 | /is-map@2.0.2: 1996 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1997 | dev: true 1998 | 1999 | /is-negative-zero@2.0.2: 2000 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2001 | engines: {node: '>= 0.4'} 2002 | dev: true 2003 | 2004 | /is-number-object@1.0.7: 2005 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2006 | engines: {node: '>= 0.4'} 2007 | dependencies: 2008 | has-tostringtag: 1.0.0 2009 | dev: true 2010 | 2011 | /is-number@7.0.0: 2012 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2013 | engines: {node: '>=0.12.0'} 2014 | dev: true 2015 | 2016 | /is-path-inside@3.0.3: 2017 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2018 | engines: {node: '>=8'} 2019 | dev: true 2020 | 2021 | /is-regex@1.1.4: 2022 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2023 | engines: {node: '>= 0.4'} 2024 | dependencies: 2025 | call-bind: 1.0.5 2026 | has-tostringtag: 1.0.0 2027 | dev: true 2028 | 2029 | /is-set@2.0.2: 2030 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2031 | dev: true 2032 | 2033 | /is-shared-array-buffer@1.0.2: 2034 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2035 | dependencies: 2036 | call-bind: 1.0.5 2037 | dev: true 2038 | 2039 | /is-string@1.0.7: 2040 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2041 | engines: {node: '>= 0.4'} 2042 | dependencies: 2043 | has-tostringtag: 1.0.0 2044 | dev: true 2045 | 2046 | /is-symbol@1.0.4: 2047 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2048 | engines: {node: '>= 0.4'} 2049 | dependencies: 2050 | has-symbols: 1.0.3 2051 | dev: true 2052 | 2053 | /is-typed-array@1.1.12: 2054 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 2055 | engines: {node: '>= 0.4'} 2056 | dependencies: 2057 | which-typed-array: 1.1.13 2058 | dev: true 2059 | 2060 | /is-weakmap@2.0.1: 2061 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2062 | dev: true 2063 | 2064 | /is-weakref@1.0.2: 2065 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2066 | dependencies: 2067 | call-bind: 1.0.5 2068 | dev: true 2069 | 2070 | /is-weakset@2.0.2: 2071 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 2072 | dependencies: 2073 | call-bind: 1.0.5 2074 | get-intrinsic: 1.2.2 2075 | dev: true 2076 | 2077 | /isarray@2.0.5: 2078 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2079 | dev: true 2080 | 2081 | /isexe@2.0.0: 2082 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2083 | dev: true 2084 | 2085 | /iterator.prototype@1.1.2: 2086 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 2087 | dependencies: 2088 | define-properties: 1.2.1 2089 | get-intrinsic: 1.2.2 2090 | has-symbols: 1.0.3 2091 | reflect.getprototypeof: 1.0.4 2092 | set-function-name: 2.0.1 2093 | dev: true 2094 | 2095 | /jiti@1.21.0: 2096 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 2097 | hasBin: true 2098 | dev: true 2099 | 2100 | /jose@4.15.4: 2101 | resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} 2102 | dev: false 2103 | 2104 | /js-tokens@4.0.0: 2105 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2106 | 2107 | /js-yaml@4.1.0: 2108 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2109 | hasBin: true 2110 | dependencies: 2111 | argparse: 2.0.1 2112 | dev: true 2113 | 2114 | /jsesc@2.5.2: 2115 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2116 | engines: {node: '>=4'} 2117 | hasBin: true 2118 | 2119 | /json-buffer@3.0.1: 2120 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2121 | dev: true 2122 | 2123 | /json-schema-traverse@0.4.1: 2124 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2125 | dev: true 2126 | 2127 | /json-stable-stringify-without-jsonify@1.0.1: 2128 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2129 | dev: true 2130 | 2131 | /json5@1.0.2: 2132 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2133 | hasBin: true 2134 | dependencies: 2135 | minimist: 1.2.8 2136 | dev: true 2137 | 2138 | /json5@2.2.3: 2139 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2140 | engines: {node: '>=6'} 2141 | hasBin: true 2142 | 2143 | /jsx-ast-utils@3.3.5: 2144 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 2145 | engines: {node: '>=4.0'} 2146 | dependencies: 2147 | array-includes: 3.1.7 2148 | array.prototype.flat: 1.3.2 2149 | object.assign: 4.1.4 2150 | object.values: 1.1.7 2151 | dev: true 2152 | 2153 | /keyv@4.5.4: 2154 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2155 | dependencies: 2156 | json-buffer: 3.0.1 2157 | dev: true 2158 | 2159 | /ky@1.1.3: 2160 | resolution: {integrity: sha512-t7q8sJfazzHbfYxiCtuLIH4P+pWoCgunDll17O/GBZBqMt2vHjGSx5HzSxhOc2BDEg3YN/EmeA7VKrHnwuWDag==} 2161 | engines: {node: '>=18'} 2162 | dev: false 2163 | 2164 | /language-subtag-registry@0.3.22: 2165 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2166 | dev: true 2167 | 2168 | /language-tags@1.0.9: 2169 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 2170 | engines: {node: '>=0.10'} 2171 | dependencies: 2172 | language-subtag-registry: 0.3.22 2173 | dev: true 2174 | 2175 | /levn@0.4.1: 2176 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2177 | engines: {node: '>= 0.8.0'} 2178 | dependencies: 2179 | prelude-ls: 1.2.1 2180 | type-check: 0.4.0 2181 | dev: true 2182 | 2183 | /lilconfig@2.1.0: 2184 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2185 | engines: {node: '>=10'} 2186 | dev: true 2187 | 2188 | /lines-and-columns@1.2.4: 2189 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2190 | dev: true 2191 | 2192 | /locate-path@6.0.0: 2193 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2194 | engines: {node: '>=10'} 2195 | dependencies: 2196 | p-locate: 5.0.0 2197 | dev: true 2198 | 2199 | /lodash.merge@4.6.2: 2200 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2201 | dev: true 2202 | 2203 | /loose-envify@1.4.0: 2204 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2205 | hasBin: true 2206 | dependencies: 2207 | js-tokens: 4.0.0 2208 | 2209 | /lru-cache@5.1.1: 2210 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2211 | dependencies: 2212 | yallist: 3.1.1 2213 | 2214 | /lru-cache@6.0.0: 2215 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2216 | engines: {node: '>=10'} 2217 | dependencies: 2218 | yallist: 4.0.0 2219 | dev: true 2220 | 2221 | /md5@2.3.0: 2222 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} 2223 | dependencies: 2224 | charenc: 0.0.2 2225 | crypt: 0.0.2 2226 | is-buffer: 1.1.6 2227 | dev: false 2228 | 2229 | /merge2@1.4.1: 2230 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2231 | engines: {node: '>= 8'} 2232 | dev: true 2233 | 2234 | /micromatch@4.0.5: 2235 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2236 | engines: {node: '>=8.6'} 2237 | dependencies: 2238 | braces: 3.0.2 2239 | picomatch: 2.3.1 2240 | dev: true 2241 | 2242 | /mime-db@1.52.0: 2243 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2244 | engines: {node: '>= 0.6'} 2245 | dev: false 2246 | 2247 | /mime-types@2.1.35: 2248 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2249 | engines: {node: '>= 0.6'} 2250 | dependencies: 2251 | mime-db: 1.52.0 2252 | dev: false 2253 | 2254 | /minimatch@3.1.2: 2255 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2256 | dependencies: 2257 | brace-expansion: 1.1.11 2258 | dev: true 2259 | 2260 | /minimist@1.2.8: 2261 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2262 | dev: true 2263 | 2264 | /ms@2.1.2: 2265 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2266 | 2267 | /ms@2.1.3: 2268 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2269 | 2270 | /mz@2.7.0: 2271 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2272 | dependencies: 2273 | any-promise: 1.3.0 2274 | object-assign: 4.1.1 2275 | thenify-all: 1.6.0 2276 | dev: true 2277 | 2278 | /nanoid@3.3.7: 2279 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2280 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2281 | hasBin: true 2282 | 2283 | /natural-compare@1.4.0: 2284 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2285 | dev: true 2286 | 2287 | /next@14.0.1(@babel/core@7.23.2)(react-dom@18.2.0)(react@18.2.0): 2288 | resolution: {integrity: sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==} 2289 | engines: {node: '>=18.17.0'} 2290 | hasBin: true 2291 | peerDependencies: 2292 | '@opentelemetry/api': ^1.1.0 2293 | react: ^18.2.0 2294 | react-dom: ^18.2.0 2295 | sass: ^1.3.0 2296 | peerDependenciesMeta: 2297 | '@opentelemetry/api': 2298 | optional: true 2299 | sass: 2300 | optional: true 2301 | dependencies: 2302 | '@next/env': 14.0.1 2303 | '@swc/helpers': 0.5.2 2304 | busboy: 1.6.0 2305 | caniuse-lite: 1.0.30001561 2306 | postcss: 8.4.31 2307 | react: 18.2.0 2308 | react-dom: 18.2.0(react@18.2.0) 2309 | styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.2.0) 2310 | watchpack: 2.4.0 2311 | optionalDependencies: 2312 | '@next/swc-darwin-arm64': 14.0.1 2313 | '@next/swc-darwin-x64': 14.0.1 2314 | '@next/swc-linux-arm64-gnu': 14.0.1 2315 | '@next/swc-linux-arm64-musl': 14.0.1 2316 | '@next/swc-linux-x64-gnu': 14.0.1 2317 | '@next/swc-linux-x64-musl': 14.0.1 2318 | '@next/swc-win32-arm64-msvc': 14.0.1 2319 | '@next/swc-win32-ia32-msvc': 14.0.1 2320 | '@next/swc-win32-x64-msvc': 14.0.1 2321 | transitivePeerDependencies: 2322 | - '@babel/core' 2323 | - babel-plugin-macros 2324 | dev: false 2325 | 2326 | /node-domexception@1.0.0: 2327 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2328 | engines: {node: '>=10.5.0'} 2329 | dev: false 2330 | 2331 | /node-fetch@2.7.0: 2332 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 2333 | engines: {node: 4.x || >=6.0.0} 2334 | peerDependencies: 2335 | encoding: ^0.1.0 2336 | peerDependenciesMeta: 2337 | encoding: 2338 | optional: true 2339 | dependencies: 2340 | whatwg-url: 5.0.0 2341 | dev: false 2342 | 2343 | /node-html-parser@6.1.11: 2344 | resolution: {integrity: sha512-FAgwwZ6h0DSDWxfD0Iq1tsDcBCxdJB1nXpLPPxX8YyVWzbfCjKWEzaynF4gZZ/8hziUmp7ZSaKylcn0iKhufUQ==} 2345 | dependencies: 2346 | css-select: 5.1.0 2347 | he: 1.2.0 2348 | dev: false 2349 | 2350 | /node-releases@2.0.13: 2351 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 2352 | 2353 | /normalize-path@3.0.0: 2354 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2355 | engines: {node: '>=0.10.0'} 2356 | dev: true 2357 | 2358 | /normalize-range@0.1.2: 2359 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2360 | engines: {node: '>=0.10.0'} 2361 | dev: true 2362 | 2363 | /nth-check@2.1.1: 2364 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2365 | dependencies: 2366 | boolbase: 1.0.0 2367 | dev: false 2368 | 2369 | /object-assign@4.1.1: 2370 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2371 | engines: {node: '>=0.10.0'} 2372 | dev: true 2373 | 2374 | /object-hash@3.0.0: 2375 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2376 | engines: {node: '>= 6'} 2377 | dev: true 2378 | 2379 | /object-inspect@1.13.1: 2380 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2381 | dev: true 2382 | 2383 | /object-keys@1.1.1: 2384 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2385 | engines: {node: '>= 0.4'} 2386 | dev: true 2387 | 2388 | /object.assign@4.1.4: 2389 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2390 | engines: {node: '>= 0.4'} 2391 | dependencies: 2392 | call-bind: 1.0.5 2393 | define-properties: 1.2.1 2394 | has-symbols: 1.0.3 2395 | object-keys: 1.1.1 2396 | dev: true 2397 | 2398 | /object.entries@1.1.7: 2399 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2400 | engines: {node: '>= 0.4'} 2401 | dependencies: 2402 | call-bind: 1.0.5 2403 | define-properties: 1.2.1 2404 | es-abstract: 1.22.3 2405 | dev: true 2406 | 2407 | /object.fromentries@2.0.7: 2408 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2409 | engines: {node: '>= 0.4'} 2410 | dependencies: 2411 | call-bind: 1.0.5 2412 | define-properties: 1.2.1 2413 | es-abstract: 1.22.3 2414 | dev: true 2415 | 2416 | /object.groupby@1.0.1: 2417 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} 2418 | dependencies: 2419 | call-bind: 1.0.5 2420 | define-properties: 1.2.1 2421 | es-abstract: 1.22.3 2422 | get-intrinsic: 1.2.2 2423 | dev: true 2424 | 2425 | /object.hasown@1.1.3: 2426 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2427 | dependencies: 2428 | define-properties: 1.2.1 2429 | es-abstract: 1.22.3 2430 | dev: true 2431 | 2432 | /object.values@1.1.7: 2433 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2434 | engines: {node: '>= 0.4'} 2435 | dependencies: 2436 | call-bind: 1.0.5 2437 | define-properties: 1.2.1 2438 | es-abstract: 1.22.3 2439 | dev: true 2440 | 2441 | /once@1.4.0: 2442 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2443 | dependencies: 2444 | wrappy: 1.0.2 2445 | dev: true 2446 | 2447 | /openai@4.16.1: 2448 | resolution: {integrity: sha512-Gr+uqUN1ICSk6VhrX64E+zL7skjI1TgPr/XUN+ZQuNLLOvx15+XZulx/lSW4wFEAQzgjBDlMBbBeikguGIjiMg==} 2449 | hasBin: true 2450 | dependencies: 2451 | '@types/node': 18.18.8 2452 | '@types/node-fetch': 2.6.9 2453 | abort-controller: 3.0.0 2454 | agentkeepalive: 4.5.0 2455 | digest-fetch: 1.3.0 2456 | form-data-encoder: 1.7.2 2457 | formdata-node: 4.4.1 2458 | node-fetch: 2.7.0 2459 | web-streams-polyfill: 3.2.1 2460 | transitivePeerDependencies: 2461 | - encoding 2462 | dev: false 2463 | 2464 | /optionator@0.9.3: 2465 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2466 | engines: {node: '>= 0.8.0'} 2467 | dependencies: 2468 | '@aashutoshrathi/word-wrap': 1.2.6 2469 | deep-is: 0.1.4 2470 | fast-levenshtein: 2.0.6 2471 | levn: 0.4.1 2472 | prelude-ls: 1.2.1 2473 | type-check: 0.4.0 2474 | dev: true 2475 | 2476 | /p-limit@3.1.0: 2477 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2478 | engines: {node: '>=10'} 2479 | dependencies: 2480 | yocto-queue: 0.1.0 2481 | dev: true 2482 | 2483 | /p-locate@5.0.0: 2484 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2485 | engines: {node: '>=10'} 2486 | dependencies: 2487 | p-limit: 3.1.0 2488 | dev: true 2489 | 2490 | /parent-module@1.0.1: 2491 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2492 | engines: {node: '>=6'} 2493 | dependencies: 2494 | callsites: 3.1.0 2495 | dev: true 2496 | 2497 | /path-exists@4.0.0: 2498 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2499 | engines: {node: '>=8'} 2500 | dev: true 2501 | 2502 | /path-is-absolute@1.0.1: 2503 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2504 | engines: {node: '>=0.10.0'} 2505 | dev: true 2506 | 2507 | /path-key@3.1.1: 2508 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2509 | engines: {node: '>=8'} 2510 | dev: true 2511 | 2512 | /path-parse@1.0.7: 2513 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2514 | dev: true 2515 | 2516 | /path-type@4.0.0: 2517 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2518 | engines: {node: '>=8'} 2519 | dev: true 2520 | 2521 | /picocolors@1.0.0: 2522 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2523 | 2524 | /picomatch@2.3.1: 2525 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2526 | engines: {node: '>=8.6'} 2527 | dev: true 2528 | 2529 | /pify@2.3.0: 2530 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2531 | engines: {node: '>=0.10.0'} 2532 | dev: true 2533 | 2534 | /pirates@4.0.6: 2535 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2536 | engines: {node: '>= 6'} 2537 | dev: true 2538 | 2539 | /postcss-import@15.1.0(postcss@8.4.31): 2540 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2541 | engines: {node: '>=14.0.0'} 2542 | peerDependencies: 2543 | postcss: ^8.0.0 2544 | dependencies: 2545 | postcss: 8.4.31 2546 | postcss-value-parser: 4.2.0 2547 | read-cache: 1.0.0 2548 | resolve: 1.22.8 2549 | dev: true 2550 | 2551 | /postcss-js@4.0.1(postcss@8.4.31): 2552 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2553 | engines: {node: ^12 || ^14 || >= 16} 2554 | peerDependencies: 2555 | postcss: ^8.4.21 2556 | dependencies: 2557 | camelcase-css: 2.0.1 2558 | postcss: 8.4.31 2559 | dev: true 2560 | 2561 | /postcss-load-config@4.0.1(postcss@8.4.31): 2562 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 2563 | engines: {node: '>= 14'} 2564 | peerDependencies: 2565 | postcss: '>=8.0.9' 2566 | ts-node: '>=9.0.0' 2567 | peerDependenciesMeta: 2568 | postcss: 2569 | optional: true 2570 | ts-node: 2571 | optional: true 2572 | dependencies: 2573 | lilconfig: 2.1.0 2574 | postcss: 8.4.31 2575 | yaml: 2.3.4 2576 | dev: true 2577 | 2578 | /postcss-nested@6.0.1(postcss@8.4.31): 2579 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2580 | engines: {node: '>=12.0'} 2581 | peerDependencies: 2582 | postcss: ^8.2.14 2583 | dependencies: 2584 | postcss: 8.4.31 2585 | postcss-selector-parser: 6.0.13 2586 | dev: true 2587 | 2588 | /postcss-selector-parser@6.0.13: 2589 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 2590 | engines: {node: '>=4'} 2591 | dependencies: 2592 | cssesc: 3.0.0 2593 | util-deprecate: 1.0.2 2594 | dev: true 2595 | 2596 | /postcss-value-parser@4.2.0: 2597 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2598 | dev: true 2599 | 2600 | /postcss@8.4.31: 2601 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2602 | engines: {node: ^10 || ^12 || >=14} 2603 | dependencies: 2604 | nanoid: 3.3.7 2605 | picocolors: 1.0.0 2606 | source-map-js: 1.0.2 2607 | 2608 | /prelude-ls@1.2.1: 2609 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2610 | engines: {node: '>= 0.8.0'} 2611 | dev: true 2612 | 2613 | /prettier-plugin-tailwindcss@0.5.6(@ianvs/prettier-plugin-sort-imports@4.1.1)(prettier@3.0.3): 2614 | resolution: {integrity: sha512-2Xgb+GQlkPAUCFi3sV+NOYcSI5XgduvDBL2Zt/hwJudeKXkyvRS65c38SB0yb9UB40+1rL83I6m0RtlOQ8eHdg==} 2615 | engines: {node: '>=14.21.3'} 2616 | peerDependencies: 2617 | '@ianvs/prettier-plugin-sort-imports': '*' 2618 | '@prettier/plugin-pug': '*' 2619 | '@shopify/prettier-plugin-liquid': '*' 2620 | '@shufo/prettier-plugin-blade': '*' 2621 | '@trivago/prettier-plugin-sort-imports': '*' 2622 | prettier: ^3.0 2623 | prettier-plugin-astro: '*' 2624 | prettier-plugin-css-order: '*' 2625 | prettier-plugin-import-sort: '*' 2626 | prettier-plugin-jsdoc: '*' 2627 | prettier-plugin-marko: '*' 2628 | prettier-plugin-organize-attributes: '*' 2629 | prettier-plugin-organize-imports: '*' 2630 | prettier-plugin-style-order: '*' 2631 | prettier-plugin-svelte: '*' 2632 | prettier-plugin-twig-melody: '*' 2633 | peerDependenciesMeta: 2634 | '@ianvs/prettier-plugin-sort-imports': 2635 | optional: true 2636 | '@prettier/plugin-pug': 2637 | optional: true 2638 | '@shopify/prettier-plugin-liquid': 2639 | optional: true 2640 | '@shufo/prettier-plugin-blade': 2641 | optional: true 2642 | '@trivago/prettier-plugin-sort-imports': 2643 | optional: true 2644 | prettier-plugin-astro: 2645 | optional: true 2646 | prettier-plugin-css-order: 2647 | optional: true 2648 | prettier-plugin-import-sort: 2649 | optional: true 2650 | prettier-plugin-jsdoc: 2651 | optional: true 2652 | prettier-plugin-marko: 2653 | optional: true 2654 | prettier-plugin-organize-attributes: 2655 | optional: true 2656 | prettier-plugin-organize-imports: 2657 | optional: true 2658 | prettier-plugin-style-order: 2659 | optional: true 2660 | prettier-plugin-svelte: 2661 | optional: true 2662 | prettier-plugin-twig-melody: 2663 | optional: true 2664 | dependencies: 2665 | '@ianvs/prettier-plugin-sort-imports': 4.1.1(prettier@3.0.3) 2666 | prettier: 3.0.3 2667 | dev: true 2668 | 2669 | /prettier@3.0.3: 2670 | resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} 2671 | engines: {node: '>=14'} 2672 | hasBin: true 2673 | dev: true 2674 | 2675 | /prop-types@15.8.1: 2676 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2677 | dependencies: 2678 | loose-envify: 1.4.0 2679 | object-assign: 4.1.1 2680 | react-is: 16.13.1 2681 | dev: true 2682 | 2683 | /punycode@2.3.1: 2684 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2685 | engines: {node: '>=6'} 2686 | dev: true 2687 | 2688 | /queue-microtask@1.2.3: 2689 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2690 | dev: true 2691 | 2692 | /react-dom@18.2.0(react@18.2.0): 2693 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2694 | peerDependencies: 2695 | react: ^18.2.0 2696 | dependencies: 2697 | loose-envify: 1.4.0 2698 | react: 18.2.0 2699 | scheduler: 0.23.0 2700 | dev: false 2701 | 2702 | /react-is@16.13.1: 2703 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2704 | dev: true 2705 | 2706 | /react@18.2.0: 2707 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2708 | engines: {node: '>=0.10.0'} 2709 | dependencies: 2710 | loose-envify: 1.4.0 2711 | dev: false 2712 | 2713 | /read-cache@1.0.0: 2714 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2715 | dependencies: 2716 | pify: 2.3.0 2717 | dev: true 2718 | 2719 | /readdirp@3.6.0: 2720 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2721 | engines: {node: '>=8.10.0'} 2722 | dependencies: 2723 | picomatch: 2.3.1 2724 | dev: true 2725 | 2726 | /reflect.getprototypeof@1.0.4: 2727 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} 2728 | engines: {node: '>= 0.4'} 2729 | dependencies: 2730 | call-bind: 1.0.5 2731 | define-properties: 1.2.1 2732 | es-abstract: 1.22.3 2733 | get-intrinsic: 1.2.2 2734 | globalthis: 1.0.3 2735 | which-builtin-type: 1.1.3 2736 | dev: true 2737 | 2738 | /regenerator-runtime@0.14.0: 2739 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} 2740 | dev: true 2741 | 2742 | /regexp.prototype.flags@1.5.1: 2743 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 2744 | engines: {node: '>= 0.4'} 2745 | dependencies: 2746 | call-bind: 1.0.5 2747 | define-properties: 1.2.1 2748 | set-function-name: 2.0.1 2749 | dev: true 2750 | 2751 | /resolve-from@4.0.0: 2752 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2753 | engines: {node: '>=4'} 2754 | dev: true 2755 | 2756 | /resolve-pkg-maps@1.0.0: 2757 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2758 | dev: true 2759 | 2760 | /resolve@1.22.8: 2761 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2762 | hasBin: true 2763 | dependencies: 2764 | is-core-module: 2.13.1 2765 | path-parse: 1.0.7 2766 | supports-preserve-symlinks-flag: 1.0.0 2767 | dev: true 2768 | 2769 | /resolve@2.0.0-next.5: 2770 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2771 | hasBin: true 2772 | dependencies: 2773 | is-core-module: 2.13.1 2774 | path-parse: 1.0.7 2775 | supports-preserve-symlinks-flag: 1.0.0 2776 | dev: true 2777 | 2778 | /reusify@1.0.4: 2779 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2780 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2781 | dev: true 2782 | 2783 | /rimraf@3.0.2: 2784 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2785 | hasBin: true 2786 | dependencies: 2787 | glob: 7.2.3 2788 | dev: true 2789 | 2790 | /run-parallel@1.2.0: 2791 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2792 | dependencies: 2793 | queue-microtask: 1.2.3 2794 | dev: true 2795 | 2796 | /safe-array-concat@1.0.1: 2797 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} 2798 | engines: {node: '>=0.4'} 2799 | dependencies: 2800 | call-bind: 1.0.5 2801 | get-intrinsic: 1.2.2 2802 | has-symbols: 1.0.3 2803 | isarray: 2.0.5 2804 | dev: true 2805 | 2806 | /safe-regex-test@1.0.0: 2807 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2808 | dependencies: 2809 | call-bind: 1.0.5 2810 | get-intrinsic: 1.2.2 2811 | is-regex: 1.1.4 2812 | dev: true 2813 | 2814 | /scheduler@0.23.0: 2815 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2816 | dependencies: 2817 | loose-envify: 1.4.0 2818 | dev: false 2819 | 2820 | /semver@6.3.1: 2821 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2822 | hasBin: true 2823 | 2824 | /semver@7.5.4: 2825 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2826 | engines: {node: '>=10'} 2827 | hasBin: true 2828 | dependencies: 2829 | lru-cache: 6.0.0 2830 | dev: true 2831 | 2832 | /set-function-length@1.1.1: 2833 | resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} 2834 | engines: {node: '>= 0.4'} 2835 | dependencies: 2836 | define-data-property: 1.1.1 2837 | get-intrinsic: 1.2.2 2838 | gopd: 1.0.1 2839 | has-property-descriptors: 1.0.1 2840 | dev: true 2841 | 2842 | /set-function-name@2.0.1: 2843 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 2844 | engines: {node: '>= 0.4'} 2845 | dependencies: 2846 | define-data-property: 1.1.1 2847 | functions-have-names: 1.2.3 2848 | has-property-descriptors: 1.0.1 2849 | dev: true 2850 | 2851 | /shebang-command@2.0.0: 2852 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2853 | engines: {node: '>=8'} 2854 | dependencies: 2855 | shebang-regex: 3.0.0 2856 | dev: true 2857 | 2858 | /shebang-regex@3.0.0: 2859 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2860 | engines: {node: '>=8'} 2861 | dev: true 2862 | 2863 | /side-channel@1.0.4: 2864 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2865 | dependencies: 2866 | call-bind: 1.0.5 2867 | get-intrinsic: 1.2.2 2868 | object-inspect: 1.13.1 2869 | dev: true 2870 | 2871 | /slash@3.0.0: 2872 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2873 | engines: {node: '>=8'} 2874 | dev: true 2875 | 2876 | /source-map-js@1.0.2: 2877 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2878 | engines: {node: '>=0.10.0'} 2879 | 2880 | /streamsearch@1.1.0: 2881 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2882 | engines: {node: '>=10.0.0'} 2883 | dev: false 2884 | 2885 | /string.prototype.matchall@4.0.10: 2886 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 2887 | dependencies: 2888 | call-bind: 1.0.5 2889 | define-properties: 1.2.1 2890 | es-abstract: 1.22.3 2891 | get-intrinsic: 1.2.2 2892 | has-symbols: 1.0.3 2893 | internal-slot: 1.0.6 2894 | regexp.prototype.flags: 1.5.1 2895 | set-function-name: 2.0.1 2896 | side-channel: 1.0.4 2897 | dev: true 2898 | 2899 | /string.prototype.trim@1.2.8: 2900 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 2901 | engines: {node: '>= 0.4'} 2902 | dependencies: 2903 | call-bind: 1.0.5 2904 | define-properties: 1.2.1 2905 | es-abstract: 1.22.3 2906 | dev: true 2907 | 2908 | /string.prototype.trimend@1.0.7: 2909 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 2910 | dependencies: 2911 | call-bind: 1.0.5 2912 | define-properties: 1.2.1 2913 | es-abstract: 1.22.3 2914 | dev: true 2915 | 2916 | /string.prototype.trimstart@1.0.7: 2917 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 2918 | dependencies: 2919 | call-bind: 1.0.5 2920 | define-properties: 1.2.1 2921 | es-abstract: 1.22.3 2922 | dev: true 2923 | 2924 | /strip-ansi@6.0.1: 2925 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2926 | engines: {node: '>=8'} 2927 | dependencies: 2928 | ansi-regex: 5.0.1 2929 | dev: true 2930 | 2931 | /strip-bom@3.0.0: 2932 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2933 | engines: {node: '>=4'} 2934 | dev: true 2935 | 2936 | /strip-json-comments@3.1.1: 2937 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2938 | engines: {node: '>=8'} 2939 | dev: true 2940 | 2941 | /styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.2.0): 2942 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2943 | engines: {node: '>= 12.0.0'} 2944 | peerDependencies: 2945 | '@babel/core': '*' 2946 | babel-plugin-macros: '*' 2947 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2948 | peerDependenciesMeta: 2949 | '@babel/core': 2950 | optional: true 2951 | babel-plugin-macros: 2952 | optional: true 2953 | dependencies: 2954 | '@babel/core': 7.23.2 2955 | client-only: 0.0.1 2956 | react: 18.2.0 2957 | dev: false 2958 | 2959 | /sucrase@3.34.0: 2960 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 2961 | engines: {node: '>=8'} 2962 | hasBin: true 2963 | dependencies: 2964 | '@jridgewell/gen-mapping': 0.3.3 2965 | commander: 4.1.1 2966 | glob: 7.1.6 2967 | lines-and-columns: 1.2.4 2968 | mz: 2.7.0 2969 | pirates: 4.0.6 2970 | ts-interface-checker: 0.1.13 2971 | dev: true 2972 | 2973 | /supports-color@5.5.0: 2974 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2975 | engines: {node: '>=4'} 2976 | dependencies: 2977 | has-flag: 3.0.0 2978 | 2979 | /supports-color@7.2.0: 2980 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2981 | engines: {node: '>=8'} 2982 | dependencies: 2983 | has-flag: 4.0.0 2984 | dev: true 2985 | 2986 | /supports-preserve-symlinks-flag@1.0.0: 2987 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2988 | engines: {node: '>= 0.4'} 2989 | dev: true 2990 | 2991 | /tailwindcss@3.3.5: 2992 | resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} 2993 | engines: {node: '>=14.0.0'} 2994 | hasBin: true 2995 | dependencies: 2996 | '@alloc/quick-lru': 5.2.0 2997 | arg: 5.0.2 2998 | chokidar: 3.5.3 2999 | didyoumean: 1.2.2 3000 | dlv: 1.1.3 3001 | fast-glob: 3.3.2 3002 | glob-parent: 6.0.2 3003 | is-glob: 4.0.3 3004 | jiti: 1.21.0 3005 | lilconfig: 2.1.0 3006 | micromatch: 4.0.5 3007 | normalize-path: 3.0.0 3008 | object-hash: 3.0.0 3009 | picocolors: 1.0.0 3010 | postcss: 8.4.31 3011 | postcss-import: 15.1.0(postcss@8.4.31) 3012 | postcss-js: 4.0.1(postcss@8.4.31) 3013 | postcss-load-config: 4.0.1(postcss@8.4.31) 3014 | postcss-nested: 6.0.1(postcss@8.4.31) 3015 | postcss-selector-parser: 6.0.13 3016 | resolve: 1.22.8 3017 | sucrase: 3.34.0 3018 | transitivePeerDependencies: 3019 | - ts-node 3020 | dev: true 3021 | 3022 | /tapable@2.2.1: 3023 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3024 | engines: {node: '>=6'} 3025 | dev: true 3026 | 3027 | /text-table@0.2.0: 3028 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3029 | dev: true 3030 | 3031 | /thenify-all@1.6.0: 3032 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3033 | engines: {node: '>=0.8'} 3034 | dependencies: 3035 | thenify: 3.3.1 3036 | dev: true 3037 | 3038 | /thenify@3.3.1: 3039 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3040 | dependencies: 3041 | any-promise: 1.3.0 3042 | dev: true 3043 | 3044 | /to-fast-properties@2.0.0: 3045 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3046 | engines: {node: '>=4'} 3047 | 3048 | /to-regex-range@5.0.1: 3049 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3050 | engines: {node: '>=8.0'} 3051 | dependencies: 3052 | is-number: 7.0.0 3053 | dev: true 3054 | 3055 | /tr46@0.0.3: 3056 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3057 | dev: false 3058 | 3059 | /ts-api-utils@1.0.3(typescript@5.2.2): 3060 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 3061 | engines: {node: '>=16.13.0'} 3062 | peerDependencies: 3063 | typescript: '>=4.2.0' 3064 | dependencies: 3065 | typescript: 5.2.2 3066 | dev: true 3067 | 3068 | /ts-interface-checker@0.1.13: 3069 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3070 | dev: true 3071 | 3072 | /tsconfig-paths@3.14.2: 3073 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 3074 | dependencies: 3075 | '@types/json5': 0.0.29 3076 | json5: 1.0.2 3077 | minimist: 1.2.8 3078 | strip-bom: 3.0.0 3079 | dev: true 3080 | 3081 | /tslib@2.6.2: 3082 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3083 | dev: false 3084 | 3085 | /type-check@0.4.0: 3086 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3087 | engines: {node: '>= 0.8.0'} 3088 | dependencies: 3089 | prelude-ls: 1.2.1 3090 | dev: true 3091 | 3092 | /type-fest@0.20.2: 3093 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3094 | engines: {node: '>=10'} 3095 | dev: true 3096 | 3097 | /typed-array-buffer@1.0.0: 3098 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3099 | engines: {node: '>= 0.4'} 3100 | dependencies: 3101 | call-bind: 1.0.5 3102 | get-intrinsic: 1.2.2 3103 | is-typed-array: 1.1.12 3104 | dev: true 3105 | 3106 | /typed-array-byte-length@1.0.0: 3107 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3108 | engines: {node: '>= 0.4'} 3109 | dependencies: 3110 | call-bind: 1.0.5 3111 | for-each: 0.3.3 3112 | has-proto: 1.0.1 3113 | is-typed-array: 1.1.12 3114 | dev: true 3115 | 3116 | /typed-array-byte-offset@1.0.0: 3117 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3118 | engines: {node: '>= 0.4'} 3119 | dependencies: 3120 | available-typed-arrays: 1.0.5 3121 | call-bind: 1.0.5 3122 | for-each: 0.3.3 3123 | has-proto: 1.0.1 3124 | is-typed-array: 1.1.12 3125 | dev: true 3126 | 3127 | /typed-array-length@1.0.4: 3128 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3129 | dependencies: 3130 | call-bind: 1.0.5 3131 | for-each: 0.3.3 3132 | is-typed-array: 1.1.12 3133 | dev: true 3134 | 3135 | /typescript@5.2.2: 3136 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 3137 | engines: {node: '>=14.17'} 3138 | hasBin: true 3139 | dev: true 3140 | 3141 | /unbox-primitive@1.0.2: 3142 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3143 | dependencies: 3144 | call-bind: 1.0.5 3145 | has-bigints: 1.0.2 3146 | has-symbols: 1.0.3 3147 | which-boxed-primitive: 1.0.2 3148 | dev: true 3149 | 3150 | /undici-types@5.26.5: 3151 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3152 | 3153 | /update-browserslist-db@1.0.13(browserslist@4.22.1): 3154 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3155 | hasBin: true 3156 | peerDependencies: 3157 | browserslist: '>= 4.21.0' 3158 | dependencies: 3159 | browserslist: 4.22.1 3160 | escalade: 3.1.1 3161 | picocolors: 1.0.0 3162 | 3163 | /uri-js@4.4.1: 3164 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3165 | dependencies: 3166 | punycode: 2.3.1 3167 | dev: true 3168 | 3169 | /util-deprecate@1.0.2: 3170 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3171 | dev: true 3172 | 3173 | /watchpack@2.4.0: 3174 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 3175 | engines: {node: '>=10.13.0'} 3176 | dependencies: 3177 | glob-to-regexp: 0.4.1 3178 | graceful-fs: 4.2.11 3179 | dev: false 3180 | 3181 | /web-streams-polyfill@3.2.1: 3182 | resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} 3183 | engines: {node: '>= 8'} 3184 | dev: false 3185 | 3186 | /web-streams-polyfill@4.0.0-beta.3: 3187 | resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} 3188 | engines: {node: '>= 14'} 3189 | dev: false 3190 | 3191 | /webidl-conversions@3.0.1: 3192 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 3193 | dev: false 3194 | 3195 | /whatwg-url@5.0.0: 3196 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 3197 | dependencies: 3198 | tr46: 0.0.3 3199 | webidl-conversions: 3.0.1 3200 | dev: false 3201 | 3202 | /which-boxed-primitive@1.0.2: 3203 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3204 | dependencies: 3205 | is-bigint: 1.0.4 3206 | is-boolean-object: 1.1.2 3207 | is-number-object: 1.0.7 3208 | is-string: 1.0.7 3209 | is-symbol: 1.0.4 3210 | dev: true 3211 | 3212 | /which-builtin-type@1.1.3: 3213 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 3214 | engines: {node: '>= 0.4'} 3215 | dependencies: 3216 | function.prototype.name: 1.1.6 3217 | has-tostringtag: 1.0.0 3218 | is-async-function: 2.0.0 3219 | is-date-object: 1.0.5 3220 | is-finalizationregistry: 1.0.2 3221 | is-generator-function: 1.0.10 3222 | is-regex: 1.1.4 3223 | is-weakref: 1.0.2 3224 | isarray: 2.0.5 3225 | which-boxed-primitive: 1.0.2 3226 | which-collection: 1.0.1 3227 | which-typed-array: 1.1.13 3228 | dev: true 3229 | 3230 | /which-collection@1.0.1: 3231 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3232 | dependencies: 3233 | is-map: 2.0.2 3234 | is-set: 2.0.2 3235 | is-weakmap: 2.0.1 3236 | is-weakset: 2.0.2 3237 | dev: true 3238 | 3239 | /which-typed-array@1.1.13: 3240 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} 3241 | engines: {node: '>= 0.4'} 3242 | dependencies: 3243 | available-typed-arrays: 1.0.5 3244 | call-bind: 1.0.5 3245 | for-each: 0.3.3 3246 | gopd: 1.0.1 3247 | has-tostringtag: 1.0.0 3248 | dev: true 3249 | 3250 | /which@2.0.2: 3251 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3252 | engines: {node: '>= 8'} 3253 | hasBin: true 3254 | dependencies: 3255 | isexe: 2.0.0 3256 | dev: true 3257 | 3258 | /wrappy@1.0.2: 3259 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3260 | dev: true 3261 | 3262 | /yallist@3.1.1: 3263 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3264 | 3265 | /yallist@4.0.0: 3266 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3267 | dev: true 3268 | 3269 | /yaml@2.3.4: 3270 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 3271 | engines: {node: '>= 14'} 3272 | dev: true 3273 | 3274 | /yocto-queue@0.1.0: 3275 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3276 | engines: {node: '>=10'} 3277 | dev: true 3278 | --------------------------------------------------------------------------------