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

refactor(console,core): remove isAddOnAvailable (#6689)

* refactor: update cloud dependency and remove isAddOnAvailable

* chore: undo dependency updates
This commit is contained in:
Darcy Ye 2024-10-21 10:40:07 +08:00 committed by GitHub
parent 61aa13f8a9
commit 671be26ea0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 234 additions and 246 deletions

View file

@ -27,7 +27,7 @@ type Props = {
function Footer({ selectedType, isLoading, onClickCreate, isThirdParty }: Props) { function Footer({ selectedType, isLoading, onClickCreate, isThirdParty }: Props) {
const { const {
currentSku, currentSku,
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota, currentSubscriptionQuota,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.upsell' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.upsell' });
@ -44,7 +44,6 @@ function Footer({ selectedType, isLoading, onClickCreate, isThirdParty }: Props)
if (selectedType) { if (selectedType) {
if ( if (
selectedType === ApplicationType.MachineToMachine && selectedType === ApplicationType.MachineToMachine &&
isAddOnAvailable &&
hasMachineToMachineAppsReachedLimit && hasMachineToMachineAppsReachedLimit &&
// Just in case the enterprise plan has reached the resource limit, we still need to show charge notice. // Just in case the enterprise plan has reached the resource limit, we still need to show charge notice.
isPaidPlan(planId, isEnterprisePlan) && isPaidPlan(planId, isEnterprisePlan) &&

View file

@ -23,6 +23,7 @@ import TypeDescription from '@/pages/Applications/components/TypeDescription';
import modalStyles from '@/scss/modal.module.scss'; import modalStyles from '@/scss/modal.module.scss';
import { applicationTypeI18nKey } from '@/types/applications'; import { applicationTypeI18nKey } from '@/types/applications';
import { trySubmitSafe } from '@/utils/form'; import { trySubmitSafe } from '@/utils/form';
import { isPaidPlan } from '@/utils/subscription';
import Footer from './Footer'; import Footer from './Footer';
import styles from './index.module.scss'; import styles from './index.module.scss';
@ -57,10 +58,11 @@ function CreateForm({
defaultValues: { type: defaultCreateType, isThirdParty: isDefaultCreateThirdParty }, defaultValues: { type: defaultCreateType, isThirdParty: isDefaultCreateThirdParty },
}); });
const { const {
currentSubscription: { isAddOnAvailable, planId }, currentSubscription: { planId, isEnterprisePlan },
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { user } = useCurrentUser(); const { user } = useCurrentUser();
const { mutate: mutateGlobal } = useSWRConfig(); const { mutate: mutateGlobal } = useSWRConfig();
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const { const {
field: { onChange, value, name, ref }, field: { onChange, value, name, ref },
@ -125,13 +127,13 @@ function CreateForm({
title="applications.create" title="applications.create"
subtitle={subtitleElement} subtitle={subtitleElement}
paywall={conditional( paywall={conditional(
isAddOnAvailable && isPaidTenant &&
watch('type') === ApplicationType.MachineToMachine && watch('type') === ApplicationType.MachineToMachine &&
planId !== ReservedPlanId.Pro && planId !== ReservedPlanId.Pro &&
ReservedPlanId.Pro ReservedPlanId.Pro
)} )}
hasAddOnTag={ hasAddOnTag={
isAddOnAvailable && isPaidTenant &&
watch('type') === ApplicationType.MachineToMachine && watch('type') === ApplicationType.MachineToMachine &&
hasMachineToMachineAppsReachedLimit hasMachineToMachineAppsReachedLimit
} }

View file

@ -80,7 +80,7 @@ type CombinedAddOnAndFeatureTagProps = {
export function CombinedAddOnAndFeatureTag(props: CombinedAddOnAndFeatureTagProps) { export function CombinedAddOnAndFeatureTag(props: CombinedAddOnAndFeatureTagProps) {
const { hasAddOnTag, className, paywall } = props; const { hasAddOnTag, className, paywall } = props;
const { const {
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
// We believe that the enterprise plan has already allocated sufficient resource quotas in the deal negotiation, so there is no need for upselling, nor will it trigger the add-on tag prompt. // We believe that the enterprise plan has already allocated sufficient resource quotas in the deal negotiation, so there is no need for upselling, nor will it trigger the add-on tag prompt.
@ -88,8 +88,8 @@ export function CombinedAddOnAndFeatureTag(props: CombinedAddOnAndFeatureTagProp
return null; return null;
} }
// Show the "Add-on" tag for Pro plan when dev features enabled. // Show the "Add-on" tag for Pro plan.
if (hasAddOnTag && isAddOnAvailable && isCloud && planId === ReservedPlanId.Pro) { if (hasAddOnTag && isCloud && planId === ReservedPlanId.Pro) {
return ( return (
<div className={classNames(styles.tag, styles.beta, styles.addOn, className)}>Add-on</div> <div className={classNames(styles.tag, styles.beta, styles.addOn, className)}>Add-on</div>
); );

View file

@ -63,13 +63,7 @@ function PlanUsage({ periodicUsage: rawPeriodicUsage }: Props) {
currentSubscriptionQuota, currentSubscriptionQuota,
currentSubscriptionBasicQuota, currentSubscriptionBasicQuota,
currentSubscriptionUsage, currentSubscriptionUsage,
currentSubscription: { currentSubscription: { currentPeriodStart, currentPeriodEnd, planId, isEnterprisePlan },
currentPeriodStart,
currentPeriodEnd,
planId,
isAddOnAvailable,
isEnterprisePlan,
},
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { currentTenant } = useContext(TenantsContext); const { currentTenant } = useContext(TenantsContext);
@ -90,19 +84,13 @@ function PlanUsage({ periodicUsage: rawPeriodicUsage }: Props) {
} }
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan); const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const onlyShowPeriodicUsage = const onlyShowPeriodicUsage = planId === ReservedPlanId.Free;
planId === ReservedPlanId.Free || (!isAddOnAvailable && planId === ReservedPlanId.Pro);
const usages: PlanUsageCardProps[] = usageKeys const usages: PlanUsageCardProps[] = usageKeys
// Show all usages for Pro plan and only show MAU and token usage for Free plan // Show all usages for Pro plan and only show MAU and token usage for Free plan
.filter( .filter(
(key) => (key) =>
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing isPaidTenant || (onlyShowPeriodicUsage && (key === 'mauLimit' || key === 'tokenLimit'))
isAddOnAvailable ||
// TODO: design a flow for enterprise tenants onboarding.
// Show all usages for Enterprise plan since some of the enterprise tenants does not have Stripe subscription, as a result, the `isAddOnAvailable` will be undefined in this case, even if we will deprecate `isAddOnAvailable` soon, the plan usage will not be automatically fixed for these enterprise tenants.
isEnterprisePlan ||
(onlyShowPeriodicUsage && (key === 'mauLimit' || key === 'tokenLimit'))
) )
.map((key) => ({ .map((key) => ({
usage: getUsageByKey(key, { usage: getUsageByKey(key, {

View file

@ -25,7 +25,7 @@ type Props = {
function Footer({ isCreationLoading, onClickCreate }: Props) { function Footer({ isCreationLoading, onClickCreate }: Props) {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { const {
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionUsage: { resourcesLimit }, currentSubscriptionUsage: { resourcesLimit },
currentSku, currentSku,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
@ -59,7 +59,6 @@ function Footer({ isCreationLoading, onClickCreate }: Props) {
} }
if ( if (
isAddOnAvailable &&
hasReachedLimit && hasReachedLimit &&
// Just in case the enterprise plan has reached the resource limit, we still need to show charge notice. // Just in case the enterprise plan has reached the resource limit, we still need to show charge notice.
isPaidPlan(planId, isEnterprisePlan) && isPaidPlan(planId, isEnterprisePlan) &&

View file

@ -16,6 +16,7 @@ import useApi from '@/hooks/use-api';
import useApiResourcesUsage from '@/hooks/use-api-resources-usage'; import useApiResourcesUsage from '@/hooks/use-api-resources-usage';
import modalStyles from '@/scss/modal.module.scss'; import modalStyles from '@/scss/modal.module.scss';
import { trySubmitSafe } from '@/utils/form'; import { trySubmitSafe } from '@/utils/form';
import { isPaidPlan } from '@/utils/subscription';
import Footer from './Footer'; import Footer from './Footer';
@ -31,7 +32,7 @@ type Props = {
function CreateForm({ onClose }: Props) { function CreateForm({ onClose }: Props) {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { const {
currentSubscription: { planId, isAddOnAvailable }, currentSubscription: { planId, isEnterprisePlan },
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { const {
@ -69,7 +70,7 @@ function CreateForm({ onClose }: Props) {
title="api_resources.create" title="api_resources.create"
subtitle="api_resources.subtitle" subtitle="api_resources.subtitle"
paywall={conditional(planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)} paywall={conditional(planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)}
hasAddOnTag={isAddOnAvailable && hasReachedLimit} hasAddOnTag={isPaidPlan(planId, isEnterprisePlan) && hasReachedLimit}
footer={<Footer isCreationLoading={isSubmitting} onClickCreate={onSubmit} />} footer={<Footer isCreationLoading={isSubmitting} onClickCreate={onSubmit} />}
onClose={onClose} onClose={onClose}
> >

View file

@ -51,7 +51,7 @@ const duplicateConnectorNameErrorCode = 'single_sign_on.duplicate_connector_name
function SsoCreationModal({ isOpen, onClose: rawOnClose }: Props) { function SsoCreationModal({ isOpen, onClose: rawOnClose }: Props) {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { const {
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota, currentSubscriptionQuota,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { const {
@ -65,6 +65,7 @@ function SsoCreationModal({ isOpen, onClose: rawOnClose }: Props) {
currentSubscriptionQuota.enterpriseSsoLimit === null || currentSubscriptionQuota.enterpriseSsoLimit === null ||
currentSubscriptionQuota.enterpriseSsoLimit > 0 || currentSubscriptionQuota.enterpriseSsoLimit > 0 ||
planId === ReservedPlanId.Pro; planId === ReservedPlanId.Pro;
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const { data, error } = useSWR<SsoConnectorProvidersResponse, RequestError>( const { data, error } = useSWR<SsoConnectorProvidersResponse, RequestError>(
'api/sso-connector-providers' 'api/sso-connector-providers'
@ -154,39 +155,35 @@ function SsoCreationModal({ isOpen, onClose: rawOnClose }: Props) {
> >
<ModalLayout <ModalLayout
title="enterprise_sso.create_modal.title" title="enterprise_sso.create_modal.title"
paywall={conditional( paywall={conditional(isPaidTenant && planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)}
isAddOnAvailable && planId !== ReservedPlanId.Pro && ReservedPlanId.Pro hasAddOnTag={isPaidTenant}
)}
hasAddOnTag={isAddOnAvailable}
footer={ footer={
conditional( conditional(
isAddOnAvailable && // Just in case the enterprise plan has reached the resource limit, we still need to show charge notice.
// Just in case the enterprise plan has reached the resource limit, we still need to show charge notice. isPaidTenant && !enterpriseSsoUpsellNoticeAcknowledged && (
isPaidPlan(planId, isEnterprisePlan) && <AddOnNoticeFooter
!enterpriseSsoUpsellNoticeAcknowledged && ( buttonTitle="enterprise_sso.create_modal.create_button_text"
<AddOnNoticeFooter isCreateButtonDisabled={isCreateButtonDisabled}
buttonTitle="enterprise_sso.create_modal.create_button_text" onClick={async () => {
isCreateButtonDisabled={isCreateButtonDisabled} void update({ enterpriseSsoUpsellNoticeAcknowledged: true });
onClick={async () => { await onSubmit();
void update({ enterpriseSsoUpsellNoticeAcknowledged: true }); }}
await onSubmit(); >
<Trans
components={{
span: <span className={styles.strong} />,
a: <TextLink to={addOnPricingExplanationLink} />,
}} }}
> >
<Trans {t('upsell.add_on.footer.enterprise_sso', {
components={{ price: enterpriseSsoAddOnUnitPrice,
span: <span className={styles.strong} />, planName: t(
a: <TextLink to={addOnPricingExplanationLink} />, isEnterprisePlan ? 'subscription.enterprise' : 'subscription.pro_plan'
}} ),
> })}
{t('upsell.add_on.footer.enterprise_sso', { </Trans>
price: enterpriseSsoAddOnUnitPrice, </AddOnNoticeFooter>
planName: t( )
isEnterprisePlan ? 'subscription.enterprise' : 'subscription.pro_plan'
),
})}
</Trans>
</AddOnNoticeFooter>
)
) ?? ) ??
(isSsoEnabled ? ( (isSsoEnabled ? (
<Button <Button

View file

@ -20,6 +20,7 @@ import Tag from '@/ds-components/Tag';
import type { RequestError } from '@/hooks/use-api'; import type { RequestError } from '@/hooks/use-api';
import useSearchParametersWatcher from '@/hooks/use-search-parameters-watcher'; import useSearchParametersWatcher from '@/hooks/use-search-parameters-watcher';
import useTenantPathname from '@/hooks/use-tenant-pathname'; import useTenantPathname from '@/hooks/use-tenant-pathname';
import { isPaidPlan } from '@/utils/subscription';
import { buildUrl } from '@/utils/url'; import { buildUrl } from '@/utils/url';
import SsoConnectorLogo from './SsoConnectorLogo'; import SsoConnectorLogo from './SsoConnectorLogo';
@ -37,7 +38,7 @@ function EnterpriseSso() {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { isDevTenant } = useContext(TenantsContext); const { isDevTenant } = useContext(TenantsContext);
const { const {
currentSubscription: { planId, isAddOnAvailable }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota, currentSubscriptionQuota,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
@ -66,7 +67,7 @@ function EnterpriseSso() {
paywall: conditional((!isSsoEnabled || isDevTenant) && ReservedPlanId.Pro), paywall: conditional((!isSsoEnabled || isDevTenant) && ReservedPlanId.Pro),
title: 'enterprise_sso.title', title: 'enterprise_sso.title',
subtitle: 'enterprise_sso.subtitle', subtitle: 'enterprise_sso.subtitle',
hasAddOnTag: isAddOnAvailable, hasAddOnTag: isPaidPlan(planId, isEnterprisePlan),
}} }}
pageMeta={{ titleKey: 'enterprise_sso.page_title' }} pageMeta={{ titleKey: 'enterprise_sso.page_title' }}
createButton={conditional( createButton={conditional(

View file

@ -7,6 +7,7 @@ import { isCloud } from '@/consts/env';
import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider'; import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider';
import { TenantsContext } from '@/contexts/TenantsProvider'; import { TenantsContext } from '@/contexts/TenantsProvider';
import CardTitle from '@/ds-components/CardTitle'; import CardTitle from '@/ds-components/CardTitle';
import { isPaidPlan } from '@/utils/subscription';
import styles from './index.module.scss'; import styles from './index.module.scss';
@ -17,7 +18,7 @@ type Props = {
function PageWrapper({ children }: Props) { function PageWrapper({ children }: Props) {
const { isDevTenant } = useContext(TenantsContext); const { isDevTenant } = useContext(TenantsContext);
const { const {
currentSubscription: { planId, isAddOnAvailable }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota: { mfaEnabled }, currentSubscriptionQuota: { mfaEnabled },
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const isMfaEnabled = !isCloud || mfaEnabled || planId === ReservedPlanId.Pro; const isMfaEnabled = !isCloud || mfaEnabled || planId === ReservedPlanId.Pro;
@ -27,7 +28,7 @@ function PageWrapper({ children }: Props) {
<PageMeta titleKey="mfa.title" /> <PageMeta titleKey="mfa.title" />
<CardTitle <CardTitle
paywall={cond((!isMfaEnabled || isDevTenant) && ReservedPlanId.Pro)} paywall={cond((!isMfaEnabled || isDevTenant) && ReservedPlanId.Pro)}
hasAddOnTag={isAddOnAvailable} hasAddOnTag={isPaidPlan(planId, isEnterprisePlan)}
title="mfa.title" title="mfa.title"
subtitle="mfa.description" subtitle="mfa.description"
className={styles.cardTitle} className={styles.cardTitle}

View file

@ -34,7 +34,7 @@ function CreateOrganizationModal({ isOpen, onClose }: Props) {
const api = useApi(); const api = useApi();
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { const {
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota, currentSubscriptionQuota,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { const {
@ -45,6 +45,7 @@ function CreateOrganizationModal({ isOpen, onClose }: Props) {
isCloud && isCloud &&
!isFeatureEnabled(currentSubscriptionQuota.organizationsLimit) && !isFeatureEnabled(currentSubscriptionQuota.organizationsLimit) &&
planId !== ReservedPlanId.Pro; planId !== ReservedPlanId.Pro;
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const { const {
reset, reset,
@ -81,39 +82,35 @@ function CreateOrganizationModal({ isOpen, onClose }: Props) {
> >
<ModalLayout <ModalLayout
title="organizations.create_organization" title="organizations.create_organization"
paywall={conditional( paywall={conditional(isPaidTenant && planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)}
isAddOnAvailable && planId !== ReservedPlanId.Pro && ReservedPlanId.Pro hasAddOnTag={isPaidTenant}
)}
hasAddOnTag={isAddOnAvailable}
footer={ footer={
cond( cond(
isAddOnAvailable && // Just in case the enterprise plan has reached the resource limit, we still need to show charge notice.
// Just in case the enterprise plan has reached the resource limit, we still need to show charge notice. isPaidTenant && !organizationUpsellNoticeAcknowledged && (
isPaidPlan(planId, isEnterprisePlan) && <AddOnNoticeFooter
!organizationUpsellNoticeAcknowledged && ( isLoading={isSubmitting}
<AddOnNoticeFooter buttonTitle="general.create"
isLoading={isSubmitting} onClick={async () => {
buttonTitle="general.create" void update({ organizationUpsellNoticeAcknowledged: true });
onClick={async () => { await submit();
void update({ organizationUpsellNoticeAcknowledged: true }); }}
await submit(); >
<Trans
components={{
span: <span className={styles.strong} />,
a: <TextLink to={addOnPricingExplanationLink} />,
}} }}
> >
<Trans {t('upsell.add_on.footer.organization', {
components={{ price: organizationAddOnUnitPrice,
span: <span className={styles.strong} />, planName: t(
a: <TextLink to={addOnPricingExplanationLink} />, isEnterprisePlan ? 'subscription.enterprise' : 'subscription.pro_plan'
}} ),
> })}
{t('upsell.add_on.footer.organization', { </Trans>
price: organizationAddOnUnitPrice, </AddOnNoticeFooter>
planName: t( )
isEnterprisePlan ? 'subscription.enterprise' : 'subscription.pro_plan'
),
})}
</Trans>
</AddOnNoticeFooter>
)
) ?? ) ??
(isOrganizationsDisabled ? ( (isOrganizationsDisabled ? (
<QuotaGuardFooter> <QuotaGuardFooter>

View file

@ -15,7 +15,7 @@ import CardTitle from '@/ds-components/CardTitle';
import useDocumentationUrl from '@/hooks/use-documentation-url'; import useDocumentationUrl from '@/hooks/use-documentation-url';
import useTenantPathname from '@/hooks/use-tenant-pathname'; import useTenantPathname from '@/hooks/use-tenant-pathname';
import pageLayout from '@/scss/page-layout.module.scss'; import pageLayout from '@/scss/page-layout.module.scss';
import { isFeatureEnabled } from '@/utils/subscription'; import { isFeatureEnabled, isPaidPlan } from '@/utils/subscription';
import CreateOrganizationModal from './CreateOrganizationModal'; import CreateOrganizationModal from './CreateOrganizationModal';
import OrganizationsTable from './OrganizationsTable'; import OrganizationsTable from './OrganizationsTable';
@ -27,7 +27,7 @@ const organizationsPathname = '/organizations';
function Organizations() { function Organizations() {
const { getDocumentationUrl } = useDocumentationUrl(); const { getDocumentationUrl } = useDocumentationUrl();
const { const {
currentSubscription: { planId, isAddOnAvailable }, currentSubscription: { planId, isEnterprisePlan },
currentSubscriptionQuota, currentSubscriptionQuota,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { isDevTenant } = useContext(TenantsContext); const { isDevTenant } = useContext(TenantsContext);
@ -64,7 +64,7 @@ function Organizations() {
<div className={pageLayout.headline}> <div className={pageLayout.headline}>
<CardTitle <CardTitle
paywall={cond((isOrganizationsDisabled || isDevTenant) && ReservedPlanId.Pro)} paywall={cond((isOrganizationsDisabled || isDevTenant) && ReservedPlanId.Pro)}
hasAddOnTag={isAddOnAvailable} hasAddOnTag={isPaidPlan(planId, isEnterprisePlan)}
title="organizations.title" title="organizations.title"
subtitle="organizations.subtitle" subtitle="organizations.subtitle"
learnMoreLink={{ learnMoreLink={{

View file

@ -11,6 +11,7 @@ import SkuName from '@/components/SkuName';
import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider'; import { SubscriptionDataContext } from '@/contexts/SubscriptionDataProvider';
import { TenantsContext } from '@/contexts/TenantsProvider'; import { TenantsContext } from '@/contexts/TenantsProvider';
import FormField from '@/ds-components/FormField'; import FormField from '@/ds-components/FormField';
import { isPaidPlan } from '@/utils/subscription';
import AddOnUsageChangesNotification from './AddOnUsageChangesNotification'; import AddOnUsageChangesNotification from './AddOnUsageChangesNotification';
import MauLimitExceedNotification from './MauLimitExceededNotification'; import MauLimitExceedNotification from './MauLimitExceededNotification';
@ -24,7 +25,7 @@ type Props = {
function CurrentPlan({ periodicUsage: rawPeriodicUsage }: Props) { function CurrentPlan({ periodicUsage: rawPeriodicUsage }: Props) {
const { const {
currentSku: { id, unitPrice }, currentSku: { id, unitPrice },
currentSubscription: { upcomingInvoice, isEnterprisePlan, isAddOnAvailable, planId }, currentSubscription: { upcomingInvoice, isEnterprisePlan, planId },
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
const { currentTenant } = useContext(TenantsContext); const { currentTenant } = useContext(TenantsContext);
@ -71,7 +72,7 @@ function CurrentPlan({ periodicUsage: rawPeriodicUsage }: Props) {
<FormField title="subscription.next_bill"> <FormField title="subscription.next_bill">
<BillInfo cost={upcomingCost} isManagePaymentVisible={Boolean(upcomingCost)} /> <BillInfo cost={upcomingCost} isManagePaymentVisible={Boolean(upcomingCost)} />
</FormField> </FormField>
{isAddOnAvailable && !isEnterprisePlan && ( {isPaidPlan(planId, isEnterprisePlan) && !isEnterprisePlan && (
<AddOnUsageChangesNotification className={styles.notification} /> <AddOnUsageChangesNotification className={styles.notification} />
)} )}
<MauLimitExceedNotification <MauLimitExceedNotification

View file

@ -42,7 +42,7 @@ function InviteMemberModal({ isOpen, onClose }: Props) {
const { parseEmailOptions } = useEmailInputUtils(); const { parseEmailOptions } = useEmailInputUtils();
const { show } = useConfirmModal(); const { show } = useConfirmModal();
const { const {
currentSubscription: { planId, isAddOnAvailable, isEnterprisePlan }, currentSubscription: { planId, isEnterprisePlan },
mutateSubscriptionQuotaAndUsages, mutateSubscriptionQuotaAndUsages,
hasReachedSubscriptionQuotaLimit, hasReachedSubscriptionQuotaLimit,
} = useContext(SubscriptionDataContext); } = useContext(SubscriptionDataContext);
@ -50,6 +50,7 @@ function InviteMemberModal({ isOpen, onClose }: Props) {
data: { tenantMembersUpsellNoticeAcknowledged }, data: { tenantMembersUpsellNoticeAcknowledged },
update, update,
} = useUserPreferences(); } = useUserPreferences();
const isPaidTenant = isPaidPlan(planId, isEnterprisePlan);
const formMethods = useForm<InviteMemberForm>({ const formMethods = useForm<InviteMemberForm>({
defaultValues: { defaultValues: {
@ -127,14 +128,13 @@ function InviteMemberModal({ isOpen, onClose }: Props) {
size="large" size="large"
title="tenant_members.invite_modal.title" title="tenant_members.invite_modal.title"
paywall={conditional(planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)} paywall={conditional(planId !== ReservedPlanId.Pro && ReservedPlanId.Pro)}
hasAddOnTag={isAddOnAvailable && hasTenantMembersReachedLimit} hasAddOnTag={isPaidTenant && hasTenantMembersReachedLimit}
subtitle="tenant_members.invite_modal.subtitle" subtitle="tenant_members.invite_modal.subtitle"
footer={ footer={
conditional( conditional(
isAddOnAvailable && hasTenantMembersReachedLimit &&
hasTenantMembersReachedLimit &&
// Just in case the enterprise plan has reached the resource limit, we still need to show charge notice. // Just in case the enterprise plan has reached the resource limit, we still need to show charge notice.
isPaidPlan(planId, isEnterprisePlan) && isPaidTenant &&
!tenantMembersUpsellNoticeAcknowledged && ( !tenantMembersUpsellNoticeAcknowledged && (
<AddOnNoticeFooter <AddOnNoticeFooter
isLoading={isLoading} isLoading={isLoading}

View file

@ -164,11 +164,9 @@ export const createQuotaLibrary = (cloudConnection: CloudConnectionLibrary) => {
return; return;
} }
const { planId, isAddOnAvailable, isEnterprisePlan } = await getTenantSubscriptionData( const { planId, isEnterprisePlan } = await getTenantSubscriptionData(cloudConnection);
cloudConnection
);
if (shouldReportSubscriptionUpdates(planId, isEnterprisePlan, key) && isAddOnAvailable) { if (shouldReportSubscriptionUpdates(planId, isEnterprisePlan, key)) {
await reportSubscriptionUpdates(cloudConnection, key); await reportSubscriptionUpdates(cloudConnection, key);
} }
}; };

View file

@ -24,20 +24,18 @@ export const getTenantSubscriptionData = async (
): Promise<{ ): Promise<{
planId: string; planId: string;
isEnterprisePlan: boolean; isEnterprisePlan: boolean;
isAddOnAvailable?: boolean;
quota: SubscriptionQuota; quota: SubscriptionQuota;
usage: SubscriptionUsage; usage: SubscriptionUsage;
resources: Record<string, number>; resources: Record<string, number>;
roles: Record<string, number>; roles: Record<string, number>;
}> => { }> => {
const client = await cloudConnection.getClient(); const client = await cloudConnection.getClient();
const [{ planId, isAddOnAvailable, isEnterprisePlan }, { quota, usage, resources, roles }] = const [{ planId, isEnterprisePlan }, { quota, usage, resources, roles }] = await Promise.all([
await Promise.all([ client.get('/api/tenants/my/subscription'),
client.get('/api/tenants/my/subscription'), client.get('/api/tenants/my/subscription-usage'),
client.get('/api/tenants/my/subscription-usage'), ]);
]);
return { planId, isEnterprisePlan, isAddOnAvailable, quota, usage, resources, roles }; return { planId, isEnterprisePlan, quota, usage, resources, roles };
}; };
export const reportSubscriptionUpdates = async ( export const reportSubscriptionUpdates = async (

View file

@ -41,7 +41,7 @@ importers:
version: 8.8.0 version: 8.8.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.0.0 specifier: ^5.0.0
version: 5.0.2 version: 5.0.2
@ -96,7 +96,7 @@ importers:
version: 3.0.0 version: 3.0.0
tsup: tsup:
specifier: ^8.1.0 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/app-insights: packages/app-insights:
dependencies: dependencies:
@ -312,7 +312,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -379,7 +379,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -437,7 +437,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -495,7 +495,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -559,7 +559,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -623,7 +623,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -684,7 +684,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -751,7 +751,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -809,7 +809,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -867,7 +867,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -925,7 +925,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1044,7 +1044,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1114,7 +1114,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1175,7 +1175,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1230,7 +1230,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1288,7 +1288,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1346,7 +1346,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1404,7 +1404,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1465,7 +1465,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1523,7 +1523,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1581,7 +1581,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1639,7 +1639,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1697,7 +1697,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1755,7 +1755,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1813,7 +1813,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1871,7 +1871,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1929,7 +1929,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -1996,7 +1996,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2066,7 +2066,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2124,7 +2124,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2179,7 +2179,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2243,7 +2243,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2301,7 +2301,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2359,7 +2359,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2423,7 +2423,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2481,7 +2481,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2539,7 +2539,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2597,7 +2597,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2655,7 +2655,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -2713,7 +2713,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -3302,7 +3302,7 @@ importers:
version: 8.57.0 version: 8.57.0
jest: jest:
specifier: ^29.7.0 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: jest-matcher-specific-error:
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
@ -3332,7 +3332,7 @@ importers:
version: 7.0.0 version: 7.0.0
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -3483,7 +3483,7 @@ importers:
version: 3.0.0 version: 3.0.0
tsup: tsup:
specifier: ^8.1.0 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: packages/experience:
devDependencies: devDependencies:
@ -3958,7 +3958,7 @@ importers:
version: 10.0.0 version: 10.0.0
jest: jest:
specifier: ^29.7.0 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: jest-matcher-specific-error:
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
@ -3985,7 +3985,7 @@ importers:
version: 22.6.5(typescript@5.5.3) version: 22.6.5(typescript@5.5.3)
tsup: tsup:
specifier: ^8.1.0 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: typescript:
specifier: ^5.5.3 specifier: ^5.5.3
version: 5.5.3 version: 5.5.3
@ -6116,6 +6116,10 @@ packages:
resolution: {integrity: sha512-rsql/ZxXMqVvt7ySDHd7xjCog4oCYg+dexxlj3veolajwjKiy/08ZtFyEtFjSEAaKbXwkWZ4TDtiNSxb7HS0yA==} resolution: {integrity: sha512-rsql/ZxXMqVvt7ySDHd7xjCog4oCYg+dexxlj3veolajwjKiy/08ZtFyEtFjSEAaKbXwkWZ4TDtiNSxb7HS0yA==}
engines: {node: ^18.12.0 || ^20.9.0, pnpm: ^9.0.0} engines: {node: ^18.12.0 || ^20.9.0, pnpm: ^9.0.0}
'@silverhand/essentials@2.9.2':
resolution: {integrity: sha512-bD+82D9Dfa1F5xX1kfdR5ODIoJS41NOxTuHx4shVS5A4/ayEG+ZplpDDjB19fsa7kZXgSgD75R4sUCXjm88x6w==}
engines: {node: ^18.12.0 || ^20.9.0 || ^22.0.0, pnpm: ^9.0.0}
'@silverhand/slonik@31.0.0-beta.2': '@silverhand/slonik@31.0.0-beta.2':
resolution: {integrity: sha512-4IM57Er5We8+hT8IY9z5La1JAGNRFZ63tp3N0XYUYTNV9fLfUXF78yT+PoW4arnf4qc+4n498bMmKgFmt/mo9Q==} resolution: {integrity: sha512-4IM57Er5We8+hT8IY9z5La1JAGNRFZ63tp3N0XYUYTNV9fLfUXF78yT+PoW4arnf4qc+4n498bMmKgFmt/mo9Q==}
engines: {node: ^20.9.0} engines: {node: ^20.9.0}
@ -15107,7 +15111,7 @@ snapshots:
jest-util: 29.7.0 jest-util: 29.7.0
slash: 3.0.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: dependencies:
'@jest/console': 29.7.0 '@jest/console': 29.7.0
'@jest/reporters': 29.7.0 '@jest/reporters': 29.7.0
@ -15121,7 +15125,7 @@ snapshots:
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 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-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -15142,7 +15146,7 @@ snapshots:
- supports-color - supports-color
- ts-node - 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: dependencies:
'@jest/console': 29.7.0 '@jest/console': 29.7.0
'@jest/reporters': 29.7.0 '@jest/reporters': 29.7.0
@ -15156,7 +15160,7 @@ snapshots:
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 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-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -15446,14 +15450,14 @@ snapshots:
'@logto/cloud@0.2.5-1661979(zod@3.23.8)': '@logto/cloud@0.2.5-1661979(zod@3.23.8)':
dependencies: dependencies:
'@silverhand/essentials': 2.9.1 '@silverhand/essentials': 2.9.2
'@withtyped/server': 0.14.0(zod@3.23.8) '@withtyped/server': 0.14.0(zod@3.23.8)
transitivePeerDependencies: transitivePeerDependencies:
- zod - zod
'@logto/cloud@0.2.5-6654b82(zod@3.23.8)': '@logto/cloud@0.2.5-6654b82(zod@3.23.8)':
dependencies: dependencies:
'@silverhand/essentials': 2.9.1 '@silverhand/essentials': 2.9.2
'@withtyped/server': 0.14.0(zod@3.23.8) '@withtyped/server': 0.14.0(zod@3.23.8)
transitivePeerDependencies: transitivePeerDependencies:
- zod - zod
@ -15924,6 +15928,8 @@ snapshots:
'@silverhand/essentials@2.9.1': {} '@silverhand/essentials@2.9.1': {}
'@silverhand/essentials@2.9.2': {}
'@silverhand/slonik@31.0.0-beta.2': '@silverhand/slonik@31.0.0-beta.2':
dependencies: dependencies:
'@types/pg': 8.11.2 '@types/pg': 8.11.2
@ -18062,13 +18068,13 @@ snapshots:
dependencies: dependencies:
lodash.get: 4.4.2 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: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 chalk: 4.1.2
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 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 jest-util: 29.7.0
prompts: 2.4.2 prompts: 2.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -20402,16 +20408,16 @@ snapshots:
- babel-plugin-macros - babel-plugin-macros
- supports-color - 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: 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/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 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 exit: 0.1.2
import-local: 3.1.0 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-util: 29.7.0
jest-validate: 29.7.0 jest-validate: 29.7.0
yargs: 17.7.2 yargs: 17.7.2
@ -20440,7 +20446,7 @@ snapshots:
- supports-color - supports-color
- ts-node - 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: dependencies:
'@babel/core': 7.24.4 '@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0 '@jest/test-sequencer': 29.7.0
@ -20466,38 +20472,7 @@ snapshots:
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
optionalDependencies: optionalDependencies:
'@types/node': 20.10.4 '@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) 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-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)
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- supports-color - supports-color
@ -20533,6 +20508,37 @@ snapshots:
- babel-plugin-macros - babel-plugin-macros
- supports-color - 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: jest-dev-server@10.0.0:
dependencies: dependencies:
chalk: 4.1.2 chalk: 4.1.2
@ -20841,12 +20847,12 @@ snapshots:
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 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: 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 '@jest/types': 29.6.3
import-local: 3.1.0 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: transitivePeerDependencies:
- '@types/node' - '@types/node'
- babel-plugin-macros - babel-plugin-macros
@ -22782,31 +22788,31 @@ snapshots:
possible-typed-array-names@1.0.0: {} 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: dependencies:
lilconfig: 3.1.2 lilconfig: 3.1.2
yaml: 2.4.5 yaml: 2.4.5
optionalDependencies: optionalDependencies:
postcss: 8.4.39 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: dependencies:
lilconfig: 3.1.2 lilconfig: 3.1.2
yaml: 2.4.5 yaml: 2.4.5
optionalDependencies: optionalDependencies:
postcss: 8.4.39 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: dependencies:
lilconfig: 3.1.2 lilconfig: 3.1.2
yaml: 2.4.5 yaml: 2.4.5
optionalDependencies: optionalDependencies:
postcss: 8.4.39 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: dependencies:
lilconfig: 3.1.2 lilconfig: 3.1.2
yaml: 2.4.5 yaml: 2.4.5
@ -24376,7 +24382,28 @@ snapshots:
ts-interface-checker@0.1.13: {} 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.4
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: dependencies:
'@cspotcode/source-map-support': 0.8.1 '@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11 '@tsconfig/node10': 1.0.11
@ -24397,7 +24424,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1) '@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true 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: dependencies:
'@cspotcode/source-map-support': 0.8.1 '@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11 '@tsconfig/node10': 1.0.11
@ -24418,7 +24445,7 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1) '@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true 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: dependencies:
'@cspotcode/source-map-support': 0.8.1 '@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11 '@tsconfig/node10': 1.0.11
@ -24439,27 +24466,6 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1) '@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true 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.4
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: tsconfig-paths@3.15.0:
dependencies: dependencies:
'@types/json5': 0.0.29 '@types/json5': 0.0.29
@ -24479,7 +24485,7 @@ snapshots:
tsscmp@1.0.6: {} 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: dependencies:
bundle-require: 4.2.1(esbuild@0.21.5) bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14 cac: 6.7.14
@ -24489,7 +24495,7 @@ snapshots:
execa: 5.1.1 execa: 5.1.1
globby: 11.1.0 globby: 11.1.0
joycon: 3.1.1 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 resolve-from: 5.0.0
rollup: 4.14.3 rollup: 4.14.3
source-map: 0.8.0-beta.0 source-map: 0.8.0-beta.0
@ -24503,7 +24509,7 @@ snapshots:
- supports-color - supports-color
- ts-node - 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: dependencies:
bundle-require: 4.2.1(esbuild@0.21.5) bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14 cac: 6.7.14
@ -24513,7 +24519,7 @@ snapshots:
execa: 5.1.1 execa: 5.1.1
globby: 11.1.0 globby: 11.1.0
joycon: 3.1.1 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 resolve-from: 5.0.0
rollup: 4.14.3 rollup: 4.14.3
source-map: 0.8.0-beta.0 source-map: 0.8.0-beta.0
@ -24527,7 +24533,7 @@ snapshots:
- supports-color - supports-color
- ts-node - 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: dependencies:
bundle-require: 4.2.1(esbuild@0.21.5) bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14 cac: 6.7.14
@ -24537,7 +24543,7 @@ snapshots:
execa: 5.1.1 execa: 5.1.1
globby: 11.1.0 globby: 11.1.0
joycon: 3.1.1 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 resolve-from: 5.0.0
rollup: 4.14.3 rollup: 4.14.3
source-map: 0.8.0-beta.0 source-map: 0.8.0-beta.0
@ -24551,7 +24557,7 @@ snapshots:
- supports-color - supports-color
- ts-node - 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: dependencies:
bundle-require: 4.2.1(esbuild@0.21.5) bundle-require: 4.2.1(esbuild@0.21.5)
cac: 6.7.14 cac: 6.7.14
@ -24561,7 +24567,7 @@ snapshots:
execa: 5.1.1 execa: 5.1.1
globby: 11.1.0 globby: 11.1.0
joycon: 3.1.1 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 resolve-from: 5.0.0
rollup: 4.14.3 rollup: 4.14.3
source-map: 0.8.0-beta.0 source-map: 0.8.0-beta.0