This commit is contained in:
bniwredyc 2023-02-09 23:39:52 +01:00
parent 6a1860d824
commit 688e302392
12 changed files with 280 additions and 88 deletions

View File

@ -125,6 +125,7 @@
"rollup-plugin-visualizer": "^5.9.0", "rollup-plugin-visualizer": "^5.9.0",
"sass": "1.32.13", "sass": "1.32.13",
"solid-js": "^1.6.9", "solid-js": "^1.6.9",
"solid-transition-group": "^0.0.13",
"sort-package-json": "^2.3.0", "sort-package-json": "^2.3.0",
"stylelint": "^14.16.1", "stylelint": "^14.16.1",
"stylelint-config-css-modules": "^4.1.0", "stylelint-config-css-modules": "^4.1.0",

View File

@ -53,7 +53,6 @@
.headerInner { .headerInner {
align-items: center; align-items: center;
background: #fff; background: #fff;
border-bottom: 4px solid #000;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: space-between; justify-content: space-between;
margin: 0; margin: 0;

View File

@ -11,6 +11,7 @@ import { clsx } from 'clsx'
import { HeaderAuth } from './HeaderAuth' import { HeaderAuth } from './HeaderAuth'
import { getShareUrl, SharePopup } from '../Article/SharePopup' import { getShareUrl, SharePopup } from '../Article/SharePopup'
import { getDescription } from '../../utils/meta' import { getDescription } from '../../utils/meta'
import { Snackbar } from './Snackbar'
const resources: { name: string; route: keyof Routes }[] = [ const resources: { name: string; route: keyof Routes }[] = [
{ name: t('zine'), route: 'home' }, { name: t('zine'), route: 'home' },
@ -153,6 +154,7 @@ export const Header = (props: Props) => {
</div> </div>
</div> </div>
</nav> </nav>
<Snackbar />
</div> </div>
</header> </header>
) )

View File

@ -0,0 +1,23 @@
.snackbar {
min-height: 4px;
background-color: #141414;
color: #ffffff;
transition: background-color 0.3s;
&.error {
background-color: #d00820;
}
}
.content {
transition: height 0.3s, color 0.3s;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
&.enter,
&.exitTo {
height: 0;
color: transparent;
}
}

View File

@ -0,0 +1,27 @@
import { Show } from 'solid-js'
import { useSnackbar } from '../../context/snackbar'
import styles from './Snackbar.module.scss'
import { Transition } from 'solid-transition-group'
import { clsx } from 'clsx'
export const Snackbar = () => {
const { snackbarMessage } = useSnackbar()
return (
<div
class={clsx(styles.snackbar, {
[styles.error]: snackbarMessage()?.type === 'error'
})}
>
<Transition
enterClass={styles.enter}
exitToClass={styles.exitTo}
onExit={(el, done) => setTimeout(() => done(), 300)}
>
<Show when={snackbarMessage()}>
<div class={styles.content}>{snackbarMessage().body}</div>
</Show>
</Transition>
</div>
)
}

View File

@ -1,9 +1,8 @@
import { PageWrap } from '../../_shared/PageWrap' import { PageWrap } from '../../_shared/PageWrap'
import { t } from '../../../utils/intl' import { t } from '../../../utils/intl'
import type { PageProps } from '../../types'
import { Icon } from '../../_shared/Icon' import { Icon } from '../../_shared/Icon'
import ProfileSettingsNavigation from '../../Discours/ProfileSettingsNavigation' import ProfileSettingsNavigation from '../../Discours/ProfileSettingsNavigation'
import { For, createSignal, Show, onMount } from 'solid-js' import { For, createSignal, Show, onMount, createEffect } from 'solid-js'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import styles from './Settings.module.scss' import styles from './Settings.module.scss'
import { useProfileForm } from '../../../context/profile' import { useProfileForm } from '../../../context/profile'
@ -12,12 +11,18 @@ import { createFileUploader, UploadFile } from '@solid-primitives/upload'
import { Loading } from '../../Loading' import { Loading } from '../../Loading'
import { useSession } from '../../../context/session' import { useSession } from '../../../context/session'
import Button from '../../_shared/Button' import Button from '../../_shared/Button'
import { useSnackbar } from '../../../context/snackbar'
export const ProfileSettingsPage = () => { export const ProfileSettingsPage = () => {
const [addLinkForm, setAddLinkForm] = createSignal(false) const [addLinkForm, setAddLinkForm] = createSignal(false)
const [incorrectUrl, setIncorrectUrl] = createSignal(false) const [incorrectUrl, setIncorrectUrl] = createSignal(false)
const [isSubmitting, setIsSubmitting] = createSignal(false) const [isSubmitting, setIsSubmitting] = createSignal(false)
const [isUserpicUpdating, setIsUserpicUpdating] = createSignal(false) const [isUserpicUpdating, setIsUserpicUpdating] = createSignal(false)
const {
actions: { showSnackbar }
} = useSnackbar()
const { const {
actions: { loadSession } actions: { loadSession }
} = useSession() } = useSession()
@ -31,11 +36,19 @@ export const ProfileSettingsPage = () => {
setIncorrectUrl(true) setIncorrectUrl(true)
} }
} }
const handleSubmit = async (event: Event) => { const handleSubmit = async (event: Event) => {
event.preventDefault() event.preventDefault()
setIsSubmitting(true) setIsSubmitting(true)
try {
await submit(form) await submit(form)
await loadSession() showSnackbar({ body: t('Profile successfully saved') })
} catch {
showSnackbar({ type: 'error', body: t('Error') })
}
loadSession()
setIsSubmitting(false) setIsSubmitting(false)
} }

View File

@ -36,6 +36,7 @@ import { ProfileSettingsPage } from './Pages/profile/ProfileSettingsPage'
import { ProfileSecurityPage } from './Pages/profile/ProfileSecurityPage' import { ProfileSecurityPage } from './Pages/profile/ProfileSecurityPage'
import { ProfileSubscriptionsPage } from './Pages/profile/ProfileSubscriptionsPage' import { ProfileSubscriptionsPage } from './Pages/profile/ProfileSubscriptionsPage'
import CreateSettingsPage from './Pages/CreateSettingsPage' import CreateSettingsPage from './Pages/CreateSettingsPage'
import { SnackbarProvider } from '../context/snackbar'
// TODO: lazy load // TODO: lazy load
// const SomePage = lazy(() => import('./Pages/SomePage')) // const SomePage = lazy(() => import('./Pages/SomePage'))
@ -98,8 +99,10 @@ export const Root = (props: PageProps) => {
} }
return ( return (
<SnackbarProvider>
<SessionProvider> <SessionProvider>
<Dynamic component={pageComponent()} {...props} /> <Dynamic component={pageComponent()} {...props} />
</SessionProvider> </SessionProvider>
</SnackbarProvider>
) )
} }

