From 84d26b38a455f52c25342b3b0f31e45acb4ae901 Mon Sep 17 00:00:00 2001 From: evan kirkiles Date: Mon, 10 Oct 2022 17:37:57 -0400 Subject: [PATCH] Added submission page. --- package.json | 9 +- public/sitemap.xml | 5 +- .../FileUpload/FileUpload.module.scss | 89 ++ src/components/FileUpload/FileUpload.tsx | 71 ++ src/components/Header/Header.module.scss | 8 + src/components/Header/Header.tsx | 7 +- .../SubmitForm/SubmitForm.module.scss | 190 ++++ src/components/SubmitForm/SubmitForm.tsx | 266 +++++ src/pages/index.tsx | 17 + src/pages/submit.tsx | 6 +- src/styles/Submit.module.scss | 22 +- src/supabase/API.ts | 263 +++++ src/supabase/api/spaces.ts | 24 +- src/supabase/api/spaces_private.ts | 27 + src/supabase/types.ts | 9 + src/util/getImageDimensions.ts | 19 + src/util/getMD5Hash.ts | 57 ++ src/util/s3client.ts | 62 ++ yarn.lock | 957 +++++++++++++++++- 19 files changed, 2090 insertions(+), 18 deletions(-) create mode 100644 src/components/FileUpload/FileUpload.module.scss create mode 100644 src/components/FileUpload/FileUpload.tsx create mode 100644 src/components/SubmitForm/SubmitForm.module.scss create mode 100644 src/components/SubmitForm/SubmitForm.tsx create mode 100644 src/supabase/api/spaces_private.ts create mode 100644 src/util/getImageDimensions.ts create mode 100644 src/util/getMD5Hash.ts create mode 100644 src/util/s3client.ts diff --git a/package.json b/package.json index 2016e5b..2df1948 100644 --- a/package.json +++ b/package.json @@ -12,20 +12,27 @@ "postbuild": "next-sitemap" }, "dependencies": { + "@aws-sdk/client-s3": "^3.186.0", + "@next/env": "^12.3.1", "@supabase/auth-helpers-nextjs": "^0.2.9", "@supabase/auth-helpers-react": "^0.2.3", "@supabase/supabase-js": "^1.35.7", + "hash-wasm": "^4.9.0", "next": "12.3.1", "next-seo": "^5.5.0", "react": "18.2.0", "react-dom": "18.2.0", + "react-icons": "^4.4.0", "react-query": "^3.39.2", - "react-transition-group": "^4.4.5" + "react-textarea-autosize": "^8.3.4", + "react-transition-group": "^4.4.5", + "uuid": "^9.0.0" }, "devDependencies": { "@types/node": "^18.7.2", "@types/react": "18.0.17", "@types/react-dom": "18.0.6", + "@types/uuid": "^8.3.4", "eslint": "8.23.1", "eslint-config-next": "12.3.1", "eslint-config-prettier": "^8.5.0", diff --git a/public/sitemap.xml b/public/sitemap.xml index c92e5b3..6c6d765 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1,5 +1,6 @@ -https://abitofpersonal.space2022-10-10T08:29:19.127Zdaily0.7 -https://abitofpersonal.space/about2022-10-10T08:29:19.127Zdaily0.7 +https://abitofpersonal.space2022-10-10T21:37:38.287Zdaily0.7 +https://abitofpersonal.space/about2022-10-10T21:37:38.287Zdaily0.7 +https://abitofpersonal.space/submit2022-10-10T21:37:38.287Zdaily0.7 \ No newline at end of file diff --git a/src/components/FileUpload/FileUpload.module.scss b/src/components/FileUpload/FileUpload.module.scss new file mode 100644 index 0000000..745b37b --- /dev/null +++ b/src/components/FileUpload/FileUpload.module.scss @@ -0,0 +1,89 @@ +@import '../../styles/mixins'; + +.file_input { + flex: 1; + width: 100%; + border: $border; + border-radius: 5px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + cursor: pointer; + transition: transform 0.1s ease-in-out, opacity 0.1s ease-in-out, + background-position 0.3s ease-in-out; + background: linear-gradient(to right, $highlight 50%, white 50%); + background-size: 200% 100%; + background-position: right bottom; + letter-spacing: -1px; + white-space: nowrap; + min-width: 100px; + overflow: hidden; + position: relative; + + &:hover { + transform: scale(0.95); + opacity: 1; + } +} + +.file_input_filled { + @extend .file_input; + opacity: 1; + transition: transform 0.1s ease-in-out, opacity 0.1s ease-in-out, + background-position 0.5s ease-in-out; + + &::after { + position: absolute; + width: calc(100% - 6px); + height: calc(100% - 6px); + top: 3px; + left: 3px; + content: ' '; + border: 1px solid $highlight; + border-radius: 5px; + } + overflow: hidden; +} + +.file_input_real { + display: none; +} + +.file_input_real_populated { + display: none; + pointer-events: none; +} + +.file_icon { + border-left: $border; + background-color: white; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + height: 100%; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + padding: 5px 10px; + cursor: pointer; + pointer-events: all; + + & svg { + transform-origin: 50% 50%; + transition: transform 0.1s ease-in-out; + } + + &:hover svg { + transform: scale(1.2); + } +} + +.file_title { + position: absolute; + bottom: 7px; + left: 10px; + z-index: 1; + opacity: 0.5; + font-style: italic; +} diff --git a/src/components/FileUpload/FileUpload.tsx b/src/components/FileUpload/FileUpload.tsx new file mode 100644 index 0000000..7c924af --- /dev/null +++ b/src/components/FileUpload/FileUpload.tsx @@ -0,0 +1,71 @@ +/* + * FileUpload.tsx + * author: evan kirkiles + * created on Thu Aug 25 2022 + * 2022 the nobot space, + */ +import s from './FileUpload.module.scss'; +import { FiX, FiCheckCircle, FiUpload } from 'react-icons/fi'; +import { + ChangeEventHandler, + HTMLAttributes, + MouseEventHandler, + useRef, +} from 'react'; + +type FileUploadProps = { + file: File | null; + setFile: (newFile: File | null) => void; + accept?: string; + children?: React.ReactNode; + style?: HTMLAttributes['style']; + required?: boolean; +}; + +const FileUpload: React.FC = function FileUpload({ + file, + accept, + setFile, + children, + style, + required, +}) { + const inputRef = useRef(null); + const onChange: ChangeEventHandler = (event) => { + if (!event.target.files) return; + setFile(event.target.files[0]); + }; + + const onClearClick: MouseEventHandler = (event) => { + event.stopPropagation(); + setFile(null); + if (inputRef.current) inputRef.current.value = ''; + }; + + return ( + <> + + + + ); +}; + +export default FileUpload; diff --git a/src/components/Header/Header.module.scss b/src/components/Header/Header.module.scss index 3699f96..1662ef8 100644 --- a/src/components/Header/Header.module.scss +++ b/src/components/Header/Header.module.scss @@ -49,3 +49,11 @@ gap: 10px; cursor: pointer; } + +.internal_link { + cursor: pointer; + + &:hover { + border-bottom: $border; + } +} diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index bb59f0a..b2022ae 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -5,7 +5,6 @@ * 2022 the nobot space, */ import Link from 'next/link'; -import { useEffect, useState } from 'react'; import Logo from '../Logo/Logo'; import s from './Header.module.scss'; @@ -20,13 +19,13 @@ const Header: React.FC = function Header() {
-
submit
+
submit
-
about
+
about
-
credits
+
credits
diff --git a/src/components/SubmitForm/SubmitForm.module.scss b/src/components/SubmitForm/SubmitForm.module.scss new file mode 100644 index 0000000..ca93903 --- /dev/null +++ b/src/components/SubmitForm/SubmitForm.module.scss @@ -0,0 +1,190 @@ +/* + * SubmitForm.module.scss + * author: evan kirkiles + * created on Mon Oct 10 2022 + * 2022 the nobot space, + */ +@import '../../styles/mixins'; + +.container { + max-width: 600px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; +} + +.title { + font-size: 40px; + margin: 0px; + + @include respond-to('small') { + font-size: 60px; + } +} + +.subtext { + display: inline-block; + font-family: Helvetica Neue; +} + +.upload_row { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + gap: 10px; +} + +@keyframes faderight { + from { + opacity: 0; + transform: translateX(-10px); + } + to { + opacity: 1; + transform: translateX(0px); + } +} + +.form_container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + width: calc(100% - 10px); + padding: 10px; + border: 1px solid #d0d0d0; + position: relative; + margin-left: 10px; + animation: faderight 0.3s ease-in-out; + animation-fill-mode: backwards; + animation-delay: 0.2s; + + &::before { + content: 'FORM'; + position: absolute; + writing-mode: vertical-lr; + top: 0; + left: -3px; + transform: translateX(-100%) scale(-1, -1); + } +} + +.file_upload_container { + height: 100px; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.file_type { + font-size: 20px; +} + +.file_accepts { + font-style: italic; + opacity: 0.5; +} + +.annotation { + width: 100%; + opacity: 0.6; + font-size: 11px; + border-bottom: 1px solid $background2; + margin-top: 5px; + margin-bottom: 5px; + color: black; + + &:first-of-type { + margin-top: 0px; + } +} + +.input_row { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + width: 100%; + gap: 10px; +} + +.input_table { + display: table; + width: 100%; + + & tbody { + width: 100%; + } + + & td:first-of-type { + min-width: 0px; + } +} + +.input_field { + width: 100%; + flex: 1; + text-align: left; + padding: 5px 5px; + border-radius: 5px; + border: none; + border-bottom: 1px solid #d0d0d0; + border-radius: 0px; + outline: none; + resize: none; + font-size: 15px; + font-family: 'FT88'; + flex-shrink: 0; +} + +.submit_row { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: content; + width: 100%; + padding: 5px 10px; +} + +.submit_button { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 5px; + border: $border; + cursor: pointer; + transition: all 0.1s ease-in-out; + opacity: 0.3; + background-color: $background; + font-family: 'Schnyder L'; + font-size: 15px; + + &:hover { + letter-spacing: 1px; + } + + &[class~='ready'] { + opacity: 1; + } +} + +.required::after { + content: ' *'; + color: $highlight; +} + +.form_required_note { + position: absolute; + bottom: -5px; + left: 10px; + font-style: italic; + font-size: 13px; + opacity: 0.5; + transform: translateY(100%); +} diff --git a/src/components/SubmitForm/SubmitForm.tsx b/src/components/SubmitForm/SubmitForm.tsx new file mode 100644 index 0000000..d17f212 --- /dev/null +++ b/src/components/SubmitForm/SubmitForm.tsx @@ -0,0 +1,266 @@ +/* + * SubmitForm.tsx + * author: evan kirkiles + * created on Mon Oct 10 2022 + * 2022 the nobot space, + */ +import { useRef, useState } from 'react'; +import FileUpload from '../FileUpload/FileUpload'; +import TextareaAutosize from 'react-textarea-autosize'; +import s from './SubmitForm.module.scss'; +import { useMutation } from 'react-query'; +import { v4 as uuid } from 'uuid'; +import { uploadFile } from '../../util/s3client'; +import { insertSpace } from '../../supabase/api/spaces'; +import getImageDimensions from '../../util/getImageDimensions'; +import * as APIt from '../../supabase/types'; +import { insertSpacePrivate } from '../../supabase/api/spaces_private'; + +const SubmitForm: React.FC = function () { + // input field forms + const formRef = useRef(null); + const [doorFile, setDoorFile] = useState(null); + const [spaceFile, setSpaceFile] = useState(null); + const [title, setTitle] = useState(''); + const [author, setAuthor] = useState(''); + const [location, setLocation] = useState(''); + const [description, setDescription] = useState(''); + const [email, setEmail] = useState(''); + + // mutation messages + const [statusMessage, setStatusMessage] = useState(null); + + // form submission functions as a mutation + const submit = useMutation( + async () => { + // if none of any required fields, fail. + if (!doorFile || !spaceFile || !title || !email) + throw new Error('invalid inputs.'); + + /* ---------------------------- upload files ---------------------------- */ + // 0. generate s3 prefix from space title + some basic salt + const SPACE_S3_PREFIX = `spaces/${title.replace( + /[^a-zA-Z0-9-_\.]/g, + '' + )}_${uuid().substring(0, 5)}`; + + // 1. upload each s3 file + // door file + setStatusMessage('Uploading door...'); + const doorFileKey = `${SPACE_S3_PREFIX}/${doorFile.name.replace( + /[^a-zA-Z0-9-_\.]/g, + '' + )}`; + const file_door_dimensions = await getImageDimensions( + URL.createObjectURL(doorFile) + ); + const door_object = await uploadFile(doorFileKey, doorFile); + // space file + setStatusMessage('Uploading space...'); + const spaceFileKey = `${SPACE_S3_PREFIX}/${spaceFile.name.replace( + /[^a-zA-Z0-9-_\.]/g, + '' + )}`; + const space_object = await uploadFile(spaceFileKey, spaceFile); + + /* --------------------------- generate entry --------------------------- */ + + // 2. using the uploaded file keys, create the space entry + setStatusMessage('Creating space submission...'); + const space = ( + await insertSpace({ + title, + description: description || undefined, + author: author || undefined, + verified: false, + location: location || undefined, + file_door: { + ...file_door_dimensions, + object: door_object, + }, + file_space: space_object, + }) + )[0]; + // insert the email to refer to the space + await insertSpacePrivate({ + space_id: space.id, + email, + }); + + // 3. finished. + setStatusMessage('done!'); + return space; + }, + { + onSuccess: () => { + console.log('uploaded!'); + }, + } + ); + + // submits the form, beginning the async submission + const onFormSubmit: React.FormEventHandler = (e) => { + e.preventDefault(); + if (!submit.isLoading) submit.mutate(); + return false; + }; + + // whether or not the form can be submitted + const canSubmit = !!title && !!doorFile && !!spaceFile && !!email; + + return ( +
+

Submit your space.

+

+ if you would like to contribute your own personal space to the project, + follow the instructions here to create a scan. upon submission, i will + create collision boxes for your space and mark it as verified as soon as + i can, allowing your space to be explored and engaged with by the + audience. +

+
+
+ Upload your files – submit the files of your space. +
+
+
+ +
DOOR
+
.png, .jpg...
+
+
+
+ +
SPACE
+
.glb
+
+
+
+
+ Identify your space – add as much information as you wish. +
+ + + + + + + + + + + + + + + + + + + +
+ + + { + setTitle(e.target.value); + }} + /> +
+ + + { + setAuthor(e.target.value); + }} + /> +
+ + + { + setLocation(e.target.value); + }} + /> +
+ + + { + setDescription(event.target.value); + }} + > +
+
+ Email – will not be shared publicly. used for updates on your + space's verification status. +
+
+ + { + setEmail(e.target.value); + }} + /> +
+
+ marks a required field. +
+
+
+ +
+
+ ); +}; + +export default SubmitForm; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 0aa5272..436737c 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -23,6 +23,7 @@ import { } from '../supabase/api/tags'; import { useInfiniteQuery } from 'react-query'; import Link from 'next/link'; +import * as APIt from '../supabase/types'; const HomePage: React.FC = function Home() { // get the tags query to show in the filter bar @@ -36,6 +37,22 @@ const HomePage: React.FC = function Home() { { getNextPageParam: getNextPageParam(tagParams) } ); + // list the spaces + const spaceParams = { + search: '', + filter: undefined, + }; + const spacesQuery = useInfiniteQuery( + spaceKeys.list(spaceParams), + ({ pageParam = null }) => listSpaces(spaceParams, pageParam), + { + getNextPageParam: getNextPageParam(spaceParams), + keepPreviousData: true, + } + ); + + console.log(spacesQuery.data); + return (
diff --git a/src/pages/submit.tsx b/src/pages/submit.tsx index f57114b..de3a9cb 100644 --- a/src/pages/submit.tsx +++ b/src/pages/submit.tsx @@ -9,6 +9,7 @@ import { NextPage } from 'next'; import { NextSeo } from 'next-seo'; import Head from 'next/head'; import Header from '../components/Header/Header'; +import SubmitForm from '../components/SubmitForm/SubmitForm'; import s from '../styles/Submit.module.scss'; const SubmitPage: NextPage = function SubmitPage() { @@ -21,8 +22,11 @@ const SubmitPage: NextPage = function SubmitPage() { description={'submit your own personal space.'} /> +
-
+ {/*
*/} + + {/*
*/}
); diff --git a/src/styles/Submit.module.scss b/src/styles/Submit.module.scss index 096b1f5..328b43c 100644 --- a/src/styles/Submit.module.scss +++ b/src/styles/Submit.module.scss @@ -6,14 +6,30 @@ */ @import '../styles/mixins'; +@keyframes fadeup { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0px); + } +} + .container { width: 100%; height: 100%; overflow: hidden; - position: relative; display: flex; flex-direction: column; - justify-content: flex-start; + justify-content: center; align-items: center; - min-height: 100vh; + min-height: calc(100vh - $header-height); + padding: 20px; + animation: fadeup 0.3s ease-in-out; + background-color: $background; + background-image: radial-gradient(#c0c0c0 0.5px, $background 0.5px); + background-size: 20px 20px; + user-select: auto; } diff --git a/src/supabase/API.ts b/src/supabase/API.ts index b55e278..da6d75d 100644 --- a/src/supabase/API.ts +++ b/src/supabase/API.ts @@ -12,6 +12,96 @@ export interface paths { }; }; }; + '/spaces_private': { + get: { + parameters: { + query: { + space_id?: parameters['rowFilter.spaces_private.space_id']; + email?: parameters['rowFilter.spaces_private.email']; + /** Filtering Columns */ + select?: parameters['select']; + /** Ordering */ + order?: parameters['order']; + /** Limiting and Pagination */ + offset?: parameters['offset']; + /** Limiting and Pagination */ + limit?: parameters['limit']; + }; + header: { + /** Limiting and Pagination */ + Range?: parameters['range']; + /** Limiting and Pagination */ + 'Range-Unit'?: parameters['rangeUnit']; + /** Preference */ + Prefer?: parameters['preferCount']; + }; + }; + responses: { + /** OK */ + 200: { + schema: definitions['spaces_private'][]; + }; + /** Partial Content */ + 206: unknown; + }; + }; + post: { + parameters: { + body: { + /** spaces_private */ + spaces_private?: definitions['spaces_private']; + }; + query: { + /** Filtering Columns */ + select?: parameters['select']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** Created */ + 201: unknown; + }; + }; + delete: { + parameters: { + query: { + space_id?: parameters['rowFilter.spaces_private.space_id']; + email?: parameters['rowFilter.spaces_private.email']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** No Content */ + 204: never; + }; + }; + patch: { + parameters: { + query: { + space_id?: parameters['rowFilter.spaces_private.space_id']; + email?: parameters['rowFilter.spaces_private.email']; + }; + body: { + /** spaces_private */ + spaces_private?: definitions['spaces_private']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** No Content */ + 204: never; + }; + }; + }; '/spaces': { get: { parameters: { @@ -219,15 +309,138 @@ export interface paths { }; }; }; + '/spaces_view': { + get: { + parameters: { + query: { + id?: parameters['rowFilter.spaces_view.id']; + title?: parameters['rowFilter.spaces_view.title']; + description?: parameters['rowFilter.spaces_view.description']; + author?: parameters['rowFilter.spaces_view.author']; + file_door?: parameters['rowFilter.spaces_view.file_door']; + file_space?: parameters['rowFilter.spaces_view.file_space']; + created_at?: parameters['rowFilter.spaces_view.created_at']; + verified?: parameters['rowFilter.spaces_view.verified']; + location?: parameters['rowFilter.spaces_view.location']; + /** Filtering Columns */ + select?: parameters['select']; + /** Ordering */ + order?: parameters['order']; + /** Limiting and Pagination */ + offset?: parameters['offset']; + /** Limiting and Pagination */ + limit?: parameters['limit']; + }; + header: { + /** Limiting and Pagination */ + Range?: parameters['range']; + /** Limiting and Pagination */ + 'Range-Unit'?: parameters['rangeUnit']; + /** Preference */ + Prefer?: parameters['preferCount']; + }; + }; + responses: { + /** OK */ + 200: { + schema: definitions['spaces_view'][]; + }; + /** Partial Content */ + 206: unknown; + }; + }; + post: { + parameters: { + body: { + /** spaces_view */ + spaces_view?: definitions['spaces_view']; + }; + query: { + /** Filtering Columns */ + select?: parameters['select']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** Created */ + 201: unknown; + }; + }; + delete: { + parameters: { + query: { + id?: parameters['rowFilter.spaces_view.id']; + title?: parameters['rowFilter.spaces_view.title']; + description?: parameters['rowFilter.spaces_view.description']; + author?: parameters['rowFilter.spaces_view.author']; + file_door?: parameters['rowFilter.spaces_view.file_door']; + file_space?: parameters['rowFilter.spaces_view.file_space']; + created_at?: parameters['rowFilter.spaces_view.created_at']; + verified?: parameters['rowFilter.spaces_view.verified']; + location?: parameters['rowFilter.spaces_view.location']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** No Content */ + 204: never; + }; + }; + patch: { + parameters: { + query: { + id?: parameters['rowFilter.spaces_view.id']; + title?: parameters['rowFilter.spaces_view.title']; + description?: parameters['rowFilter.spaces_view.description']; + author?: parameters['rowFilter.spaces_view.author']; + file_door?: parameters['rowFilter.spaces_view.file_door']; + file_space?: parameters['rowFilter.spaces_view.file_space']; + created_at?: parameters['rowFilter.spaces_view.created_at']; + verified?: parameters['rowFilter.spaces_view.verified']; + location?: parameters['rowFilter.spaces_view.location']; + }; + body: { + /** spaces_view */ + spaces_view?: definitions['spaces_view']; + }; + header: { + /** Preference */ + Prefer?: parameters['preferReturn']; + }; + }; + responses: { + /** No Content */ + 204: never; + }; + }; + }; } export interface definitions { + /** @description Private information about spaces */ + spaces_private: { + /** + * Format: uuid + * @description Note: + * This is a Primary Key. + */ + space_id: string; + /** Format: text */ + email: string; + }; /** @description Personal spaces on the site */ spaces: { /** * Format: uuid * @description Note: * This is a Primary Key. + * @default extensions.uuid_generate_v4() */ id: string; /** @@ -271,6 +484,30 @@ export interface definitions { */ created_at: string; }; + spaces_view: { + /** + * Format: uuid + * @description Note: + * This is a Primary Key. + */ + id?: string; + /** Format: text */ + title?: string; + /** Format: text */ + description?: string; + /** Format: text */ + author?: string; + /** Format: jsonb */ + file_door?: unknown; + /** Format: jsonb */ + file_space?: unknown; + /** Format: timestamp with time zone */ + created_at?: string; + /** Format: boolean */ + verified?: boolean; + /** Format: text */ + location?: string; + }; } export interface parameters { @@ -306,6 +543,12 @@ export interface parameters { offset: string; /** @description Limiting and Pagination */ limit: string; + /** @description spaces_private */ + 'body.spaces_private': definitions['spaces_private']; + /** Format: uuid */ + 'rowFilter.spaces_private.space_id': string; + /** Format: text */ + 'rowFilter.spaces_private.email': string; /** @description spaces */ 'body.spaces': definitions['spaces']; /** Format: uuid */ @@ -336,6 +579,26 @@ export interface parameters { 'rowFilter.tags.code': string; /** Format: timestamp with time zone */ 'rowFilter.tags.created_at': string; + /** @description spaces_view */ + 'body.spaces_view': definitions['spaces_view']; + /** Format: uuid */ + 'rowFilter.spaces_view.id': string; + /** Format: text */ + 'rowFilter.spaces_view.title': string; + /** Format: text */ + 'rowFilter.spaces_view.description': string; + /** Format: text */ + 'rowFilter.spaces_view.author': string; + /** Format: jsonb */ + 'rowFilter.spaces_view.file_door': string; + /** Format: jsonb */ + 'rowFilter.spaces_view.file_space': string; + /** Format: timestamp with time zone */ + 'rowFilter.spaces_view.created_at': string; + /** Format: boolean */ + 'rowFilter.spaces_view.verified': string; + /** Format: text */ + 'rowFilter.spaces_view.location': string; } export interface operations {} diff --git a/src/supabase/api/spaces.ts b/src/supabase/api/spaces.ts index 6620f8b..24549d2 100644 --- a/src/supabase/api/spaces.ts +++ b/src/supabase/api/spaces.ts @@ -5,10 +5,7 @@ * 2022 the nobot space, */ -import { - supabaseClient, - supabaseServerClient, -} from '@supabase/auth-helpers-nextjs'; +import { supabaseClient } from '@supabase/auth-helpers-nextjs'; import { applyNextPageParam, InfiniteQueryFilter, @@ -62,6 +59,25 @@ export const listSpaces = async ( return builds; }; +/* -------------------------------------------------------------------------- */ +/* MUTATIONS */ +/* -------------------------------------------------------------------------- */ + +/** + * Inserts a space into the database + * @param input + * @returns + */ +export const insertSpace = async ( + input: APIt.SpaceInput | APIt.SpaceInput[] +) => { + const { data: spaces, error } = await supabaseClient + .from('spaces') + .insert(input); + if (error) throw error; + return spaces; +}; + /* -------------------------------------------------------------------------- */ /* KEY FACTORY */ /* -------------------------------------------------------------------------- */ diff --git a/src/supabase/api/spaces_private.ts b/src/supabase/api/spaces_private.ts new file mode 100644 index 0000000..4b59a04 --- /dev/null +++ b/src/supabase/api/spaces_private.ts @@ -0,0 +1,27 @@ +/* + * spaces_private.ts + * author: evan kirkiles + * created on Mon Oct 10 2022 + * 2022 the nobot space, + */ +import { supabaseClient } from '@supabase/auth-helpers-nextjs'; +import * as APIt from '../types'; + +/* -------------------------------------------------------------------------- */ +/* MUTATIONS */ +/* -------------------------------------------------------------------------- */ + +/** + * Inserts a space into the database + * @param input + * @returns + */ +export const insertSpacePrivate = async ( + input: APIt.SpacePrivateInput | APIt.SpacePrivateInput[] +) => { + const { data: spaces, error } = await supabaseClient + .from('spaces_private') + .insert(input, { returning: 'minimal' }); + if (error) throw error; + return spaces; +}; diff --git a/src/supabase/types.ts b/src/supabase/types.ts index 089933d..83e3331 100644 --- a/src/supabase/types.ts +++ b/src/supabase/types.ts @@ -73,6 +73,14 @@ type SpaceFactory = SupabaseEntityFactory< export type Space = SpaceFactory['entity']; export type SpaceInput = SpaceFactory['input']; +/* ----------------------------- spaces_private ----------------------------- */ + +type SpacePrivateFactory = SupabaseEntityFactory< + APIt.definitions['spaces_private'] +>; +export type SpacePrivate = SpacePrivateFactory['entity']; +export type SpacePrivateInput = SpacePrivateFactory['input']; + /* -------------------------------------------------------------------------- */ /* TAGS */ /* -------------------------------------------------------------------------- */ @@ -95,5 +103,6 @@ export type Picture = { export type S3Object = { region: string; bucket: string; + version: string; key: string; }; diff --git a/src/util/getImageDimensions.ts b/src/util/getImageDimensions.ts new file mode 100644 index 0000000..a0d56da --- /dev/null +++ b/src/util/getImageDimensions.ts @@ -0,0 +1,19 @@ +/* + * getImageDimensions.ts + * author: evan kirkiles + * created on Fri Sep 09 2022 + * 2022 the nobot space, + */ + +export default async function getImageDimensions(dataURL: string) { + return new Promise<{ width: number; height: number }>((resolve) => { + const img = new Image(); + img.onload = () => { + resolve({ + height: img.height, + width: img.width, + }); + }; + img.src = dataURL; + }); +} diff --git a/src/util/getMD5Hash.ts b/src/util/getMD5Hash.ts new file mode 100644 index 0000000..34f8c70 --- /dev/null +++ b/src/util/getMD5Hash.ts @@ -0,0 +1,57 @@ +/* + * getMD5Hash.ts + * author: evan kirkiles + * created on Mon Oct 10 2022 + * 2022 the nobot space, + */ +import { createMD5 } from 'hash-wasm'; +import { IHasher } from 'hash-wasm/dist/lib/WASMInterface'; + +const chunkSize = 64 * 1024 * 1024; +let fileReader: FileReader | null = null; +let enc: TextEncoder | null = null; +let hasher: IHasher | null = null; + +function hashChunk(chunk: Blob) { + return new Promise((resolve) => { + fileReader!.onload = async (e) => { + let view: Uint8Array; + if (typeof e.target!.result === 'string') { + view = enc!.encode(e.target!.result); + } else { + view = new Uint8Array(e.target!.result!); + } + hasher!.update(view); + resolve(); + }; + fileReader!.readAsArrayBuffer(chunk); + }); +} + +/** + * Returns the MD5 hash of a file in hex + * @param file + * @returns + */ +export default async function getMD5Hash(file: File): Promise { + // set up our hashers / encoders + if (hasher) { + hasher.init(); + } else { + hasher = await createMD5(); + } + if (!enc) enc = new TextEncoder(); + if (!fileReader) fileReader = new FileReader(); + + // use hashers to hash each chunk together with WASM + const chunkNumber = Math.floor(file.size / chunkSize); + for (let i = 0; i <= chunkNumber; i++) { + const chunk = file.slice( + chunkSize * i, + Math.min(chunkSize * (i + 1), file.size) + ); + await hashChunk(chunk); + } + const hash = hasher.digest(); + return Promise.resolve(hash); +} diff --git a/src/util/s3client.ts b/src/util/s3client.ts new file mode 100644 index 0000000..42c52ec --- /dev/null +++ b/src/util/s3client.ts @@ -0,0 +1,62 @@ +/* + * s3client.ts + * author: evan kirkiles + * created on Mon Oct 10 2022 + * 2022 the nobot space, + */ +import { + S3Client, + PutObjectCommand, + ListObjectVersionsCommand, +} from '@aws-sdk/client-s3'; +import * as APIt from '../supabase/types'; +import { createHash } from 'crypto'; +import getMD5Hash from './getMD5Hash'; + +// s3 client for file uploads +const s3client = new S3Client({ + region: process.env.NEXT_PUBLIC_AWS_S3_REGION, + credentials: { + accessKeyId: process.env.NEXT_PUBLIC_AWS_ACCESS_KEY_ID!, + secretAccessKey: process.env.NEXT_PUBLIC_AWS_SECRET_KEY!, + }, +}); + +/** + * Uploads a file to the S3 bucket + * @param key + * @param file + */ +export const uploadFile = async ( + key: string, + file: File +): Promise => { + // get the MD5 hash from the file for object lock + const md5 = Buffer.from(await getMD5Hash(file), 'hex').toString('base64'); + // create the putobject command to put the file in the bucket + await s3client.send( + new PutObjectCommand({ + Bucket: process.env.NEXT_PUBLIC_AWS_S3_BUCKET, + Key: key, + Body: file, + ContentLength: file.size, + ContentType: file.type, + ContentMD5: md5, + }) + ); + // now get the object version to save in the database + const version = ( + await s3client.send( + new ListObjectVersionsCommand({ + Bucket: process.env.NEXT_PUBLIC_AWS_S3_BUCKET, + Prefix: key, + }) + ) + ).Versions![0].VersionId!; + return { + bucket: process.env.NEXT_PUBLIC_AWS_S3_BUCKET!, + region: process.env.NEXT_PUBLIC_AWS_S3_REGION!, + version: version, + key: key, + }; +}; diff --git a/yarn.lock b/yarn.lock index 05b9e5a..fd75640 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,891 @@ # yarn lockfile v1 +"@aws-crypto/crc32@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-2.0.0.tgz#4ad432a3c03ec3087c5540ff6e41e6565d2dc153" + integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-2.0.0.tgz#4235336ef78f169f6a05248906703b9b78da676e" + integrity sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a" + integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-2.0.0.tgz#71e735df20ea1d38f59259c4b1a2e00ca74a0eea" + integrity sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-sdk/types" "^3.1.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@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz#741c9024df55ec59b51e5b1f5d806a4852699fb5" + integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/sha256-js" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.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@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz#f1f936039bdebd0b9e2dd834d65afdc2aac4efcb" + integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz#c81e5d378b8a74ff1671b58632779986e50f4c99" + integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ== + dependencies: + "@aws-crypto/util" "^2.0.2" + "@aws-sdk/types" "^3.110.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz#9f02aafad8789cac9c0ab5faaebb1ab8aa841338" + integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.2.tgz#adf5ff5dfbc7713082f897f1d01e551ce0edb9c0" + integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA== + dependencies: + "@aws-sdk/types" "^3.110.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.186.0.tgz#dfaccd296d57136930582e1a19203d6cb60debc7" + integrity sha512-JFvvvtEcbYOvVRRXasi64Dd1VcOz5kJmPvtzsJ+HzMHvPbGGs/aopOJAZQJMJttzJmJwVTay0QL6yag9Kk8nYA== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader-native@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.186.0.tgz#46d14e45b3a8a895647b679f0f1e67315223820f" + integrity sha512-klbrNZYWRhfkRMSK9NJObXgU9DD1lqYufH0BjeoYgApg5Dsywa+GpN/1DQveKTxGs08GFnhsc27dJLcNJCmAXw== + dependencies: + "@aws-sdk/util-base64-browser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.186.0.tgz#45e994f34d5785e0fa8c9769a3922d8913fe2d68" + integrity sha512-ChpW/teYM0vhV4vG7/ZE4zwr2IWrLX+R/s6LulqgC9x/5fngMUAjT7D8V9UgoCwjKosxBEaKEKuGcgBdODGndg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/client-s3@^3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.186.0.tgz#07942a691d3a30616f040ce7b3f9668cb027d4c9" + integrity sha512-tUvUkqKh1MQ8g4HDJyekZnSVjJ44pjo0QZmrV9gwpnyCymYoxPShz5zT5CsYyXYTOx81yxIBw6/mkFKEJ8MZ2g== + dependencies: + "@aws-crypto/sha1-browser" "2.0.0" + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/client-sts" "3.186.0" + "@aws-sdk/config-resolver" "3.186.0" + "@aws-sdk/credential-provider-node" "3.186.0" + "@aws-sdk/eventstream-serde-browser" "3.186.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.186.0" + "@aws-sdk/eventstream-serde-node" "3.186.0" + "@aws-sdk/fetch-http-handler" "3.186.0" + "@aws-sdk/hash-blob-browser" "3.186.0" + "@aws-sdk/hash-node" "3.186.0" + "@aws-sdk/hash-stream-node" "3.186.0" + "@aws-sdk/invalid-dependency" "3.186.0" + "@aws-sdk/md5-js" "3.186.0" + "@aws-sdk/middleware-bucket-endpoint" "3.186.0" + "@aws-sdk/middleware-content-length" "3.186.0" + "@aws-sdk/middleware-expect-continue" "3.186.0" + "@aws-sdk/middleware-flexible-checksums" "3.186.0" + "@aws-sdk/middleware-host-header" "3.186.0" + "@aws-sdk/middleware-location-constraint" "3.186.0" + "@aws-sdk/middleware-logger" "3.186.0" + "@aws-sdk/middleware-recursion-detection" "3.186.0" + "@aws-sdk/middleware-retry" "3.186.0" + "@aws-sdk/middleware-sdk-s3" "3.186.0" + "@aws-sdk/middleware-serde" "3.186.0" + "@aws-sdk/middleware-signing" "3.186.0" + "@aws-sdk/middleware-ssec" "3.186.0" + "@aws-sdk/middleware-stack" "3.186.0" + "@aws-sdk/middleware-user-agent" "3.186.0" + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/node-http-handler" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/signature-v4-multi-region" "3.186.0" + "@aws-sdk/smithy-client" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/url-parser" "3.186.0" + "@aws-sdk/util-base64-browser" "3.186.0" + "@aws-sdk/util-base64-node" "3.186.0" + "@aws-sdk/util-body-length-browser" "3.186.0" + "@aws-sdk/util-body-length-node" "3.186.0" + "@aws-sdk/util-defaults-mode-browser" "3.186.0" + "@aws-sdk/util-defaults-mode-node" "3.186.0" + "@aws-sdk/util-stream-browser" "3.186.0" + "@aws-sdk/util-stream-node" "3.186.0" + "@aws-sdk/util-user-agent-browser" "3.186.0" + "@aws-sdk/util-user-agent-node" "3.186.0" + "@aws-sdk/util-utf8-browser" "3.186.0" + "@aws-sdk/util-utf8-node" "3.186.0" + "@aws-sdk/util-waiter" "3.186.0" + "@aws-sdk/xml-builder" "3.186.0" + entities "2.2.0" + fast-xml-parser "3.19.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.186.0.tgz#233bdd1312dbf88ef9452f8a62c3c3f1ac580330" + integrity sha512-qwLPomqq+fjvp42izzEpBEtGL2+dIlWH5pUCteV55hTEwHgo+m9LJPIrMWkPeoMBzqbNiu5n6+zihnwYlCIlEA== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.186.0" + "@aws-sdk/fetch-http-handler" "3.186.0" + "@aws-sdk/hash-node" "3.186.0" + "@aws-sdk/invalid-dependency" "3.186.0" + "@aws-sdk/middleware-content-length" "3.186.0" + "@aws-sdk/middleware-host-header" "3.186.0" + "@aws-sdk/middleware-logger" "3.186.0" + "@aws-sdk/middleware-recursion-detection" "3.186.0" + "@aws-sdk/middleware-retry" "3.186.0" + "@aws-sdk/middleware-serde" "3.186.0" + "@aws-sdk/middleware-stack" "3.186.0" + "@aws-sdk/middleware-user-agent" "3.186.0" + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/node-http-handler" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/smithy-client" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/url-parser" "3.186.0" + "@aws-sdk/util-base64-browser" "3.186.0" + "@aws-sdk/util-base64-node" "3.186.0" + "@aws-sdk/util-body-length-browser" "3.186.0" + "@aws-sdk/util-body-length-node" "3.186.0" + "@aws-sdk/util-defaults-mode-browser" "3.186.0" + "@aws-sdk/util-defaults-mode-node" "3.186.0" + "@aws-sdk/util-user-agent-browser" "3.186.0" + "@aws-sdk/util-user-agent-node" "3.186.0" + "@aws-sdk/util-utf8-browser" "3.186.0" + "@aws-sdk/util-utf8-node" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.186.0.tgz#12514601b0b01f892ddb11d8a2ab4bee1b03cbf1" + integrity sha512-lyAPI6YmIWWYZHQ9fBZ7QgXjGMTtktL5fk8kOcZ98ja+8Vu0STH1/u837uxqvZta8/k0wijunIL3jWUhjsNRcg== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.186.0" + "@aws-sdk/credential-provider-node" "3.186.0" + "@aws-sdk/fetch-http-handler" "3.186.0" + "@aws-sdk/hash-node" "3.186.0" + "@aws-sdk/invalid-dependency" "3.186.0" + "@aws-sdk/middleware-content-length" "3.186.0" + "@aws-sdk/middleware-host-header" "3.186.0" + "@aws-sdk/middleware-logger" "3.186.0" + "@aws-sdk/middleware-recursion-detection" "3.186.0" + "@aws-sdk/middleware-retry" "3.186.0" + "@aws-sdk/middleware-sdk-sts" "3.186.0" + "@aws-sdk/middleware-serde" "3.186.0" + "@aws-sdk/middleware-signing" "3.186.0" + "@aws-sdk/middleware-stack" "3.186.0" + "@aws-sdk/middleware-user-agent" "3.186.0" + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/node-http-handler" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/smithy-client" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/url-parser" "3.186.0" + "@aws-sdk/util-base64-browser" "3.186.0" + "@aws-sdk/util-base64-node" "3.186.0" + "@aws-sdk/util-body-length-browser" "3.186.0" + "@aws-sdk/util-body-length-node" "3.186.0" + "@aws-sdk/util-defaults-mode-browser" "3.186.0" + "@aws-sdk/util-defaults-mode-node" "3.186.0" + "@aws-sdk/util-user-agent-browser" "3.186.0" + "@aws-sdk/util-user-agent-node" "3.186.0" + "@aws-sdk/util-utf8-browser" "3.186.0" + "@aws-sdk/util-utf8-node" "3.186.0" + entities "2.2.0" + fast-xml-parser "3.19.0" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.186.0.tgz#68bbf82b572f03ee3ec9ac84d000147e1050149b" + integrity sha512-l8DR7Q4grEn1fgo2/KvtIfIHJS33HGKPQnht8OPxkl0dMzOJ0jxjOw/tMbrIcPnr2T3Fi7LLcj3dY1Fo1poruQ== + dependencies: + "@aws-sdk/signature-v4" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-config-provider" "3.186.0" + "@aws-sdk/util-middleware" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.186.0.tgz#55dec9c4c29ebbdff4f3bce72de9e98f7a1f92e1" + integrity sha512-N9LPAqi1lsQWgxzmU4NPvLPnCN5+IQ3Ai1IFf3wM6FFPNoSUd1kIA2c6xaf0BE7j5Kelm0raZOb4LnV3TBAv+g== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.186.0.tgz#73e0f62832726c7734b4f6c50a02ab0d869c00e1" + integrity sha512-iJeC7KrEgPPAuXjCZ3ExYZrRQvzpSdTZopYgUm5TnNZ8S1NU/4nvv5xVy61JvMj3JQAeG8UDYYgC421Foc8wQw== + dependencies: + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/url-parser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.186.0.tgz#3b3873ccae855ee3f6f15dcd8212c5ca4ec01bf3" + integrity sha512-ecrFh3MoZhAj5P2k/HXo/hMJQ3sfmvlommzXuZ/D1Bj2yMcyWuBhF1A83Fwd2gtYrWRrllsK3IOMM5Jr8UIVZA== + dependencies: + "@aws-sdk/credential-provider-env" "3.186.0" + "@aws-sdk/credential-provider-imds" "3.186.0" + "@aws-sdk/credential-provider-sso" "3.186.0" + "@aws-sdk/credential-provider-web-identity" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/shared-ini-file-loader" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.186.0.tgz#0be58623660b41eed3a349a89b31a01d4cc773ea" + integrity sha512-HIt2XhSRhEvVgRxTveLCzIkd/SzEBQfkQ6xMJhkBtfJw1o3+jeCk+VysXM0idqmXytctL0O3g9cvvTHOsUgxOA== + dependencies: + "@aws-sdk/credential-provider-env" "3.186.0" + "@aws-sdk/credential-provider-imds" "3.186.0" + "@aws-sdk/credential-provider-ini" "3.186.0" + "@aws-sdk/credential-provider-process" "3.186.0" + "@aws-sdk/credential-provider-sso" "3.186.0" + "@aws-sdk/credential-provider-web-identity" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/shared-ini-file-loader" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.186.0.tgz#e3be60983261a58c212f5c38b6fb76305bbb8ce7" + integrity sha512-ATRU6gbXvWC1TLnjOEZugC/PBXHBoZgBADid4fDcEQY1vF5e5Ux1kmqkJxyHtV5Wl8sE2uJfwWn+FlpUHRX67g== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/shared-ini-file-loader" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.186.0.tgz#e1aa466543b3b0877d45b885a1c11b329232df22" + integrity sha512-mJ+IZljgXPx99HCmuLgBVDPLepHrwqnEEC/0wigrLCx6uz3SrAWmGZsNbxSEtb2CFSAaczlTHcU/kIl7XZIyeQ== + dependencies: + "@aws-sdk/client-sso" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/shared-ini-file-loader" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.186.0.tgz#db43f37f7827b553490dd865dbaa9a2c45f95494" + integrity sha512-KqzI5eBV72FE+8SuOQAu+r53RXGVHg4AuDJmdXyo7Gc4wS/B9FNElA8jVUjjYgVnf0FSiri+l41VzQ44dCopSA== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-codec@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.186.0.tgz#9da9608866b38179edf72987f2bc3b865d11db13" + integrity sha512-3kLcJ0/H+zxFlhTlE1SGoFpzd/SitwXOsTSlYVwrwdISKRjooGg0BJpm1CSTkvmWnQIUlYijJvS96TAJ+fCPIA== + dependencies: + "@aws-crypto/crc32" "2.0.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-hex-encoding" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.186.0.tgz#2a0bd942f977b3e2f1a77822ac091ddebe069475" + integrity sha512-0r2c+yugBdkP5bglGhGOgztjeHdHTKqu2u6bvTByM0nJShNO9YyqWygqPqDUOE5axcYQE1D0aFDGzDtP3mGJhw== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-config-resolver@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.186.0.tgz#6c277058bb0fa14752f0b6d7043576e0b5f13da4" + integrity sha512-xhwCqYrAX5c7fg9COXVw6r7Sa3BO5cCfQMSR5S1QisE7do8K1GDKEHvUCheOx+RLon+P3glLjuNBMdD0HfCVNA== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.186.0.tgz#dabeab714f447790c5dd31d401c5a3822b795109" + integrity sha512-9p/gdukJYfmA+OEYd6MfIuufxrrfdt15lBDM3FODuc9j09LSYSRHSxthkIhiM5XYYaaUM+4R0ZlSMdaC3vFDFQ== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-universal@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.186.0.tgz#85a88a2cd5c336b1271976fa8db70654ec90fbf4" + integrity sha512-rIgPmwUxn2tzainBoh+cxAF+b7o01CcW+17yloXmawsi0kiR7QK7v9m/JTGQPWKtHSsPOrtRzuiWQNX57SlcsQ== + dependencies: + "@aws-sdk/eventstream-codec" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/fetch-http-handler@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.186.0.tgz#c1adc5f741e1ba9ad9d3fb13c9c2afdc88530a85" + integrity sha512-k2v4AAHRD76WnLg7arH94EvIclClo/YfuqO7NoQ6/KwOxjRhs4G6TgIsAZ9E0xmqoJoV81Xqy8H8ldfy9F8LEw== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/querystring-builder" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-base64-browser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/hash-blob-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.186.0.tgz#e875f5ca75819fd2d9d7c65a924f6fbd91fac78c" + integrity sha512-u8QvmXGySqy2QRbkAfx1bX/idSiejuy2q3WKamGysy9Ylogprr5kq2v0E+7vnLo9rBjuquUbVvI5eskIgZDMmg== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.186.0" + "@aws-sdk/chunked-blob-reader-native" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/hash-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.186.0.tgz#8cb13aae8f46eb360fed76baf5062f66f27dfb70" + integrity sha512-G3zuK8/3KExDTxqrGqko+opOMLRF0BwcwekV/wm3GKIM/NnLhHblBs2zd/yi7VsEoWmuzibfp6uzxgFpEoJ87w== + dependencies: + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-buffer-from" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/hash-stream-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.186.0.tgz#260e6c6e6fbc67433444a8ab9d134c1f988036bb" + integrity sha512-n+VphPuMbl2iKrW1zVpoqQQDuPej/Hr4+I5UdZC39Cq/XfgDqh6QDy73Q9OypGuyEKrxZ5E5Pa+BWi4pGtt08w== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.186.0.tgz#aa6331ccf404cb659ec38483116080e4b82b0663" + integrity sha512-hjeZKqORhG2DPWYZ776lQ9YO3gjw166vZHZCZU/43kEYaCZHsF4mexHwHzreAY6RfS25cH60Um7dUh1aeVIpkw== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.186.0.tgz#7700e36f29d416c2677f4bf8816120f96d87f1b7" + integrity sha512-fObm+P6mjWYzxoFY4y2STHBmSdgKbIAXez0xope563mox62I8I4hhVPUCaDVydXvDpJv8tbedJMk0meJl22+xA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/md5-js@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.186.0.tgz#5b21dedab0e4847b599e793fefdd4cff189f92c8" + integrity sha512-Pp86oeTi8qtfY4fIZYrHOqRWJc0PjolxETdtWBUhtjC8HY81ckZMqe+5Aosy8mtQJus/k83S0CJAyfE2ko/a6Q== + dependencies: + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-utf8-browser" "3.186.0" + "@aws-sdk/util-utf8-node" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-bucket-endpoint@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.186.0.tgz#8182fe4502144a8cf624805194560ed979c04b7f" + integrity sha512-Vrb/ZXxWohhq86lGnp8E+H9AyNJFEt70fjFavkMCrQe7mx4+WHNc5agsTRPF+IESV0MgsbDtELP72Gzqc4fpWQ== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-arn-parser" "3.186.0" + "@aws-sdk/util-config-provider" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-content-length@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.186.0.tgz#8cc7aeec527738c46fdaf4a48b17c5cbfdc7ce58" + integrity sha512-Ol3c1ks3IK1s+Okc/rHIX7w2WpXofuQdoAEme37gHeml+8FtUlWH/881h62xfMdf+0YZpRuYv/eM7lBmJBPNJw== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-expect-continue@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.186.0.tgz#ca8b81ddb968bcfe90704403377a69808d3f24da" + integrity sha512-ITGzpajC5jPl+1TDRJCWb2ASQuy0qcMijKP6xcCRPcuAyHPgrH59f+3CCfqNcnehNJptHoD5hFIU6r+WcOF8hQ== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-flexible-checksums@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.186.0.tgz#a7bfbde70327bfd0baeb101a2b7de092425c4d1b" + integrity sha512-zb1a5b2JHNMbD0pkozs/TLIfxbvZVpAcF947LEDblD5OsC8UW/a3hTVDvq7K7TLT6jgrgEzMKJbqoxqGzPQlLA== + dependencies: + "@aws-crypto/crc32" "2.0.0" + "@aws-crypto/crc32c" "2.0.0" + "@aws-sdk/is-array-buffer" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-host-header@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.186.0.tgz#fce4f1219ce1835e2348c787d8341080b0024e34" + integrity sha512-5bTzrRzP2IGwyF3QCyMGtSXpOOud537x32htZf344IvVjrqZF/P8CDfGTkHkeBCIH+wnJxjK+l/QBb3ypAMIqQ== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-location-constraint@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.186.0.tgz#ef99c5a9a08f436e1f0a9beb49aeaae3a4fee3d8" + integrity sha512-86swCv/+BYhXMCiAU6rVRk/z009bfpGfjnVBuoFfFbHp6zS3Ak11UotTzhw/Yyiyb06p/qL4vFfRERrMYnpmew== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-logger@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.186.0.tgz#8a027fbbb1b8098ccc888bce51f34b000c0a0550" + integrity sha512-/1gGBImQT8xYh80pB7QtyzA799TqXtLZYQUohWAsFReYB7fdh5o+mu2rX0FNzZnrLIh2zBUNs4yaWGsnab4uXg== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-recursion-detection@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.186.0.tgz#9d9d3212e9a954b557840bb80415987f4484487e" + integrity sha512-Za7k26Kovb4LuV5tmC6wcVILDCt0kwztwSlB991xk4vwNTja8kKxSt53WsYG8Q2wSaW6UOIbSoguZVyxbIY07Q== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-retry@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.186.0.tgz#0ff9af58d73855863683991a809b40b93c753ad1" + integrity sha512-/VI9emEKhhDzlNv9lQMmkyxx3GjJ8yPfXH3HuAeOgM1wx1BjCTLRYEWnTbQwq7BDzVENdneleCsGAp7yaj80Aw== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/service-error-classification" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-middleware" "3.186.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.186.0.tgz#c7faaf83653760a3faffba35f2bf4f5f51e595c7" + integrity sha512-NffDytJCSNm+fkQs0sP3ePgtIkgd6Xqxfx1YI+Qzwlnej3Jdh9doDhuxxT/fQoJPfgf77y0iMC4a3tNr69fW6g== + dependencies: + "@aws-sdk/middleware-bucket-endpoint" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-arn-parser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-sdk-sts@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.186.0.tgz#18f3d6b7b42c1345b5733ac3e3119d370a403e94" + integrity sha512-GDcK0O8rjtnd+XRGnxzheq1V2jk4Sj4HtjrxW/ROyhzLOAOyyxutBt+/zOpDD6Gba3qxc69wE+Cf/qngOkEkDw== + dependencies: + "@aws-sdk/middleware-signing" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/signature-v4" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-serde@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.186.0.tgz#f7944241ad5fb31cb15cd250c9e92147942b9ec6" + integrity sha512-6FEAz70RNf18fKL5O7CepPSwTKJEIoyG9zU6p17GzKMgPeFsxS5xO94Hcq5tV2/CqeHliebjqhKY7yi+Pgok7g== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-signing@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.186.0.tgz#37633bf855667b4841464e0044492d0aec5778b9" + integrity sha512-riCJYG/LlF/rkgVbHkr4xJscc0/sECzDivzTaUmfb9kJhAwGxCyNqnTvg0q6UO00kxSdEB9zNZI2/iJYVBijBQ== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/signature-v4" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-middleware" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-ssec@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.186.0.tgz#54edcc6aa8de6f72c0e01f500a8828c338988309" + integrity sha512-nNBp3t1GvCTp+uN3stJMzHb1H/jmId+qPBFUwvCItrSUL6lLnJi+OxFr/cNuZpJdlLR3FyX0jyJEKMsBEJHAkA== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-stack@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.186.0.tgz#da3445fe74b867ee6d7eec4f0dde28aaca1125d6" + integrity sha512-fENMoo0pW7UBrbuycPf+3WZ+fcUgP9PnQ0jcOK3WWZlZ9d2ewh4HNxLh4EE3NkNYj4VIUFXtTUuVNHlG8trXjQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-user-agent@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.186.0.tgz#6d881e9cea5fe7517e220f3a47c2f3557c7f27fc" + integrity sha512-fb+F2PF9DLKOVMgmhkr+ltN8ZhNJavTla9aqmbd01846OLEaN1n5xEnV7p8q5+EznVBWDF38Oz9Ae5BMt3Hs7w== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/node-config-provider@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.186.0.tgz#64259429d39f2ef5a76663162bf2e8db6032a322" + integrity sha512-De93mgmtuUUeoiKXU8pVHXWKPBfJQlS/lh1k2H9T2Pd9Tzi0l7p5ttddx4BsEx4gk+Pc5flNz+DeptiSjZpa4A== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/shared-ini-file-loader" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.186.0.tgz#8be1598a9187637a767dc337bf22fe01461e86eb" + integrity sha512-CbkbDuPZT9UNJ4dAZJWB3BV+Z65wFy7OduqGkzNNrKq6ZYMUfehthhUOTk8vU6RMe/0FkN+J0fFXlBx/bs/cHw== + dependencies: + "@aws-sdk/abort-controller" "3.186.0" + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/querystring-builder" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/property-provider@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.186.0.tgz#af41e615662a2749d3ff7da78c41f79f4be95b3b" + integrity sha512-nWKqt36UW3xV23RlHUmat+yevw9up+T+953nfjcmCBKtgWlCWu/aUzewTRhKj3VRscbN+Wer95SBw9Lr/MMOlQ== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.186.0.tgz#99115870846312dd4202b5e2cc68fe39324b9bfa" + integrity sha512-l/KYr/UBDUU5ginqTgHtFfHR3X6ljf/1J1ThIiUg3C3kVC/Zwztm7BEOw8hHRWnWQGU/jYasGYcrcPLdQqFZyQ== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-builder@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.186.0.tgz#a380db0e1c71004932d9e2f3e6dc6761d1165c47" + integrity sha512-mweCpuLufImxfq/rRBTEpjGuB4xhQvbokA+otjnUxlPdIobytLqEs7pCGQfLzQ7+1ZMo8LBXt70RH4A2nSX/JQ== + dependencies: + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-uri-escape" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.186.0.tgz#4db6d31ad4df0d45baa2a35e371fbaa23e45ddd2" + integrity sha512-0iYfEloghzPVXJjmnzHamNx1F1jIiTW9Svy5ZF9LVqyr/uHZcQuiWYsuhWloBMLs8mfWarkZM02WfxZ8buAuhg== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.186.0.tgz#6e4e1d4b53d68bd28c28d9cf0b3b4cb6a6a59dbb" + integrity sha512-DRl3ORk4tF+jmH5uvftlfaq0IeKKpt0UPAOAFQ/JFWe+TjOcQd/K+VC0iiIG97YFp3aeFmH1JbEgsNxd+8fdxw== + +"@aws-sdk/shared-ini-file-loader@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.186.0.tgz#a2d285bb3c4f8d69f7bfbde7a5868740cd3f7795" + integrity sha512-2FZqxmICtwN9CYid4dwfJSz/gGFHyStFQ3HCOQ8DsJUf2yREMSBsVmKqsyWgOrYcQ98gPcD5GIa7QO5yl3XF6A== + dependencies: + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4-multi-region@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.186.0.tgz#1fd17ee73dc0a9974d8d3ea601b01f762a08c390" + integrity sha512-99+WIti/zaoYgRAFTWSC2206E71gi+bPtPFbijLzQHMpmB3QlzPYobx3xyepgQ+LL0FQcfqD5zFtdmlcoWTddQ== + dependencies: + "@aws-sdk/protocol-http" "3.186.0" + "@aws-sdk/signature-v4" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-arn-parser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.186.0.tgz#bbd56e71af95548abaeec6307ea1dfe7bd26b4e4" + integrity sha512-18i96P5c4suMqwSNhnEOqhq4doqqyjH4fn0YV3F8TkekHPIWP4mtIJ0PWAN4eievqdtcKgD/GqVO6FaJG9texw== + dependencies: + "@aws-sdk/is-array-buffer" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-hex-encoding" "3.186.0" + "@aws-sdk/util-middleware" "3.186.0" + "@aws-sdk/util-uri-escape" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/smithy-client@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.186.0.tgz#67514544fb55d7eff46300e1e73311625cf6f916" + integrity sha512-rdAxSFGSnrSprVJ6i1BXi65r4X14cuya6fYe8dSdgmFSa+U2ZevT97lb3tSINCUxBGeMXhENIzbVGkRZuMh+DQ== + dependencies: + "@aws-sdk/middleware-stack" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/types@3.186.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.186.0.tgz#f6fb6997b6a364f399288bfd5cd494bc680ac922" + integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== + +"@aws-sdk/url-parser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.186.0.tgz#e42f845cd405c1920fdbdcc796a350d4ace16ae9" + integrity sha512-jfdJkKqJZp8qjjwEjIGDqbqTuajBsddw02f86WiL8bPqD8W13/hdqbG4Fpwc+Bm6GwR6/4MY6xWXFnk8jDUKeA== + dependencies: + "@aws-sdk/querystring-parser" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-arn-parser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.186.0.tgz#fba484cc1e42bb4e1770391e73efb49e577758b6" + integrity sha512-hhTziyXeiNylZfZ6yXmaAhOUSmS3xQiofXRm1CcxMttHWmTOI6OrepKa2kOkNZsZe28vfuy4I7vbWPi2LcwSqA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-base64-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.186.0.tgz#0310482752163fa819718ce9ea9250836b20346d" + integrity sha512-TpQL8opoFfzTwUDxKeon/vuc83kGXpYqjl6hR8WzmHoQgmFfdFlV+0KXZOohra1001OP3FhqvMqaYbO8p9vXVQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-base64-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.186.0.tgz#500bd04b1ef7a6a5c0a2d11c0957a415922e05c7" + integrity sha512-wH5Y/EQNBfGS4VkkmiMyZXU+Ak6VCoFM1GKWopV+sj03zR2D4FHexi4SxWwEBMpZCd6foMtihhbNBuPA5fnh6w== + dependencies: + "@aws-sdk/util-buffer-from" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.186.0.tgz#a898eda9f874f6974a9c5c60fcc76bcb6beac820" + integrity sha512-zKtjkI/dkj9oGkjo+7fIz+I9KuHrVt1ROAeL4OmDESS8UZi3/O8uMDFMuCp8jft6H+WFuYH6qRVWAVwXMiasXw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.186.0.tgz#95efbacbd13cb739b942c126c5d16ecf6712d4db" + integrity sha512-U7Ii8u8Wvu9EnBWKKeuwkdrWto3c0j7LG677Spe6vtwWkvY70n9WGfiKHTgBpVeLNv8jvfcx5+H0UOPQK1o9SQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.186.0.tgz#01f7edb683d2f40374d0ca8ef2d16346dc8040a1" + integrity sha512-be2GCk2lsLWg/2V5Y+S4/9pOMXhOQo4DR4dIqBdR2R+jrMMHN9Xsr5QrkT6chcqLaJ/SBlwiAEEi3StMRmCOXA== + dependencies: + "@aws-sdk/is-array-buffer" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.186.0.tgz#52ce3711edceadfac1b75fccc7c615e90c33fb2f" + integrity sha512-71Qwu/PN02XsRLApyxG0EUy/NxWh/CXxtl2C7qY14t+KTiRapwbDkdJ1cMsqYqghYP4BwJoj1M+EFMQSSlkZQQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.186.0.tgz#d30b2f572e273d7d98287274c37c9ee00b493507" + integrity sha512-U8GOfIdQ0dZ7RRVpPynGteAHx4URtEh+JfWHHVfS6xLPthPHWTbyRhkQX++K/F8Jk+T5U8Anrrqlea4TlcO2DA== + dependencies: + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.186.0.tgz#8572453ba910fd2ab08d2cfee130ce5a0db83ba7" + integrity sha512-N6O5bpwCiE4z8y7SPHd7KYlszmNOYREa+mMgtOIXRU3VXSEHVKVWTZsHKvNTTHpW0qMqtgIvjvXCo3vsch5l3A== + dependencies: + "@aws-sdk/config-resolver" "3.186.0" + "@aws-sdk/credential-provider-imds" "3.186.0" + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/property-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.186.0.tgz#7ed58b923997c6265f4dce60c8704237edb98895" + integrity sha512-UL9rdgIZz1E/jpAfaKH8QgUxNK9VP5JPgoR0bSiaefMjnsoBh0x/VVMsfUyziOoJCMLebhJzFowtwrSKEGsxNg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.186.0.tgz#070450583105258d609ace4b6b26e9589f1ae04f" + integrity sha512-fmQLkH16ga6c5fWsA+kBYklQJjlPlcc8uayTR4avi5g3Nxqm6wPpyUwo5CppwjwWMeS+NXG0HgITtkkGntcRNg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.186.0.tgz#ba2e286b206cbead306b6d2564f9d0495f384b40" + integrity sha512-fddwDgXtnHyL9mEZ4s1tBBsKnVQHqTUmFbZKUUKPrg9CxOh0Y/zZxEa5Olg/8dS/LzM1tvg0ATkcyd4/kEHIhg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-stream-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.186.0.tgz#c20f486809998857846c9f31db4871774af35989" + integrity sha512-fXlIA4jkcGN8YVrwtNWuR3JDoQZrs47uKJrg++3T0qf9EyPRgtki7tUITZpcDx+0qnm24yyLAedIXYzYt2iGcA== + dependencies: + "@aws-sdk/fetch-http-handler" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-base64-browser" "3.186.0" + "@aws-sdk/util-hex-encoding" "3.186.0" + "@aws-sdk/util-utf8-browser" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-stream-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.186.0.tgz#7c8f3c22e97d28bdde7029cd46abfda33e83e2a1" + integrity sha512-CTb8PmgGQx/3FYA1n1+ksnzIUpJGC7jEHk/E06cmWloixhSIRJuBXJ8b1AgSVDVrY/8wfYO/2VW28Dp7wZfmOw== + dependencies: + "@aws-sdk/node-http-handler" "3.186.0" + "@aws-sdk/types" "3.186.0" + "@aws-sdk/util-buffer-from" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.186.0.tgz#1752a93dfe58ec88196edb6929806807fd8986da" + integrity sha512-imtOrJFpIZAipAg8VmRqYwv1G/x4xzyoxOJ48ZSn1/ZGnKEEnB6n6E9gwYRebi4mlRuMSVeZwCPLq0ey5hReeQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-browser@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.186.0.tgz#02e214887d30a69176c6a6c2d6903ce774b013b4" + integrity sha512-fbRcTTutMk4YXY3A2LePI4jWSIeHOT8DaYavpc/9Xshz/WH9RTGMmokeVOcClRNBeDSi5cELPJJ7gx6SFD3ZlQ== + dependencies: + "@aws-sdk/types" "3.186.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.186.0.tgz#1ef74973442c8650c7b64ff2fd15cf3c09d8c004" + integrity sha512-oWZR7hN6NtOgnT6fUvHaafgbipQc2xJCRB93XHiF9aZGptGNLJzznIOP7uURdn0bTnF73ejbUXWLQIm8/6ue6w== + dependencies: + "@aws-sdk/node-config-provider" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@3.186.0", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz#5fee6385cfc3effa2be704edc2998abfd6633082" + integrity sha512-n+IdFYF/4qT2WxhMOCeig8LndDggaYHw3BJJtfIBZRiS16lgwcGYvOUmhCkn0aSlG1f/eyg9YZHQG0iz9eLdHQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8-node@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz#722d9b0f5675ae2e9d79cf67322126d9c9d8d3d8" + integrity sha512-7qlE0dOVdjuRbZTb7HFywnHHCrsN7AeQiTnsWT63mjXGDbPeUWQQw3TrdI20um3cxZXnKoeudGq8K6zbXyQ4iA== + dependencies: + "@aws-sdk/util-buffer-from" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/util-waiter@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.186.0.tgz#f0c87fa7587348216da739270fa3fe49f15c6524" + integrity sha512-oSm45VadBBWC/K2W1mrRNzm9RzbXt6VopBQ5iTDU7B3qIXlyAG9k1JqOvmYIdYq1oOgjM3Hv2+9sngi3+MZs1A== + dependencies: + "@aws-sdk/abort-controller" "3.186.0" + "@aws-sdk/types" "3.186.0" + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.186.0": + version "3.186.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.186.0.tgz#8eec67d85771a291b89e750a7f0bf832ad6f4879" + integrity sha512-9Ss3w1yenQNFYdHpa7OFL81M6Okef8UzY263SCCodhCg1ZKwN+vN1T4C7zhcMpxWsmDD/UmEpN+eXCLnFNE8PQ== + dependencies: + tslib "^2.3.1" + "@babel/runtime-corejs3@^7.10.2": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" @@ -61,7 +946,7 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@next/env@12.3.1": +"@next/env@12.3.1", "@next/env@^12.3.1": version "12.3.1" resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.1.tgz#18266bd92de3b4aa4037b1927aa59e6f11879260" integrity sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg== @@ -289,6 +1174,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + "@typescript-eslint/parser@^5.21.0": version "5.38.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" @@ -482,6 +1372,11 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +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== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -736,6 +1631,11 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +entities@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" @@ -1084,6 +1984,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-xml-parser@3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -1276,6 +2181,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-wasm@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/hash-wasm/-/hash-wasm-4.9.0.tgz#7e9dcc9f7d6bd0cc802f2a58f24edce999744206" + integrity sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w== + human-signals@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" @@ -1990,6 +2900,11 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-icons@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703" + integrity sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg== + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -2004,6 +2919,15 @@ react-query@^3.39.2: broadcast-channel "^3.4.1" match-sorter "^6.0.2" +react-textarea-autosize@^8.3.4: + version "8.3.4" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" + integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== + dependencies: + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" @@ -2337,12 +3261,12 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: +tslib@^1.11.1, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -2423,6 +3347,23 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" @@ -2435,6 +3376,16 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" +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== + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"