diff --git a/README.md b/README.md index 59b557b..43872d5 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ cp .env.example .env ``` S3_AWS_ACCESS_KEY_ID="x" S3_AWS_SECRET_ACCESS_KEY="x" +S3_AWS_REGION="us-east-1" S3_BUCKET_NAME="x" TWITTER_APP_KEY="YOUR_TWITTER_API_KEY" TWITTER_APP_SECRET="YOUR_TWITTER_API_KEY_SECRET" @@ -88,6 +89,7 @@ Example Permission policies: ```shell S3_AWS_ACCESS_KEY_ID="x" S3_AWS_SECRET_ACCESS_KEY="x" +S3_AWS_REGION="us-east-1" S3_BUCKET_NAME="x" TWITTER_APP_KEY="YOUR_TWITTER_API_KEY" TWITTER_APP_SECRET="YOUR_TWITTER_API_KEY_SECRET" @@ -104,6 +106,7 @@ If you want to get [Bluesky](https://bsky.app/) posts, you can use `yarn run fet ```ts S3_AWS_ACCESS_KEY_ID="x" S3_AWS_SECRET_ACCESS_KEY="x" +S3_AWS_REGION="us-east-1" S3_BUCKET_NAME="x" BLUESKY_IDENTIFIER="xxx.bsky.social" BLUESKY_APPPASSWORD="x" @@ -192,6 +195,7 @@ This template repository includes [.github/workflows/update.yml](.github/workflo 2. Put following env to Action's secrets - `S3_AWS_ACCESS_KEY_ID` - `S3_AWS_SECRET_ACCESS_KEY` + - `S3_AWS_REGION` - `S3_BUCKET_NAME` - If you want to fetch tweets - `TWITTER_APP_KEY` diff --git a/web/app/client/CompositionInput.tsx b/web/app/client/CompositionInput.tsx new file mode 100644 index 0000000..bc8857a --- /dev/null +++ b/web/app/client/CompositionInput.tsx @@ -0,0 +1,36 @@ +"use client"; +import { CSSProperties, useCallback, useState } from "react"; + +export function CompositionInput(props: { style?: CSSProperties; value: string; onInput: (value: string) => void }) { + const [inputValue, setInputValue] = useState(props.value); + const [isComposing, setIsComposing] = useState(false); + const onInput = useCallback( + (event) => { + const value = event.currentTarget.value; + setInputValue(value); + if (!isComposing) { + props.onInput(value); + } + }, + [isComposing] + ); + const onCompositionStart = useCallback((e) => { + setIsComposing(true); + }, []); + const onCompositionEnd = useCallback((event) => { + setIsComposing(false); + const value = event.currentTarget.value; + setInputValue(value); + props.onInput(value); + }, []); + return ( + + ); +} diff --git a/web/app/client/SearchBox.tsx b/web/app/client/SearchBox.tsx new file mode 100644 index 0000000..f39e991 --- /dev/null +++ b/web/app/client/SearchBox.tsx @@ -0,0 +1,58 @@ +"use client"; +import { useDeferredValue, useEffect, useMemo, useState, useTransition } from "react"; +import { CompositionInput } from "./CompositionInput"; +import { useTypeUrlSearchParams } from "../lib/useTypeUrlSearchParams"; +import { HomPageSearchParam } from "../page"; +import { useTransitionContext } from "./TransitionContext"; + +const debounce = (fn: (..._: any[]) => void, delay: number) => { + let timeout: any; + return (...args: any[]) => { + clearTimeout(timeout); + timeout = setTimeout(() => { + fn(...args); + }, delay); + }; +}; +const useSearch = ({ query }: { query?: string }) => { + const [isSearching, startTransition] = useTransition(); + const [inputQuery, setInputQuery] = useState(query ?? ""); + const deferredInputValue = useDeferredValue(inputQuery); + const searchParams = useTypeUrlSearchParams(); + const { setIsLoadingTimeline } = useTransitionContext(); + useEffect(() => { + setIsLoadingTimeline(isSearching); + }, [isSearching]); + useEffect(() => { + if (deferredInputValue === query) return; + startTransition(() => { + searchParams.pushParams({ + q: deferredInputValue + }); + }); + }, [deferredInputValue]); + const handlers = useMemo( + () => ({ + search: debounce((query: string) => { + setInputQuery(query); + }, 300) + }), + [] + ); + return { + inputQuery, + isSearching, + handlers + }; +}; +export const SearchBox = (props: { query?: string }) => { + const { inputQuery, handlers } = useSearch({ query: props.query }); + return ( +
+ +
+ ); +}; diff --git a/web/app/client/SearchMore.tsx b/web/app/client/SearchMore.tsx new file mode 100644 index 0000000..f346e06 --- /dev/null +++ b/web/app/client/SearchMore.tsx @@ -0,0 +1,50 @@ +"use client"; +import { LineTweetResponse } from "../server/search"; +import { useMemo, useTransition } from "react"; +import { useTypeUrlSearchParams } from "../lib/useTypeUrlSearchParams"; +import { HomPageSearchParam } from "../page"; + +export const useSearchMore = (props: { searchResults: LineTweetResponse[] }) => { + const searchParams = useTypeUrlSearchParams(); + const [isLoadingMore, startTransition] = useTransition(); + const handlers = useMemo(() => { + return { + handleMoreTweets: () => { + const lastItemTimeStamp = props.searchResults[props.searchResults.length - 1].timestamp; + if (!lastItemTimeStamp) { + return; + } + startTransition(() => { + searchParams.pushParams({ + timestamp: String(lastItemTimeStamp) + }); + }); + } + }; + }, [props.searchResults]); + return { + handlers, + isLoadingMore + } as const; +}; +export const SearchMore = (props: { searchResults: LineTweetResponse[] }) => { + const { handlers, isLoadingMore } = useSearchMore(props); + return ( +
+ +
+ ); +}; diff --git a/web/app/client/SearchResultContentWrapper.tsx b/web/app/client/SearchResultContentWrapper.tsx new file mode 100644 index 0000000..71f0529 --- /dev/null +++ b/web/app/client/SearchResultContentWrapper.tsx @@ -0,0 +1,19 @@ +"use client"; +import { useTransitionContext } from "./TransitionContext"; + +export const SearchResultContentWrapper = (props: { children: React.ReactNode }) => { + const { isLoadingTimeline } = useTransitionContext(); + return ( +
+ {props.children} +
+ ); +}; diff --git a/web/app/client/TransitionContext.tsx b/web/app/client/TransitionContext.tsx new file mode 100644 index 0000000..d1dfbaa --- /dev/null +++ b/web/app/client/TransitionContext.tsx @@ -0,0 +1,26 @@ +"use client"; +import { createContext, ReactNode, useContext, useState } from "react"; + +export type TransitionContext = { + isLoadingTimeline: boolean; + setIsLoadingTimeline: (isLoading: boolean) => void; +}; +const TransitionContext = createContext({ + isLoadingTimeline: false, + setIsLoadingTimeline: () => {} +}); +export const TransitionContextProvider = (props: { children: ReactNode }) => { + const [isLoadingTimeline, setIsLoadingTimeline] = useState(false); + return ( + + {props.children} + + ); +}; +export const useTransitionContext = () => { + const context = useContext(TransitionContext); + if (!context) { + throw new Error("useTransitionContext must be used within a TransitionContextProvider"); + } + return context; +}; diff --git a/web/app/global.css b/web/app/global.css new file mode 100644 index 0000000..9881e0f --- /dev/null +++ b/web/app/global.css @@ -0,0 +1,262 @@ +html, +body { + width: 100%; + margin: 0; + padding: 0; +} + +/* Basic.css https://github.com/vladocar/Basic.css */ +* { + box-sizing: border-box; +} + +:root { + --sans: 1em/1.6 system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, + Droid Sans, Helvetica Neue, Fira Sans, sans-serif; + --mono: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, "Courier New", monospace; + --c1: #0074d9; + --c2: #eee; + --c3: #fff; + --c4: #000; + --c5: #fff; + --m1: 8px; + --rc: 8px; +} + +@media (prefers-color-scheme: dark) { + :root { + --c2: #333; + --c3: #1e1f20; + --c4: #fff; + } +} + +html { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +/* General settings */ + +body { + margin: 0; + font: var(--sans); + font-weight: 400; + font-style: normal; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + background-color: var(--c3); + color: var(--c4); +} + +img, +iframe { + border: none; + max-width: 100%; +} + +a { + color: var(--c1); + text-decoration: none; +} + +a:hover { + color: var(--c1); + text-decoration: underline; +} + +pre { + font: 1em/1.6 var(--mono); + background: var(--c2); + padding: 1em; + overflow: auto; +} + +code { + font: 1em/1.6 var(--mono); +} + +blockquote { + border-left: 5px solid var(--c2); + padding: 1em 1.5em; + margin: 0; +} + +hr { + border: 0; + border-bottom: 1px solid var(--c4); +} + +/* Headlines */ + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0.6em 0; + font-weight: normal; +} + +h1 { + font-size: 2.625em; + line-height: 1.2; +} + +h2 { + font-size: 1.625em; + line-height: 1.2; +} + +h3 { + font-size: 1.3125em; + line-height: 1.24; +} + +h4 { + font-size: 1.1875em; + line-height: 1.23; +} + +h5, +h6 { + font-size: 1em; + font-weight: bold; +} + +/* Table */ + +table { + border-collapse: collapse; + border-spacing: 0; + margin: 1em 0; +} + +th, +td { + text-align: left; + vertical-align: top; + border: 1px solid; + padding: 0.4em; +} + +thead, +tfoot { + background: var(--c2); +} + +/* Rounded Corners*/ + +pre, +code, +input, +select, +textarea, +button, +img { + border-radius: var(--rc); +} + +/* Forms */ + +input, +select, +textarea { + font-size: 1em; + color: var(--c4); + background: var(--c2); + border: 0; + padding: 0.6em; +} + +button, +input[type="submit"], +input[type="reset"], +input[type="button"] { + -webkit-appearance: none; + font-size: 1em; + display: inline-block; + color: var(--c5); + background: var(--c1); + border: 0; + margin: 4px; + padding: 0.6em; + cursor: pointer; + text-align: center; +} + +button:hover, +button:focus, +input:hover, +textarea:hover, +select:hover { + opacity: 0.8; +} + +/* Infinite Grid */ + +section { + display: flex; + flex-flow: row wrap; +} + +[style*="--c:"], +section > section, +aside, +article { + flex: var(--c, 1); + margin: var(--m1); +} + +/* Cards */ + +article { + background: var(--c2); + border-radius: var(--rc); + padding: 1em; + box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.3); +} + +[style*="--c:"]:first-child, +section > section:first-child, +article:first-child { + margin-left: 0; +} + +[style*="--c:"]:last-child, +section > section:last-child, +article:last-child { + margin-right: 0; +} + +.Tweet-Item:hover { + background-color: rgba(0, 0, 0, 0.02); +} + +.fa-spin { + animation: fa-spin 2s infinite linear; +} + +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} + +.Icon-Center { + display: inline-flex; + align-content: center; + align-items: center; +} + +.Icon-Center:first-child { + padding-right: 4px; +} + +.Icon-Center:not(:first-child) { + padding: 0 4px; +} diff --git a/web/app/layout.tsx b/web/app/layout.tsx new file mode 100644 index 0000000..566eb6b --- /dev/null +++ b/web/app/layout.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import { Metadata } from "next"; +import "./global.css"; + +export const metadata: Metadata = { + title: "mytweet", + description: "twitter search engine for me", + /* + + + + + + + + */ + icons: [ + { + rel: "shortcut icon", + url: "/favicon.ico" + }, + { + rel: "icon", + type: "image/x-icon", + sizes: "16x16 32x32", + url: "/favicon.ico" + }, + { + rel: "icon", + sizes: "192x192", + url: "/favicon-192.png" + }, + { + rel: "apple-touch-icon", + sizes: "180x180", + url: "/favicon-180-precomposed.png" + } + ] +}; +export default function RootLayout({ + // Layouts must accept a children prop. + // This will be populated with nested layouts or pages + children +}: { + children: React.ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/web/app/lib/useTypeUrlSearchParams.ts b/web/app/lib/useTypeUrlSearchParams.ts new file mode 100644 index 0000000..59297d7 --- /dev/null +++ b/web/app/lib/useTypeUrlSearchParams.ts @@ -0,0 +1,46 @@ +"use client"; +// https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1202 +import type { ReadonlyURLSearchParams } from "next/navigation"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; +import type { Route } from "next"; + +type TypedURLSearchParams> = Omit< + ReadonlyURLSearchParams, + "append" | "delete" | "forEach" | "get" | "getAll" | "has" | "set" +> & { + append: (name: K, value: T[K]) => void; + delete: (name: K, value?: T[K]) => void; + forEach: ( + callbackfn: (value: string, key: keyof T, parent: TypedURLSearchParams) => void, + thisArg?: unknown + ) => void; + get: (name: K) => T[K] | null; + getAll: (name: K) => T[K][]; + has: (name: K, value?: T[K]) => boolean; + set: (name: K, value: T[K]) => void; +}; + +function useTypeUrlSearchParams() { + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams() as unknown as TypedURLSearchParams>; + const urlSearchParams = new URLSearchParams(searchParams.toString()); + + function pushParams(params: Partial) { + Object.entries(params).forEach(([key, value]) => { + if (value === undefined || value === null) { + urlSearchParams.delete(key); + } else { + urlSearchParams.set(key, String(value)); + } + }); + + const search = urlSearchParams.toString(); + const query = search ? `?${search}` : ""; + router.push(`${pathname}${query}` as Route); + } + + return { queryParams: searchParams, pushParams }; +} + +export { useTypeUrlSearchParams }; diff --git a/web/app/page.tsx b/web/app/page.tsx new file mode 100644 index 0000000..776278f --- /dev/null +++ b/web/app/page.tsx @@ -0,0 +1,77 @@ +import React from "react"; +import { fetchS3Select } from "./server/search"; +import { SiTwitter } from "react-icons/si"; +import { SearchResultContent } from "./server/SearchResult"; +import { SearchBox } from "./client/SearchBox"; +import { SearchMore } from "./client/SearchMore"; +import { TransitionContextProvider } from "./client/TransitionContext"; +import { SearchResultContentWrapper } from "./client/SearchResultContentWrapper"; + +export type HomPageSearchParam = { + q?: string; + max?: string; + screen_name?: string; + timestamp?: string; +}; + +async function HomePage({ + searchParams +}: { + // https://nextjs.org/docs/app/api-reference/file-conventions/page#searchparams-optional + searchParams: HomPageSearchParam; +}) { + const ret = await fetchS3Select({ + max: searchParams.max ? Number(searchParams.max) : 20, + query: searchParams.q ?? "", + afterTimestamp: searchParams.timestamp ? Number(searchParams.timestamp) : undefined + }); + return ( + +
+
+
+ + + + +
+
{/*Hit: {sortedSearchResults.length}*/}
+
+ + + + +
+
+ ); +} +export default HomePage; diff --git a/web/app/server/SearchResult.tsx b/web/app/server/SearchResult.tsx new file mode 100644 index 0000000..88622ee --- /dev/null +++ b/web/app/server/SearchResult.tsx @@ -0,0 +1,131 @@ +import { LineTweetResponse } from "./search"; +import { FaSpinner } from "react-icons/fa"; +import dayjs from "dayjs"; +import { MdPerson, MdUpdate } from "react-icons/md"; +import utc from "dayjs/plugin/utc"; +import { ReactElement } from "react"; + +dayjs.extend(utc); +const StatusLink = (props: { itemId: string; children: ReactElement }) => { + // at://did:plc:niluiwex7fsnjak2wxs4j47y/app.bsky.feed.post/3jzhqaznbqk2i + // -> https://bsky.app/profile/{did}/post/{contentId} + if (props.itemId.startsWith("at://")) { + // @ts-expect-error + const [_, did, contentId] = props.itemId.match(/at:\/\/(did:plc:.*?)\/app.bsky.feed.post\/(.*)/); + return ( + + {props.children} + + ); + } + // twitter.com/_/status/{itemId} + return ( + + {props.children} + + ); +}; + +export function SearchResultContent(props: { + isFetching: boolean; + searchResults: LineTweetResponse[]; + screenName: string; +}) { + return ( +
+ {props.isFetching ? ( + + ) : ( +
    + {props.searchResults.map((item) => { + const day = dayjs.utc(item.timestamp); + const isTwitter = !item.id.startsWith("at://"); + return ( +
  • + + + + + {isTwitter && ( + <> + + + + + + + + + )} + +

    +

  • + ); + })} +
+ )} +
+ ); +} diff --git a/web/pages/api/search.ts b/web/app/server/search.ts similarity index 57% rename from web/pages/api/search.ts rename to web/app/server/search.ts index 220de52..04a225b 100644 --- a/web/pages/api/search.ts +++ b/web/app/server/search.ts @@ -1,13 +1,38 @@ -import twitter from "twitter-text"; -import aws from "aws-sdk"; -import type { StatsEvent } from "aws-sdk/clients/s3"; +import { S3, SelectObjectContentCommand } from "@aws-sdk/client-s3"; +import type { StatsEvent } from "@aws-sdk/client-s3"; -const S3 = new aws.S3({ +const htmlEscape = (text: string) => { + // @ts-expect-error + return text.replace(/[&"'><]/g, (match: string) => { + return { + "&": "&", + '"': """, + ">": ">", + "<": "<", + "'": "'" + }[match]; + }); +}; +const autoLink = (text: string) => { + return text.replace(/(https?:\/\/\S+)/g, "$1"); +}; +export const runtime = "edge"; // 'nodejs' is the default +const assertEnv = () => { + // if does not exist, throw error + const envs = ["S3_BUCKET_NAME", "S3_AWS_REGION", "S3_AWS_ACCESS_KEY_ID", "S3_AWS_SECRET_ACCESS_KEY"]; + envs.forEach((env) => { + if (!process.env[env]) { + throw new Error(`process.env.${env} is not defined`); + } + }); +}; +const s3 = new S3({ apiVersion: "2006-03-01", - credentials: new aws.Credentials({ - accessKeyId: process.env.S3_AWS_ACCESS_KEY_ID, - secretAccessKey: process.env.S3_AWS_SECRET_ACCESS_KEY - }) + region: process.env.S3_AWS_REGION!, + credentials: { + accessKeyId: process.env.S3_AWS_ACCESS_KEY_ID!, + secretAccessKey: process.env.S3_AWS_SECRET_ACCESS_KEY! + } }); export type SearchQuery = { q: string; @@ -42,7 +67,7 @@ export const fetchS3Select = async ({ query: string; max: number; afterTimestamp?: number; -}) => { +}): Promise<{ results: LineTweetResponse[]; stats: StatsEvent["Details"] }> => { const queries = query .split(/\s+/) .map((query) => query.trim()) @@ -62,7 +87,7 @@ export const fetchS3Select = async ({ ? `SELECT * FROM s3object s WHERE ${WHERE} LIMIT ${LIMIT}` : `SELECT * FROM s3object s LIMIT ${LIMIT}`; console.log(S3Query); - const result = await S3.selectObjectContent({ + const command = new SelectObjectContentCommand({ Bucket: process.env.S3_BUCKET_NAME, Key: "tweets.json.gz", InputSerialization: { @@ -78,56 +103,44 @@ export const fetchS3Select = async ({ }, ExpressionType: "SQL", Expression: S3Query - }).promise(); + }); + const result = await s3.send(command).catch((error) => { + console.error(error); + console.error("s3 error details", error.$response); + throw error; + }); + // error handling for S3 Select + if (!result.Payload) { + throw new Error("No Payload"); + } const events = result.Payload; // Payload will be split by byte // We need to concat these as buffer // https://dev.classmethod.jp/articles/python-s3-select-decode-last/ let buffer = Buffer.alloc(0); - let stats: StatsEvent["Details"] = null; + let stats: StatsEvent["Details"] | undefined; + const results: LineTweetResponse[] = []; for await (const event of events) { if (typeof event === "string") { // skip } else if (typeof event === "object" && "Records" in event && event.Records && event.Records.Payload) { buffer = Buffer.concat([buffer, event.Records.Payload]); } else if ("Stats" in event) { - stats = event.Stats.Details; + stats = event.Stats?.Details; } } const lineObjects = buffer .toString() .split("\n") .filter((line) => line !== "") - .map((line) => JSON.parse(line)); - const responses: LineTweetResponse[] = lineObjects.map((lineObject) => { - return { - id: lineObject.id, - html: twitter.autoLink(twitter.htmlEscape(lineObject.text)), - timestamp: lineObject.timestamp - }; - }); - return { - stats, - responses - }; + .map((line) => { + const json = JSON.parse(line); + return { + id: json.id, + html: autoLink(htmlEscape(json.text)), + timestamp: json.timestamp + }; + }); + results.push(...lineObjects); + return { results, stats }; }; - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(400).json({ message: "invalid request" }); - } - const query = req.query.q; - const max = req.query.max ? Number(req.query.max) : 20; - const afterTimestamp = req.query.afterTimestamp ? Number(req.query.afterTimestamp) : undefined; - if (typeof query !== "string") { - return res.write("?q= should be string"); - } - if (typeof max !== "number") { - return res.write("?max= should be number"); - } - const { stats, responses } = await fetchS3Select({ query, max, afterTimestamp }); - res.json({ - stats, - results: responses - }); -} diff --git a/web/components/GlobalStyle.tsx b/web/components/GlobalStyle.tsx deleted file mode 100644 index 4c94fbd..0000000 --- a/web/components/GlobalStyle.tsx +++ /dev/null @@ -1,268 +0,0 @@ -export const GlobalStyle = () => { - return ( - - ); -}; diff --git a/web/middleware.ts b/web/middleware.ts new file mode 100644 index 0000000..f82f381 --- /dev/null +++ b/web/middleware.ts @@ -0,0 +1,40 @@ +import { NextRequest, NextResponse } from "next/server"; + +export function middleware(req: NextRequest) { + // NEXT_PUBLIC_AUTH_KEY="public" is a special case that allows access without a key + // WARNING: It allows anyone to access the API + if (process.env.NEXT_PUBLIC_AUTH_KEY === "public" || process.env.NEXT_PUBLIC_AUTH_KEY === "dev") { + return NextResponse.next(); + } + if (!process.env.NEXT_PUBLIC_AUTH_KEY) { + return new Response("Auth setting is required", { + status: 401 + }); + } + + // get index?k= and set it to cookie + // when next time, use cookie to check + const requestUrl = new URL(req.url); + const kParam = requestUrl.searchParams.get("k"); + if (kParam) { + const escapedK = encodeURIComponent(kParam); + return NextResponse.next({ + headers: { + "Set-Cookie": `k=${escapedK}; Path=/; HttpOnly; SameSite=Strict` + } + }); + } + + const k = req.cookies.get("k"); + if (!k) { + return new Response("Auth required", { + status: 401 + }); + } + if (k.value === process.env.NEXT_PUBLIC_AUTH_KEY) { + return NextResponse.next(); + } + return new Response("Auth required", { + status: 401 + }); +} diff --git a/web/next-env.d.ts b/web/next-env.d.ts index 7b7aa2c..4f11a03 100644 --- a/web/next-env.d.ts +++ b/web/next-env.d.ts @@ -1,2 +1,5 @@ /// -/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/web/next.config.js b/web/next.config.js deleted file mode 100644 index 3e205a4..0000000 --- a/web/next.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - target: "serverless" -}; diff --git a/web/next.config.mjs b/web/next.config.mjs new file mode 100644 index 0000000..69bb3db --- /dev/null +++ b/web/next.config.mjs @@ -0,0 +1,9 @@ +/** + * @type {import('next').NextConfig} + */ +export default { + // type-safe router + experimental: { + typedRoutes: true + } +}; diff --git a/web/package.json b/web/package.json index c4fb0ce..2ea1a22 100644 --- a/web/package.json +++ b/web/package.json @@ -7,17 +7,17 @@ }, "private": true, "name": "mytweets", + "type": "module", "dependencies": { - "aws-sdk": "^2.929.0", - "dayjs": "^1.10.5", - "next": "^12.1.6", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-icons": "^4.2.0", + "@aws-sdk/client-s3": "^3.515.0", + "dayjs": "^1.11.10", + "next": "^14.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-icons": "^5.0.1", "regex-combiner": "^1.0.1", "split2": "^3.2.2", - "sqlstring": "^2.3.2", - "twitter-text": "^3.1.0", + "sqlstring": "^2.3.3", "use-debounce": "^6.0.1" }, "devDependencies": { @@ -25,6 +25,6 @@ "@types/split2": "^3.2.0", "@types/sqlstring": "^2.3.0", "dotenv": "^10.0.0", - "typescript": "^4.3.2" + "typescript": "^5.3.3" } } diff --git a/web/pages/api/_middleware.ts b/web/pages/api/_middleware.ts deleted file mode 100644 index a33dfe8..0000000 --- a/web/pages/api/_middleware.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NextResponse } from "next/server"; - -export function middleware(req: Request) { - const k = new URL(req.url).searchParams.get("k"); - // NEXT_PUBLIC_AUTH_KEY="public" is a special case that allows access without a key - // WARNING: It allows anyone to access the API - if (process.env.NEXT_PUBLIC_AUTH_KEY === "public" || process.env.NEXT_PUBLIC_AUTH_KEY === "dev") { - return NextResponse.next(); - } - if (!process.env.NEXT_PUBLIC_AUTH_KEY) { - return new Response("Auth setting is required", { - status: 401 - }); - } - if (k === process.env.NEXT_PUBLIC_AUTH_KEY) { - return NextResponse.next(); - } - return new Response("Auth required", { - status: 401 - }); -} diff --git a/web/pages/index.tsx b/web/pages/index.tsx deleted file mode 100644 index dc4c20c..0000000 --- a/web/pages/index.tsx +++ /dev/null @@ -1,391 +0,0 @@ -import { CSSProperties, ReactElement, useCallback, useEffect, useMemo, useState } from "react"; -import { SearchResponse, LineTweetResponse, fetchS3Select } from "./api/search"; -import { useDebounce } from "use-debounce"; -import Head from "next/head"; -import { SiTwitter } from "react-icons/si"; -import { FaSpinner } from "react-icons/fa"; -import { MdUpdate, MdPerson } from "react-icons/md"; -import dayjs from "dayjs"; -import utc from "dayjs/plugin/utc"; -import { GlobalStyle } from "../components/GlobalStyle"; - -dayjs.extend(utc); - -const DEFAULT_MAX = 20; -type ResponseStat = { BytesProcessed: number; BytesScanned: number }; -const useSearch = ({ - initialQuery, - initialMax, - screen_name, - initialSearchResults, - initialStats -}: { - initialQuery?: string; - initialMax?: number; - screen_name?: string; - initialSearchResults?: LineTweetResponse[]; - initialStats?: ResponseStat; -}) => { - const [screenName, setScreenName] = useState(screen_name ?? ""); - const [query, setQuery] = useState(initialQuery ?? ""); - const [max, setMax] = useState(initialMax ?? DEFAULT_MAX); - // Paging timestamp - const [afterTimestamp, setAfterTimestamp] = useState(null); - const [isFetching, setIsFetching] = useState(!initialSearchResults); - const [searchCounts, setSearchCounts] = useState( - initialStats ?? { - BytesProcessed: 0, - BytesScanned: 0 - } - ); - const [searchResults, setSearchResults] = useState(initialSearchResults ?? []); - const [debouncedQuery] = useDebounce(query, 350); - const sortedSearchResults = useMemo(() => { - return searchResults.sort((a, b) => { - return a.timestamp < b.timestamp ? 1 : -1; - }); - }, [searchResults]); - const moreTweets = useMemo(() => { - return searchResults.length === max; - }, [searchResults]); - - useEffect(() => { - if (searchResults.length !== 0) { - return; - } - const k = new URL(location.href).searchParams.get("k"); - if (!k) { - window.alert("?k= is required"); - return; - } - const searchParams = new URLSearchParams( - [ - ["q", debouncedQuery], - ["k", k] - ] - .concat(afterTimestamp ? [["afterTimestamp", String(afterTimestamp)]] : []) - .concat(max !== DEFAULT_MAX ? [["max", String(max)]] : []) - ); - const abortController = new AbortController(); - (async function fetchMain() { - setIsFetching(true); - const response = await fetch("/api/search?" + searchParams.toString(), { - signal: abortController.signal - }); - const json: SearchResponse = await response.json(); - setSearchCounts({ - BytesProcessed: json.stats.BytesProcessed, - BytesScanned: json.stats.BytesScanned - }); - setSearchResults(json.results); - setIsFetching(false); - })().catch((error) => { - console.log("Fetch Abort", error); - }); - return () => { - setIsFetching(false); - abortController.abort(); - }; - }, [debouncedQuery, max, afterTimestamp]); - const handlers = useMemo( - () => ({ - search: (query: string) => { - setSearchResults([]); - setAfterTimestamp(null); - setQuery(query); - }, - moreTweets: () => { - const lastResult = searchResults[searchResults.length - 1]; - if (lastResult) { - setSearchResults([]); - setAfterTimestamp(lastResult.timestamp); - } - } - }), - [searchResults] - ); - return { - screenName, - query, - moreTweets, - isFetching, - searchCounts, - searchResults, - sortedSearchResults, - handlers - }; -}; - -export async function getServerSideProps(context) { - const { q, max, screen_name } = context.query; - const maxWithDefault = max ?? DEFAULT_MAX; - const screenNameWithDefault = screen_name ?? ""; - if (!q) { - return { - props: { - max: maxWithDefault, - screen_name: screenNameWithDefault - } - }; - } - const { responses, stats } = await fetchS3Select({ query: q, max: maxWithDefault }); - return { - props: { - q: q, - max: maxWithDefault, - screen_name: screenNameWithDefault, - searchResults: responses, - stats - } - }; -} - -function CompositionInput(props: { style?: CSSProperties; value: string; onInput: (value: string) => void }) { - const [inputValue, setInputValue] = useState(props.value); - const [isComposing, setIsComposing] = useState(false); - const onInput = useCallback( - (event) => { - const value = event.currentTarget.value; - setInputValue(value); - if (!isComposing) { - props.onInput(value); - } - }, - [isComposing] - ); - const onCompositionStart = useCallback((e) => { - setIsComposing(true); - }, []); - let onCompositionEnd = useCallback((event) => { - setIsComposing(false); - const value = event.currentTarget.value; - setInputValue(value); - props.onInput(value); - }, []); - return ( - - ); -} - -type HomePageProps = { - q?: string; - max?: number; - screen_name?: string; - searchResults?: LineTweetResponse[]; - stats?: ResponseStat; -}; - -function HomePage(props: HomePageProps) { - const { query, screenName, moreTweets, isFetching, sortedSearchResults, handlers } = useSearch({ - initialQuery: props.q, - initialMax: props.max ? Number(props.max) : DEFAULT_MAX, - screen_name: props.screen_name, - initialSearchResults: props.searchResults, - initialStats: props.stats - }); - return ( -
- - mytweets - - - - - - - - - -
-
- - - - -
-
- Hit: {sortedSearchResults.length} -
-
- -
- ); -} - -export const StatusLink = (props: { itemId: string; children: ReactElement }) => { - // at://did:plc:niluiwex7fsnjak2wxs4j47y/app.bsky.feed.post/3jzhqaznbqk2i - // -> https://bsky.app/profile/{did}/post/{contentId} - if (props.itemId.startsWith("at://")) { - const [_, did, contentId] = props.itemId.match(/at:\/\/(did:plc:.*?)\/app.bsky.feed.post\/(.*)/); - return ( - - {props.children} - - ); - } - // twitter.com/_/status/{itemId} - return ( - - {props.children} - - ); -}; - -function SearchResultContent(props: { - isFetching: boolean; - searchResults: LineTweetResponse[]; - screenName: string; - moreTweets: boolean; - handleMoreTweets: () => void; -}) { - return ( -
- {props.isFetching ? ( - - ) : ( -
    - {props.searchResults.map((item) => { - const day = dayjs.utc(item.timestamp); - const isTwitter = !item.id.startsWith("at://"); - return ( -
  • - - - - - {isTwitter && ( - <> - - - - - - - - - )} - -

    -

  • - ); - })} -
- )} - {props.moreTweets ? ( -
- -
- ) : null} -
- ); -} - -export default HomePage; diff --git a/web/tsconfig.json b/web/tsconfig.json index 60cf981..2b5ac85 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "target": "ES2018", "lib": [ "dom", "dom.iterable", @@ -8,20 +7,26 @@ ], "allowJs": true, "skipLibCheck": true, - "strict": false, - "forceConsistentCasingInFileNames": true, + "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve" + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ] }, "include": [ "next-env.d.ts", "**/*.ts", - "**/*.tsx" + "**/*.tsx", + ".next/types/**/*.ts" ], "exclude": [ "node_modules" diff --git a/web/vercel.json b/web/vercel.json new file mode 100644 index 0000000..7ae9a3d --- /dev/null +++ b/web/vercel.json @@ -0,0 +1,5 @@ +{ + "github": { + "silent": true + } +} diff --git a/web/yarn.lock b/web/yarn.lock index 3e6b57d..7bd7818 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,77 +2,1134 @@ # yarn lockfile v1 -"@babel/runtime@^7.3.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.5.tgz#665450911c6031af38f81db530f387ec04cd9a98" - integrity sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA== - dependencies: - regenerator-runtime "^0.13.4" - -"@next/env@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" - integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== - -"@next/swc-android-arm-eabi@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" - integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== - -"@next/swc-android-arm64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" - integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== - -"@next/swc-darwin-arm64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" - integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== - -"@next/swc-darwin-x64@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" - integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== - -"@next/swc-linux-arm-gnueabihf@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" - integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== - -"@next/swc-linux-arm64-gnu@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" - integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== - -"@next/swc-linux-arm64-musl@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" - integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== - -"@next/swc-linux-x64-gnu@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" - integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== - -"@next/swc-linux-x64-musl@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" - integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== - -"@next/swc-win32-arm64-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" - integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== - -"@next/swc-win32-ia32-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" - integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== - -"@next/swc-win32-x64-msvc@12.1.6": - version "12.1.6" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" - integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/client-s3@^3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.515.0.tgz#f14aa19c55292cee36f07b314655e435e52b3bc6" + integrity sha512-K527n83hrMUdosxOYTzL63wtlJtmN5SUJZnGY1sUR6UyOrnOr9lS6t3AB6BgHqLFRFZJqSqmhflv2cOD7P1UPg== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.515.0" + "@aws-sdk/core" "3.513.0" + "@aws-sdk/credential-provider-node" "3.515.0" + "@aws-sdk/middleware-bucket-endpoint" "3.515.0" + "@aws-sdk/middleware-expect-continue" "3.515.0" + "@aws-sdk/middleware-flexible-checksums" "3.515.0" + "@aws-sdk/middleware-host-header" "3.515.0" + "@aws-sdk/middleware-location-constraint" "3.515.0" + "@aws-sdk/middleware-logger" "3.515.0" + "@aws-sdk/middleware-recursion-detection" "3.515.0" + "@aws-sdk/middleware-sdk-s3" "3.515.0" + "@aws-sdk/middleware-signing" "3.515.0" + "@aws-sdk/middleware-ssec" "3.515.0" + "@aws-sdk/middleware-user-agent" "3.515.0" + "@aws-sdk/region-config-resolver" "3.515.0" + "@aws-sdk/signature-v4-multi-region" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-endpoints" "3.515.0" + "@aws-sdk/util-user-agent-browser" "3.515.0" + "@aws-sdk/util-user-agent-node" "3.515.0" + "@aws-sdk/xml-builder" "3.496.0" + "@smithy/config-resolver" "^2.1.1" + "@smithy/core" "^1.3.2" + "@smithy/eventstream-serde-browser" "^2.1.1" + "@smithy/eventstream-serde-config-resolver" "^2.1.1" + "@smithy/eventstream-serde-node" "^2.1.1" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/hash-blob-browser" "^2.1.1" + "@smithy/hash-node" "^2.1.1" + "@smithy/hash-stream-node" "^2.1.1" + "@smithy/invalid-dependency" "^2.1.1" + "@smithy/md5-js" "^2.1.1" + "@smithy/middleware-content-length" "^2.1.1" + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-body-length-browser" "^2.1.1" + "@smithy/util-body-length-node" "^2.2.1" + "@smithy/util-defaults-mode-browser" "^2.1.1" + "@smithy/util-defaults-mode-node" "^2.2.0" + "@smithy/util-endpoints" "^1.1.1" + "@smithy/util-retry" "^2.1.1" + "@smithy/util-stream" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + "@smithy/util-waiter" "^2.1.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/client-sso-oidc@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.515.0.tgz#7864bbcc1cca2441c726b1db5ef74be6142ec270" + integrity sha512-zACa8LNlPUdlNUBqQRf5a3MfouLNtcBfm84v2c8M976DwJrMGONPe1QjyLLsD38uESQiXiVQRruj/b000iMXNw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.515.0" + "@aws-sdk/core" "3.513.0" + "@aws-sdk/middleware-host-header" "3.515.0" + "@aws-sdk/middleware-logger" "3.515.0" + "@aws-sdk/middleware-recursion-detection" "3.515.0" + "@aws-sdk/middleware-user-agent" "3.515.0" + "@aws-sdk/region-config-resolver" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-endpoints" "3.515.0" + "@aws-sdk/util-user-agent-browser" "3.515.0" + "@aws-sdk/util-user-agent-node" "3.515.0" + "@smithy/config-resolver" "^2.1.1" + "@smithy/core" "^1.3.2" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/hash-node" "^2.1.1" + "@smithy/invalid-dependency" "^2.1.1" + "@smithy/middleware-content-length" "^2.1.1" + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-body-length-browser" "^2.1.1" + "@smithy/util-body-length-node" "^2.2.1" + "@smithy/util-defaults-mode-browser" "^2.1.1" + "@smithy/util-defaults-mode-node" "^2.2.0" + "@smithy/util-endpoints" "^1.1.1" + "@smithy/util-middleware" "^2.1.1" + "@smithy/util-retry" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.515.0.tgz#858d3ebd187e54e70ebd7ac948fb889f70a7deee" + integrity sha512-4oGBLW476zmkdN98lAns3bObRNO+DLOfg4MDUSR6l6GYBV/zGAtoy2O/FhwYKgA2L5h2ZtElGopLlk/1Q0ePLw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.513.0" + "@aws-sdk/middleware-host-header" "3.515.0" + "@aws-sdk/middleware-logger" "3.515.0" + "@aws-sdk/middleware-recursion-detection" "3.515.0" + "@aws-sdk/middleware-user-agent" "3.515.0" + "@aws-sdk/region-config-resolver" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-endpoints" "3.515.0" + "@aws-sdk/util-user-agent-browser" "3.515.0" + "@aws-sdk/util-user-agent-node" "3.515.0" + "@smithy/config-resolver" "^2.1.1" + "@smithy/core" "^1.3.2" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/hash-node" "^2.1.1" + "@smithy/invalid-dependency" "^2.1.1" + "@smithy/middleware-content-length" "^2.1.1" + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-body-length-browser" "^2.1.1" + "@smithy/util-body-length-node" "^2.2.1" + "@smithy/util-defaults-mode-browser" "^2.1.1" + "@smithy/util-defaults-mode-node" "^2.2.0" + "@smithy/util-endpoints" "^1.1.1" + "@smithy/util-middleware" "^2.1.1" + "@smithy/util-retry" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.515.0.tgz#a645696bbc160e46c4c9e60aa66b79fd212d1230" + integrity sha512-ScYuvaIDgip3atOJIA1FU2n0gJkEdveu1KrrCPathoUCV5zpK8qQmO/n+Fj/7hKFxeKdFbB+4W4CsJWYH94nlg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.513.0" + "@aws-sdk/middleware-host-header" "3.515.0" + "@aws-sdk/middleware-logger" "3.515.0" + "@aws-sdk/middleware-recursion-detection" "3.515.0" + "@aws-sdk/middleware-user-agent" "3.515.0" + "@aws-sdk/region-config-resolver" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-endpoints" "3.515.0" + "@aws-sdk/util-user-agent-browser" "3.515.0" + "@aws-sdk/util-user-agent-node" "3.515.0" + "@smithy/config-resolver" "^2.1.1" + "@smithy/core" "^1.3.2" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/hash-node" "^2.1.1" + "@smithy/invalid-dependency" "^2.1.1" + "@smithy/middleware-content-length" "^2.1.1" + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-body-length-browser" "^2.1.1" + "@smithy/util-body-length-node" "^2.2.1" + "@smithy/util-defaults-mode-browser" "^2.1.1" + "@smithy/util-defaults-mode-node" "^2.2.0" + "@smithy/util-endpoints" "^1.1.1" + "@smithy/util-middleware" "^2.1.1" + "@smithy/util-retry" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/core@3.513.0": + version "3.513.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.513.0.tgz#9fce86d472f7b38724cb1156d06a854124a51aaa" + integrity sha512-L+9DL4apWuqNKVOMJ8siAuWoRM9rZf9w1iPv8S2o83WO2jVK7E/m+rNW1dFo9HsA5V1ccDl2H2qLXx24HiHmOw== + dependencies: + "@smithy/core" "^1.3.2" + "@smithy/protocol-http" "^3.1.1" + "@smithy/signature-v4" "^2.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.515.0.tgz#8a96e51bb50a70596ec8d6fc38a78c2aca3b5b6f" + integrity sha512-45vxdyqhTAaUMERYVWOziG3K8L2TV9G4ryQS/KZ84o7NAybE9GMdoZRVmGHAO7mJJ1wQiYCM/E+i5b3NW9JfNA== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-http@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.515.0.tgz#780b31ebb0d2c3fb1da31d163a2f39edb7d7d7c5" + integrity sha512-Ba6FXK77vU4WyheiamNjEuTFmir0eAXuJGPO27lBaA8g+V/seXGHScsbOG14aQGDOr2P02OPwKGZrWWA7BFpfQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-stream" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.515.0.tgz#f669afd30aeac6088db0d7d485730c633836872b" + integrity sha512-ouDlNZdv2TKeVEA/YZk2+XklTXyAAGdbWnl4IgN9ItaodWI+lZjdIoNC8BAooVH+atIV/cZgoGTGQL7j2TxJ9A== + dependencies: + "@aws-sdk/client-sts" "3.515.0" + "@aws-sdk/credential-provider-env" "3.515.0" + "@aws-sdk/credential-provider-process" "3.515.0" + "@aws-sdk/credential-provider-sso" "3.515.0" + "@aws-sdk/credential-provider-web-identity" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/credential-provider-imds" "^2.2.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.515.0.tgz#57e2105208fb8b2edc857f48533cb0a1e28a9412" + integrity sha512-Y4kHSpbxksiCZZNcvsiKUd8Fb2XlyUuONEwqWFNL82ZH6TCCjBGS31wJQCSxBHqYcOL3tiORUEJkoO7uS30uQA== + dependencies: + "@aws-sdk/credential-provider-env" "3.515.0" + "@aws-sdk/credential-provider-http" "3.515.0" + "@aws-sdk/credential-provider-ini" "3.515.0" + "@aws-sdk/credential-provider-process" "3.515.0" + "@aws-sdk/credential-provider-sso" "3.515.0" + "@aws-sdk/credential-provider-web-identity" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/credential-provider-imds" "^2.2.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.515.0.tgz#71e1e624669ef5918b477b48ec8aff1bd686e787" + integrity sha512-pSjiOA2FM63LHRKNDvEpBRp80FVGT0Mw/gzgbqFXP+sewk0WVonYbEcMDTJptH3VsLPGzqH/DQ1YL/aEIBuXFQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.515.0.tgz#b8efce2c885adf529c4f70db76bcc188afef299b" + integrity sha512-j7vUkiSmuhpBvZYoPTRTI4ePnQbiZMFl6TNhg9b9DprC1zHkucsZnhRhqjOVlrw/H6J4jmcPGcHHTZ5WQNI5xQ== + dependencies: + "@aws-sdk/client-sso" "3.515.0" + "@aws-sdk/token-providers" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.515.0.tgz#848f113ca92dd7a6ebbb436872688a78a28d309b" + integrity sha512-66+2g4z3fWwdoGReY8aUHvm6JrKZMTRxjuizljVmMyOBttKPeBYXvUTop/g3ZGUx1f8j+C5qsGK52viYBvtjuQ== + dependencies: + "@aws-sdk/client-sts" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.515.0.tgz#59dc2a3443f458cc503f70490618814ad0c2cbd9" + integrity sha512-Vm423j3udFrhKPaKiXtie+6aF05efjX8lhAu5VOruIvbam7olvdWNdkH7sGWlz1ko3CVa7PwOYjGHiOOhxpEOA== + dependencies: + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-arn-parser" "3.495.0" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-config-provider" "^2.2.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.515.0.tgz#4a9056cbc0acf2dd89b29220fbd9ae5da56b8256" + integrity sha512-TWCXulivab4reOMx/vxa/IwnPX78fLwI9NUoAxjsqB6W9qjmSnPD43BSVeGvbbl/YNmgk7XfMbZb6IgxW7RyzA== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.515.0.tgz#88302e23931bb936f12048953a825cfe8fa5c3c3" + integrity sha512-ydGjnqNeYlJaAkmQeQnS4pZRAAvzefdm8c234Qh0Fg55xRwHTNLp7uYsdfkTjrdAlj6YIO3Zr6vK6VJ6MGCwug== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.515.0" + "@smithy/is-array-buffer" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.515.0.tgz#835a1865d4e35ad8fd2f7e579b191d58f52e450c" + integrity sha512-I1MwWPzdRKM1luvdDdjdGsDjNVPhj9zaIytEchjTY40NcKOg+p2evLD2y69ozzg8pyXK63r8DdvDGOo9QPuh0A== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.515.0.tgz#848a90fb284ba7fc7258faada73808425aeb7b76" + integrity sha512-ORFC5oijjTJsHhUXy9o52/vl5Irf6e83bE/8tBp+sVVx81+E8zTTWZbysoa41c0B5Ycd0H3wCWutvjdXT16ydQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.515.0.tgz#430fc40d6897fdc25ad82075865d00d5d707b6ad" + integrity sha512-qXomJzg2m/5seQOxHi/yOXOKfSjwrrJSmEmfwJKJyQgdMbBcjz3Cz0H/1LyC6c5hHm6a/SZgSTzDAbAoUmyL+Q== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.515.0.tgz#7f44705d6d93adbcc743a5adf3bfa2c09670637c" + integrity sha512-dokHLbTV3IHRIBrw9mGoxcNTnQsjlm7TpkJhPdGT9T4Mq399EyQo51u6IsVMm07RXLl2Zw7u+u9p+qWBFzmFRA== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-s3@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.515.0.tgz#5d3e355d474c22c6748a4a6e48788eca3e81b713" + integrity sha512-vB8JwiTEAqm1UT9xfugnCgl0H0dtBLUQQK99JwQEWjHPZmQ3HQuVkykmJRY3X0hzKMEgqXodz0hZOvf3Hq1mvQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-arn-parser" "3.495.0" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/signature-v4" "^2.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-config-provider" "^2.2.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.515.0.tgz#1fe447d8fdc403367a7ba4af53d2dcc647c24190" + integrity sha512-SdjCyQCL702I07KhCiBFcoh6+NYtnruHJQIzWwMpBteuYHnCHW1k9uZ6pqacsS+Y6qpAKfTVNpQx2zP2s6QoHA== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/signature-v4" "^2.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-middleware" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.515.0.tgz#395a16a27b99246bb88e8344ec8c0da507cdf1a6" + integrity sha512-0qLjKiorosVBzzaV/o7MEyS9xqLLu02qGbP564Z/FZY74JUQEpBNedgveMUbb6lqr85RnOuwZ0GZ0cBRfH2brQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.515.0.tgz#93daacea920fad11481559e5a399cf786e5e6c0c" + integrity sha512-nOqZjGA/GkjuJ5fUshec9Fv6HFd7ovOTxMJbw3MfAhqXuVZ6dKF41lpVJ4imNsgyFt3shUg9WDY8zGFjlYMB3g== + dependencies: + "@aws-sdk/types" "3.515.0" + "@aws-sdk/util-endpoints" "3.515.0" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/region-config-resolver@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.515.0.tgz#c0973acc32256c3688265512cf6d0469baa3af21" + integrity sha512-RIRx9loxMgEAc/r1wPfnfShOuzn4RBi8pPPv6/jhhITEeMnJe6enAh2k5y9DdiVDDgCWZgVFSv0YkAIfzAFsnQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/types" "^2.9.1" + "@smithy/util-config-provider" "^2.2.1" + "@smithy/util-middleware" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.515.0.tgz#93d10569869ccc506a7cb6603566c9e0638a436e" + integrity sha512-5lrCn4DSE0zL41k0L6moqcdExZhWdAnV0/oMEagrISzQYoia+aNTEeyVD3xqJhRbEW4gCj3Uoyis6c8muf7b9g== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/protocol-http" "^3.1.1" + "@smithy/signature-v4" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.515.0.tgz#c4e549a28d287b2861a2d331eae2be98c4236bd1" + integrity sha512-MQuf04rIcTXqwDzmyHSpFPF1fKEzRl64oXtCRUF3ddxTdK6wxXkePfK6wNCuL+GEbEcJAoCtIGIRpzGPJvQjHA== + dependencies: + "@aws-sdk/client-sso-oidc" "3.515.0" + "@aws-sdk/types" "3.515.0" + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/types@3.515.0", "@aws-sdk/types@^3.222.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.515.0.tgz#ee97c887293211f1891bc1d8f0aaf354072b6002" + integrity sha512-B3gUpiMlpT6ERaLvZZ61D0RyrQPsFYDkCncLPVkZOKkCOoFU46zi1o6T5JcYiz8vkx1q9RGloQ5exh79s5pU/w== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/util-arn-parser@3.495.0": + version "3.495.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz#539f2d6dfef343a80324348f1f9a1b7eed2390f3" + integrity sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.515.0.tgz#6d8bcc62617261a4c1de5d7507060ab361694923" + integrity sha512-UJi+jdwcGFV/F7d3+e2aQn5yZOVpDiAgfgNhPnEtgV0WozJ5/ZUeZBgWvSc/K415N4A4D/9cbBc7+I+35qzcDQ== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/types" "^2.9.1" + "@smithy/util-endpoints" "^1.1.1" + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.495.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz#9034fd8db77991b28ed20e067acdd53e8b8f824b" + integrity sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-browser@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.515.0.tgz#f3c7027cfbfaf1786ae32176dd5ac8b0753ad0a1" + integrity sha512-pTWQb0JCafTmLHLDv3Qqs/nAAJghcPdGQIBpsCStb0YEzg3At/dOi2AIQ683yYnXmeOxLXJDzmlsovfVObJScw== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/types" "^2.9.1" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.515.0": + version "3.515.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.515.0.tgz#a76182778964e9e9098f5607b379c0efb12ffaa4" + integrity sha512-A/KJ+/HTohHyVXLH+t/bO0Z2mPrQgELbQO8tX+B2nElo8uklj70r5cT7F8ETsI9oOy+HDVpiL5/v45ZgpUOiPg== + dependencies: + "@aws-sdk/types" "3.515.0" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.496.0": + version "3.496.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.496.0.tgz#7d0ef487a8088ef84a5a9aad228e6173ca85341d" + integrity sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@next/env@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.0.tgz#43d92ebb53bc0ae43dcc64fb4d418f8f17d7a341" + integrity sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw== + +"@next/swc-darwin-arm64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz#70a57c87ab1ae5aa963a3ba0f4e59e18f4ecea39" + integrity sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ== + +"@next/swc-darwin-x64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz#0863a22feae1540e83c249384b539069fef054e9" + integrity sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g== + +"@next/swc-linux-arm64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz#893da533d3fce4aec7116fe772d4f9b95232423c" + integrity sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ== + +"@next/swc-linux-arm64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz#d81ddcf95916310b8b0e4ad32b637406564244c0" + integrity sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g== + +"@next/swc-linux-x64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz#18967f100ec19938354332dcb0268393cbacf581" + integrity sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ== + +"@next/swc-linux-x64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz#77077cd4ba8dda8f349dc7ceb6230e68ee3293cf" + integrity sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg== + +"@next/swc-win32-arm64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz#5f0b8cf955644104621e6d7cc923cad3a4c5365a" + integrity sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ== + +"@next/swc-win32-ia32-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz#21f4de1293ac5e5a168a412b139db5d3420a89d0" + integrity sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw== + +"@next/swc-win32-x64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" + integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== + +"@smithy/abort-controller@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-2.1.1.tgz#bb68596a7c8213c2ef259bc7fb0f0c118c67ea9d" + integrity sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader-native@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz#6b98479c8f6ea94832dd6a6e5ca78969a44eafe1" + integrity sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ== + dependencies: + "@smithy/util-base64" "^2.1.1" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz#997faba8e197e0cb9824dad30ae581466e386e57" + integrity sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ== + dependencies: + tslib "^2.5.0" + +"@smithy/config-resolver@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-2.1.1.tgz#fc6b036084b98fd26a8ff01a5d7eb676e41749c7" + integrity sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw== + dependencies: + "@smithy/node-config-provider" "^2.2.1" + "@smithy/types" "^2.9.1" + "@smithy/util-config-provider" "^2.2.1" + "@smithy/util-middleware" "^2.1.1" + tslib "^2.5.0" + +"@smithy/core@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-1.3.2.tgz#e11f3860b69ec0bdbd31e6afaa54963c02dc7f8e" + integrity sha512-tYDmTp0f2TZVE18jAOH1PnmkngLQ+dOGUlMd1u67s87ieueNeyqhja6z/Z4MxhybEiXKOWFOmGjfTZWFxljwJw== + dependencies: + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-middleware" "^2.1.1" + tslib "^2.5.0" + +"@smithy/credential-provider-imds@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz#4805bf5e104718b959cf8699113fa9de6ddeeafa" + integrity sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA== + dependencies: + "@smithy/node-config-provider" "^2.2.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-codec@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz#4405ab0f9c77d439c575560c4886e59ee17d6d38" + integrity sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^2.9.1" + "@smithy/util-hex-encoding" "^2.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-browser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz#743a374639e9e2dd858b6fda1fd814eb6c604946" + integrity sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow== + dependencies: + "@smithy/eventstream-serde-universal" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-config-resolver@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz#0b84d6f8be0836af7b92455c69f7427e4f01e7a2" + integrity sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-node@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz#2e1afa27f9c7eb524c1c53621049c5e4e3cea6a5" + integrity sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw== + dependencies: + "@smithy/eventstream-serde-universal" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-universal@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz#0f5eec9ad033017973a67bafb5549782499488d2" + integrity sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ== + dependencies: + "@smithy/eventstream-codec" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/fetch-http-handler@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz#b4d73bbc1449f61234077d58c705b843a8587bf0" + integrity sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg== + dependencies: + "@smithy/protocol-http" "^3.1.1" + "@smithy/querystring-builder" "^2.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-base64" "^2.1.1" + tslib "^2.5.0" + +"@smithy/hash-blob-browser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz#f4571d4e2fbc2cc1869c443850e5409bf541ba25" + integrity sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A== + dependencies: + "@smithy/chunked-blob-reader" "^2.1.1" + "@smithy/chunked-blob-reader-native" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/hash-node@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-2.1.1.tgz#0f8a22d97565ca948724f72267e4d3a2f33740a8" + integrity sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg== + dependencies: + "@smithy/types" "^2.9.1" + "@smithy/util-buffer-from" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@smithy/hash-stream-node@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-2.1.1.tgz#d1885a3bf159872cbb8c9d9f1aefc596ea6cf5db" + integrity sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA== + dependencies: + "@smithy/types" "^2.9.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@smithy/invalid-dependency@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz#bd69fa24dd35e9bc65a160bd86becdf1399e4463" + integrity sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/is-array-buffer@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz#07b4c77ae67ed58a84400c76edd482271f9f957b" + integrity sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ== + dependencies: + tslib "^2.5.0" + +"@smithy/md5-js@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-2.1.1.tgz#f414982bc6ab275b80ec517d2e44a779c374ff9c" + integrity sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg== + dependencies: + "@smithy/types" "^2.9.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@smithy/middleware-content-length@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz#df767de12d594bc5622009fb0fc8343522697d8c" + integrity sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g== + dependencies: + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/middleware-endpoint@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz#9e500df4d944741808e92018ccd2e948b598a49f" + integrity sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q== + dependencies: + "@smithy/middleware-serde" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-middleware" "^2.1.1" + tslib "^2.5.0" + +"@smithy/middleware-retry@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz#ddc749dd927f136714f76ca5a52dcfb0993ee162" + integrity sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA== + dependencies: + "@smithy/node-config-provider" "^2.2.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/service-error-classification" "^2.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-middleware" "^2.1.1" + "@smithy/util-retry" "^2.1.1" + tslib "^2.5.0" + uuid "^8.3.2" + +"@smithy/middleware-serde@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz#2c5750f76e276a5249720f6c3c24fac29abbee16" + integrity sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/middleware-stack@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz#67f992dc36e8a6861f881f80a81c1c30956a0396" + integrity sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/node-config-provider@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz#c440c7948d58d72f0e212aa1967aa12f0729defd" + integrity sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg== + dependencies: + "@smithy/property-provider" "^2.1.1" + "@smithy/shared-ini-file-loader" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/node-http-handler@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz#77d23279ff0a12cbe7cde93c5e7c0e86ad56dd20" + integrity sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA== + dependencies: + "@smithy/abort-controller" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/querystring-builder" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/property-provider@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-2.1.1.tgz#0f7ffc5e43829eaca5b2b5aae8554807a52b30f3" + integrity sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/protocol-http@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-3.1.1.tgz#eee522d0ed964a72b735d64925e07bcfb7a7806f" + integrity sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/querystring-builder@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz#b9693448ad3f8e0767d84cf5cae29f35514591fb" + integrity sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg== + dependencies: + "@smithy/types" "^2.9.1" + "@smithy/util-uri-escape" "^2.1.1" + tslib "^2.5.0" + +"@smithy/querystring-parser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz#a4282a66cc56844317dbff824e573f469bbfc032" + integrity sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/service-error-classification@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz#dd24e1ec529ae9ec8e87d8b15f0fc8f7e17f3d02" + integrity sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw== + dependencies: + "@smithy/types" "^2.9.1" + +"@smithy/shared-ini-file-loader@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz#a2e28b4d85f8a8262a84403fa2b74a086b3a7703" + integrity sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/signature-v4@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-2.1.1.tgz#6080171e3d694f40d3f553bbc236c5c433efd4d2" + integrity sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg== + dependencies: + "@smithy/eventstream-codec" "^2.1.1" + "@smithy/is-array-buffer" "^2.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-hex-encoding" "^2.1.1" + "@smithy/util-middleware" "^2.1.1" + "@smithy/util-uri-escape" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@smithy/smithy-client@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-2.3.1.tgz#0c3a4a0d3935c7ad2240cc23181f276705212b1f" + integrity sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA== + dependencies: + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/types" "^2.9.1" + "@smithy/util-stream" "^2.1.1" + tslib "^2.5.0" + +"@smithy/types@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.9.1.tgz#ed04d4144eed3b8bd26d20fc85aae8d6e357ebb9" + integrity sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw== + dependencies: + tslib "^2.5.0" + +"@smithy/url-parser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-2.1.1.tgz#a30de227b6734650d740b6dff74d488b874e85e3" + integrity sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q== + dependencies: + "@smithy/querystring-parser" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/util-base64@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-2.1.1.tgz#af729085cc9d92ebd54a5d2c5d0aa5a0c31f83bf" + integrity sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g== + dependencies: + "@smithy/util-buffer-from" "^2.1.1" + tslib "^2.5.0" + +"@smithy/util-body-length-browser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz#1fc77072768013ae646415eedb9833cd252d055d" + integrity sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag== + dependencies: + tslib "^2.5.0" + +"@smithy/util-body-length-node@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz#a6f5c9911f1c3e23efb340d5ce7a590b62f2056e" + integrity sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg== + dependencies: + tslib "^2.5.0" + +"@smithy/util-buffer-from@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz#f9346bf8b23c5ba6f6bdb61dd9db779441ba8d08" + integrity sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg== + dependencies: + "@smithy/is-array-buffer" "^2.1.1" + tslib "^2.5.0" + +"@smithy/util-config-provider@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz#aea0a80236d6cedaee60473802899cff4a8cc0ba" + integrity sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw== + dependencies: + tslib "^2.5.0" + +"@smithy/util-defaults-mode-browser@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz#be9ac82acee6ec4821b610e7187b0e147f0ba8ff" + integrity sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA== + dependencies: + "@smithy/property-provider" "^2.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + bowser "^2.11.0" + tslib "^2.5.0" + +"@smithy/util-defaults-mode-node@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.0.tgz#72fd6f945c265f1ef9be647fe829d55df5101390" + integrity sha512-iFJp/N4EtkanFpBUtSrrIbtOIBf69KNuve03ic1afhJ9/korDxdM0c6cCH4Ehj/smI9pDCfVv+bqT3xZjF2WaA== + dependencies: + "@smithy/config-resolver" "^2.1.1" + "@smithy/credential-provider-imds" "^2.2.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/util-endpoints@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz#45426dba6fb42282a0ad955600b2b3ba050d118f" + integrity sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw== + dependencies: + "@smithy/node-config-provider" "^2.2.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz#978252b9fb242e0a59bae4ead491210688e0d15f" + integrity sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg== + dependencies: + tslib "^2.5.0" + +"@smithy/util-middleware@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-2.1.1.tgz#903ba19bb17704f4b476fb9ade9bf9eb0174bc3d" + integrity sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA== + dependencies: + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/util-retry@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-2.1.1.tgz#f2d3566b6e5b841028c7240c852007d4037e49b2" + integrity sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA== + dependencies: + "@smithy/service-error-classification" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@smithy/util-stream@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-2.1.1.tgz#3ae0e88c3a1a45899e29c1655d2e5a3865b6c0a6" + integrity sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ== + dependencies: + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-buffer-from" "^2.1.1" + "@smithy/util-hex-encoding" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@smithy/util-uri-escape@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz#7eedc93b73ecda68f12fb9cf92e9fa0fbbed4d83" + integrity sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw== + dependencies: + tslib "^2.5.0" + +"@smithy/util-utf8@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.1.1.tgz#690018dd28f47f014114497735e51417ea5900a6" + integrity sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A== + dependencies: + "@smithy/util-buffer-from" "^2.1.1" + tslib "^2.5.0" + +"@smithy/util-waiter@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-2.1.1.tgz#292d4d09cda7df38aba6ea2abd7d948e3f11bf2d" + integrity sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA== + dependencies: + "@smithy/abort-controller" "^2.1.1" + "@smithy/types" "^2.9.1" + tslib "^2.5.0" + +"@swc/helpers@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== + dependencies: + tslib "^2.4.0" "@types/node@*": version "14.14.41" @@ -110,90 +1167,60 @@ resolved "https://registry.yarnpkg.com/@types/sqlstring/-/sqlstring-2.3.0.tgz#5960ade0166cfaaa4673fc74ec8157a08d06c89e" integrity sha512-kMFecDYYFk/f5fljO0UFrSPwU1JxY4mIjX6ic7MHv5nD6sEd3NYLoWcOV/3s6Drs7RHdCwTQdD5NdgVl0I2zzg== -aws-sdk@^2.929.0: - version "2.929.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.929.0.tgz#fa0bfc0e97f0b38b2086f83eb1546d946b6215c9" - integrity sha512-rJ36UbkGhB8qhR4eH0D+TgNPA6wwwKh4885fN/v9uToNd8/Fz8HdgNLw9uy0QYOFOgqK99eWfpMGQyOR6DL+Bg== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.15.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "3.3.2" - xml2js "0.4.19" - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -caniuse-lite@^1.0.30001332: - version "1.0.30001359" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" - integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== - -core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +caniuse-lite@^1.0.30001579: + version "1.0.30001589" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb" + integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg== + +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== csstype@^3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== -dayjs@^1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986" - integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g== +dayjs@^1.11.10: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== dotenv@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -events@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -ieee754@1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +graceful-fs@^4.2.11: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -isarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -jmespath@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= - "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -206,89 +1233,67 @@ loose-envify@^1.1.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -nanoid@^3.1.30: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -next@^12.1.6: - version "12.1.6" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" - integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== +next@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.0.tgz#b31c0261ff9caa6b4a17c5af019ed77387174b69" + integrity sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q== dependencies: - "@next/env" "12.1.6" - caniuse-lite "^1.0.30001332" - postcss "8.4.5" - styled-jsx "5.0.2" + "@next/env" "14.1.0" + "@swc/helpers" "0.5.2" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.6" - "@next/swc-android-arm64" "12.1.6" - "@next/swc-darwin-arm64" "12.1.6" - "@next/swc-darwin-x64" "12.1.6" - "@next/swc-linux-arm-gnueabihf" "12.1.6" - "@next/swc-linux-arm64-gnu" "12.1.6" - "@next/swc-linux-arm64-musl" "12.1.6" - "@next/swc-linux-x64-gnu" "12.1.6" - "@next/swc-linux-x64-musl" "12.1.6" - "@next/swc-win32-arm64-msvc" "12.1.6" - "@next/swc-win32-ia32-msvc" "12.1.6" - "@next/swc-win32-x64-msvc" "12.1.6" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + "@next/swc-darwin-arm64" "14.1.0" + "@next/swc-darwin-x64" "14.1.0" + "@next/swc-linux-arm64-gnu" "14.1.0" + "@next/swc-linux-arm64-musl" "14.1.0" + "@next/swc-linux-x64-gnu" "14.1.0" + "@next/swc-linux-x64-musl" "14.1.0" + "@next/swc-win32-arm64-msvc" "14.1.0" + "@next/swc-win32-ia32-msvc" "14.1.0" + "@next/swc-win32-x64-msvc" "14.1.0" picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -postcss@8.4.5: - version "8.4.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" - integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - nanoid "^3.1.30" + nanoid "^3.3.6" picocolors "^1.0.0" - source-map-js "^1.0.1" + source-map-js "^1.0.2" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" + scheduler "^0.23.0" -react-icons@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.2.0.tgz#6dda80c8a8f338ff96a1851424d63083282630d0" - integrity sha512-rmzEDFt+AVXRzD7zDE21gcxyBizD/3NqjbX6cmViAgdqfJ2UiLer8927/QhhrXQV7dEj/1EGuOTPp7JnLYVJKQ== +react-icons@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.0.1.tgz#1694e11bfa2a2888cab47dcc30154ce90485feee" + integrity sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw== -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" readable-stream@^3.0.0: version "3.6.0" @@ -299,11 +1304,6 @@ readable-stream@^3.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - regex-combiner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/regex-combiner/-/regex-combiner-1.0.1.tgz#2f55d0ac4a1ac471153207cadde8e1e2b89fab18" @@ -314,25 +1314,14 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" -source-map-js@^1.0.1: +source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -344,10 +1333,15 @@ split2@^3.2.2: dependencies: readable-stream "^3.0.0" -sqlstring@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.2.tgz#cdae7169389a1375b18e885f2e60b3e460809514" - integrity sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg== +sqlstring@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string_decoder@^1.1.1: version "1.3.0" @@ -356,38 +1350,32 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -styled-jsx@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" - integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -twemoji-parser@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-11.0.2.tgz#24e87c2008abe8544c962f193b88b331de32b446" - integrity sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA== - -twitter-text@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/twitter-text/-/twitter-text-3.1.0.tgz#798e932b289f506efe2a1f03fe917ba30627f125" - integrity sha512-nulfUi3FN6z0LUjYipJid+eiwXvOLb8Ass7Jy/6zsXmZK3URte043m8fL3FyDzrK+WLpyqhHuR/TcARTN/iuGQ== +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== dependencies: - "@babel/runtime" "^7.3.1" - core-js "^2.5.0" - punycode "1.4.1" - twemoji-parser "^11.0.2" + client-only "0.0.1" -typescript@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" - integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= - dependencies: - punycode "1.3.2" - querystring "0.2.0" +tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== use-debounce@^6.0.1: version "6.0.1" @@ -399,20 +1387,7 @@ util-deprecate@^1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==