diff --git a/packages/console/package.json b/packages/console/package.json index ebaa444d2..af1acf98c 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -79,6 +79,7 @@ "react-syntax-highlighter": "^15.5.0", "recharts": "^2.1.13", "remark-gfm": "^3.0.1", + "snake-case": "^3.0.4", "stylelint": "^14.9.1", "swr": "^1.3.0", "typescript": "^4.7.4", diff --git a/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx b/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx deleted file mode 100644 index 801326b51..000000000 --- a/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { ConnectorResponse, ConnectorType, SignInMethodKey } from '@logto/schemas'; -import { useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import useSWR from 'swr'; - -import Alert from '@/components/Alert'; -import { RequestError } from '@/hooks/use-api'; - -type Props = { - method: SignInMethodKey; -}; - -const ConnectorSetupWarning = ({ method }: Props) => { - const { data: connectors } = useSWR('/api/connectors'); - const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); - - const type = useMemo(() => { - if (method === SignInMethodKey.Username) { - return; - } - - if (method === SignInMethodKey.Sms) { - return ConnectorType.Sms; - } - - if (method === SignInMethodKey.Email) { - return ConnectorType.Email; - } - - return ConnectorType.Social; - }, [method]); - - if (!type || !connectors) { - return null; - } - - if (connectors.some(({ type: connectorType, enabled }) => connectorType === type && enabled)) { - return null; - } - - return ( - - {t('sign_in_exp.setup_warning.no_connector', { context: type.toLowerCase() })} - - ); -}; - -export default ConnectorSetupWarning; diff --git a/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx b/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx deleted file mode 100644 index f8e0fc041..000000000 --- a/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import { SignInMethodKey } from '@logto/schemas'; -import { useMemo } from 'react'; -import { Controller, useFormContext } from 'react-hook-form'; -import { useTranslation } from 'react-i18next'; - -import Checkbox from '@/components/Checkbox'; -import FormField from '@/components/FormField'; -import Select from '@/components/Select'; -import Switch from '@/components/Switch'; - -import { SignInExperienceForm } from '../types'; -import ConnectorSetupWarning from './ConnectorSetupWarning'; -import ConnectorsTransfer from './ConnectorsTransfer'; -import * as styles from './index.module.scss'; - -const signInMethods = Object.values(SignInMethodKey); - -const SignInMethodsForm = () => { - const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); - const { register, watch, control, getValues, setValue } = useFormContext(); - const primaryMethod = watch('signInMethods.primary'); - const enableSecondary = watch('signInMethods.enableSecondary'); - const sms = watch('signInMethods.sms'); - const email = watch('signInMethods.email'); - const social = watch('signInMethods.social'); - - const postPrimaryMethodChange = ( - oldPrimaryMethod?: SignInMethodKey, - primaryMethod?: SignInMethodKey - ) => { - if (oldPrimaryMethod) { - // The secondary sign-in method should select the old primary method by default. - setValue(`signInMethods.${oldPrimaryMethod}`, true); - } - - if (primaryMethod) { - // When one of the sign-in methods has been primary, it should not be able to be secondary simultaneously. - setValue(`signInMethods.${primaryMethod}`, false); - } - }; - - const secondaryMethodsFields = useMemo( - () => - signInMethods.map((method) => { - const label = ( - <> - {t('sign_in_exp.sign_in_methods.methods', { context: method })} - {primaryMethod === method && ( - - {t('sign_in_exp.sign_in_methods.methods_primary_tag')} - - )} - - ); - - const enabled = - (method === SignInMethodKey.Email && email) || - (method === SignInMethodKey.Sms && sms) || - (method === SignInMethodKey.Social && social); - - return ( -
- ( - - )} - /> - {enabled && } -
- ); - }), - [t, primaryMethod, email, sms, social, control] - ); - - return ( - <> -
{t('sign_in_exp.sign_in_methods.title')}
- - ( - ({ + value: identifier, + title: ( +
+ {t('sign_in_exp.sign_up_and_sign_in.identifiers', { + context: snakeCase(identifier), + })} + {identifier === SignUpIdentifier.None && ( + + {t( + 'sign_in_exp.sign_up_and_sign_in.sign_up.social_only_creation_description' + )} + + )} +
+ ), + }))} + onChange={(value) => { + onChange(value); + }} + /> + )} + /> + {signUpIdentifier !== SignUpIdentifier.None && ( + + )} +
+ {signUpIdentifier !== SignUpIdentifier.None && ( + + ( + + )} + /> + {signUpIdentifier !== SignUpIdentifier.Username && ( + ( + + )} + /> + )} + + )} + + ); +}; + +export default SignUpForm; diff --git a/packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.module.scss b/packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.module.scss new file mode 100644 index 000000000..3077443c6 --- /dev/null +++ b/packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.module.scss @@ -0,0 +1,22 @@ +@use '@/scss/underscore' as _; + +.title { + @include _.subhead-cap; + color: var(--color-neutral-variant-60); + margin-top: _.unit(12); + + &:first-child { + margin-top: _.unit(6); + } +} + +.socialOnlyDescription { + margin-left: _.unit(1); + color: var(--color-text-secondary); +} + +.signUpAuthentication { + > :not(:first-child) { + margin-top: _.unit(3); + } +} diff --git a/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx b/packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.tsx similarity index 67% rename from packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx rename to packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.tsx index 9f5f3dd1e..cc0e7ac84 100644 --- a/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/SignUpAndSignInTab/index.tsx @@ -3,15 +3,15 @@ import { useFormContext } from 'react-hook-form'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; -import SignInMethodsForm from '../components/SignInMethodsForm'; -import { SignInExperienceForm } from '../types'; +import { SignInExperienceForm } from '../../types'; +import SignUpForm from './SignUpForm'; type Props = { defaultData: SignInExperienceForm; isDataDirty: boolean; }; -const SignInMethodsTab = ({ defaultData, isDataDirty }: Props) => { +const SignUpAndSignInTab = ({ defaultData, isDataDirty }: Props) => { const { reset } = useFormContext(); useEffect(() => { @@ -22,10 +22,10 @@ const SignInMethodsTab = ({ defaultData, isDataDirty }: Props) => { return ( <> - + ); }; -export default SignInMethodsTab; +export default SignUpAndSignInTab; diff --git a/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts index 533ee1cfa..bc264a635 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts @@ -3,7 +3,7 @@ const sign_in_exp = { description: 'Customize the sign in UI to match your brand and view in real time', tabs: { branding: 'Branding', - methods: 'Sign-in methods', + sign_up_and_sign_in: 'Sign up and Sign in', others: 'Others', }, welcome: { @@ -38,6 +38,22 @@ const sign_in_exp = { slogan: 'Slogan', slogan_placeholder: 'Unleash your creativity', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', + identifiers_email: 'Email address', + identifiers_phone: 'Phone number', + identifiers_username: 'Username', + identifiers_email_or_phone: 'Email address or phone number', + identifiers_none: 'None', + sign_up: { + title: 'SIGN UP', + sign_up_identifier: 'Sign up identifier', + sign_up_authentication: 'Sign up authentication', + set_a_password_option: 'Set a password', + verify_at_sign_up_option: 'Verify at sign up', + social_only_creation_description: '(This apply to social only account creation)', + }, + }, sign_in_methods: { title: 'SIGN-IN METHODS', primary: 'Primary sign-in method', @@ -110,11 +126,13 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: + no_connector_phone: 'You haven’t set up a SMS connector yet. Your sign in experience won’t go live until you finish the settings first. ', no_connector_email: 'You haven’t set up an Email connector yet. Your sign in experience won’t go live until you finish the settings first. ', - no_connector_social: + no_connector_email_or_phone: + 'You haven’t set up both Email and SMS connectors yet. Your sign in experience won’t go live until you finish the settings first. ', + no_connector_none: 'You haven’t set up any social connectors yet. Your sign in experience won’t go live until you finish the settings first. ', no_added_social_connector: 'You’ve set up a few social connectors now. Make sure to add some to your sign in experience.', diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts index a4b6e8294..03385f0dc 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts @@ -4,7 +4,7 @@ const sign_in_exp = { "Personnalisez l'interface utilisateur pour qu'elle corresponde à votre marque et consultez-la en temps réel.", tabs: { branding: 'Image de marque', - methods: 'Méthodes de connexion', + sign_up_and_sign_in: 'Sign up and Sign in', // UNTRANSLATED others: 'Autres', }, welcome: { @@ -40,6 +40,22 @@ const sign_in_exp = { slogan: 'Slogan', slogan_placeholder: 'Libérez votre créativité', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', // UNTRANSLATED + identifiers_email: 'Email address', // UNTRANSLATED + identifiers_phone: 'Phone number', // UNTRANSLATED + identifiers_username: 'Username', // UNTRANSLATED + identifiers_email_or_phone: 'Email address or phone number', // UNTRANSLATED + identifiers_none: 'None', // UNTRANSLATED + sign_up: { + title: 'SIGN UP', // UNTRANSLATED + sign_up_identifier: 'Sign up identifier', // UNTRANSLATED + sign_up_authentication: 'Sign up authentication', // UNTRANSLATED + set_a_password_option: 'Set a password', // UNTRANSLATED + verify_at_sign_up_option: 'Verify at sign up', // UNTRANSLATED + social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED + }, + }, sign_in_methods: { title: 'METHODES DE CONNEXION', primary: 'Méthode de connexion principale', @@ -112,11 +128,13 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: + no_connector_phone: "Vous n'avez pas encore configuré de connecteur SMS. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ", no_connector_email: "Vous n'avez pas encore configuré de connecteur Email. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ", - no_connector_social: + no_connector_email_or_phone: + 'You haven’t set up both Email and SMS connectors yet. Your sign in experience won’t go live until you finish the settings first. ', // UNTRANSLATED + no_connector_none: "Vous n'avez pas encore configuré de connecteurs sociaux. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ", no_added_social_connector: "Vous avez maintenant configuré quelques connecteurs sociaux. Assurez-vous d'en ajouter quelques-uns à votre expérience de connexion.", diff --git a/packages/phrases/src/locales/ko-kr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/ko-kr/translation/admin-console/sign-in-exp.ts index 2a9e28b4a..f00547bc4 100644 --- a/packages/phrases/src/locales/ko-kr/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/ko-kr/translation/admin-console/sign-in-exp.ts @@ -3,7 +3,7 @@ const sign_in_exp = { description: '로그인 화면을 브랜드에 맞게 커스터마이징 그리고 실시간으로 확인해보세요.', tabs: { branding: '브랜딩', - methods: '로그인 방법', + sign_up_and_sign_in: 'Sign up and Sign in', // UNTRANSLATED others: '기타', }, welcome: { @@ -35,6 +35,22 @@ const sign_in_exp = { slogan: '슬로건', slogan_placeholder: 'Unleash your creativity', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', // UNTRANSLATED + identifiers_email: 'Email address', // UNTRANSLATED + identifiers_phone: 'Phone number', // UNTRANSLATED + identifiers_username: 'Username', // UNTRANSLATED + identifiers_email_or_phone: 'Email address or phone number', // UNTRANSLATED + identifiers_none: 'None', // UNTRANSLATED + sign_up: { + title: 'SIGN UP', // UNTRANSLATED + sign_up_identifier: 'Sign up identifier', // UNTRANSLATED + sign_up_authentication: 'Sign up authentication', // UNTRANSLATED + set_a_password_option: 'Set a password', // UNTRANSLATED + verify_at_sign_up_option: 'Verify at sign up', // UNTRANSLATED + social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED + }, + }, sign_in_methods: { title: '로그인 방법', primary: '메인 로그인 방법', @@ -107,11 +123,13 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: + no_connector_phone: 'SMS 연동이 아직 설정되지 않았어요. 설정이 완료될 때 까지, 사용자는 이 로그인 방법을 사용할 수 없어요.', no_connector_email: '이메일 연동이 아직 설정되지 않았어요. 설정이 완료될 때 까지, 사용자는 이 로그인 방법을 사용할 수 없어요.', - no_connector_social: + no_connector_email_or_phone: + 'You haven’t set up both Email and SMS connectors yet. Your sign in experience won’t go live until you finish the settings first. ', // UNTRANSLATED + no_connector_none: '소셜 연동이 아직 설정되지 않았어요. 설정이 완료될 때 까지, 사용자는 이 로그인 방법을 사용할 수 없어요.', no_added_social_connector: '보다 많은 소셜 연동들을 설정하여, 고객에게 보다 나은 경험을 제공해보세요.', diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts index 91ba579bf..fa683c28f 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts @@ -4,7 +4,7 @@ const sign_in_exp = { 'Personalize a interface de login para corresponder a sua marca e visualize em tempo real', tabs: { branding: 'Marca', - methods: 'Métodos de login', + sign_up_and_sign_in: 'Sign up and Sign in', // UNTRANSLATED others: 'Outros', }, welcome: { @@ -38,6 +38,22 @@ const sign_in_exp = { slogan: 'Slogan', slogan_placeholder: 'Liberte a sua criatividade', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', // UNTRANSLATED + identifiers_email: 'Email address', // UNTRANSLATED + identifiers_phone: 'Phone number', // UNTRANSLATED + identifiers_username: 'Username', // UNTRANSLATED + identifiers_email_or_phone: 'Email address or phone number', // UNTRANSLATED + identifiers_none: 'None', // UNTRANSLATED + sign_up: { + title: 'SIGN UP', // UNTRANSLATED + sign_up_identifier: 'Sign up identifier', // UNTRANSLATED + sign_up_authentication: 'Sign up authentication', // UNTRANSLATED + set_a_password_option: 'Set a password', // UNTRANSLATED + verify_at_sign_up_option: 'Verify at sign up', // UNTRANSLATED + social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED + }, + }, sign_in_methods: { title: 'MÉTODOS DE LOGIN', primary: 'Método de login principal', @@ -110,11 +126,13 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: + no_connector_phone: 'Ainda não configurou um conector de SMS. A experiência de login não será ativada até que conclua as configurações primeiro. ', no_connector_email: 'Ainda não configurou um conector de email. A experiência de login não será ativada até que conclua as configurações primeiro. ', - no_connector_social: + no_connector_email_or_phone: + 'You haven’t set up both Email and SMS connectors yet. Your sign in experience won’t go live until you finish the settings first. ', // UNTRANSLATED + no_connector_none: 'Ainda não configurou um conector social. A experiência de login não será ativada até que conclua as configurações primeiro. ', no_added_social_connector: 'Configurou alguns conectores sociais agora. Certifique-se de adicionar alguns a experiência de login.', diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts index 4a512785d..9c1ca07e9 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts @@ -4,7 +4,7 @@ const sign_in_exp = { 'Oturum açma kullanıcı arayüzünü markanıza uyacak şekilde özelleştirin ve gerçek zamanlı olarak görüntüleyin', tabs: { branding: 'Markalaşma', - methods: 'Oturum açma yöntemleri', + sign_up_and_sign_in: 'Sign up and Sign in', // UNTRANSLATED others: 'Diğerleri', }, welcome: { @@ -39,6 +39,22 @@ const sign_in_exp = { slogan: 'Slogan', slogan_placeholder: 'Yaratıcılığınızı açığa çıkarın', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', // UNTRANSLATED + identifiers_email: 'Email address', // UNTRANSLATED + identifiers_phone: 'Phone number', // UNTRANSLATED + identifiers_username: 'Username', // UNTRANSLATED + identifiers_email_or_phone: 'Email address or phone number', // UNTRANSLATED + identifiers_none: 'None', // UNTRANSLATED + sign_up: { + title: 'SIGN UP', // UNTRANSLATED + sign_up_identifier: 'Sign up identifier', // UNTRANSLATED + sign_up_authentication: 'Sign up authentication', // UNTRANSLATED + set_a_password_option: 'Set a password', // UNTRANSLATED + verify_at_sign_up_option: 'Verify at sign up', // UNTRANSLATED + social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED + }, + }, sign_in_methods: { title: 'OTURUM AÇMA YÖNTEMLERİ', primary: 'Birincil oturum açma yöntemi', @@ -111,11 +127,13 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: + no_connector_phone: 'Henüz bir SMS bağlayıcısı kurmadınız. Öncelikle ayarları tamamlayana kadar oturum açma deneyiminiz yayınlanmayacaktır. ', no_connector_email: 'Henüz bir e-posta adresi bağlayıcısı kurmadınız. Öncelikle ayarları tamamlayana kadar oturum açma deneyiminiz yayınlanmayacaktır. ', - no_connector_social: + no_connector_email_or_phone: + 'You haven’t set up both Email and SMS connectors yet. Your sign in experience won’t go live until you finish the settings first. ', // UNTRANSLATED + no_connector_none: 'Henüz herhangi bir social connector kurmadınız. Öncelikle ayarları tamamlayana kadar oturum açma deneyiminiz yayınlanmayacaktır. ', no_added_social_connector: 'Şimdi birkaç social connector kurdunuz. Oturum açma deneyiminize bazı şeyler eklediğinizden emin olun.', diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts index e2e974666..cc30ac867 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts @@ -3,7 +3,7 @@ const sign_in_exp = { description: '自定义登录界面,并实时预览真实效果', tabs: { branding: '品牌', - methods: '登录方式', + sign_up_and_sign_in: 'Sign up and Sign in', // UNTRANSLATED others: '其它', }, welcome: { @@ -36,6 +36,22 @@ const sign_in_exp = { slogan: '标语', slogan_placeholder: '释放你的创意', }, + sign_up_and_sign_in: { + identifiers: 'Sign up identifiers', // UNTRANSLATED + identifiers_email: 'Email address', // UNTRANSLATED + identifiers_phone: 'Phone number', // UNTRANSLATED + identifiers_username: 'Username', // UNTRANSLATED + identifiers_email_or_phone: 'Email address or phone number', // UNTRANSLATED + identifiers_none: 'None', // UNTRANSLATED + sign_up: { + title: 'SIGN UP', // UNTRANSLATED + sign_up_identifier: 'Sign up identifier', // UNTRANSLATED + sign_up_authentication: 'Sign up authentication', // UNTRANSLATED + set_a_password_option: 'Set a password', // UNTRANSLATED + verify_at_sign_up_option: 'Verify at sign up', // UNTRANSLATED + social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED + }, + }, sign_in_methods: { title: '登录方式', primary: '主要登录方式', @@ -105,9 +121,11 @@ const sign_in_exp = { }, setup_warning: { no_connector: '', - no_connector_sms: '你还没有设置 SMS 连接器。你需完成设置后登录体验才会生效。', + no_connector_phone: '你还没有设置 SMS 连接器。你需完成设置后登录体验才会生效。', no_connector_email: '你还没有设置 email 连接器。你需完成设置后登录体验才会生效。', - no_connector_social: '你还没有设置社交连接器。你需完成设置后登录体验才会生效。', + no_connector_email_or_phone: + '你还没有设置 email 和 SMS 连接器。你需完成设置后登录体验才会生效。', + no_connector_none: '你还没有设置社交连接器。你需完成设置后登录体验才会生效。', no_added_social_connector: '你已经成功设置了一些社交连接器。点按「+」添加一些到你的登录体验。', }, save_alert: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2da49bdd..cda18fcc2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,6 +164,7 @@ importers: react-syntax-highlighter: ^15.5.0 recharts: ^2.1.13 remark-gfm: ^3.0.1 + snake-case: ^3.0.4 stylelint: ^14.9.1 swr: ^1.3.0 typescript: ^4.7.4 @@ -231,6 +232,7 @@ importers: react-syntax-highlighter: 15.5.0_react@18.2.0 recharts: 2.1.13_v2m5e27vhdewzwhryxwfaorcca remark-gfm: 3.0.1 + snake-case: 3.0.4 stylelint: 14.9.1 swr: 1.3.0_react@18.2.0 typescript: 4.7.4 @@ -5747,7 +5749,6 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.4.0 - dev: false /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -9324,7 +9325,6 @@ packages: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.4.0 - dev: false /lowercase-keys/1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} @@ -10097,7 +10097,6 @@ packages: dependencies: lower-case: 2.0.2 tslib: 2.4.0 - dev: false /nock/13.2.2: resolution: {integrity: sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==} @@ -12310,8 +12309,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.3.1 - dev: false + tslib: 2.4.0 /snakecase-keys/5.1.2: resolution: {integrity: sha512-fvtDQZqPBqYb0dEY97TGuOMbN2NJ05Tj4MaoKwjTKkmjcG6mrd58JYGr23UWZRi6Aqv49Fk4HtjTIStOQenaug==} @@ -13165,6 +13163,7 @@ packages: /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}