0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

refactor(console): update pricing console page (#6620)

* refactor(console): update pricing console page

* refactor: refactor code

* chore: update code according to cr
This commit is contained in:
Darcy Ye 2024-09-24 15:55:05 +08:00 committed by GitHub
parent b3cac2edb1
commit eccba56481
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 459 additions and 250 deletions

View file

@ -27,7 +27,7 @@
"devDependencies": {
"@fontsource/roboto-mono": "^5.0.0",
"@jest/types": "^29.5.0",
"@logto/cloud": "0.2.5-1661979",
"@logto/cloud": "0.2.5-6654b82",
"@logto/connector-kit": "workspace:^4.0.0",
"@logto/core-kit": "workspace:^2.5.0",
"@logto/elements": "workspace:^0.0.1",

View file

@ -37,6 +37,11 @@
}
}
.tagContainer {
display: flex;
gap: _.unit(1);
}
.tag {
padding-top: 1px;
padding-bottom: 1px;

View file

@ -1,42 +1,94 @@
import { type AdminConsoleKey } from '@logto/phrases';
import { conditional, type Nullable } from '@silverhand/essentials';
import classNames from 'classnames';
import { useContext } from 'react';
import { Trans, useTranslation } from 'react-i18next';
import Tip from '@/assets/icons/tip.svg?react';
import { addOnPricingExplanationLink } from '@/consts/external-links';
import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider';
import DynamicT from '@/ds-components/DynamicT';
import IconButton from '@/ds-components/IconButton';
import Tag from '@/ds-components/Tag';
import TextLink from '@/ds-components/TextLink';
import { ToggleTip } from '@/ds-components/Tip';
import { isPaidPlan } from '@/utils/subscription';
import { formatNumber } from '../utils';
import styles from './index.module.scss';
const formatQuotaNumber = (number: number): string => {
if (number >= 1e6) {
return (number / 1e6).toFixed(1) + 'M';
}
if (number >= 1e3) {
return (number / 1e3).toFixed(1) + 'K';
}
if (Number.isInteger(number)) {
return number.toString();
}
return number.toFixed(2);
};
const formatNumberTypedUsageDescription = ({
usage,
quota,
unlimitedString,
}: {
usage: number;
quota?: Props['quota'];
unlimitedString: string;
}) => {
// Only show usage if quota is undefined or boolean (although quota should not be boolean if quota is number-typed).
if (quota === undefined || typeof quota === 'boolean') {
return formatNumber(usage);
}
// Show `usage / quota (usage percent)` if quota is number-typed, but hide the percentage display if usage percent is 0.
if (typeof quota === 'number') {
const usagePercent = usage / quota;
return `${formatNumber(usage)} / ${formatQuotaNumber(quota)}${
usagePercent > 0 ? ` (${(usagePercent * 100).toFixed(0)}%)` : ''
}`;
}
// Show `usage / unlimited` if quota is null.
return `${formatNumber(usage)} / ${unlimitedString}`;
};
export type Props = {
readonly usage: number | boolean;
readonly quota?: Nullable<number>;
readonly quota?: Nullable<number> | boolean;
readonly basicQuota?: Nullable<number> | boolean;
readonly usageKey: AdminConsoleKey;
readonly titleKey: AdminConsoleKey;
readonly tooltipKey?: AdminConsoleKey;
readonly unitPrice: number;
readonly isUsageTipHidden: boolean;
readonly className?: string;
readonly isQuotaNoticeHidden?: boolean;
};
function PlanUsageCard({
usage,
quota,
basicQuota,
unitPrice,
usageKey,
titleKey,
tooltipKey,
isUsageTipHidden,
className,
isQuotaNoticeHidden,
}: Props) {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const {
currentSubscription: { planId, isEnterprisePlan },
} = useContext(SubscriptionDataContext);
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const usagePercent = conditional(
typeof quota === 'number' && typeof usage === 'number' && usage / quota
@ -58,6 +110,11 @@ function PlanUsageCard({
>
{t(tooltipKey, {
price: unitPrice,
...conditional(
typeof basicQuota === 'number' && {
basicQuota: formatQuotaNumber(basicQuota),
}
),
})}
</Trans>
}
@ -78,29 +135,90 @@ function PlanUsageCard({
<Trans
components={{
span: (
<span className={classNames(styles.usageTip, isUsageTipHidden && styles.hidden)} />
<span
className={classNames(
styles.usageTip,
// Hide usage tip for free plan users.
(!isPaidTenant || basicQuota === undefined || isQuotaNoticeHidden) &&
styles.hidden
)}
/>
),
}}
>
{t(usageKey, {
usage:
quota === undefined
? formatNumber(usage)
: typeof quota === 'number'
? `${formatNumber(usage)} / ${formatNumber(quota)}${
usagePercent === undefined ? '' : ` (${(usagePercent * 100).toFixed(0)}%)`
}`
: `${formatNumber(usage)} / ${String(t('subscription.quota_table.unlimited'))}`,
})}
{/* Can not use `DynamicT` here since we need to inherit the style of span. */}
{t(
(() => {
if (basicQuota === null || basicQuota === true) {
return 'subscription.usage.usage_description_with_unlimited_quota';
}
if (basicQuota === false || basicQuota === 0) {
return 'subscription.usage.usage_description_without_quota';
}
if (typeof basicQuota === 'number') {
return 'subscription.usage.usage_description_with_limited_quota';
}
return usageKey;
})(),
isPaidTenant
? {
usage: formatNumber(usage),
...conditional(
typeof basicQuota === 'number' && {
basicQuota: formatQuotaNumber(basicQuota),
}
),
}
: {
usage: formatNumberTypedUsageDescription({
usage,
quota,
unlimitedString: String(t('subscription.quota_table.unlimited')),
}),
}
)}
</Trans>
</div>
) : (
<div>
<div className={styles.tagContainer}>
<Tag className={styles.tag} type="state" status={usage ? 'success' : 'info'}>
<DynamicT
forKey={`subscription.usage.${usage ? 'status_active' : 'status_inactive'}`}
/>
</Tag>
{/* Only show the quota notice for enterprise plan. */}
{quota !== undefined && isEnterprisePlan && (
<div className={styles.usageTip}>
{/* Consider the type of quota is number, null or boolean, the following statement covers all cases. */}
{(() => {
if (quota === null || quota === true) {
return (
<DynamicT forKey="subscription.usage.unlimited_status_quota_description" />
);
}
if (quota === false || quota === 0) {
return <DynamicT forKey="subscription.usage.disabled_status_quota_description" />;
}
if (typeof quota === 'number') {
return (
<DynamicT
forKey="subscription.usage.limited_status_quota_description"
interpolation={{
quota: formatQuotaNumber(quota),
}}
/>
);
}
return null;
})()}
</div>
)}
</div>
)}
</div>

View file

@ -7,11 +7,12 @@ import { useContext, useMemo } from 'react';
import {
type NewSubscriptionPeriodicUsage,
type NewSubscriptionCountBasedUsage,
type NewSubscriptionQuota,
} from '@/cloud/types/router';
import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider';
import { TenantsContext } from '@/contexts/TenantsProvider';
import DynamicT from '@/ds-components/DynamicT';
import { formatPeriod } from '@/utils/subscription';
import { formatPeriod, isPaidPlan } from '@/utils/subscription';
import PlanUsageCard, { type Props as PlanUsageCardProps } from './PlanUsageCard';
import styles from './index.module.scss';
@ -19,9 +20,9 @@ import {
type UsageKey,
usageKeys,
usageKeyPriceMap,
usageKeyMap,
titleKeyMap,
tooltipKeyMap,
enterpriseTooltipKeyMap,
} from './utils';
type Props = {
@ -33,21 +34,34 @@ const getUsageByKey = (
{
periodicUsage,
countBasedUsage,
basicQuota,
}: {
periodicUsage: NewSubscriptionPeriodicUsage;
countBasedUsage: NewSubscriptionCountBasedUsage;
basicQuota: NewSubscriptionQuota;
}
) => {
if (key === 'mauLimit' || key === 'tokenLimit') {
return periodicUsage[key];
}
// Show organization usage status in in-use/not-in-use state.
if (key === 'organizationsLimit') {
// If the basic quota is a non-zero number, show the usage in `usage(number-typed) (First {{basicQuota}} included)` format.
if (typeof basicQuota[key] === 'number' && basicQuota[key] !== 0) {
return countBasedUsage[key];
}
return countBasedUsage[key] > 0;
}
return countBasedUsage[key];
};
function PlanUsage({ periodicUsage: rawPeriodicUsage }: Props) {
const {
currentSubscriptionQuota,
currentSubscriptionBasicQuota,
currentSubscriptionUsage,
currentSubscription: {
currentPeriodStart,
@ -75,6 +89,7 @@ function PlanUsage({ periodicUsage: rawPeriodicUsage }: Props) {
return null;
}
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const onlyShowPeriodicUsage =
planId === ReservedPlanId.Free || (!isAddOnAvailable && planId === ReservedPlanId.Pro);
@ -90,24 +105,35 @@ function PlanUsage({ periodicUsage: rawPeriodicUsage }: Props) {
(onlyShowPeriodicUsage && (key === 'mauLimit' || key === 'tokenLimit'))
)
.map((key) => ({
usage: getUsageByKey(key, { periodicUsage, countBasedUsage: currentSubscriptionUsage }),
usageKey: `subscription.usage.${usageKeyMap[key]}`,
usage: getUsageByKey(key, {
periodicUsage,
countBasedUsage: currentSubscriptionUsage,
basicQuota: currentSubscriptionBasicQuota,
}),
usageKey: 'subscription.usage.usage_description_with_limited_quota',
titleKey: `subscription.usage.${titleKeyMap[key]}`,
unitPrice: usageKeyPriceMap[key],
...conditional(
planId === ReservedPlanId.Pro && {
tooltipKey: `subscription.usage.${tooltipKeyMap[key]}`,
...cond(
(key === 'tokenLimit' || key === 'mauLimit' || isPaidTenant) && {
quota: currentSubscriptionQuota[key],
}
),
...cond(
(key === 'tokenLimit' || key === 'mauLimit' || key === 'organizationsLimit') &&
// Do not show `xxx / 0` in displaying usage.
currentSubscriptionQuota[key] !== 0 && {
quota: currentSubscriptionQuota[key],
isPaidTenant && {
tooltipKey: `subscription.usage.${
isEnterprisePlan ? enterpriseTooltipKeyMap[key] : tooltipKeyMap[key]
}`,
basicQuota: currentSubscriptionBasicQuota[key],
}
),
// Hide the quota notice for Pro plans if the basic quota is 0.
// Per current pricing model design, it should apply to `enterpriseSsoLimit`.
...cond(
planId === ReservedPlanId.Pro &&
currentSubscriptionBasicQuota[key] === 0 && {
isQuotaNoticeHidden: true,
}
),
// Hide usage tip for Enterprise plan.
isUsageTipHidden: isEnterprisePlan,
}));
return (

View file

@ -49,21 +49,6 @@ export const usageKeyPriceMap: Record<keyof UsageKey, number> = {
hooksLimit: hooksAddOnUnitPrice,
};
export const usageKeyMap: Record<
keyof UsageKey,
TFuncKey<'translation', 'admin_console.subscription.usage'>
> = {
mauLimit: 'mau.description',
organizationsLimit: 'organizations.description',
mfaEnabled: 'mfa.description',
enterpriseSsoLimit: 'enterprise_sso.description',
resourcesLimit: 'api_resources.description',
machineToMachineLimit: 'machine_to_machine.description',
tenantMembersLimit: 'tenant_members.description',
tokenLimit: 'tokens.description',
hooksLimit: 'hooks.description',
};
export const titleKeyMap: Record<
keyof UsageKey,
TFuncKey<'translation', 'admin_console.subscription.usage'>
@ -94,6 +79,21 @@ export const tooltipKeyMap: Record<
hooksLimit: 'hooks.tooltip',
};
export const enterpriseTooltipKeyMap: Record<
keyof UsageKey,
TFuncKey<'translation', 'admin_console.subscription.usage'>
> = {
mauLimit: 'mau.tooltip_for_enterprise',
organizationsLimit: 'organizations.tooltip_for_enterprise',
mfaEnabled: 'mfa.tooltip_for_enterprise',
enterpriseSsoLimit: 'enterprise_sso.tooltip_for_enterprise',
resourcesLimit: 'api_resources.tooltip_for_enterprise',
machineToMachineLimit: 'machine_to_machine.tooltip_for_enterprise',
tenantMembersLimit: 'tenant_members.tooltip_for_enterprise',
tokenLimit: 'tokens.tooltip_for_enterprise',
hooksLimit: 'hooks.tooltip_for_enterprise',
};
export const formatNumber = (number: number): string => {
return number.toString().replaceAll(/\B(?=(\d{3})+(?!\d))/g, ',');
};

View file

@ -29,6 +29,7 @@ export const SubscriptionDataContext = createContext<FullContext>({
logtoSkus: [],
currentSku: defaultLogtoSku,
currentSubscriptionQuota: defaultSubscriptionQuota,
currentSubscriptionBasicQuota: defaultSubscriptionQuota,
currentSubscriptionUsage: defaultSubscriptionUsage,
currentSubscriptionResourceScopeUsage: {},
currentSubscriptionRoleScopeUsage: {},

View file

@ -21,6 +21,7 @@ type NewSubscriptionSupplementContext = {
logtoSkus: LogtoSkuResponse[];
currentSku: LogtoSkuResponse;
currentSubscriptionQuota: NewSubscriptionQuota;
currentSubscriptionBasicQuota: NewSubscriptionQuota;
currentSubscriptionUsage: NewSubscriptionCountBasedUsage;
currentSubscriptionResourceScopeUsage: NewSubscriptionResourceScopeUsage;
currentSubscriptionRoleScopeUsage: NewSubscriptionRoleScopeUsage;

View file

@ -59,6 +59,7 @@ const useNewSubscriptionData: () => NewSubscriptionContext & { isLoading: boolea
onCurrentSubscriptionUpdated: mutateSubscription,
mutateSubscriptionQuotaAndUsages,
currentSubscriptionQuota: subscriptionUsageData?.quota ?? defaultSubscriptionQuota,
currentSubscriptionBasicQuota: subscriptionUsageData?.basicQuota ?? defaultSubscriptionQuota,
currentSubscriptionUsage: subscriptionUsageData?.usage ?? defaultSubscriptionUsage,
currentSubscriptionResourceScopeUsage: subscriptionUsageData?.resources ?? {},
currentSubscriptionRoleScopeUsage: subscriptionUsageData?.roles ?? {},
@ -73,6 +74,7 @@ const useNewSubscriptionData: () => NewSubscriptionContext & { isLoading: boolea
mutateSubscription,
mutateSubscriptionQuotaAndUsages,
subscriptionUsageData?.quota,
subscriptionUsageData?.basicQuota,
subscriptionUsageData?.resources,
subscriptionUsageData?.roles,
subscriptionUsageData?.usage,

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: 'خطة Pro',
pro_plan_description: 'للاستفادة من الأعمال بدون قلق مع Logto.',
enterprise: 'خطة المؤسسة',
enterprise_description:
'للمؤسسات الكبيرة التي تتطلب ميزات متقدمة وتخصيص كامل ودعم مخصص لتشغيل التطبيقات الحيوية. مصمم خصيصًا لتلبية احتياجاتك من الأمان والامتثال والأداء النهائي.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'خطة المسؤول',
dev_plan: 'خطة التطوير',
current_plan: 'الخطة الحالية',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'تشغيل',
status_inactive: 'إيقاف',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: 'Pro plan',
pro_plan_description: 'Für Unternehmen, die sorgenfrei von Logto profitieren möchten.',
enterprise: 'Enterprise-Plan',
enterprise_description:
'Für große Organisationen, die erweiterte Funktionen, volle Anpassung und dedizierten Support benötigen, um geschäftskritische Anwendungen zu betreiben. Auf Ihre Bedürfnisse zugeschnitten für ultimative Sicherheit, Compliance und Leistung.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Admin-Plan',
dev_plan: 'Entwicklungsplan',
current_plan: 'Aktueller Plan',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'An',
status_inactive: 'Aus',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,7 @@ const subscription = {
pro_plan: 'Pro plan',
pro_plan_description: 'For businesses benefit worry-free with Logto.',
enterprise: 'Enterprise plan',
enterprise_description:
'For large-scale organizations requiring advanced features, full customization, and dedicated support to power mission-critical applications. Tailored to your needs for ultimate security, compliance, and performance.',
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Admin plan',
dev_plan: 'Development plan',
current_plan: 'Current plan',

View file

@ -1,58 +1,74 @@
const usage = {
status_active: 'On',
status_inactive: 'Off',
status_active: 'In use',
status_inactive: 'Not in use',
limited_status_quota_description: '(First {{quota}} included)',
unlimited_status_quota_description: '(Included)',
disabled_status_quota_description: '(Not included)',
usage_description_with_unlimited_quota: '{{usage}}<span> (Unlimited)</span>',
usage_description_with_limited_quota: '{{usage}}<span> (First {{basicQuota}} included)</span>',
usage_description_without_quota: '{{usage}}<span> (Not included)</span>',
mau: {
title: 'MAU',
description: '{{usage}}',
tooltip:
'A MAU is a unique user who has exchanged at least one token with Logto within a billing cycle. Unlimited for the Pro Plan. <a>Learn more</a>',
tooltip_for_enterprise:
'A MAU is a unique user who has exchanged at least one token with Logto within a billing cycle. Unlimited for the Enterprise Plan.',
},
organizations: {
title: 'Organizations',
description: '{{usage}}',
tooltip:
'Add-on feature with a flat rate of ${{price, number}} per month. Price is not affected by the number of organizations or their activity level.',
description_for_enterprise: '(Included)',
tooltip_for_enterprise:
'Inclusion depends on your plan. If the organization feature isnt in your initial contract, it will be added to your bill when you activate it. The add-on costs ${{price, number}}/month, regardless of the number of organizations or their activity.',
},
mfa: {
title: 'MFA',
description: '{{usage}}',
tooltip:
'Add-on feature with a flat rate of ${{price, number}} per month. Price is not affected by the number of authentication factors used.',
tooltip_for_enterprise:
'Inclusion depends on your plan. If the MFA feature isnt in your initial contract, it will be added to your bill when you activate it. The add-on costs ${{price, number}}/month, regardless of the number of authentication factors used.',
},
enterprise_sso: {
title: 'Enterprise SSO',
description: '{{usage}}',
tooltip: 'Add-on feature with a price of ${{price, number}} per SSO connection per month.',
tooltip_for_enterprise:
'Add-on feature with a price of ${{price, number}} per SSO connection per month. The first {{basicQuota}} SSO are included and free to use in your contract-based plan.',
},
api_resources: {
title: 'API resources',
description: '{{usage}} <span>(Free for the first 3)</span>',
tooltip:
'Add-on feature priced at ${{price, number}} per resource per month. The first 3 API resources are free.',
tooltip_for_enterprise:
'The first {{basicQuota}} API resources are included and free to use in your contract-based plan. If you need more, ${{price, number}} per API resource per month.',
},
machine_to_machine: {
title: 'Machine-to-machine',
description: '{{usage}} <span>(Free for the first 1)</span>',
tooltip:
'Add-on feature priced at ${{price, number}} per app per month. The first machine-to-machine app is free.',
tooltip_for_enterprise:
'The first {{basicQuota}} machine-to-machine app is free to use in your contract-based plan. If you need more, ${{price, number}} per app per month.',
},
tenant_members: {
title: 'Tenant members',
description: '{{usage}} <span>(Free for the first 3)</span>',
tooltip:
'Add-on feature priced at ${{price, number}} per member per month. The first 3 tenant members are free.',
tooltip_for_enterprise:
'The first {{basicQuota}} tenant members are included and free to use in your contract-based plan. If you need more, ${{price, number}} per tenant member per month.',
},
tokens: {
title: 'Tokens',
description: '{{usage}}',
tooltip:
'Add-on feature priced at ${{price, number}} per million tokens. The first 1 million tokens is included.',
tooltip_for_enterprise:
'The first {{basicQuota}} tokens is included and free to use in your contract-based plan. If you need more, ${{price, number}} per million tokens per month.',
},
hooks: {
title: 'Hooks',
description: '{{usage}} <span>(Free for the first 10)</span>',
tooltip:
'Add-on feature priced at ${{price, number}} per hook. The first 10 hooks are included.',
tooltip_for_enterprise:
'The first {{basicQuota}} hooks are included and free to use in your contract-based plan. If you need more, ${{price, number}} per hook per month.',
},
pricing: {
add_on_changes_in_current_cycle_notice:

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Plan Pro',
pro_plan_description: 'Benefíciese sin preocupaciones con Logto para empresas.',
enterprise: 'Plan Empresa',
enterprise_description:
'Para organizaciones a gran escala que requieren funciones avanzadas, personalización completa y soporte dedicado para impulsar aplicaciones críticas. Adaptado a tus necesidades para máxima seguridad, cumplimiento y rendimiento.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Plan de administrador',
dev_plan: 'Plan de desarrollo',
current_plan: 'Plan Actual',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Encendido',
status_inactive: 'Apagado',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Plan Professionnel',
pro_plan_description: 'Pour les entreprises qui bénéficient de Logto sans soucis.',
enterprise: 'Plan Entreprise',
enterprise_description:
'Pour les grandes organisations nécessitant des fonctionnalités avancées, une personnalisation complète et un support dédié afin de soutenir les applications critiques. Adapté à vos besoins pour une sécurité, une conformité et une performance optimales.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Plan Admin',
dev_plan: 'Plan Développement',
current_plan: 'Plan Actuel',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Activé',
status_inactive: 'Désactivé',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Piano Pro',
pro_plan_description: 'Per aziende che beneficiano di Logto senza preoccupazioni.',
enterprise: 'Piano Azienda',
enterprise_description:
'Per organizzazioni su larga scala che richiedono funzionalità avanzate, personalizzazione completa e supporto dedicato per applicazioni mission-critical. Su misura per le tue esigenze per la massima sicurezza, conformità e prestazioni.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Piano amministratore',
dev_plan: 'Piano di sviluppo',
current_plan: 'Piano attuale',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Attivo',
status_inactive: 'Non attivo',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'プロプラン',
pro_plan_description: 'ビジネスが安心してLogtoを利用できるプランです。',
enterprise: 'エンタープライズプラン',
enterprise_description:
'高度な機能、完全なカスタマイズ、および専用サポートを必要とする大規模組織のためのものです。究極のセキュリティ、コンプライアンス、およびパフォーマンスのために、あなたのニーズに合わせて調整されています。',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: '管理者プラン',
dev_plan: '開発プラン',
current_plan: '現在のプラン',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'オン',
status_inactive: 'オフ',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: '프로 요금제',
pro_plan_description: 'Logto와 함께 걱정 없이 비즈니스 혜택을 받으세요.',
enterprise: '엔터프라이즈 플랜',
enterprise_description:
'대규모 조직을 위한 고급 기능, 전체 맞춤화 및 전용 지원이 필요한 미션 크리티컬 애플리케이션을 구동합니다. 궁극적인 보안, 규정 준수 및 성능을 위해 당신의 요구에 맞춥니다.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: '관리자 플랜',
dev_plan: '개발 플랜',
current_plan: '현재 요금제',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: '켜짐',
status_inactive: '꺼짐',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Plan Pro',
pro_plan_description: 'Dla firm, ciesz się bezstresową obsługą Logto.',
enterprise: 'Plan Przedsiębiorstwo',
enterprise_description:
'Dla dużych organizacji wymagających zaawansowanych funkcji, pełnej personalizacji i dedykowanego wsparcia dla kluczowych aplikacji. Dopasowane do twoich potrzeb dla najwyższego bezpieczeństwa, zgodności i wydajności.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Plan administracyjny',
dev_plan: 'Plan deweloperski',
current_plan: 'Obecny plan',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Włączone',
status_inactive: 'Wyłączone',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Plano Pro',
pro_plan_description: 'Para empresas se beneficiarem tranquilo com o Logto.',
enterprise: 'Plano Empresa',
enterprise_description:
'Para organizações de grande escala que exigem recursos avançados, personalização completa e suporte dedicado para aplicações críticas. Adaptado às suas necessidades para máxima segurança, conformidade e desempenho.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Plano de administrador',
dev_plan: 'Plano de desenvolvimento',
current_plan: 'Plano Atual',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Ligado',
status_inactive: 'Desligado',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Plano Pro',
pro_plan_description: 'Para empresas que desejam se beneficiar sem preocupações com o Logto.',
enterprise: 'Plano Empresa',
enterprise_description:
'Para organizações de grande escala que necessitam de funcionalidades avançadas, personalização completa e suporte dedicado para apoiar aplicações críticas. Personalizado de acordo com as suas necessidades para a máxima segurança, conformidade e desempenho.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Plano de administrador',
dev_plan: 'Plano de desenvolvimento',
current_plan: 'Plano Atual',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Ligado',
status_inactive: 'Desligado',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: 'Про план',
pro_plan_description: 'Позволяет бизнесу использовать Logto без забот.',
enterprise: 'Корпоративный план',
enterprise_description:
'Для крупных организаций, которым необходимы расширенные возможности, полная настройка и поддержка для работы с критически важными приложениями. Адаптирован для обеспечения максимальной безопасности, соответствия требованиям и производительности.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'План администратора',
dev_plan: 'План для разработки',
current_plan: 'Текущий план',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Включено',
status_inactive: 'Выключено',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -9,8 +9,8 @@ const subscription = {
pro_plan: 'Pro plan',
pro_plan_description: "Endişesiz bir şekilde Logto'dan faydalanan işletmeler için.",
enterprise: 'Kurumsal plan',
enterprise_description:
'Gelişmiş özellikler, tam özelleştirme ve kritik uygulamaları desteklemek için özel destek gerektiren büyük ölçekli organizasyonlar için. Nihai güvenlik, uyumluluk ve performans için ihtiyaçlarınıza göre uyarlanmıştır.',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: 'Yönetici planı',
dev_plan: 'Geliştirme planı',
current_plan: 'Mevcut Plan',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: 'Açık',
status_inactive: 'Kapalı',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: '专业计划',
pro_plan_description: '适用于企业付费无忧。',
enterprise: '企业计划',
enterprise_description:
'适用于需要高级功能、完全定制和专门支持以推动关键任务应用的大型组织。根据您的需求量身定制,以实现终极的安全性、合规性和性能。',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: '管理员计划',
dev_plan: '开发计划',
current_plan: '当前计划',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: '开启',
status_inactive: '关闭',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: '專業計劃',
pro_plan_description: '供企業放心使用 Logto。',
enterprise: '企業計劃',
enterprise_description:
'適用於大型組織,需要高級功能、完整自定義和專屬支持,以推動使命關鍵型應用。根據你的需求量身定制,以達到終極安全、合規和性能。',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: '管理員計劃',
dev_plan: '開發計劃',
current_plan: '當前計劃',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: '開啟',
status_inactive: '關閉',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -8,8 +8,8 @@ const subscription = {
pro_plan: '專業方案',
pro_plan_description: '企業無憂享受 Logto 服務。',
enterprise: '企業方案',
enterprise_description:
'適用於需要高級功能、完全定制和專屬支持的大型企業,以支持關鍵任務的應用。根據你的需求量身定制,確保絕對的安全性、合規性和性能。',
/** UNTRANSLATED */
enterprise_description: 'For large teams and businesses with enterprise-grade requirements.',
admin_plan: '管理員方案',
dev_plan: '開發方案',
current_plan: '當前方案',

View file

@ -1,6 +1,8 @@
const usage = {
status_active: '開啟',
status_inactive: '關閉',
/** UNTRANSLATED */
status_active: 'In use',
/** UNTRANSLATED */
status_inactive: 'Not in use',
mau: {
title: 'MAU',
description: '{{usage}}',

View file

@ -41,7 +41,7 @@ importers:
version: 8.8.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2)
typescript:
specifier: ^5.0.0
version: 5.0.2
@ -263,7 +263,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -330,7 +330,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -388,7 +388,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -446,7 +446,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -510,7 +510,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -574,7 +574,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -635,7 +635,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -702,7 +702,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -760,7 +760,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -818,7 +818,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -876,7 +876,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -937,7 +937,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1007,7 +1007,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1068,7 +1068,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1123,7 +1123,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1181,7 +1181,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1239,7 +1239,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1297,7 +1297,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1358,7 +1358,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1416,7 +1416,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1474,7 +1474,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1532,7 +1532,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1590,7 +1590,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1648,7 +1648,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1706,7 +1706,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1764,7 +1764,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1822,7 +1822,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1889,7 +1889,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -1959,7 +1959,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2017,7 +2017,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2072,7 +2072,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2136,7 +2136,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2194,7 +2194,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2252,7 +2252,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2316,7 +2316,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2374,7 +2374,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2432,7 +2432,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2490,7 +2490,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2548,7 +2548,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2606,7 +2606,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -2623,8 +2623,8 @@ importers:
specifier: ^29.5.0
version: 29.5.0
'@logto/cloud':
specifier: 0.2.5-1661979
version: 0.2.5-1661979(zod@3.23.8)
specifier: 0.2.5-6654b82
version: 0.2.5-6654b82(zod@3.23.8)
'@logto/connector-kit':
specifier: workspace:^4.0.0
version: link:../toolkit/connector-kit
@ -3192,7 +3192,7 @@ importers:
version: 8.57.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-matcher-specific-error:
specifier: ^1.0.0
version: 1.0.0
@ -3222,7 +3222,7 @@ importers:
version: 7.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -3373,7 +3373,7 @@ importers:
version: 3.0.0
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
packages/experience:
devDependencies:
@ -3848,7 +3848,7 @@ importers:
version: 10.0.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-matcher-specific-error:
specifier: ^1.0.0
version: 1.0.0
@ -3875,7 +3875,7 @@ importers:
version: 22.6.5(typescript@5.5.3)
tsup:
specifier: ^8.1.0
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
version: 8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3)
typescript:
specifier: ^5.5.3
version: 5.5.3
@ -5631,6 +5631,10 @@ packages:
resolution: {integrity: sha512-CiH6VxaR281cZLWQyI54XUiwSXEnW9rxci6ptz73rS4OWYfIweOWzP3Z30OVLiOslznBfTLuBML8eVelxpG1iQ==}
engines: {node: ^20.9.0}
'@logto/cloud@0.2.5-6654b82':
resolution: {integrity: sha512-BRPKyEb8r5z8kSYgsVr5StCfxXwhgJLiKfwdVK7DQdN8cY6gpUGS0EoQoB7bLamUNLieGJOhpoKMmk8QszuSaw==}
engines: {node: ^20.9.0}
'@logto/js@4.1.4':
resolution: {integrity: sha512-6twud1nFBQmj89/aflzej6yD1QwXfPiYmRtyYuN4a7O9OaaW3X/kJBVwjKUn5NC9IUt+rd+jXsI3QJXENfaLAw==}
@ -14959,7 +14963,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))':
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@ -14973,7 +14977,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -14994,7 +14998,7 @@ snapshots:
- supports-color
- ts-node
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))':
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@ -15008,7 +15012,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -15303,6 +15307,13 @@ snapshots:
transitivePeerDependencies:
- zod
'@logto/cloud@0.2.5-6654b82(zod@3.23.8)':
dependencies:
'@silverhand/essentials': 2.9.1
'@withtyped/server': 0.14.0(zod@3.23.8)
transitivePeerDependencies:
- zod
'@logto/js@4.1.4':
dependencies:
'@silverhand/essentials': 2.9.1
@ -17907,13 +17918,13 @@ snapshots:
dependencies:
lodash.get: 4.4.2
create-jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
create-jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@ -20247,16 +20258,16 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-cli@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
jest-cli@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
create-jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
exit: 0.1.2
import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@ -20285,7 +20296,7 @@ snapshots:
- supports-color
- ts-node
jest-config@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
jest-config@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
@ -20311,38 +20322,7 @@ snapshots:
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.10.4
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.4)
chalk: 4.1.2
ci-info: 3.8.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
micromatch: 4.0.5
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.12.7
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@ -20378,6 +20358,37 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.4)
chalk: 4.1.2
ci-info: 3.8.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
micromatch: 4.0.5
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.12.7
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-dev-server@10.0.0:
dependencies:
chalk: 4.1.2
@ -20686,12 +20697,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
'@jest/types': 29.6.3
import-local: 3.1.0
jest-cli: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
jest-cli: 29.7.0(@types/node@20.10.4)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@ -22625,31 +22636,31 @@ snapshots:
possible-typed-array-names@1.0.0: {}
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3)
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2)
ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2)
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3)):
postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.4.5
@ -24216,7 +24227,28 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3):
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.12.7
acorn: 8.12.1
acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.5.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24237,7 +24269,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3):
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24258,7 +24290,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2):
ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@ -24279,27 +24311,6 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.12.7
acorn: 8.12.1
acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.5.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true
tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
@ -24320,7 +24331,7 @@ snapshots:
tsscmp@1.0.6: {}
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24330,7 +24341,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.10.4)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.10.4)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24344,7 +24355,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24354,7 +24365,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.11.20)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.11.20)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24368,7 +24379,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2):
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))(typescript@5.0.2):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24378,7 +24389,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.0.2))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.0.2))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0
@ -24392,7 +24403,7 @@ snapshots:
- supports-color
- ts-node
tsup@8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3):
tsup@8.1.0(@swc/core@1.3.52)(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3):
dependencies:
bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14
@ -24402,7 +24413,7 @@ snapshots:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))
postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.5.3))
resolve-from: 5.0.0
rollup: 4.14.3
source-map: 0.8.0-beta.0