View File

@ -13,16 +13,12 @@ const useProfileForm = () => {
const [slugError, setSlugError] = createSignal<string>() const [slugError, setSlugError] = createSignal<string>()
const submit = async (profile: ProfileInput) => { const submit = async (profile: ProfileInput) => {
try {
const response = await apiClient.updateProfile(profile) const response = await apiClient.updateProfile(profile)
if (response.error) { if (response.error) {
setSlugError(response.error) setSlugError(response.error)
return response.error return response.error
} }
return response return response
} catch (error) {
console.error(error)
}
} }
const [form, setForm] = createStore<ProfileInput>({ const [form, setForm] = createStore<ProfileInput>({

79
src/context/snackbar.tsx Normal file
View File

@ -0,0 +1,79 @@
import type { Accessor, JSX } from 'solid-js'
import { createContext, createSignal, useContext } from 'solid-js'
import { delay } from '../utils/delay'
const DEFAULT_DURATION = 5000 // 5 sec
type SnackbarMessage = {
type: 'success' | 'error'
body: string | JSX.Element
duration: number
}
type SnackbarContextType = {
snackbarMessage: Accessor<SnackbarMessage>
actions: {
showSnackbar: (message: {
type?: SnackbarMessage['type']
body: SnackbarMessage['body']
duration?: SnackbarMessage['duration']
}) => Promise<void>
}
}
const SnackbarContext = createContext<SnackbarContextType>()
export function useSnackbar() {
return useContext(SnackbarContext)
}
const messagesToShow: SnackbarMessage[] = []
let currentCheckMessagesPromise = null
export const SnackbarProvider = (props: { children: JSX.Element }) => {
const [snackbarMessage, setSnackbarMessage] = createSignal<SnackbarMessage>(null)
const checkMessages = async () => {
if (messagesToShow.length === 0) {
currentCheckMessagesPromise = null
return
}
setSnackbarMessage(messagesToShow[0])
await delay(messagesToShow[0].duration)
setSnackbarMessage(null)
await delay(1000)
messagesToShow.shift()
await checkMessages()
}
const showSnackbar = async (message: {
type?: SnackbarMessage['type']
body: SnackbarMessage['body']
duration?: SnackbarMessage['duration']
}): Promise<void> => {
const messageToShow = {
type: message.type ?? 'success',
body: message.body,
duration: message.duration ?? DEFAULT_DURATION
}
messagesToShow.push(messageToShow)
if (!currentCheckMessagesPromise) {
currentCheckMessagesPromise = checkMessages()
await currentCheckMessagesPromise
}
return currentCheckMessagesPromise
}
const actions = {
showSnackbar
}
const value: SnackbarContextType = { snackbarMessage, actions }
return <SnackbarContext.Provider value={value}>{props.children}</SnackbarContext.Provider>
}

View File

@ -225,9 +225,9 @@
"My subscriptions": "Подписки", "My subscriptions": "Подписки",
"Nothing here yet": "Здесь пока ничего нет", "Nothing here yet": "Здесь пока ничего нет",
"Edited": "Отредактирован", "Edited": "Отредактирован",
"Nothing here yet": "Здесь пока ничего нет",
"Invite experts": "Пригласить экспертов", "Invite experts": "Пригласить экспертов",
"Subscribe to comments": "Подписаться на комментарии", "Subscribe to comments": "Подписаться на комментарии",
"Add to bookmarks": "Добавить в закладки", "Add to bookmarks": "Добавить в закладки",
"Get notifications": "Получать уведомления" "Get notifications": "Получать уведомления",
"Profile successfully saved": "Профиль успешно сохранён"
} }

1
src/utils/delay.ts Normal file
View File

@ -0,0 +1 @@
export const delay = async (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms))

186
yarn.lock
View File

@ -217,6 +217,14 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/abort-controller@^3.266.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.267.0.tgz#a9101d6ed54ebd58741cd83fb6aea0f9c187e3b0"
integrity sha512-5R7OSnHFV/f+qQpMf1RuSQoVdXroK94Vl6naWjMOAhMyofHykVhEok9hmFPac86AVx8rVX/vuA7u9GKI6/EE7g==
dependencies:
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/chunked-blob-reader-native@3.208.0": "@aws-sdk/chunked-blob-reader-native@3.208.0":
version "3.208.0" version "3.208.0"
resolved "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.208.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.208.0.tgz"
@ -605,13 +613,13 @@
dependencies: dependencies:
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/lib-storage@^3.223.0": "@aws-sdk/lib-storage@^3.266.0":
version "3.235.0" version "3.267.0"
resolved "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.235.0.tgz" resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.267.0.tgz#ba77c4eb559370ed0f29afac5f273fc9b69dc37f"
integrity sha512-+xQtPsToeA4RFiWmO+j5DbDsisPBwNb5k87z1NbrlsZkbj7ONTunX5F3qqe2bR+1o7Pb5O1REQrIQohT6QECaw== integrity sha512-MljL0PavGZ3Yc1kkSjWIAzY6TWTWi7iuCpAi/DQKs0TyjSuX5vtxLmSVv1Wlx3ywrI8HDlo2xG7bvhjDQDN3gw==
dependencies: dependencies:
"@aws-sdk/middleware-endpoint" "3.226.0" "@aws-sdk/middleware-endpoint" "3.267.0"
"@aws-sdk/smithy-client" "3.234.0" "@aws-sdk/smithy-client" "3.267.0"
buffer "5.6.0" buffer "5.6.0"
events "3.3.0" events "3.3.0"
stream-browserify "3.0.0" stream-browserify "3.0.0"
@ -661,6 +669,20 @@
"@aws-sdk/util-middleware" "3.226.0" "@aws-sdk/util-middleware" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/middleware-endpoint@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.267.0.tgz#2e5ca14e1a26220b9b77dddf0ddec0db8d79155d"
integrity sha512-pGICM/qlQVfixtfKZt8zHq54KvLG2MmOAgNWj2MXB7oirPs/3rC9Kz9ITFXJgjlRFyfssgP/feKhs2yZkI8lhw==
dependencies:
"@aws-sdk/middleware-serde" "3.267.0"
"@aws-sdk/protocol-http" "3.267.0"
"@aws-sdk/signature-v4" "3.267.0"
"@aws-sdk/types" "3.267.0"
"@aws-sdk/url-parser" "3.267.0"
"@aws-sdk/util-config-provider" "3.208.0"
"@aws-sdk/util-middleware" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/middleware-expect-continue@3.226.0": "@aws-sdk/middleware-expect-continue@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.226.0.tgz"
@ -759,6 +781,14 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/middleware-serde@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.267.0.tgz#b1ce247834ad9531e868189616b3adfb2d8af1b2"
integrity sha512-9qspxiZs+JShukzKMAameBSubfvtUOGZviu9GT5OfRekY2dBbwWcfchP2WvlwxZ/CcC+GwO1HcPqKDCMGsNoow==
dependencies:
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/middleware-signing@3.226.0": "@aws-sdk/middleware-signing@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz"
@ -786,6 +816,13 @@
dependencies: dependencies:
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/middleware-stack@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.267.0.tgz#f16334b1f99e8714e1f4d98faa065f669aff7885"
integrity sha512-52uH3JO3ceI15dgzt8gU7lpJf59qbRUQYJ7pAmTMiHtyEawZ39Puv6sGheY3fAffhqd/aQvup6wn18Q1fRIQUA==
dependencies:
tslib "^2.3.1"
"@aws-sdk/middleware-user-agent@3.226.0": "@aws-sdk/middleware-user-agent@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz"
@ -832,6 +869,14 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/protocol-http@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.267.0.tgz#12c2e0fbaa01f9658daedad8196fa52c74675394"
integrity sha512-8HhOZXMCZ0nsJC/FoifX7YrTYGP91tCpSxIHkr7HxQcTdBMI7QakMtIIWK9Qjsy6tUI98aAdEo5PNCbzdpozmQ==
dependencies:
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/querystring-builder@3.226.0": "@aws-sdk/querystring-builder@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz"
@ -849,6 +894,14 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/querystring-parser@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.267.0.tgz#497758012c335aab08bbea1e5a7d5e6d61dec320"
integrity sha512-Krq36GXqEfRfzJ9wOzkkzpbb4SWjgSYydTIgK6KtKapme0HPcB24kmmsjsUVuHzKuQMCHHDRWm+b47iBmHGpSQ==
dependencies:
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/service-error-classification@3.229.0": "@aws-sdk/service-error-classification@3.229.0":
version "3.229.0" version "3.229.0"
resolved "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz"
@ -885,6 +938,19 @@
"@aws-sdk/util-uri-escape" "3.201.0" "@aws-sdk/util-uri-escape" "3.201.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/signature-v4@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.267.0.tgz#15812f48f487828353c1e33574cb789cedef659c"
integrity sha512-Je1e7rum2zvxa3jWfwq4E+fyBdFJmSJAwGtWYz3+/rWipwXFlSAPeSVqtNjHdfzakgabvzLp7aesG4yQTrO2YQ==
dependencies:
"@aws-sdk/is-array-buffer" "3.201.0"
"@aws-sdk/types" "3.267.0"
"@aws-sdk/util-hex-encoding" "3.201.0"
"@aws-sdk/util-middleware" "3.267.0"
"@aws-sdk/util-uri-escape" "3.201.0"
"@aws-sdk/util-utf8" "3.254.0"
tslib "^2.3.1"
"@aws-sdk/smithy-client@3.234.0": "@aws-sdk/smithy-client@3.234.0":
version "3.234.0" version "3.234.0"
resolved "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz"
@ -894,6 +960,15 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/smithy-client@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.267.0.tgz#a3148a49900e284c3c140a5b7514e20e6d4342ae"
integrity sha512-WdgXHqKmFQIkAWETO/I5boX9u6QbMLC4X74OVSBaBLhRjqYmvolMFtNrQzvSKGB3FaxAN9Do41amC0mGoeLC8A==
dependencies:
"@aws-sdk/middleware-stack" "3.267.0"
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/token-providers@3.235.0": "@aws-sdk/token-providers@3.235.0":
version "3.235.0" version "3.235.0"
resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.235.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.235.0.tgz"
@ -912,6 +987,13 @@
dependencies: dependencies:
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/types@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.267.0.tgz#fe543d1a1977c4e9e7ca6c32c837fcfd87b32441"
integrity sha512-fICTbSeIfXlTHnciQgDt37R0kXoKxgh0a3prnLWVvTcmf7NFujdZmg5YTAZT3KJJ7SuKsIgnI8azBYioVY8BVQ==
dependencies:
tslib "^2.3.1"
"@aws-sdk/url-parser@3.226.0": "@aws-sdk/url-parser@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz"
@ -921,6 +1003,15 @@
"@aws-sdk/types" "3.226.0" "@aws-sdk/types" "3.226.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/url-parser@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.267.0.tgz#c103fba8f2c1c4bed1c6fa85ef4fd27d3147f81d"
integrity sha512-xoQ5Fd11moiE82QTL9GGE6e73SFuD0Wi73tA75TAwKuY12OP5vDJ4oBC86A1G2T+OzeHJQmYyqiA5j48CzqB6A==
dependencies:
"@aws-sdk/querystring-parser" "3.267.0"
"@aws-sdk/types" "3.267.0"
tslib "^2.3.1"
"@aws-sdk/util-arn-parser@3.208.0": "@aws-sdk/util-arn-parser@3.208.0":
version "3.208.0" version "3.208.0"
resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.208.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.208.0.tgz"
@ -1016,6 +1107,13 @@
dependencies: dependencies:
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/util-middleware@3.267.0":
version "3.267.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.267.0.tgz#99a9c72b889e6d8cbd3ee6fa8c7a0190984945ce"
integrity sha512-7nvqBZVz3RdwYv6lU958g6sWI2Qt8lzxDVn0uwfnPH+fAiX7Ln1Hen2A0XeW5cL5uYUJy6wNM5cyfTzFZosE0A==
dependencies:
tslib "^2.3.1"
"@aws-sdk/util-retry@3.229.0": "@aws-sdk/util-retry@3.229.0":
version "3.229.0" version "3.229.0"
resolved "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz"
@ -1086,6 +1184,14 @@
"@aws-sdk/util-buffer-from" "3.208.0" "@aws-sdk/util-buffer-from" "3.208.0"
tslib "^2.3.1" tslib "^2.3.1"
"@aws-sdk/util-utf8@3.254.0":
version "3.254.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz#909af9c6549833a9a9bf77004b7484bfc96b2c35"
integrity sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==
dependencies:
"@aws-sdk/util-buffer-from" "3.208.0"
tslib "^2.3.1"
"@aws-sdk/util-waiter@3.226.0": "@aws-sdk/util-waiter@3.226.0":
version "3.226.0" version "3.226.0"
resolved "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.226.0.tgz" resolved "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.226.0.tgz"
@ -1675,7 +1781,7 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.15.4": "@babel/runtime@^7.0.0":
version "7.20.0" version "7.20.0"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz"
integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==
@ -3183,11 +3289,6 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/lodash@^4.14.175":
version "4.14.186"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz"
integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==
"@types/mdast@^3.0.0": "@types/mdast@^3.0.0":
version "3.0.10" version "3.0.10"
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz"
@ -7736,11 +7837,6 @@ locate-path@^6.0.0:
dependencies: dependencies:
p-locate "^5.0.0" p-locate "^5.0.0"
lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash.camelcase@^4.3.0: lodash.camelcase@^4.3.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz"
@ -8484,11 +8580,6 @@ mute-stream@0.0.8:
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
nanoclone@^0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz"
integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
nanoid@^3.3.4: nanoid@^3.3.4:
version "3.3.4" version "3.3.4"
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
@ -9156,11 +9247,6 @@ prompts@^2.0.1, prompts@^2.4.2:
kleur "^3.0.3" kleur "^3.0.3"
sisteransi "^1.0.5" sisteransi "^1.0.5"
property-expr@^2.0.4:
version "2.0.5"
resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz"
integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==
property-information@^6.0.0: property-information@^6.0.0:
version "6.1.1" version "6.1.1"
resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz" resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz"
@ -9978,21 +10064,6 @@ snake-case@^3.0.4:
dot-case "^3.0.4" dot-case "^3.0.4"
tslib "^2.0.3" tslib "^2.0.3"
solid-js-form@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/solid-js-form/-/solid-js-form-0.1.8.tgz#cc50bb7f782fa6f91651a1885b799432b03d6b3b"
integrity sha512-kOKZ5et9t1T8P8GAi4FIyuoGO2Y14YnTyKT7kla3wbtcDeWb4dqvxSqmNHRx8r9ZxTN/hpl3WxmwtOBOPalSaA==
dependencies:
solid-js "^1.1.2"
yup "^0.32.9"
solid-js@^1.1.2:
version "1.6.6"
resolved "https://registry.npmjs.org/solid-js/-/solid-js-1.6.6.tgz"
integrity sha512-5x33mEbPI8QLuywvFjQP4krjWDr8xiYFgZx9KCBH7b0ZzypQCHaUubob7bK6i+1u6nhaAqhWtvXS587Kb8DShA==
dependencies:
csstype "^3.1.0"
solid-js@^1.6.9: solid-js@^1.6.9:
version "1.6.10" version "1.6.10"
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.6.10.tgz#fbd8e0a4adfe7b38da1885170369ede6a1cc7379" resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.6.10.tgz#fbd8e0a4adfe7b38da1885170369ede6a1cc7379"
@ -10000,15 +10071,10 @@ solid-js@^1.6.9:
dependencies: dependencies:
csstype "^3.1.0" csstype "^3.1.0"
solid-jsx@^0.9.1: solid-transition-group@^0.0.13:
version "0.9.1" version "0.0.13"
resolved "https://registry.npmjs.org/solid-jsx/-/solid-jsx-0.9.1.tgz" resolved "https://registry.yarnpkg.com/solid-transition-group/-/solid-transition-group-0.0.13.tgz#1a476d3798759be106ad1062cc071db139b0d564"
integrity sha512-HHTx58rx3tqg5LMGuQnaE1vqZjpl+RMP0jYQnBkTY0xKIASVNSLZJCZoPFrpKH8wWWYyTLHdepgzs8u/e6yz5Q== integrity sha512-VA1V0ip4dsNOQJ/dCluCiAPBUuHspYFm4WYG91jpNmcP4rC4DY1S1EGds44JjiUAP7qEoEZdMhPaiS6lqTF7AA==
solid-utils@^0.8.1:
version "0.8.1"
resolved "https://registry.npmjs.org/solid-utils/-/solid-utils-0.8.1.tgz"
integrity sha512-LLeO7Hr99OLFY+Zfx8U7Hw5VZOaFT8qWoLWGfnq3kDmo7KAGdIoq44ijy7mdYj88e+2cWPdkyhItsS3FGjeS6g==
sort-object-keys@^1.1.3: sort-object-keys@^1.1.3:
version "1.1.3" version "1.1.3"
@ -10570,11 +10636,6 @@ to-regex-range@^5.0.1:
dependencies: dependencies:
is-number "^7.0.0" is-number "^7.0.0"
toposort@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz"
integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
tr46@~0.0.3: tr46@~0.0.3:
version "0.0.3" version "0.0.3"
resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
@ -11437,19 +11498,6 @@ yocto-queue@^0.1.0:
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
yup@^0.32.9:
version "0.32.11"
resolved "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz"
integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==
dependencies:
"@babel/runtime" "^7.15.4"
"@types/lodash" "^4.14.175"
lodash "^4.17.21"
lodash-es "^4.17.21"
nanoclone "^0.2.1"
property-expr "^2.0.4"
toposort "^2.0.2"
zod@^3.17.3: zod@^3.17.3:
version "3.19.1" version "3.19.1"
resolved "https://registry.npmjs.org/zod/-/zod-3.19.1.tgz" resolved "https://registry.npmjs.org/zod/-/zod-3.19.1.tgz"