diff --git a/gulpfile.js b/gulpfile.js
index fb781719f4..eef18c1549 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -79,7 +79,6 @@ const common = {
'node_modules/marked/marked.min.js',
'node_modules/@highlightjs/cdn-assets/highlight.min.js',
'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js',
- 'packages/amplify/dist/amplify.js',
'packages/ui/dist/ui/ui.js',
'node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.wasm',
'node_modules/react/umd/react.production.min.js',
@@ -130,7 +129,6 @@ const common = {
'node_modules/prop-types/prop-types.min.js',
'node_modules/interactjs/dist/interact.min.js',
'node_modules/photoswipe/dist/umd/*.js',
- 'packages/amplify/dist/amplify.js',
'packages/ui/dist/ui/ui.js',
'node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.wasm',
]).pipe(gulp.dest(path.join(outputPath, 'mobile', 'js'))),
diff --git a/package.json b/package.json
index 73337d7cc1..d346116037 100644
--- a/package.json
+++ b/package.json
@@ -105,7 +105,7 @@
"tldraw:build": "yarn --cwd packages/tldraw install",
"amplify:build": "yarn --cwd packages/amplify install",
"ui:build": "yarn --cwd packages/ui install",
- "postinstall": "yarn tldraw:build && yarn amplify:build && yarn ui:build"
+ "postinstall": "yarn tldraw:build && yarn ui:build"
},
"dependencies": {
"@capacitor-community/safe-area": "7.0.0-alpha.1",
diff --git a/packages/ui/@/components/ui/alert.tsx b/packages/ui/@/components/ui/alert.tsx
index 5fff67c887..663ce663f9 100644
--- a/packages/ui/@/components/ui/alert.tsx
+++ b/packages/ui/@/components/ui/alert.tsx
@@ -12,6 +12,8 @@ const alertVariants = cva(
default: 'bg-background text-foreground',
destructive:
'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',
+ warning:
+ 'border-yellow-600 text-yellow-600 dark:text-yellow-500/70 [&>svg]:text-yellow-600',
},
},
defaultVariants: {
diff --git a/packages/ui/examples/index.html b/packages/ui/examples/index.html
index abe103c457..f5f9336c7d 100644
--- a/packages/ui/examples/index.html
+++ b/packages/ui/examples/index.html
@@ -9,6 +9,11 @@
+
diff --git a/packages/ui/examples/index.tsx b/packages/ui/examples/index.tsx
index c20fa37bef..3963fcfdb0 100644
--- a/packages/ui/examples/index.tsx
+++ b/packages/ui/examples/index.tsx
@@ -2,22 +2,63 @@ import '../src/index.css'
import { setupGlobals } from '../src/ui'
import * as React from 'react'
import * as ReactDOM from 'react-dom'
+import { init, t } from '../src/amplify/core'
// @ts-ignore
-import { Button } from '@/components/ui/button'
+import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
+import { LoginForm, ResetPasswordForm, SignupForm, ConfirmWithCodeForm } from '../src/amplify/ui'
+import { AuthFormRootContext } from '../src/amplify/core'
// bootstrap
setupGlobals()
+init()
function App() {
+ const [errors, setErrors] = React.useState(null)
+ const [currentTab, setCurrentTab] = React.useState<'login' | 'reset' | 'signup' | 'confirm-code' | any>('login')
+ const onSessionCallback = React.useCallback((session: any) => {
+ console.log('==>>session callback:', session)
+ }, [])
+
+ React.useEffect(() => {
+ setErrors(null)
+ }, [currentTab])
+
+ let content = null
+ // support passing object with type field
+ let _currentTab = currentTab?.type ? currentTab.type : currentTab
+ let _currentTabProps = currentTab?.props || {}
+
+ switch (_currentTab) {
+ case 'login':
+ content =
+ break
+ case 'reset':
+ content =
+ break
+ case 'signup':
+ content =
+ break
+ case 'confirm-code':
+ content =
+ break
+ }
+
return (
-
-
- Hello, Logseq UI :)
-
-
+
+
+
+
+ {t(_currentTab)?.replace('-', ' ')}
+
+
+ {content}
+
+
+
)
}
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 8c634234ce..6f2076d77d 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -34,6 +34,7 @@
"@radix-ui/react-toggle-group": "^1.1.7",
"@radix-ui/react-tooltip": "^1.2.4",
"@silk-hq/components": "^0.9.10",
+ "aws-amplify": "^6.15.6",
"class-variance-authority": "^0.7.1",
"clsx": "^2.0.0",
"cmdk": "^0.2.0",
@@ -70,6 +71,7 @@
"@types/prop-types": "^15",
"@types/react": "17",
"@types/react-dom": "17",
+ "buffer": "^5.5.0",
"parcel": "2.8.3",
"postcss": "^8.4.31",
"postcss-loader": "^7.3.3",
diff --git a/packages/ui/src/amplify/core.ts b/packages/ui/src/amplify/core.ts
new file mode 100644
index 0000000000..0a791a5529
--- /dev/null
+++ b/packages/ui/src/amplify/core.ts
@@ -0,0 +1,26 @@
+import { Amplify } from 'aws-amplify'
+import { createContext, useContext } from 'react'
+import { translate, setNSDicts, setLocale } from '../i18n'
+
+export const AuthFormRootContext = createContext(null)
+export const useAuthFormState = () => {
+ return useContext(AuthFormRootContext)
+}
+
+export function t(key: string, ...args: any) {
+ return translate('amplify', key, ...args)
+}
+
+export function init({ lang, authCognito }: any) {
+ // Load default language
+ setNSDicts('amplify', require('./lang').default)
+ if (lang) setLocale(lang)
+ Amplify.configure({
+ Auth: {
+ Cognito: {
+ ...authCognito,
+ loginWith: { email: true }
+ }
+ }
+ })
+}
\ No newline at end of file
diff --git a/packages/ui/src/amplify/index.ts b/packages/ui/src/amplify/index.ts
new file mode 100644
index 0000000000..bc19ec8646
--- /dev/null
+++ b/packages/ui/src/amplify/index.ts
@@ -0,0 +1,8 @@
+import * as Auth from 'aws-amplify/auth'
+import { init } from './core'
+import { LSAuthenticator } from './ui'
+
+export {
+ init, Auth,
+ LSAuthenticator
+}
\ No newline at end of file
diff --git a/packages/ui/src/amplify/lang.ts b/packages/ui/src/amplify/lang.ts
new file mode 100644
index 0000000000..6d46e32ba3
--- /dev/null
+++ b/packages/ui/src/amplify/lang.ts
@@ -0,0 +1,114 @@
+export default {
+ 'en': {
+ 'signup': 'Sign Up',
+ 'reset-password': 'Reset Password',
+ 'confirm-code': 'Confirm Code',
+ 'CODE_ON_THE_WAY_TIP': 'Your code is on the way. To log in, enter the code we sent you. It may take a minute to arrive.',
+ 'PW_POLICY_TIP': '1. at least 8 characters.\n' +
+ '2. must have lowercase characters.\n' +
+ '3. must have uppercase characters.\n' +
+ '4. must have symbol characters.',
+ },
+ 'zh-cn': {
+ 'login': '登录',
+ 'signup': '注册',
+ 'reset-password': '重置密码',
+ 'confirm-code': '确认验证码',
+ 'PW_POLICY_TIP': '1. 密码长度至少8个字符\n' +
+ '2. 密码必须包含小写字母\n' +
+ '3. 密码必须包含大写字母\n' +
+ '4. 密码必须包含特殊字符',
+ 'CODE_ON_THE_WAY_TIP': '验证码已发送。请输入我们发送给您的验证码以登录。可能需要一分钟才能收到。',
+ 'Sign in to your account': '登录到您的账户',
+ 'Email': '电子邮箱',
+ 'Password': '密码',
+ 'Sign in': '登录',
+ 'Confirm': '确认',
+ 'Don\'t have an account?': '还没有账户?',
+ 'Sign up': '注册',
+ 'or': '或 ',
+ 'Forgot your password?': '忘记密码?',
+ 'Create account': '创建您的账户',
+ 'Username': '用户名',
+ 'Confirm Password': '确认密码',
+ 'New Password': '新密码',
+ 'By signing up, you agree to our': '注册即表示您同意我们的 ',
+ 'Terms of Service': '服务条款',
+ 'Privacy Policy': '隐私政策',
+ 'Already have an account?': '已经有账户?',
+ 'Reset password': '重置您的密码',
+ 'Enter the code sent to your email': '输入发送到您邮箱的验证码',
+ 'Send code': '发送验证码',
+ 'Resend code': '重新发送验证码',
+ 'Back to login': '返回登录',
+ 'Enter your email': '请输入您的电子邮箱'
+ },
+ 'zh-hant': {
+ 'login': '登入',
+ 'signup': '註冊',
+ 'reset-password': '重置密碼',
+ 'confirm-code': '確認驗證碼',
+ 'CODE_ON_THE_WAY_TIP': '驗證碼已發送。請輸入我們發送給您的驗證碼以登入。可能需要一分鐘才能收到。',
+ 'PW_POLICY_TIP': '1. 密碼長度至少8個字符\n' +
+ '2. 密碼必須包含小寫字母\n' +
+ '3. 密碼必須包含大寫字母\n' +
+ '4. 密碼必須包含特殊字符',
+ 'Sign in to your account': '登入到您的帳戶',
+ 'Email': '電子郵箱',
+ 'Password': '密碼',
+ 'Sign in': '登入',
+ 'Confirm': '確認',
+ 'Don\'t have an account?': '還沒有帳戶?',
+ 'Sign up': '註冊',
+ 'or': '或 ',
+ 'Forgot your password?': '忘記密碼?',
+ 'Create account': '創建您的帳戶',
+ 'Username': '用戶名',
+ 'Confirm Password': '確認密碼',
+ 'New Password': '新密碼',
+ 'By signing up, you agree to our': '註冊即表示您同意我們的 ',
+ 'Terms of Service': '服務條款',
+ 'Privacy Policy': '隱私政策',
+ 'Already have an account?': '已經有帳戶?',
+ 'Reset password': '重置您的密碼',
+ 'Enter the code sent to your email': '輸入發送到您郵箱的驗證碼',
+ 'Send code': '發送驗證碼',
+ 'Resend code': '重新發送驗證碼',
+ 'Back to login': '返回登入',
+ 'Enter your email': '請輸入您的電子郵箱'
+ },
+ 'ja': {
+ 'login': 'ログイン',
+ 'signup': 'サインアップ',
+ 'reset-password': 'パスワードをリセットする',
+ 'confirm-code': 'コードを確認する',
+ 'CODE_ON_THE_WAY_TIP': 'コードが送信されました。ログインするには、送信したコードを入力してください。届くまでに1分ほどかかる場合があります。',
+ 'PW_POLICY_TIP': '1. パスワードは8文字以上であること。\n' +
+ '2. パスワードには小文字を含める必要があります。\n' +
+ '3. パスワードには大文字を含める必要があります。\n' +
+ '4. パスワードには記号を含める必要があります。',
+ 'Sign in to your account': 'アカウントにサインイン',
+ 'Email': 'メール',
+ 'Password': 'パスワード',
+ 'Sign in': 'サインイン',
+ 'Confirm': '確認',
+ 'Don\'t have an account?': 'アカウントをお持ちでないですか?',
+ 'Sign up': 'サインアップ',
+ 'or': 'または ',
+ 'Forgot your password?': 'パスワードをお忘れですか?',
+ 'Create account': 'アカウントを作成する',
+ 'Username': 'ユーザー名',
+ 'New Password': '新しいパスワード',
+ 'Confirm Password': 'パスワードを確認する',
+ 'By signing up, you agree to our': 'サインアップすることで、あなたは私たちの ',
+ 'Terms of Service': '利用規約',
+ 'Privacy Policy': 'プライバシーポリシー',
+ 'Already have an account? ': 'すでにアカウントをお持ちですか?',
+ 'Reset password': 'パスワードをリセットする',
+ 'Enter the code sent to your email': 'メールに送信されたコードを入力してください',
+ 'Send code': 'コードを送信',
+ 'Resend code': 'コードを再送信',
+ 'Back to login': 'ログインに戻る',
+ 'Enter your email': 'メールアドレスを入力してください'
+ }
+}
diff --git a/packages/ui/src/amplify/ui.tsx b/packages/ui/src/amplify/ui.tsx
new file mode 100644
index 0000000000..859d8a3444
--- /dev/null
+++ b/packages/ui/src/amplify/ui.tsx
@@ -0,0 +1,710 @@
+import { Button } from '@/components/ui/button'
+import { Input, InputProps } from '@/components/ui/input'
+import { Label } from '@/components/ui/label'
+import { cn } from '@/lib/utils'
+import { FormHTMLAttributes, useEffect, useState } from 'react'
+import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'
+import { AlertCircleIcon, Loader2Icon, LucideEye, LucideEyeClosed, LucideX } from 'lucide-react'
+import { AuthFormRootContext, t, useAuthFormState } from './core'
+import * as Auth from 'aws-amplify/auth'
+import { Skeleton } from '@/components/ui/skeleton'
+import * as React from 'react'
+
+function ErrorTip({ error, removeError }: {
+ error: string | { variant?: 'warning' | 'destructive', title?: string, message: string | any },
+ removeError?: () => void
+}) {
+ if (!error) return null
+ if (typeof error === 'string') {
+ error = { message: error }
+ }
+
+ return (
+
+
+ {error.title && {error.title}}
+
+
+ {(typeof error.message === 'string' ? error.message : JSON.stringify(error.message))?.split('\n')
+ .map((line: string, idx: number) => {
+ return {line}
+ })}
+
+
+ removeError?.()}>
+
+
+
+ )
+}
+
+function InputRow(
+ props: InputProps & { label: string | React.ReactNode },
+) {
+ const { errors, setErrors } = useAuthFormState()
+ const { label, type, ...rest } = props
+ const isPassword = type === 'password'
+ const error = props.name && errors?.[props.name]
+ const [localType, setLocalType] = useState(type || 'text')
+ const [showPassword, setShowPassword] = useState(false)
+ const removeError = () => {
+ if (props.name && errors?.[props.name]) {
+ const newErrors = { ...errors }
+ delete newErrors[props.name]
+ setErrors(newErrors)
+ }
+ }
+
+ return (
+
+ )
+}
+
+function FormGroup(props: FormHTMLAttributes) {
+ const { className, children, ...reset } = props
+ return (
+
+ )
+}
+
+// 1. Password must be at least 8 characters
+// 2. Password must have lowercase characters
+// 3. Password must have uppercase characters
+// 4. Password must have symbol characters
+function validatePasswordPolicy(password: string) {
+ if (!password ||
+ password.length < 8 ||
+ !/[a-z]/.test(password) ||
+ !/[A-Z]/.test(password) ||
+ !/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~`]/.test(password)
+ ) {
+ throw new Error(t('PW_POLICY_TIP'))
+ }
+}
+
+function useCountDown() {
+ const [countDownNum, setCountDownNum] = useState(0)
+ const startCountDown = () => {
+ setCountDownNum(60)
+ const interval = setInterval(() => {
+ setCountDownNum((num) => {
+ if (num <= 1) {
+ clearInterval(interval)
+ return 0
+ }
+ return num - 1
+ })
+ }, 1000)
+ }
+
+ useEffect(() => {
+ return () => {
+ setCountDownNum(0)
+ }
+ }, [])
+
+ return { countDownNum, startCountDown, setCountDownNum }
+}
+
+export function LoginForm() {
+ const { setErrors, setCurrentTab, onSessionCallback, userSessionRender } = useAuthFormState()
+ const [loading, setLoading] = useState(false)
+ const [sessionUser, setSessionUser] = useState(null)
+ const loadSession = async () => {
+ try {
+ const ret = await Auth.fetchAuthSession()
+ if (!ret?.userSub) throw new Error('no session')
+ const user = await Auth.getCurrentUser()
+ onSessionCallback?.({ ...ret, user })
+ const tokens = ret.tokens
+ setSessionUser({
+ ...user, signInUserSession: {
+ idToken: { jwtToken: tokens?.idToken?.toString() },
+ accessToken: { jwtToken: tokens?.accessToken.toString() },
+ refreshToken: null
+ }
+ })
+ await (new Promise(resolve => setTimeout(resolve, 100)))
+ } catch (e) {
+ console.warn('no current session:', e)
+ setSessionUser(false)
+ }
+ }
+
+ useEffect(() => {
+ // check current auth session
+ loadSession()
+ }, [])
+
+ if (sessionUser === null) {
+ return (
+
+
+
+
)
+ }
+
+ const signOut = async () => {
+ await Auth.signOut()
+ setSessionUser(false)
+ setErrors(null)
+ }
+
+ if (sessionUser?.username) {
+ if (userSessionRender) {
+ if (typeof userSessionRender === 'function') {
+ return userSessionRender({ sessionUser, signOut })
+ }
+ return userSessionRender
+ }
+
+ return (
+
+
{t('You are already logged in as')} {sessionUser.username}
+
+
+ )
+ }
+
+ return (
+ {
+ setErrors(null)
+ e.preventDefault()
+
+ // get submit form input data
+ const formData = new FormData(e.target as HTMLFormElement)
+ const data = Object.fromEntries(formData.entries())
+
+ // sign in logic here
+ try {
+ setLoading(true)
+ const username = (data.email as string)?.trim()
+ const ret = await Auth.signIn({ username, password: data.password as string })
+ const nextStep = ret?.nextStep?.signInStep
+ if (!nextStep) throw new Error(JSON.stringify(ret))
+ switch (nextStep) {
+ case 'CONFIRM_SIGN_UP':
+ case 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE':
+ case 'CONFIRM_SIGN_IN_WITH_TOTP_CODE':
+ setCurrentTab({ type: 'confirm-code', props: { user: { ...ret, username }, nextStep } })
+ return
+ case 'RESET_PASSWORD':
+ setCurrentTab({ type: 'reset-password', props: { user: { ...ret, username }, nextStep } })
+ return
+ case 'DONE':
+ // signed in
+ await loadSession()
+ return
+ default:
+ throw new Error('Unsupported sign-in step: ' + nextStep)
+ }
+ } catch (e) {
+ setErrors({ password: { message: (e as Error).message, title: t('Bad Response.') } })
+ console.error(e)
+ } finally {
+ setLoading(false)
+ }
+ }}>
+
+
+
+
+
+ )
+}
+
+export function SignupForm() {
+ const { setCurrentTab, setErrors } = useAuthFormState()
+ const [loading, setLoading] = useState(false)
+
+ return (
+ <>
+ {
+ setErrors(null)
+ e.preventDefault()
+
+ // get submit form input data
+ const formData = new FormData(e.target as HTMLFormElement)
+ const data = Object.fromEntries(formData.entries()) as any
+
+ try {
+ validatePasswordPolicy(data.password)
+ } catch (e) {
+ setErrors({
+ password: {
+ message: (e as Error).message,
+ title: t('Invalid Password')
+ }
+ })
+ return
+ }
+
+ if (data.password !== data.confirm_password) {
+ setErrors({
+ confirm_password: {
+ message: t('Passwords do not match.'),
+ title: t('Invalid Password')
+ }
+ })
+ return
+ }
+
+ try {
+ setLoading(true)
+ const ret = await Auth.signUp({
+ username: data.username as string,
+ password: data.password as string,
+ options: {
+ userAttributes: {
+ email: data.email as string,
+ }
+ }
+ })
+
+ if (ret.isSignUpComplete) {
+ // TODO: auto sign in
+ if (ret.nextStep?.signUpStep === 'COMPLETE_AUTO_SIGN_IN') {
+ const { nextStep } = await Auth.autoSignIn()
+ if (nextStep.signInStep === 'DONE') {
+ // signed in
+ setCurrentTab('login')
+ }
+ }
+
+ setCurrentTab('login')
+ return
+ } else {
+ if (ret.nextStep?.signUpStep === 'CONFIRM_SIGN_UP') {
+ setCurrentTab({
+ type: 'confirm-code',
+ props: {
+ user: { ...ret, username: data.username },
+ nextStep: 'CONFIRM_SIGN_UP'
+ }
+ })
+ }
+ return
+ }
+ } catch (e: any) {
+ console.error(e)
+ const error = { title: t('Bad Response.'), message: (e as Error).message }
+ let k = 'confirm_password'
+ if (e.name === 'UsernameExistsException') {
+ k = 'username'
+ }
+ setErrors({ [k]: error })
+ } finally {
+ setLoading(false)
+ }
+ }}>
+
+
+
+
+
+
+
+
+
+
+ setCurrentTab('login')}
+ className={'text-sm opacity-60 hover:opacity-80 underline'}>
+ {t('Back to login')}
+
+
+
+ >
+ )
+}
+
+export function ResetPasswordForm() {
+ const [isSentCode, setIsSentCode] = useState(false)
+ const [sentUsername, setSentUsername] = useState('')
+ const { setCurrentTab, setErrors } = useAuthFormState()
+ const { countDownNum, startCountDown } = useCountDown()
+ const [loading, setLoading] = useState(false)
+
+ useEffect(() => {
+ setErrors({})
+ }, [isSentCode])
+
+ return (
+ {
+ setErrors(null)
+ e.preventDefault()
+
+ // get submit form input data
+ const formData = new FormData(e.target as HTMLFormElement)
+ const data = Object.fromEntries(formData.entries())
+
+ if (!isSentCode) {
+ try {
+ setLoading(true)
+
+ const username = (data.email as string)?.trim()
+ // send reset code
+ const ret = await Auth.resetPassword({ username })
+ console.debug('[Auth] reset pw code sent: ', ret)
+ setSentUsername(username)
+ startCountDown()
+ setIsSentCode(true)
+ } catch (error) {
+ console.error('Error sending reset code:', error)
+ setErrors({ email: { message: (error as Error).message, title: t('Bad Response.') } })
+ } finally {
+ setLoading(false)
+ }
+ } else {
+ // confirm reset password
+ if ((data.password as string)?.length < 8) {
+ setErrors({
+ password: {
+ message: t('Password must be at least 8 characters.'),
+ title: t('Invalid Password')
+ }
+ })
+ return
+ } else if (data.password !== data.confirm_password) {
+ setErrors({
+ confirm_password: {
+ message: t('Passwords do not match.'),
+ title: t('Invalid Password')
+ }
+ })
+ return
+ } else {
+ try {
+ setLoading(true)
+ const ret = await Auth.confirmResetPassword({
+ username: sentUsername,
+ newPassword: data.password as string,
+ confirmationCode: data.code as string
+ })
+
+ console.debug('[Auth] confirm reset pw: ', ret)
+ setCurrentTab('login')
+ } catch (error) {
+ console.error('Error confirming reset password:', error)
+ setErrors({ 'confirm_password': { message: (error as Error).message, title: t('Bad Response.') } })
+ } finally {
+ setLoading(false)
+ }
+ }
+ }
+ }}>
+ {isSentCode ? (
+ <>
+
+
+
+
+
+
+
+
+ >
+ ) : (
+ <>
+
+
+ >
+ )}
+
+ )
+}
+
+export function ConfirmWithCodeForm(
+ props: { user: any, nextStep: any }
+) {
+ const { setCurrentTab, setErrors } = useAuthFormState()
+ const [loading, setLoading] = useState(false)
+ const isFromSignIn = props.user?.hasOwnProperty('isSignedIn')
+ const signUpCodeDeliveryDetails = props.user?.nextStep?.codeDeliveryDetails
+ const { countDownNum, startCountDown, setCountDownNum } = useCountDown()
+
+ return (
+ {
+ setErrors(null)
+ e.preventDefault()
+
+ // get submit form input data
+ const formData = new FormData(e.target as HTMLFormElement)
+ const data = Object.fromEntries(formData.entries())
+
+ try {
+ setLoading(true)
+ if (props.nextStep === 'CONFIRM_SIGN_UP') {
+ const ret = await Auth.confirmSignUp({
+ username: props.user?.username,
+ confirmationCode: data.code as string,
+ })
+
+ if (ret.nextStep?.signUpStep === 'COMPLETE_AUTO_SIGN_IN') {
+ const { nextStep } = await Auth.autoSignIn()
+ if (nextStep.signInStep === 'DONE') {
+ // signed in
+ setCurrentTab('login')
+ return
+ }
+ }
+
+ setCurrentTab('login')
+ } else {
+ const ret = await Auth.confirmSignIn({
+ challengeResponse: data.code as string,
+ })
+
+ console.debug('confirmSignIn: ', ret)
+ }
+ } catch (e) {
+ setErrors({ code: { message: (e as Error).message, title: t('Bad Response.') } })
+ console.error(e)
+ } finally {
+ setLoading(false)
+ }
+ }}>
+
+
+ {isFromSignIn ? t('CODE_ON_THE_WAY_TIP') : (
+ signUpCodeDeliveryDetails &&
+ {t('We have sent a numeric verification code to your email address at')}
+ {signUpCodeDeliveryDetails.destination}.
+
+ )}
+
+
+ {/**/}
+ {/* {JSON.stringify(props.user, null, 2)}*/}
+ {/* {JSON.stringify(props.nextStep, null, 2)}*/}
+ {/**/}
+
+
+ {countDownNum > 0 ? (
+
+ {countDownNum}s
+
+ ) : {
+ e.stopPropagation()
+ // resend code
+ try {
+ startCountDown()
+ if (props.nextStep === 'CONFIRM_SIGN_UP') {
+ const ret = await Auth.resendSignUpCode({
+ username: props.user?.username
+ })
+
+ console.debug('resendSignUpCode: ', ret)
+ } else {
+ // await Auth.resendSignInCode(props.user)
+ }
+ } catch (e) {
+ setErrors({ code: { message: (e as Error).message, title: t('Bad Response.') } })
+ setCountDownNum(0)
+ console.error(e)
+ } finally {}
+ }}>{t('Resend code')}
+ }
+
+
+
+
+
+ )
+}
+
+export function LSAuthenticator(props: any) {
+ const [errors, setErrors] = React.useState(null)
+ const [currentTab, setCurrentTab] = React.useState<'login' | 'signup' | 'reset-password' | 'confirm-code' | any>('login')
+ const onSessionCallback = React.useCallback((session: any) => {
+ props.onSessionCallback?.(session)
+ }, [props.onSessionCallback])
+
+ React.useEffect(() => {
+ setErrors(null)
+ }, [currentTab])
+
+ let content = null
+ // support passing object with type field
+ let _currentTab = currentTab?.type ? currentTab.type : currentTab
+ let _currentTabProps = currentTab?.props || {}
+
+ switch (_currentTab) {
+ case 'login':
+ content =
+ break
+ case 'signup':
+ content =
+ break
+ case 'reset-password':
+ content =
+ break
+ case 'confirm-code':
+ content =
+ break
+ }
+
+ return (
+
+ {props.titleRender?.(_currentTab, t(_currentTab))}
+
+ {content}
+
+
+ )
+}
\ No newline at end of file
diff --git a/packages/ui/src/i18n.ts b/packages/ui/src/i18n.ts
new file mode 100644
index 0000000000..5b366b984b
--- /dev/null
+++ b/packages/ui/src/i18n.ts
@@ -0,0 +1,40 @@
+export type TranslateFn = (
+ locale: string,
+ dicts: Record,
+ key: string,
+ ...args: any
+) => string
+
+let _nsDicts = {}
+let _locale: string = 'en'
+let _translate: TranslateFn = (
+ locale: string,
+ dicts: Record,
+ key: string,
+ ...args: any
+) => {
+ return dicts[locale]?.[key] || args[0] || key
+}
+
+export function setTranslate(t: TranslateFn) {
+ _translate = t
+}
+
+export function setLocale(locale: string) {
+ _locale = locale
+}
+
+export function setNSDicts(ns: string, dicts: Record) {
+ (_nsDicts as any)[ns] = dicts
+}
+
+export const translate = (
+ ns: string,
+ key: string,
+ ...args: any
+) => {
+ const dicts = (_nsDicts as any)[ns] || {}
+ return _translate(
+ _nsDicts?.hasOwnProperty(_locale) ? _locale : 'en',
+ dicts, key, ...args)
+}
\ No newline at end of file
diff --git a/packages/ui/src/ui.ts b/packages/ui/src/ui.ts
index bcc53991a3..5dc9037e35 100644
--- a/packages/ui/src/ui.ts
+++ b/packages/ui/src/ui.ts
@@ -93,10 +93,14 @@ import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group'
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
import * as uniqolor from 'uniqolor'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
+import { setLocale, setTranslate } from './i18n'
+import * as amplifyAuth from './amplify'
declare global {
var LSUI: any
var LSUtils: any
+ var LSI18N: any
+ var LSAuth: any
}
const shadui = {
@@ -199,6 +203,13 @@ function setupGlobals() {
isDev: process.env.NODE_ENV === 'development',
uniqolor,
}
+
+ window.LSI18N = {
+ setTranslate,
+ setLocale,
+ }
+
+ window.LSAuth = amplifyAuth
}
// setup
diff --git a/packages/ui/yarn.lock b/packages/ui/yarn.lock
index 1fccd7a7d2..297aa87b11 100644
--- a/packages/ui/yarn.lock
+++ b/packages/ui/yarn.lock
@@ -17,6 +17,693 @@
dependencies:
default-browser-id "3.0.0"
+"@aws-amplify/analytics@7.0.87":
+ version "7.0.87"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/analytics/-/analytics-7.0.87.tgz#32405d022e4bbca0f854337b41c75a03878daba6"
+ integrity sha512-Kkehhc1PIE9lGXUtq4vm9dcV4HmfXkDXoBmmLeaax3YVbJMjmyvXw7Mdvp1P+zURdb3p+EALmKii0pKgfMe5FQ==
+ dependencies:
+ "@aws-sdk/client-firehose" "3.621.0"
+ "@aws-sdk/client-kinesis" "3.621.0"
+ "@aws-sdk/client-personalize-events" "3.621.0"
+ "@smithy/util-utf8" "2.0.0"
+ tslib "^2.5.0"
+
+"@aws-amplify/api-graphql@4.7.22":
+ version "4.7.22"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/api-graphql/-/api-graphql-4.7.22.tgz#ea1e7863ebc0a3cf3aa360829eda1f02b1ade27f"
+ integrity sha512-zHOeh/Yfogss4+35GTCLrxKTfCMvFmtYuUKbBftfJ5BSrAsppMBA5yPr03Mea3xNhZLFunkFJj8tkgXAoADeKA==
+ dependencies:
+ "@aws-amplify/api-rest" "4.4.0"
+ "@aws-amplify/core" "6.13.2"
+ "@aws-amplify/data-schema" "^1.7.0"
+ "@aws-sdk/types" "3.387.0"
+ graphql "15.8.0"
+ rxjs "^7.8.1"
+ tslib "^2.5.0"
+ uuid "^11.0.0"
+
+"@aws-amplify/api-rest@4.4.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/api-rest/-/api-rest-4.4.0.tgz#8995243c7cf3fd39ed61bc5bba500106e1de0e80"
+ integrity sha512-woly6TqB6z+LoB2UoVut11Sg+HauuXIUQAbnnjPp18lWIyO2SYLp5EqgczAUP/AC0WP8/SCLOPSZnJkDnKT4QA==
+ dependencies:
+ tslib "^2.5.0"
+
+"@aws-amplify/api@6.3.18":
+ version "6.3.18"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/api/-/api-6.3.18.tgz#a020b56f449e9c8b46af86b6fbf116b27e141e39"
+ integrity sha512-9R5yhx/7SOadrmFch1Z33yh/Pyye1N6tk9E6u8yLLv1dkbeeRAXAwiTSICT5kBXB7X+9CfGGFA8GMxWjMgEC0w==
+ dependencies:
+ "@aws-amplify/api-graphql" "4.7.22"
+ "@aws-amplify/api-rest" "4.4.0"
+ "@aws-amplify/data-schema" "^1.7.0"
+ rxjs "^7.8.1"
+ tslib "^2.5.0"
+
+"@aws-amplify/auth@6.15.1":
+ version "6.15.1"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/auth/-/auth-6.15.1.tgz#2ab61777ab243301e495c5bdbb3aafa2b7dbbdfb"
+ integrity sha512-lbvtABrUye0eQiHj5l7tRPIcrTchSUfA2UyBv48vz9YQDuQjwGNAFbFs074N7zaib6PQqO9QOJ8EQBskLypHcg==
+ dependencies:
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.5.0"
+
+"@aws-amplify/core@6.13.2":
+ version "6.13.2"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/core/-/core-6.13.2.tgz#fc6e0bbfe227fa00a745d34e2a2ca39467534856"
+ integrity sha512-nxetCeXgfMalkEUXb0gkYEnAkz9oi2tFIT9e/rng/68GsNGbJTAhbsjAeDdQJXNPbVOAeg7j2ILrJeSuxpV09A==
+ dependencies:
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/types" "3.398.0"
+ "@smithy/util-hex-encoding" "2.0.0"
+ "@types/uuid" "^9.0.0"
+ js-cookie "^3.0.5"
+ rxjs "^7.8.1"
+ tslib "^2.5.0"
+ uuid "^11.0.0"
+
+"@aws-amplify/data-schema-types@*":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema-types/-/data-schema-types-1.2.0.tgz#fd4ed507adf0786f4ea005121726c72c739d4db0"
+ integrity sha512-1hy2r7jl3hQ5J/CGjhmPhFPcdGSakfme1ZLjlTMJZILfYifZLSlGRKNCelMb3J5N9203hyeT5XDi5yR47JL1TQ==
+ dependencies:
+ graphql "15.8.0"
+ rxjs "^7.8.1"
+
+"@aws-amplify/data-schema@^1.7.0":
+ version "1.21.1"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema/-/data-schema-1.21.1.tgz#b16a373aeb8645e45f7a3826251e86be6391bbee"
+ integrity sha512-ZR7zHcjW9NKlCI39F03Ou/q//fobYNRe0w++3Ne75FU2eGGpi7MCIYEP5Hghued/PZkAuarF5dRt79aQt76V8w==
+ dependencies:
+ "@aws-amplify/data-schema-types" "*"
+ "@smithy/util-base64" "^3.0.0"
+ "@types/aws-lambda" "^8.10.134"
+ "@types/json-schema" "^7.0.15"
+ rxjs "^7.8.1"
+
+"@aws-amplify/datastore@5.0.89":
+ version "5.0.89"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/datastore/-/datastore-5.0.89.tgz#5af0eff4e5d511d5ade123c16ad109e6f8aab184"
+ integrity sha512-8Mku5ZAeGWEjH6UHjycbIgjrVAg2JSyx8q9ZBbqcY1AhXpZ7y4r8PzY46FVAdmUq6jzhlSjGycZ6KSg7TRaY1A==
+ dependencies:
+ "@aws-amplify/api" "6.3.18"
+ "@aws-amplify/api-graphql" "4.7.22"
+ buffer "4.9.2"
+ idb "5.0.6"
+ immer "9.0.6"
+ rxjs "^7.8.1"
+ ulid "^2.3.0"
+
+"@aws-amplify/notifications@2.0.87":
+ version "2.0.87"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/notifications/-/notifications-2.0.87.tgz#1eba9e520f5226e9066a68c8fe2e64617190bce3"
+ integrity sha512-GB/gYS9V9dj8gYpSVaf0JrnSv9Rd3g3sFGSCqFBSQjutGrPWAHHBMIQrQwr1p5Jt8QfCBoFN8CWcBvFlW7D/wQ==
+ dependencies:
+ "@aws-sdk/types" "3.398.0"
+ lodash "^4.17.21"
+ tslib "^2.5.0"
+
+"@aws-amplify/storage@6.9.6":
+ version "6.9.6"
+ resolved "https://registry.yarnpkg.com/@aws-amplify/storage/-/storage-6.9.6.tgz#ba351d105ea4549bbb8d506acbe18a90a224cc6d"
+ integrity sha512-bCpiToPwPgpgvH15T9ezI3uZCk/u+6JA0l5fqJDw3LUbU/UVXD7/P2pP7pFdES12NpAYkVQOUAjVlXk3VZ2+Dw==
+ dependencies:
+ "@aws-sdk/types" "3.398.0"
+ "@smithy/md5-js" "2.0.7"
+ buffer "4.9.2"
+ crc-32 "1.2.2"
+ fast-xml-parser "^4.4.1"
+ tslib "^2.5.0"
+
+"@aws-crypto/crc32@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1"
+ integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==
+ dependencies:
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/sha256-browser@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e"
+ integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==
+ dependencies:
+ "@aws-crypto/sha256-js" "^5.2.0"
+ "@aws-crypto/supports-web-crypto" "^5.2.0"
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ "@aws-sdk/util-locate-window" "^3.0.0"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042"
+ integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==
+ dependencies:
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/supports-web-crypto@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb"
+ integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@aws-crypto/util@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da"
+ integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==
+ dependencies:
+ "@aws-sdk/types" "^3.222.0"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-firehose@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-firehose/-/client-firehose-3.621.0.tgz#2bfb5bc59808dde055ccc18fcb89f6322326729a"
+ integrity sha512-XAjAkXdb35PDvBYph609Fxn4g00HYH/U6N4+KjF9gLQrdTU+wkjf3D9YD02DZNbApJVcu4eIxWh/8M25YkW02A==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.621.0"
+ "@aws-sdk/client-sts" "3.621.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/credential-provider-node" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-kinesis@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-kinesis/-/client-kinesis-3.621.0.tgz#3af1e18622638d20cd0fa3df5182978cb130ab86"
+ integrity sha512-53Omt/beFmTQPjQNpMuPMk5nMzYVsXCRiO+MeqygZEKYG1fWw/UGluCWVbi7WjClOHacsW8lQcsqIRvkPDFNag==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.621.0"
+ "@aws-sdk/client-sts" "3.621.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/credential-provider-node" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/eventstream-serde-browser" "^3.0.5"
+ "@smithy/eventstream-serde-config-resolver" "^3.0.3"
+ "@smithy/eventstream-serde-node" "^3.0.4"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ "@smithy/util-waiter" "^3.1.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-personalize-events@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-personalize-events/-/client-personalize-events-3.621.0.tgz#f061e00d2dc75b1165ace8280879119e78f9a577"
+ integrity sha512-qkVkqYvOe3WVuVNL/gRITGYFfHJCx2ijGFK7H3hNUJH3P4AwskmouAd1pWf+3cbGedRnj2is7iw7E602LeJIHA==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.621.0"
+ "@aws-sdk/client-sts" "3.621.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/credential-provider-node" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sso-oidc@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b"
+ integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/credential-provider-node" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sso@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825"
+ integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sts@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952"
+ integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.621.0"
+ "@aws-sdk/core" "3.621.0"
+ "@aws-sdk/credential-provider-node" "3.621.0"
+ "@aws-sdk/middleware-host-header" "3.620.0"
+ "@aws-sdk/middleware-logger" "3.609.0"
+ "@aws-sdk/middleware-recursion-detection" "3.620.0"
+ "@aws-sdk/middleware-user-agent" "3.620.0"
+ "@aws-sdk/region-config-resolver" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@aws-sdk/util-user-agent-browser" "3.609.0"
+ "@aws-sdk/util-user-agent-node" "3.614.0"
+ "@smithy/config-resolver" "^3.0.5"
+ "@smithy/core" "^2.3.1"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/hash-node" "^3.0.3"
+ "@smithy/invalid-dependency" "^3.0.3"
+ "@smithy/middleware-content-length" "^3.0.5"
+ "@smithy/middleware-endpoint" "^3.1.0"
+ "@smithy/middleware-retry" "^3.0.13"
+ "@smithy/middleware-serde" "^3.0.3"
+ "@smithy/middleware-stack" "^3.0.3"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/url-parser" "^3.0.3"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.13"
+ "@smithy/util-defaults-mode-node" "^3.0.13"
+ "@smithy/util-endpoints" "^2.0.5"
+ "@smithy/util-middleware" "^3.0.3"
+ "@smithy/util-retry" "^3.0.3"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/core@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3"
+ integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ==
+ dependencies:
+ "@smithy/core" "^2.3.1"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/signature-v4" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/util-middleware" "^3.0.3"
+ fast-xml-parser "4.4.1"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-env@3.620.1":
+ version "3.620.1"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c"
+ integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-http@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627"
+ integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/fetch-http-handler" "^3.2.4"
+ "@smithy/node-http-handler" "^3.1.4"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/smithy-client" "^3.1.11"
+ "@smithy/types" "^3.3.0"
+ "@smithy/util-stream" "^3.1.3"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-ini@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222"
+ integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA==
+ dependencies:
+ "@aws-sdk/credential-provider-env" "3.620.1"
+ "@aws-sdk/credential-provider-http" "3.621.0"
+ "@aws-sdk/credential-provider-process" "3.620.1"
+ "@aws-sdk/credential-provider-sso" "3.621.0"
+ "@aws-sdk/credential-provider-web-identity" "3.621.0"
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/credential-provider-imds" "^3.2.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/shared-ini-file-loader" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-node@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47"
+ integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw==
+ dependencies:
+ "@aws-sdk/credential-provider-env" "3.620.1"
+ "@aws-sdk/credential-provider-http" "3.621.0"
+ "@aws-sdk/credential-provider-ini" "3.621.0"
+ "@aws-sdk/credential-provider-process" "3.620.1"
+ "@aws-sdk/credential-provider-sso" "3.621.0"
+ "@aws-sdk/credential-provider-web-identity" "3.621.0"
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/credential-provider-imds" "^3.2.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/shared-ini-file-loader" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-process@3.620.1":
+ version "3.620.1"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee"
+ integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/shared-ini-file-loader" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-sso@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3"
+ integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw==
+ dependencies:
+ "@aws-sdk/client-sso" "3.621.0"
+ "@aws-sdk/token-providers" "3.614.0"
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/shared-ini-file-loader" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-web-identity@3.621.0":
+ version "3.621.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be"
+ integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-host-header@3.620.0":
+ version "3.620.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74"
+ integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-logger@3.609.0":
+ version "3.609.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f"
+ integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-recursion-detection@3.620.0":
+ version "3.620.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513"
+ integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-user-agent@3.620.0":
+ version "3.620.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e"
+ integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@aws-sdk/util-endpoints" "3.614.0"
+ "@smithy/protocol-http" "^4.1.0"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/region-config-resolver@3.614.0":
+ version "3.614.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a"
+ integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ "@smithy/util-config-provider" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.3"
+ tslib "^2.6.2"
+
+"@aws-sdk/token-providers@3.614.0":
+ version "3.614.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd"
+ integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/property-provider" "^3.1.3"
+ "@smithy/shared-ini-file-loader" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/types@3.387.0":
+ version "3.387.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.387.0.tgz#15a968344956b2587dbab1224718d72329e050f4"
+ integrity sha512-YTjFabNwjTF+6yl88f0/tWff018qmmgMmjlw45s6sdVKueWxdxV68U7gepNLF2nhaQPZa6FDOBoA51NaviVs0Q==
+ dependencies:
+ "@smithy/types" "^2.1.0"
+ tslib "^2.5.0"
+
+"@aws-sdk/types@3.398.0":
+ version "3.398.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.398.0.tgz#8ce02559536670f9188cddfce32e9dd12b4fe965"
+ integrity sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==
+ dependencies:
+ "@smithy/types" "^2.2.2"
+ tslib "^2.5.0"
+
+"@aws-sdk/types@3.609.0":
+ version "3.609.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5"
+ integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==
+ dependencies:
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/types@^3.222.0":
+ version "3.893.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.893.0.tgz#1afbdb9d62bf86caeac380e3cac11a051076400a"
+ integrity sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg==
+ dependencies:
+ "@smithy/types" "^4.5.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-endpoints@3.614.0":
+ version "3.614.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e"
+ integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/types" "^3.3.0"
+ "@smithy/util-endpoints" "^2.0.5"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-locate-window@^3.0.0":
+ version "3.893.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz#5df15f24e1edbe12ff1fe8906f823b51cd53bae8"
+ integrity sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-browser@3.609.0":
+ version "3.609.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588"
+ integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/types" "^3.3.0"
+ bowser "^2.11.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-node@3.614.0":
+ version "3.614.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5"
+ integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==
+ dependencies:
+ "@aws-sdk/types" "3.609.0"
+ "@smithy/node-config-provider" "^3.1.4"
+ "@smithy/types" "^3.3.0"
+ tslib "^2.6.2"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13":
version "7.22.13"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
@@ -3109,6 +3796,502 @@
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+"@smithy/abort-controller@^3.1.9":
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.9.tgz#47d323f754136a489e972d7fd465d534d72fcbff"
+ integrity sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/config-resolver@^3.0.13", "@smithy/config-resolver@^3.0.5":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.13.tgz#653643a77a33d0f5907a5e7582353886b07ba752"
+ integrity sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-config-provider" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/core@^2.3.1", "@smithy/core@^2.5.7":
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.7.tgz#b545649071905f064cb0407102f3b9159246f8d9"
+ integrity sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg==
+ dependencies:
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-stream" "^3.3.4"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/credential-provider-imds@^3.2.0", "@smithy/credential-provider-imds@^3.2.8":
+ version "3.2.8"
+ resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz#27ed2747074c86a7d627a98e56f324a65cba88de"
+ integrity sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-codec@^3.1.10":
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz#0c1a3457e7a23b71cd71525ceb668f8569a84dad"
+ integrity sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==
+ dependencies:
+ "@aws-crypto/crc32" "5.2.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-browser@^3.0.5":
+ version "3.0.14"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz#0c3584c7cde2e210aacdfbbd2b57c1d7e2ca3b95"
+ integrity sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==
+ dependencies:
+ "@smithy/eventstream-serde-universal" "^3.0.13"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-config-resolver@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz#5edceba836debea165ea93145231036f6286d67c"
+ integrity sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-node@^3.0.4":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz#5aebd7b553becee277e411a2b69f6af8c9d7b3a6"
+ integrity sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==
+ dependencies:
+ "@smithy/eventstream-serde-universal" "^3.0.13"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-universal@^3.0.13":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz#609c922ea14a0a3eed23a28ac110344c935704eb"
+ integrity sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==
+ dependencies:
+ "@smithy/eventstream-codec" "^3.1.10"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/fetch-http-handler@^3.2.4":
+ version "3.2.9"
+ resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b"
+ integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==
+ dependencies:
+ "@smithy/protocol-http" "^4.1.4"
+ "@smithy/querystring-builder" "^3.0.7"
+ "@smithy/types" "^3.5.0"
+ "@smithy/util-base64" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/fetch-http-handler@^4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz#fc590dea2470d32559ae298306f1277729d24aa9"
+ integrity sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA==
+ dependencies:
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/querystring-builder" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-base64" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/hash-node@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.11.tgz#99e09ead3fc99c8cd7ca0f254ea0e35714f2a0d3"
+ integrity sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/invalid-dependency@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz#8144d7b0af9d34ab5f672e1f674f97f8740bb9ae"
+ integrity sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/is-array-buffer@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111"
+ integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/is-array-buffer@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a"
+ integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/md5-js@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-2.0.7.tgz#4dea27b20b065857f953c74dbaa050003f48a374"
+ integrity sha512-2i2BpXF9pI5D1xekqUsgQ/ohv5+H//G9FlawJrkOJskV18PgJ8LiNbLiskMeYt07yAsSTZR7qtlcAaa/GQLWww==
+ dependencies:
+ "@smithy/types" "^2.3.1"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.5.0"
+
+"@smithy/middleware-content-length@^3.0.5":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz#6e08fe52739ac8fb3996088e0f8837e4b2ea187f"
+ integrity sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==
+ dependencies:
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/middleware-endpoint@^3.1.0", "@smithy/middleware-endpoint@^3.2.8":
+ version "3.2.8"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz#6ca5de80543ba0f0d40e15dc3f9d0f14d192e06e"
+ integrity sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ==
+ dependencies:
+ "@smithy/core" "^2.5.7"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-middleware" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/middleware-retry@^3.0.13":
+ version "3.0.34"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.34.tgz#136c89fc22d70819fdefc51b0d24952cf98883f1"
+ integrity sha512-yVRr/AAtPZlUvwEkrq7S3x7Z8/xCd97m2hLDaqdz6ucP2RKHsBjEqaUA2ebNv2SsZoPEi+ZD0dZbOB1u37tGCA==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/service-error-classification" "^3.0.11"
+ "@smithy/smithy-client" "^3.7.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ tslib "^2.6.2"
+ uuid "^9.0.1"
+
+"@smithy/middleware-serde@^3.0.11", "@smithy/middleware-serde@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz#c7d54e0add4f83e05c6878a011fc664e21022f12"
+ integrity sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/middleware-stack@^3.0.11", "@smithy/middleware-stack@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz#453af2096924e4064d9da4e053cfdf65d9a36acc"
+ integrity sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/node-config-provider@^3.1.12", "@smithy/node-config-provider@^3.1.4":
+ version "3.1.12"
+ resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz#1b1d674fc83f943dc7b3017e37f16f374e878a6c"
+ integrity sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==
+ dependencies:
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/node-http-handler@^3.1.4", "@smithy/node-http-handler@^3.3.3":
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz#94dbb3f15342b656ceba2b26e14aa741cace8919"
+ integrity sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==
+ dependencies:
+ "@smithy/abort-controller" "^3.1.9"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/querystring-builder" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/property-provider@^3.1.11", "@smithy/property-provider@^3.1.3":
+ version "3.1.11"
+ resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.11.tgz#161cf1c2a2ada361e417382c57f5ba6fbca8acad"
+ integrity sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/protocol-http@^4.1.0", "@smithy/protocol-http@^4.1.4", "@smithy/protocol-http@^4.1.8":
+ version "4.1.8"
+ resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9"
+ integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/querystring-builder@^3.0.11", "@smithy/querystring-builder@^3.0.7":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz#2ed04adbe725671824c5613d0d6f9376d791a909"
+ integrity sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-uri-escape" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/querystring-parser@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz#9d3177ea19ce8462f18d9712b395239e1ca1f969"
+ integrity sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/service-error-classification@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz#d3d7fc0aacd2e60d022507367e55c7939e5bcb8a"
+ integrity sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+
+"@smithy/shared-ini-file-loader@^3.1.12", "@smithy/shared-ini-file-loader@^3.1.4":
+ version "3.1.12"
+ resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz#d98b1b663eb18935ce2cbc79024631d34f54042a"
+ integrity sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/signature-v4@^4.1.0":
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d"
+ integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==
+ dependencies:
+ "@smithy/is-array-buffer" "^3.0.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-uri-escape" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/smithy-client@^3.1.11", "@smithy/smithy-client@^3.7.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.7.0.tgz#8cfaa7b68b7af15e588b96aa14e5dce393f85839"
+ integrity sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA==
+ dependencies:
+ "@smithy/core" "^2.5.7"
+ "@smithy/middleware-endpoint" "^3.2.8"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-stream" "^3.3.4"
+ tslib "^2.6.2"
+
+"@smithy/types@^2.1.0", "@smithy/types@^2.2.2", "@smithy/types@^2.3.1":
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.12.0.tgz#c44845f8ba07e5e8c88eda5aed7e6a0c462da041"
+ integrity sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/types@^3.3.0", "@smithy/types@^3.5.0", "@smithy/types@^3.7.2":
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.2.tgz#05cb14840ada6f966de1bf9a9c7dd86027343e10"
+ integrity sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/types@^4.5.0":
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.5.0.tgz#850e334662a1ef1286c35814940c80880400a370"
+ integrity sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/url-parser@^3.0.11", "@smithy/url-parser@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.11.tgz#e5f5ffabfb6230159167cf4cc970705fca6b8b2d"
+ integrity sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==
+ dependencies:
+ "@smithy/querystring-parser" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-base64@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017"
+ integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==
+ dependencies:
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-body-length-browser@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded"
+ integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-body-length-node@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d"
+ integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-buffer-from@^2.0.0", "@smithy/util-buffer-from@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b"
+ integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==
+ dependencies:
+ "@smithy/is-array-buffer" "^2.2.0"
+ tslib "^2.6.2"
+
+"@smithy/util-buffer-from@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3"
+ integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==
+ dependencies:
+ "@smithy/is-array-buffer" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-config-provider@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe"
+ integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-browser@^3.0.13":
+ version "3.0.34"
+ resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.34.tgz#885312529599cf24b09335cb20439c838e452f9f"
+ integrity sha512-FumjjF631lR521cX+svMLBj3SwSDh9VdtyynTYDAiBDEf8YPP5xORNXKQ9j0105o5+ARAGnOOP/RqSl40uXddA==
+ dependencies:
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/smithy-client" "^3.7.0"
+ "@smithy/types" "^3.7.2"
+ bowser "^2.11.0"
+ tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-node@^3.0.13":
+ version "3.0.34"
+ resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.34.tgz#5eb0d97231a34e137980abfb08ea5e3a8f2156f7"
+ integrity sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw==
+ dependencies:
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/credential-provider-imds" "^3.2.8"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/smithy-client" "^3.7.0"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-endpoints@^2.0.5":
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz#a088ebfab946a7219dd4763bfced82709894b82d"
+ integrity sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-hex-encoding@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz#0aa3515acd2b005c6d55675e377080a7c513b59e"
+ integrity sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==
+ dependencies:
+ tslib "^2.5.0"
+
+"@smithy/util-hex-encoding@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6"
+ integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-middleware@^3.0.11", "@smithy/util-middleware@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf"
+ integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-retry@^3.0.11", "@smithy/util-retry@^3.0.3":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.11.tgz#d267e5ccb290165cee69732547fea17b695a7425"
+ integrity sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==
+ dependencies:
+ "@smithy/service-error-classification" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-stream@^3.1.3", "@smithy/util-stream@^3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.3.4.tgz#c506ac41310ebcceb0c3f0ba20755e4fe0a90b8d"
+ integrity sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==
+ dependencies:
+ "@smithy/fetch-http-handler" "^4.1.3"
+ "@smithy/node-http-handler" "^3.3.3"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-uri-escape@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54"
+ integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-utf8@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.0.0.tgz#b4da87566ea7757435e153799df9da717262ad42"
+ integrity sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==
+ dependencies:
+ "@smithy/util-buffer-from" "^2.0.0"
+ tslib "^2.5.0"
+
+"@smithy/util-utf8@^2.0.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5"
+ integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==
+ dependencies:
+ "@smithy/util-buffer-from" "^2.2.0"
+ tslib "^2.6.2"
+
+"@smithy/util-utf8@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a"
+ integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==
+ dependencies:
+ "@smithy/util-buffer-from" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-waiter@^3.1.2":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.2.0.tgz#1e52f870e77d2e5572025f7606053e6ff00df93d"
+ integrity sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==
+ dependencies:
+ "@smithy/abort-controller" "^3.1.9"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
"@storybook/addon-actions@7.5.3":
version "7.5.3"
resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.5.3.tgz#e0d0d819488d1d19918b23469b3ea6610fee5f07"
@@ -3994,6 +5177,11 @@
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708"
integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==
+"@types/aws-lambda@^8.10.134":
+ version "8.10.152"
+ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.152.tgz#f68424a8175f0a54a2a941e65b76c3f51f3bd89d"
+ integrity sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==
+
"@types/babel__core@^7", "@types/babel__core@^7.0.0":
version "7.20.4"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.4.tgz#26a87347e6c6f753b3668398e34496d6d9ac6ac0"
@@ -4166,7 +5354,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -4305,6 +5493,11 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc"
integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==
+"@types/uuid@^9.0.0":
+ version "9.0.8"
+ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba"
+ integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==
+
"@types/yargs-parser@*":
version "21.0.3"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
@@ -4730,6 +5923,20 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+aws-amplify@^6.15.6:
+ version "6.15.6"
+ resolved "https://registry.yarnpkg.com/aws-amplify/-/aws-amplify-6.15.6.tgz#d4c11090beeab70529177166596545015ec40b2a"
+ integrity sha512-beQ7afqfb/I2888GQVQ4olhQeEiJpFyqfZ8aSwpwz16CpfS918VvnUyqtwJ5jY4G3hxA5VLk7n1FL28TwQB2Mw==
+ dependencies:
+ "@aws-amplify/analytics" "7.0.87"
+ "@aws-amplify/api" "6.3.18"
+ "@aws-amplify/auth" "6.15.1"
+ "@aws-amplify/core" "6.13.2"
+ "@aws-amplify/datastore" "5.0.89"
+ "@aws-amplify/notifications" "2.0.87"
+ "@aws-amplify/storage" "6.9.6"
+ tslib "^2.5.0"
+
babel-core@^7.0.0-bridge.0:
version "7.0.0-bridge.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
@@ -4809,7 +6016,7 @@ base-x@^3.0.8:
dependencies:
safe-buffer "^5.0.1"
-base64-js@^1.3.1:
+base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -4868,6 +6075,11 @@ boolbase@^1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+bowser@^2.11.0:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.12.1.tgz#f9ad78d7aebc472feb63dd9635e3ce2337e0e2c1"
+ integrity sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==
+
bplist-parser@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
@@ -4936,6 +6148,15 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+buffer@4.9.2:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
@@ -5323,6 +6544,11 @@ cosmiconfig@^8.0.0, cosmiconfig@^8.2.0:
parse-json "^5.2.0"
path-type "^4.0.0"
+crc-32@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
+ integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
+
cross-spawn@^7.0.0, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -5966,6 +7192,20 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+fast-xml-parser@4.4.1:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f"
+ integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==
+ dependencies:
+ strnum "^1.0.5"
+
+fast-xml-parser@^4.4.1:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb"
+ integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==
+ dependencies:
+ strnum "^1.1.1"
+
fastq@^1.6.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
@@ -6357,6 +7597,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0,
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+graphql@15.8.0:
+ version "15.8.0"
+ resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38"
+ integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==
+
gunzip-maybe@^1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac"
@@ -6549,7 +7794,12 @@ icss-utils@^5.0.0, icss-utils@^5.1.0:
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
-ieee754@^1.1.13:
+idb@5.0.6:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-5.0.6.tgz#8c94624f5a8a026abe3bef3c7166a5febd1cadc1"
+ integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw==
+
+ieee754@^1.1.13, ieee754@^1.1.4:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -6559,6 +7809,11 @@ ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+immer@9.0.6:
+ version "9.0.6"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73"
+ integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==
+
import-fresh@^3.2.1, import-fresh@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -6851,16 +8106,16 @@ is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
+isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -6991,6 +8246,11 @@ jiti@^1.18.2:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
+js-cookie@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
+ integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -8697,6 +9957,13 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
+rxjs@^7.8.1:
+ version "7.8.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
+ integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
+ dependencies:
+ tslib "^2.1.0"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -9045,6 +10312,11 @@ strip-json-comments@^3.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+strnum@^1.0.5, strnum@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
+ integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+
style-loader@3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
@@ -9294,6 +10566,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+tslib@^2.5.0, tslib@^2.6.2:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
tween-functions@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff"
@@ -9342,6 +10619,11 @@ uglify-js@^3.1.4:
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==
+ulid@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/ulid/-/ulid-2.4.0.tgz#9d9ee22e63f4390ee1bcd9ad09fca39d8ae0afed"
+ integrity sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==
+
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
@@ -9525,7 +10807,12 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
-uuid@^9.0.0:
+uuid@^11.0.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912"
+ integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
+
+uuid@^9.0.0, uuid@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
diff --git a/resources/css/shui.css b/resources/css/shui.css
index 1748ff8355..900017bc8b 100644
--- a/resources/css/shui.css
+++ b/resources/css/shui.css
@@ -5,7 +5,7 @@ html * {
html[data-theme=light] {
--accent: var(--rx-gray-12-hsl);
--accent-foreground: var(--rx-gray-02-hsl);
- --input: var(--rx-gray-03-hsl);
+ --input: var(--rx-gray-05-hsl);
--secondary: 240 4.8% 95.9%;
}
@@ -23,7 +23,7 @@ html[data-theme=dark] {
--muted: 0 0% 15%;
--popover: 0 0% 7%;
--popover-foreground: 0 0 95%;
- --input: 0 0% 25%;
+ --input: 0 0% 16%;
}
html {
diff --git a/resources/index.html b/resources/index.html
index 8eb5f72ce0..27a1535451 100644
--- a/resources/index.html
+++ b/resources/index.html
@@ -49,7 +49,6 @@
-
diff --git a/resources/mobile/index.html b/resources/mobile/index.html
index fa78e34469..0f7099cdae 100644
--- a/resources/mobile/index.html
+++ b/resources/mobile/index.html
@@ -2,7 +2,7 @@
-
+
Logseq: A privacy-first platform for knowledge management and collaboration
@@ -23,7 +23,6 @@
-
diff --git a/src/main/frontend/components/theme.cljs b/src/main/frontend/components/theme.cljs
index 4b73ffcc81..e7b4762c5c 100644
--- a/src/main/frontend/components/theme.cljs
+++ b/src/main/frontend/components/theme.cljs
@@ -1,5 +1,6 @@
(ns frontend.components.theme
- (:require [electron.ipc :as ipc]
+ (:require [clojure.string :as string]
+ [electron.ipc :as ipc]
[frontend.components.settings :as settings]
[frontend.config :as config]
[frontend.context.i18n :refer [t]]
@@ -68,7 +69,9 @@
(hooks/use-effect!
#(let [doc js/document.documentElement]
- (.setAttribute doc "lang" preferred-language)))
+ (.setAttribute doc "lang" preferred-language)
+ (some-> preferred-language (string/lower-case) (js/LSI18N.setLocale)))
+ [preferred-language])
(hooks/use-effect!
#(js/setTimeout
diff --git a/src/main/frontend/components/user/config.js b/src/main/frontend/components/user/config.js
deleted file mode 100644
index df71e27b4f..0000000000
--- a/src/main/frontend/components/user/config.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import {Amplify} from '@aws-amplify/core';
-
-Amplify.configure({
- Auth: {
- // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
- // identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab',
-
- // REQUIRED - Amazon Cognito Region
- region: 'us-east-1',
-
- // OPTIONAL - Amazon Cognito Federated Identity Pool Region
- // Required only if it's different from Amazon Cognito Region
- // identityPoolRegion: 'XX-XXXX-X',
-
- // OPTIONAL - Amazon Cognito User Pool ID
- userPoolId: 'us-east-1_ldvDmC9Fe',
-
- // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
- userPoolWebClientId: '41m82unjghlea984vjpk887qcr',
-
- // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
- // mandatorySignIn: false,
-
- // OPTIONAL - This is used when autoSignIn is enabled for Auth.signUp
- // 'code' is used for Auth.confirmSignUp, 'link' is used for email link verification
- // signUpVerificationMethod: 'code', // 'code' | 'link'
-
- // OPTIONAL - Configuration for cookie storage
- // Note: if the secure flag is set to true, then the cookie transmission requires a secure protocol
- cookieStorage: {
- domain: "localhost",
- path: "/",
- expires: 365,
- sameSite: "strict",
- secure: true,
- },
-
- // OPTIONAL - customized storage object
- // storage: MyStorage,
-
- // OPTIONAL - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'
- authenticationFlowType: 'USER_SRP_AUTH',
-
- //
- // // OPTIONAL - Manually set key value pairs that can be passed to Cognito Lambda Triggers
- // clientMetadata: {myCustomKey: 'myCustomValue'},
- //
- // // OPTIONAL - Hosted UI configuration
- // oauth: {
- // domain: 'your_cognito_domain',
- // scope: ['phone', 'email', 'profile', 'openid', 'aws.cognito.signin.user.admin'],
- // redirectSignIn: 'http://localhost:3000/',
- // redirectSignOut: 'http://localhost:3000/',
- // responseType: 'code' // or 'token', note that REFRESH token will only be generated when the responseType is code
- }
-});
\ No newline at end of file
diff --git a/src/main/frontend/components/user/login.cljs b/src/main/frontend/components/user/login.cljs
index bf1746db2b..e3e8fea54b 100644
--- a/src/main/frontend/components/user/login.cljs
+++ b/src/main/frontend/components/user/login.cljs
@@ -1,7 +1,7 @@
(ns frontend.components.user.login
(:require [cljs-bean.core :as bean]
[clojure.string :as string]
- [dommy.core :refer-macros [sel]]
+ [dommy.core :refer-macros [sel by-id]]
[frontend.config :as config]
[frontend.handler.notification :as notification]
[frontend.handler.route :as route-handler]
@@ -17,24 +17,24 @@
(defn sign-out!
[]
- (try (.signOut js/LSAmplify.Auth)
+ (try (.signOut js/LSAuth.Auth)
(catch :default e (js/console.warn e))))
-(defn- setup-configure!
+(defn setup-configure!
[]
#_:clj-kondo/ignore
- (def setupAuthConfigure! (.-setupAuthConfigure js/LSAmplify))
+ (defn setupAuthConfigure! [config]
+ (.init js/LSAuth (bean/->js {:authCognito (merge config {:loginWith {:email true}})})))
#_:clj-kondo/ignore
(def LSAuthenticator
- (adapt-class (.-LSAuthenticator js/LSAmplify)))
+ (adapt-class (.-LSAuthenticator js/LSAuth)))
- (.setLanguage js/LSAmplify.I18n (or (:preferred-language @state/state) "en"))
(setupAuthConfigure!
- #js {:region config/REGION,
- :userPoolId config/USER-POOL-ID,
- :userPoolWebClientId config/COGNITO-CLIENT-ID,
- :identityPoolId config/IDENTITY-POOL-ID,
- :oauthDomain config/OAUTH-DOMAIN}))
+ {:region config/REGION,
+ :userPoolId config/USER-POOL-ID,
+ :userPoolClientId config/COGNITO-CLIENT-ID,
+ :identityPoolId config/IDENTITY-POOL-ID,
+ :oauthDomain config/OAUTH-DOMAIN}))
(rum/defc user-pane
[_sign-out! user]
@@ -55,45 +55,24 @@
(rum/defc page-impl
[]
- (let [[ready?, set-ready?] (rum/use-state false)
- [tab, set-tab!] (rum/use-state :login)
- *ref-el (rum/use-ref nil)]
-
- (hooks/use-effect!
- (fn [] (setup-configure!)
- (set-ready? true)
- (js/setTimeout
- (fn []
- (when-let [^js el (some-> (rum/deref *ref-el) (.querySelector ".amplify-tabs"))]
- (let [btn1 (.querySelector el "button")]
- (.addEventListener el "pointerdown"
- (fn [^js e]
- (if (= (.-target e) btn1)
- (set-tab! :login)
- (set-tab! :create-account)))))))))
- [])
-
- (hooks/use-effect!
- (fn []
- (when-let [^js el (rum/deref *ref-el)]
- (js/setTimeout
- #(some-> (.querySelector el (str "input[name=" (if (= tab :login) "username" "email") "]"))
- (.focus)) 100)))
- [tab])
-
+ (let [*ref-el (rum/use-ref nil)
+ [tab set-tab!] (rum/use-state nil)]
[:div.cp__user-login
- {:ref *ref-el}
- (when ready?
- (LSAuthenticator
- {:termsLink "https://blog.logseq.com/terms/"}
- (fn [^js op]
- (let [sign-out!' (.-signOut op)
- ^js user-proxy (.-user op)
- ^js user (try (js/JSON.parse (js/JSON.stringify user-proxy))
- (catch js/Error e
- (js/console.error "Error: Amplify user payload:" e)))
- user' (bean/->clj user)]
- (user-pane sign-out!' user')))))]))
+ {:ref *ref-el
+ :id (str "user-auth-" tab)}
+ (LSAuthenticator
+ {:titleRender (fn [key title]
+ (set-tab! key)
+ (shui/card-header
+ {:class "px-0"}
+ (shui/card-title
+ {:class "capitalize"}
+ (string/replace title "-" " "))))
+ :onSessionCallback #()}
+ (fn [^js op]
+ (let [sign-out!' (.-signOut op)
+ user' (bean/->clj (.-sessionUser op))]
+ (user-pane sign-out!' user'))))]))
(rum/defcs modal-inner <
shortcut/disable-all-shortcuts
@@ -109,7 +88,9 @@
(shui/dialog-open!
(fn [_close] (modal-inner))
{:label "user-login"
- :content-props {:onPointerDownOutside #(let [inputs (sel "form[data-amplify-form] input:not([type=checkbox])")
- inputs (some->> inputs (map (fn [^js e] (.-value e))) (remove string/blank?))]
- (when (seq inputs)
- (.preventDefault %)))}}))
+ :content-props {:onPointerDownOutside #(if (by-id "#user-auth-login")
+ (let [inputs (sel ".ls-authenticator-content form input:not([type=checkbox])")
+ inputs (some->> inputs (map (fn [^js e] (.-value e))) (remove string/blank?))]
+ (when (seq inputs)
+ (.preventDefault %)))
+ (.preventDefault %))}}))
diff --git a/src/main/frontend/components/user/login.css b/src/main/frontend/components/user/login.css
index 54a250e2d4..b7cda8c83c 100644
--- a/src/main/frontend/components/user/login.css
+++ b/src/main/frontend/components/user/login.css
@@ -1,126 +1,38 @@
.cp__user-login {
- [data-amplify-authenticator] [data-amplify-router] {
- --amplify-components-authenticator-router-background-color: var(--ls-primary-background-color);
- --amplify-components-field-label-color: var(--ls-primary-text-color);
- --amplify-components-authenticator-router-border-color: var(--ls-border-color);
- --amplify-components-tabs-item-color: var(--ls-primary-text-color);
- --amplify-components-tabs-item-active-color: var(--ls-primary-text-color);
- --amplify-components-tabs-item-hover-color: var(--ls-primary-text-color);
- --amplify-components-tabs-item-active-border-color: var(--ls-tertiary-background-color);
- --amplify-components-tabs-border-width: 0;
- --amplify-components-authenticator-state-inactive-background-color: var(--ls-tertiary-background-color);
- --amplify-components-tabs-item-active-background-color: var(--ls-primary-background-color);
- --amplify-components-button-border-color: var(--ls-border-color);
- --amplify-components-textfield-border-color: var(--ls-border-color);
- --amplify-components-button-primary-background-color: var(--color-indigo-600);
- --amplify-components-text-color: var(--ls-primary-text-color);
- --amplify-components-button-hover-background-color: var(--ls-primary-background-color);
- --amplify-components-button-border-width: 0;
- --amplify-internal-button-loading-background-color: var(--ls-header-button-background);
- --amplify-components-authenticator-router-border-width: 1px;
- --amplify-components-button-color: var(--ls-primary-text-color);
- --amplify-components-divider-label-background-color: var(--ls-primary-background-color);
- --amplify-components-divider-label-color: var(--ls-primary-text-color);
- --amplify-components-heading-color: var(--ls-primary-text-color);
- --amplify-components-button-link-hover-background-color: transparent;
- --amplify-components-button-link-active-background-color: transparent;
- --amplify-components-textfield-color: var(--ls-primary-text-color);
- --amplify-components-checkbox-icon-background-color: var(--color-indigo-600);
+ span.opacity-50, a.opacity-60 {
+ @apply opacity-80;
}
- [data-amplify-authenticator] [data-amplify-router] {
- @apply overflow-hidden rounded-[6px] shadow-2xl;
+ p {
+ @apply text-[inherit];
}
- [data-amplify-authenticator] [data-amplify-container] {
- place-self: unset;
- }
+ .ui__alert {
+ @apply bg-red-300 dark:border-red-800 dark:bg-red-800/90 dark:text-red-200;
- [data-amplify-authenticator] [data-amplify-form] {
- @apply px-4 py-2;
+ svg {
+ @apply dark:text-red-200;
+ }
- @screen sm {
- @apply px-6 py-4;
+ &-description {
+ @apply -mb-3;
}
}
-}
-@media (min-width: 30rem) {
- [data-amplify-authenticator] [data-amplify-container] {
- width: 100%;
- }
}
.ui__dialog-content[label=user-login] {
- @apply flex items-center top-0 p-0 border-none w-auto;
+ @apply flex items-center top-0 px-6 pt-0 w-auto;
+
+ .ui__card-header {
+ @apply pb-7;
+ }
.ui__dialog-main-content {
- @apply p-0 min-w-fit relative max-w-[600px] sm:max-w-[90vw] sm:w-[500px];
+ @apply p-0 w-[70vw] relative max-w-[500px] sm:w-[440px];
}
.ui__modal-close-wrap {
@apply z-10 top-[4px];
}
}
-
-.cp__user {
- &-login {
- ::placeholder {
- color: var(--ls-primary-text-color);
- opacity: .3;
- }
-
- [data-indicator-position=top] > .amplify-tabs-item {
- margin-top: 0;
- }
-
- .amplify-tabs-item {
- transition: none;
-
- &:focus {
- color: var(--ls-primary-text-color);
- }
-
- &:hover {
- opacity: .9;
- }
- }
-
- .amplify-field-group {
- @apply relative;
-
- .amplify-button {
- color: var(--ls-primary-text-color);
-
- &:active, &:hover, &:focus {
- background-color: transparent;
- }
- }
- }
-
- .amplify-field-group__outer-end {
- @apply absolute right-0 top-0 bottom-0;
- }
-
- .amplify-input {
- border-radius: 4px !important;
- }
-
- .amplify-checkboxfield {
- @apply text-sm;
-
- .amplify-field__error-message {
- color: var(--ls-primary-text-color);
- opacity: .4;
- }
- }
-
- .amplify-text--error {
- color: var(--ls-error-text-color);
- }
- }
-}
-
-.federated-sign-in-container {
- display: none;
-}
diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs
index af0713f24a..a6e94ca375 100644
--- a/src/main/frontend/handler.cljs
+++ b/src/main/frontend/handler.cljs
@@ -8,6 +8,7 @@
[frontend.components.content :as cp-content]
[frontend.components.editor :as editor]
[frontend.components.page :as page]
+ [frontend.components.user.login :as user.login]
[frontend.components.reference :as reference]
[frontend.components.whiteboard :as whiteboard]
[frontend.config :as config]
@@ -143,6 +144,7 @@
(register-components-fns!)
(user-handler/restore-tokens-from-localstorage)
+ (user.login/setup-configure!)
(state/set-db-restoring! true)
(when (util/electron?)
(el/listen!))
diff --git a/src/main/frontend/handler/user.cljs b/src/main/frontend/handler/user.cljs
index 34cd8fa65f..d2713f164b 100644
--- a/src/main/frontend/handler/user.cljs
+++ b/src/main/frontend/handler/user.cljs
@@ -108,6 +108,20 @@
(when (string/starts-with? key prefix)
(js/localStorage.removeItem key)))))
+(defn auto-fill-refresh-token-from-cognito!
+ []
+ (let [prefix "CognitoIdentityServiceProvider."
+ refresh-token-key (some #(when (string/starts-with? % prefix)
+ (when (string/ends-with? % "refreshToken")
+ %))
+ (js/Object.keys js/localStorage))]
+ (when refresh-token-key
+ (let [refresh-token (js/localStorage.getItem refresh-token-key)]
+ (when (and refresh-token (not= refresh-token "undefined"))
+ (state/set-auth-refresh-token refresh-token)
+ (js/localStorage.setItem "refresh-token" refresh-token)))))
+ )
+
(defn- clear-tokens
([]
(state/set-auth-id-token nil)
@@ -206,6 +220,7 @@
(:jwtToken (:idToken session))
(:jwtToken (:accessToken session))
(:token (:refreshToken session)))
+ (auto-fill-refresh-token-from-cognito!)
(state/pub-event! [:user/fetch-info-and-graphs]))
(defn ^:export login-with-username-password-e2e
diff --git a/src/main/frontend/mobile/index.css b/src/main/frontend/mobile/index.css
index cda1a17810..a00d0da1df 100644
--- a/src/main/frontend/mobile/index.css
+++ b/src/main/frontend/mobile/index.css
@@ -2,13 +2,10 @@
@apply fixed bottom-[100px] h-[70px] p-1.5 rounded-md overflow-y-hidden overflow-x-auto
bg-[var(--ls-secondary-background-color)] z-[99999];
- box-shadow:
- /* bottom = shadow-lg */
- 0 10px 15px -3px rgba(0,0,0,0.1),
- 0 4px 6px -4px rgba(0,0,0,0.1),
- /* top = lighter (closer to shadow-md) */
- 0 -6px 10px -4px rgba(0,0,0,0.08),
- 0 -2px 4px -4px rgba(0,0,0,0.08);
+ box-shadow: /* bottom = shadow-lg */ 0 10px 15px -3px rgba(0, 0, 0, 0.1),
+ 0 4px 6px -4px rgba(0, 0, 0, 0.1),
+ /* top = lighter (closer to shadow-md) */ 0 -6px 10px -4px rgba(0, 0, 0, 0.08),
+ 0 -2px 4px -4px rgba(0, 0, 0, 0.08);
.action-bar-commands {
@apply relative flex w-full;
@@ -144,3 +141,21 @@ html.is-zoomed-native-ios {
}
}
}
+
+html.has-mobile-keyboard {
+ .ui__dialog-overlay {
+ &:has(.app-login-modal) {
+ @apply overflow-y-auto;
+ }
+ }
+
+ .ui__dialog-content {
+ &.app-login-modal {
+ margin-bottom: 460px;
+ }
+ }
+}
+
+.ui__dialog-content[label=user-login] {
+ @apply rounded-lg pb-3;
+}
\ No newline at end of file
diff --git a/src/main/mobile/components/settings.cljs b/src/main/mobile/components/settings.cljs
index 74214a5f6f..1310ad9541 100644
--- a/src/main/mobile/components/settings.cljs
+++ b/src/main/mobile/components/settings.cljs
@@ -15,6 +15,7 @@
:class "text-1xl flex flex-1 w-full my-8"
:on-click #(shui/dialog-open! login/page-impl
{:close-btn? false
+ :label "user-login"
:align :top
:content-props {:class "app-login-modal"}})}
"Login")
diff --git a/tailwind.all.css b/tailwind.all.css
index fd17bd799e..29d838b0ac 100644
--- a/tailwind.all.css
+++ b/tailwind.all.css
@@ -9,7 +9,6 @@
@import "inter-ui/inter.css";
@import "photoswipe/dist/photoswipe.css";
@import "shepherd.js/dist/css/shepherd.css";
-@import "packages/amplify/dist/amplify.css";
@import "packages/tldraw/apps/tldraw-logseq/src/styles.css";
@import "katex/dist/katex.min.css";
@import "codemirror/lib/codemirror.css";
diff --git a/tailwind.config.js b/tailwind.config.js
index 3c21d639c0..512f1088f8 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -129,7 +129,8 @@ module.exports = {
'./resources/**/*.html',
'./deps/shui/src/**/*.cljs',
'./deps/shui/src/**/*.cljc',
- './packages/ui/@/components/**/*.{ts,tsx}'
+ './packages/ui/@/components/**/*.{ts,tsx}',
+ './packages/ui/src/amplify/**/*.{ts,tsx}'
],
safelist: [
'bg-black', 'bg-white', 'capitalize-first',
diff --git a/tailwind.mobile.css b/tailwind.mobile.css
index 6c4ef78d6c..4371539ee5 100644
--- a/tailwind.mobile.css
+++ b/tailwind.mobile.css
@@ -9,7 +9,6 @@
@import "inter-ui/inter.css";
@import "photoswipe/dist/photoswipe.css";
-@import "packages/amplify/dist/amplify.css";
@import "katex/dist/katex.min.css";
@import "codemirror/lib/codemirror.css";
@import "codemirror/theme/solarized.css";