@greatapps/common 1.1.700 → 1.1.702
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
- package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
- package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
- package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
- package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
- package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
- package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
- package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
- package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
- package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
- package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
- package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
- package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
- package/dist/components/account/sections/TokenSection.mjs.map +1 -1
- package/dist/components/embeds/ClarityEmbed.mjs.map +1 -1
- package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
- package/dist/components/embeds/EmbedWidgets.mjs.map +1 -1
- package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
- package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
- package/dist/components/layouts/AppNavBar.mjs.map +1 -1
- package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
- package/dist/components/layouts/NavBar.mjs.map +1 -1
- package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
- package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
- package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
- package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
- package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
- package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
- package/dist/components/modals/CreditsDisabledModal.mjs.map +1 -1
- package/dist/components/modals/HexaPromoModal.mjs +2 -2
- package/dist/components/modals/HexaPromoModal.mjs.map +1 -1
- package/dist/components/modals/HexaPromoModalGate.mjs +8 -1
- package/dist/components/modals/HexaPromoModalGate.mjs.map +1 -1
- package/dist/components/modals/Modals.mjs.map +1 -1
- package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
- package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CannotDeleteCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
- package/dist/components/modals/cards/DeleteCardModal.mjs.map +1 -1
- package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
- package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
- package/dist/components/navigation/OverdueInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/PendingCancellationBanner.mjs.map +1 -1
- package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
- package/dist/components/navigation/SubscriptionBanner.mjs.map +1 -1
- package/dist/components/navigation/TrialBanner.mjs.map +1 -1
- package/dist/components/navigation/UpcomingInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
- package/dist/components/pages/NotFoundPage.mjs.map +1 -1
- package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
- package/dist/components/ui/buttons/Button.mjs.map +1 -1
- package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
- package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
- package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
- package/dist/components/ui/data-display/Badge.mjs.map +1 -1
- package/dist/components/ui/data-display/Card.mjs.map +1 -1
- package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
- package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
- package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
- package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
- package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
- package/dist/components/ui/data-display/Separator.mjs.map +1 -1
- package/dist/components/ui/data-display/Table.mjs.map +1 -1
- package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
- package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
- package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
- package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
- package/dist/components/ui/feedback/Progress.mjs.map +1 -1
- package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
- package/dist/components/ui/feedback/Toast.mjs.map +1 -1
- package/dist/components/ui/form/Calendar.mjs.map +1 -1
- package/dist/components/ui/form/Checkbox.mjs.map +1 -1
- package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
- package/dist/components/ui/form/DatePicker.mjs.map +1 -1
- package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
- package/dist/components/ui/form/FormField.mjs.map +1 -1
- package/dist/components/ui/form/Input.mjs.map +1 -1
- package/dist/components/ui/form/InputOtp.mjs.map +1 -1
- package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
- package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
- package/dist/components/ui/form/Select.mjs +1 -1
- package/dist/components/ui/form/Select.mjs.map +1 -1
- package/dist/components/ui/form/Switch.mjs.map +1 -1
- package/dist/components/ui/form/Textarea.mjs.map +1 -1
- package/dist/components/ui/overlay/Command.mjs.map +1 -1
- package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
- package/dist/components/ui/overlay/Popover.mjs.map +1 -1
- package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
- package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageUpload.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/index.mjs.map +1 -1
- package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
- package/dist/handlers.mjs.map +1 -1
- package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
- package/dist/hooks/useAuthQueryKey.mjs.map +1 -1
- package/dist/hooks/useBrandLoadingIcon.mjs.map +1 -1
- package/dist/hooks/useRouter.mjs.map +1 -1
- package/dist/http.mjs.map +1 -1
- package/dist/i18n/config.mjs.map +1 -1
- package/dist/i18n/country-language.mjs.map +1 -1
- package/dist/i18n/messages/en-us.mjs.map +1 -1
- package/dist/i18n/messages/es-es.mjs.map +1 -1
- package/dist/i18n/messages/index.mjs.map +1 -1
- package/dist/i18n/messages/pt-br.mjs.map +1 -1
- package/dist/i18n/normalize.mjs.map +1 -1
- package/dist/i18n/resolve-locale.mjs.map +1 -1
- package/dist/i18n.mjs.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/infra/http/api-fetch.mjs.map +1 -1
- package/dist/infra/route/parse-id.mjs.map +1 -1
- package/dist/infra/route/parse-numeric.mjs.map +1 -1
- package/dist/infra/route/safe-route-handler.mjs.map +1 -1
- package/dist/infra/route/search-params.mjs.map +1 -1
- package/dist/infra/utils/array.mjs.map +1 -1
- package/dist/infra/utils/date.mjs.map +1 -1
- package/dist/middleware.mjs.map +1 -1
- package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/get-account-token.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
- package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
- package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/use-account-token.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/use-currency-formatter.hook.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
- package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
- package/dist/modules/accounts/services/account-token.service.mjs.map +1 -1
- package/dist/modules/accounts/services/account.service.mjs.map +1 -1
- package/dist/modules/auth/actions/social-google-login.action.mjs.map +1 -1
- package/dist/modules/auth/actions/social-google-onboarding.action.mjs.map +1 -1
- package/dist/modules/auth/actions/unlink-google.action.mjs.map +1 -1
- package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
- package/dist/modules/auth/actions/verify-two-factor.action.mjs.map +1 -1
- package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/social-google-login.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/social-google-onboarding.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/unlink-google.hook.mjs.map +1 -1
- package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
- package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-paid-subscription.mjs.map +1 -1
- package/dist/modules/auth/utils/assert-subscription-addon.mjs.map +1 -1
- package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
- package/dist/modules/auth/utils/require-token-not-expired.mjs.map +1 -1
- package/dist/modules/auth/utils/require-valid-session.mjs.map +1 -1
- package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
- package/dist/modules/cards/actions/create-setup-intent.action.mjs.map +1 -1
- package/dist/modules/cards/actions/delete-card.action.mjs.map +1 -1
- package/dist/modules/cards/actions/set-default-card.action.mjs.map +1 -1
- package/dist/modules/cards/handlers/find-card-by-id.handler.mjs.map +1 -1
- package/dist/modules/cards/handlers/list-cards.handler.mjs.map +1 -1
- package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/create-setup-intent.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/delete-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/delete-confirmation.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/handle-delete-card.hook.mjs.map +1 -1
- package/dist/modules/cards/hooks/set-default-card.hook.mjs.map +1 -1
- package/dist/modules/cards/services/cards.service.mjs.map +1 -1
- package/dist/modules/cards/types.mjs.map +1 -1
- package/dist/modules/charges/actions/charge-action.action.mjs.map +1 -1
- package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs.map +1 -1
- package/dist/modules/charges/handlers/list-charges.handler.mjs.map +1 -1
- package/dist/modules/charges/hooks/charge-action.hook.mjs.map +1 -1
- package/dist/modules/charges/hooks/charge-by-id.hook.mjs.map +1 -1
- package/dist/modules/charges/hooks/charges.hook.mjs.map +1 -1
- package/dist/modules/charges/services/charges.service.mjs.map +1 -1
- package/dist/modules/charges/types/charge.type.mjs.map +1 -1
- package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs.map +1 -1
- package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
- package/dist/modules/images/actions/process-image.action.mjs.map +1 -1
- package/dist/modules/images/constants/image.constants.mjs.map +1 -1
- package/dist/modules/images/hooks/use-image-upload.hook.mjs.map +1 -1
- package/dist/modules/images/services/image-processing.service.mjs.map +1 -1
- package/dist/modules/images/utils/base64.mjs.map +1 -1
- package/dist/modules/images/utils/compress-image.mjs.map +1 -1
- package/dist/modules/images/utils/crop-image.mjs.map +1 -1
- package/dist/modules/images/utils/validate-image.mjs.map +1 -1
- package/dist/modules/pages/constants/query-keys.constants.mjs.map +1 -1
- package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
- package/dist/modules/pages/hooks/count-pages.hook.mjs.map +1 -1
- package/dist/modules/pages/services/pages.service.mjs.map +1 -1
- package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs.map +1 -1
- package/dist/modules/plans/handlers/list-plans.handler.mjs.map +1 -1
- package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
- package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
- package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
- package/dist/modules/plans/services/plans.service.mjs.map +1 -1
- package/dist/modules/plans/types/plan.type.mjs.map +1 -1
- package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
- package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/actions/create-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/delete-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/find-project.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
- package/dist/modules/projects/actions/list-projects.action.mjs.map +1 -1
- package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
- package/dist/modules/projects/actions/update-project.action.mjs.map +1 -1
- package/dist/modules/projects/handlers/find-project.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-all-account-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-available-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-project-users.handler.mjs.map +1 -1
- package/dist/modules/projects/handlers/list-projects.handler.mjs.map +1 -1
- package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/create-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/delete-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/update-project.hook.mjs.map +1 -1
- package/dist/modules/projects/services/projects.service.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/update-subscription-payment.action.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/update-subscription-payment.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs +2 -0
- package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
- package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
- package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
- package/dist/modules/subscriptions/types/pix-pending.type.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/get-subscription-cancellation-state.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/get-subscription-expiry-date.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
- package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
- package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
- package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
- package/dist/modules/users/handlers/list-messages.handler.mjs.map +1 -1
- package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
- package/dist/modules/users/services/messages.service.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
- package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
- package/dist/providers/auth.provider.mjs.map +1 -1
- package/dist/providers/navigation.provider.mjs.map +1 -1
- package/dist/providers/whitelabel.provider.mjs.map +1 -1
- package/dist/route.mjs.map +1 -1
- package/dist/store/useAccountModals.mjs.map +1 -1
- package/dist/store/useBuyCreditsModal.mjs.map +1 -1
- package/dist/store/useCreditsDisabledModal.mjs.map +1 -1
- package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
- package/dist/store/useHexaPromoModal.mjs.map +1 -1
- package/dist/store/useMdSidebarStore.mjs.map +1 -1
- package/dist/store/usePaidPlanRequiredModal.mjs.map +1 -1
- package/dist/utils/constants/br-states.mjs.map +1 -1
- package/dist/utils/cookies/hexa-promo.mjs.map +1 -1
- package/dist/utils/countries.mjs.map +1 -1
- package/dist/utils/format/currency.mjs.map +1 -1
- package/dist/utils/intl/cookie-domain.mjs.map +1 -1
- package/dist/utils/intl/locale-cookie.mjs.map +1 -1
- package/dist/utils/next-navigation.mjs.map +1 -1
- package/dist/utils/redirect.mjs.map +1 -1
- package/dist/utils/safeMutationAction.mjs.map +1 -1
- package/dist/utils/safeServerAction.mjs.map +1 -1
- package/dist/utils/withAction.mjs.map +1 -1
- package/package.json +115 -115
- package/src/components/account/ConfigurationsMyAccountModal.tsx +179 -179
- package/src/components/account/ConfirmDeleteAccountModal.tsx +110 -110
- package/src/components/account/ConfirmGlobalPreferencesModal.tsx +68 -68
- package/src/components/account/DeleteAccountModal.tsx +160 -160
- package/src/components/account/DisableTwoFactorAuthModal.tsx +92 -92
- package/src/components/account/IsntPossibleDeleteAccountModal.tsx +51 -51
- package/src/components/account/TwoFactorAuthModal.tsx +220 -220
- package/src/components/account/hooks/useChangePhoneForm.tsx +113 -113
- package/src/components/account/hooks/useTwoFactorAuthForm.tsx +116 -116
- package/src/components/account/sections/ChangeEmailModal.tsx +239 -239
- package/src/components/account/sections/ChangePasswordSection.tsx +68 -68
- package/src/components/account/sections/ChangePhoneModal.tsx +273 -273
- package/src/components/account/sections/MyProfileSection.tsx +276 -276
- package/src/components/account/sections/PreferencesSection.tsx +278 -278
- package/src/components/account/sections/SecuritySection.tsx +102 -102
- package/src/components/account/sections/TokenSection.tsx +85 -85
- package/src/components/embeds/ClarityEmbed.tsx +70 -70
- package/src/components/embeds/CrispEmbed.tsx +195 -195
- package/src/components/embeds/EmbedWidgets.tsx +62 -62
- package/src/components/embeds/FrillEmbed.tsx +146 -146
- package/src/components/layouts/AppMobileNavBar.tsx +214 -214
- package/src/components/layouts/AppNavBar.tsx +40 -40
- package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
- package/src/components/layouts/NavBar.tsx +228 -228
- package/src/components/layouts/NotificationsPopover.tsx +120 -120
- package/src/components/layouts/ProfilePopover.tsx +191 -191
- package/src/components/layouts/SideBarNavigation.tsx +65 -65
- package/src/components/layouts/UsersSelectorPopover.tsx +236 -236
- package/src/components/layouts/WhitelabelCodes.tsx +59 -59
- package/src/components/modals/BuyCreditsModal.tsx +390 -390
- package/src/components/modals/CreditsDisabledModal.tsx +62 -62
- package/src/components/modals/HexaPromoModal.tsx +212 -212
- package/src/components/modals/HexaPromoModalGate.tsx +93 -80
- package/src/components/modals/Modals.tsx +25 -25
- package/src/components/modals/PaidPlanRequiredModal.tsx +60 -60
- package/src/components/modals/cards/AddCardModal.tsx +420 -420
- package/src/components/modals/cards/CannotDeleteCardModal.tsx +124 -124
- package/src/components/modals/cards/CardFormFields.tsx +363 -363
- package/src/components/modals/cards/DeleteCardModal.tsx +136 -136
- package/src/components/navigation/CancelledSubscriptionBanner.tsx +62 -62
- package/src/components/navigation/NavItemsContext.ts +20 -20
- package/src/components/navigation/OverdueInvoiceBanner.tsx +51 -51
- package/src/components/navigation/PendingCancellationBanner.tsx +60 -60
- package/src/components/navigation/ProjectSelectorPopover.tsx +180 -180
- package/src/components/navigation/SubscriptionBanner.tsx +94 -94
- package/src/components/navigation/TrialBanner.tsx +54 -54
- package/src/components/navigation/UpcomingInvoiceBanner.tsx +55 -55
- package/src/components/navigation/shells/TabsMobileShell.tsx +74 -74
- package/src/components/navigation/subcomponents/BottomLinks.tsx +85 -85
- package/src/components/navigation/subcomponents/ProjectSelector.tsx +184 -184
- package/src/components/pages/NotFoundPage.tsx +75 -75
- package/src/components/pages/notifications/Notifications.tsx +190 -190
- package/src/components/ui/buttons/Button.tsx +77 -77
- package/src/components/ui/buttons/CancelButton.tsx +14 -14
- package/src/components/ui/buttons/CopyButton.tsx +59 -59
- package/src/components/ui/data-display/Accordion.tsx +81 -81
- package/src/components/ui/data-display/Badge.tsx +47 -47
- package/src/components/ui/data-display/Card.tsx +93 -93
- package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
- package/src/components/ui/data-display/CardItem.tsx +135 -135
- package/src/components/ui/data-display/Pagination.tsx +126 -126
- package/src/components/ui/data-display/PaymentInfoCard.tsx +193 -193
- package/src/components/ui/data-display/ScrollArea.tsx +59 -59
- package/src/components/ui/data-display/Separator.tsx +29 -29
- package/src/components/ui/data-display/Table.tsx +117 -117
- package/src/components/ui/data-display/Tabs.tsx +67 -67
- package/src/components/ui/feedback/CircularProgress.tsx +79 -79
- package/src/components/ui/feedback/DefaultCircularProgress.tsx +67 -67
- package/src/components/ui/feedback/LoadingOverlay.tsx +30 -30
- package/src/components/ui/feedback/Progress.tsx +40 -40
- package/src/components/ui/feedback/Skeleton.tsx +5 -5
- package/src/components/ui/feedback/Toast.tsx +104 -104
- package/src/components/ui/form/Calendar.tsx +228 -228
- package/src/components/ui/form/Checkbox.tsx +31 -31
- package/src/components/ui/form/ComboboxField.tsx +159 -159
- package/src/components/ui/form/DatePicker.tsx +100 -100
- package/src/components/ui/form/DateRangePicker.tsx +111 -111
- package/src/components/ui/form/FormField.tsx +133 -133
- package/src/components/ui/form/Input.tsx +20 -20
- package/src/components/ui/form/InputOtp.tsx +80 -80
- package/src/components/ui/form/PhoneInput.tsx +210 -210
- package/src/components/ui/form/RadioGroup.tsx +45 -45
- package/src/components/ui/form/Select.tsx +200 -200
- package/src/components/ui/form/Switch.tsx +32 -32
- package/src/components/ui/form/Textarea.tsx +19 -19
- package/src/components/ui/overlay/Command.tsx +185 -185
- package/src/components/ui/overlay/Dialog.tsx +153 -153
- package/src/components/ui/overlay/Popover.tsx +49 -49
- package/src/components/ui/overlay/Sheet.tsx +170 -170
- package/src/components/ui/overlay/Tooltip.tsx +62 -62
- package/src/components/widgets/ImageUpload/ImageCropModal.tsx +392 -392
- package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +62 -62
- package/src/components/widgets/ImageUpload/ImageUpload.tsx +131 -131
- package/src/components/widgets/ImageUpload/index.ts +3 -3
- package/src/components/widgets/notifications/NotificationCard.tsx +73 -73
- package/src/handlers.ts +22 -22
- package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
- package/src/hooks/useAuthQueryKey.ts +32 -32
- package/src/hooks/useBrandLoadingIcon.tsx +18 -18
- package/src/hooks/useRouter.ts +38 -38
- package/src/http.ts +1 -1
- package/src/i18n/config.ts +17 -17
- package/src/i18n/country-language.ts +60 -60
- package/src/i18n/messages/en-us.ts +519 -519
- package/src/i18n/messages/es-es.ts +520 -520
- package/src/i18n/messages/index.ts +24 -24
- package/src/i18n/messages/pt-br.ts +543 -543
- package/src/i18n/normalize.ts +15 -15
- package/src/i18n/resolve-locale.ts +77 -77
- package/src/i18n.ts +10 -10
- package/src/index.ts +587 -587
- package/src/infra/http/api-fetch.ts +39 -39
- package/src/infra/route/parse-id.ts +9 -9
- package/src/infra/route/parse-numeric.ts +16 -16
- package/src/infra/route/safe-route-handler.ts +16 -16
- package/src/infra/route/search-params.ts +9 -9
- package/src/infra/utils/array.ts +167 -167
- package/src/infra/utils/date.ts +59 -59
- package/src/middleware.ts +4 -4
- package/src/modules/accounts/actions/account-management.action.ts +109 -109
- package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
- package/src/modules/accounts/actions/get-account-token.action.ts +8 -8
- package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
- package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
- package/src/modules/accounts/hooks/current-account.hook.tsx +26 -26
- package/src/modules/accounts/hooks/use-account-token.hook.tsx +14 -14
- package/src/modules/accounts/hooks/use-currency-formatter.hook.tsx +32 -32
- package/src/modules/accounts/hooks/useAccountManagement.ts +95 -95
- package/src/modules/accounts/hooks/useCurrencies.ts +18 -18
- package/src/modules/accounts/hooks/useTimezones.ts +18 -18
- package/src/modules/accounts/hooks/useViaCep.ts +25 -25
- package/src/modules/accounts/services/account-token.service.ts +52 -52
- package/src/modules/accounts/services/account.service.ts +243 -243
- package/src/modules/accounts/types.ts +230 -230
- package/src/modules/auth/actions/social-google-login.action.ts +12 -12
- package/src/modules/auth/actions/social-google-onboarding.action.ts +13 -13
- package/src/modules/auth/actions/unlink-google.action.ts +8 -8
- package/src/modules/auth/actions/validate-session.action.ts +70 -70
- package/src/modules/auth/actions/verify-two-factor.action.ts +19 -19
- package/src/modules/auth/hooks/login.hook.tsx +13 -13
- package/src/modules/auth/hooks/logout.hook.tsx +11 -11
- package/src/modules/auth/hooks/register.hook.tsx +11 -11
- package/src/modules/auth/hooks/social-google-login.hook.tsx +13 -13
- package/src/modules/auth/hooks/social-google-onboarding.hook.tsx +13 -13
- package/src/modules/auth/hooks/unlink-google.hook.tsx +13 -13
- package/src/modules/auth/hooks/useManagementPermissions.ts +52 -52
- package/src/modules/auth/hooks/useUserQuery.ts +103 -103
- package/src/modules/auth/types/management-permission.type.ts +14 -14
- package/src/modules/auth/utils/assert-management-permission.ts +56 -56
- package/src/modules/auth/utils/assert-management-subscription.ts +38 -38
- package/src/modules/auth/utils/assert-paid-subscription.ts +47 -47
- package/src/modules/auth/utils/assert-subscription-addon.ts +42 -42
- package/src/modules/auth/utils/build-wl-override.ts +43 -43
- package/src/modules/auth/utils/require-token-not-expired.ts +53 -53
- package/src/modules/auth/utils/require-valid-session.ts +35 -35
- package/src/modules/cards/actions/create-card.action.ts +9 -9
- package/src/modules/cards/actions/create-setup-intent.action.ts +8 -8
- package/src/modules/cards/actions/delete-card.action.ts +8 -8
- package/src/modules/cards/actions/set-default-card.action.ts +8 -8
- package/src/modules/cards/handlers/find-card-by-id.handler.ts +15 -15
- package/src/modules/cards/handlers/list-cards.handler.ts +10 -10
- package/src/modules/cards/hooks/card-by-id.hook.ts +17 -17
- package/src/modules/cards/hooks/cards.hook.ts +22 -22
- package/src/modules/cards/hooks/create-card.hook.ts +30 -30
- package/src/modules/cards/hooks/create-setup-intent.hook.ts +11 -11
- package/src/modules/cards/hooks/delete-card.hook.ts +52 -52
- package/src/modules/cards/hooks/delete-confirmation.hook.ts +40 -40
- package/src/modules/cards/hooks/handle-delete-card.hook.ts +47 -47
- package/src/modules/cards/hooks/set-default-card.hook.ts +55 -55
- package/src/modules/cards/services/cards.service.ts +136 -136
- package/src/modules/cards/types.ts +52 -52
- package/src/modules/charges/actions/charge-action.action.ts +13 -13
- package/src/modules/charges/handlers/find-charge-by-id.handler.ts +14 -14
- package/src/modules/charges/handlers/list-charges.handler.ts +15 -15
- package/src/modules/charges/hooks/charge-action.hook.ts +24 -24
- package/src/modules/charges/hooks/charge-by-id.hook.ts +19 -19
- package/src/modules/charges/hooks/charges.hook.ts +19 -19
- package/src/modules/charges/services/charges.service.ts +63 -63
- package/src/modules/charges/types/charge.type.ts +68 -68
- package/src/modules/ia-credits/handlers/list-ia-credits.handler.ts +14 -14
- package/src/modules/ia-credits/hooks/ia-credits.hook.ts +103 -103
- package/src/modules/images/actions/process-image.action.ts +40 -40
- package/src/modules/images/constants/image.constants.ts +11 -11
- package/src/modules/images/hooks/use-image-upload.hook.ts +153 -153
- package/src/modules/images/services/image-processing.service.ts +75 -75
- package/src/modules/images/types/image.type.ts +54 -54
- package/src/modules/images/utils/base64.ts +26 -26
- package/src/modules/images/utils/compress-image.ts +20 -20
- package/src/modules/images/utils/crop-image.ts +68 -68
- package/src/modules/images/utils/validate-image.ts +86 -86
- package/src/modules/pages/constants/query-keys.constants.ts +1 -1
- package/src/modules/pages/handlers/count-pages.handler.ts +12 -12
- package/src/modules/pages/hooks/count-pages.hook.ts +21 -21
- package/src/modules/pages/services/pages.service.ts +27 -27
- package/src/modules/plans/handlers/find-plan-by-id.handler.ts +14 -14
- package/src/modules/plans/handlers/list-plans.handler.ts +22 -22
- package/src/modules/plans/hooks/list-plans.hook.ts +23 -23
- package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +14 -14
- package/src/modules/plans/hooks/use-plan-by-id.hook.ts +39 -39
- package/src/modules/plans/services/plans.service.ts +136 -136
- package/src/modules/plans/types/plan.type.ts +79 -79
- package/src/modules/plans/utils/map-api-plan-to-ui.ts +167 -167
- package/src/modules/projects/actions/add-project-user.action.ts +9 -9
- package/src/modules/projects/actions/create-project.action.ts +9 -9
- package/src/modules/projects/actions/delete-project.action.ts +8 -8
- package/src/modules/projects/actions/find-project.action.ts +8 -8
- package/src/modules/projects/actions/list-project-users.action.ts +9 -9
- package/src/modules/projects/actions/list-projects.action.ts +16 -16
- package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
- package/src/modules/projects/actions/update-project.action.ts +9 -9
- package/src/modules/projects/handlers/find-project.handler.ts +15 -15
- package/src/modules/projects/handlers/list-all-account-users.handler.ts +23 -23
- package/src/modules/projects/handlers/list-available-users.handler.ts +26 -26
- package/src/modules/projects/handlers/list-project-users.handler.ts +26 -26
- package/src/modules/projects/handlers/list-projects.handler.ts +23 -23
- package/src/modules/projects/hooks/add-project-user.hook.ts +72 -72
- package/src/modules/projects/hooks/create-project.hook.ts +120 -120
- package/src/modules/projects/hooks/delete-project.hook.ts +58 -58
- package/src/modules/projects/hooks/find-project.hook.ts +18 -18
- package/src/modules/projects/hooks/list-all-account-users.hook.ts +40 -40
- package/src/modules/projects/hooks/list-available-users.hook.ts +39 -39
- package/src/modules/projects/hooks/list-infinite-projects.hook.ts +44 -44
- package/src/modules/projects/hooks/list-project-users.hook.ts +39 -39
- package/src/modules/projects/hooks/list-projects.hook.ts +23 -23
- package/src/modules/projects/hooks/remove-project-user.hook.ts +72 -72
- package/src/modules/projects/hooks/update-project.hook.ts +86 -86
- package/src/modules/projects/services/projects.service.ts +156 -156
- package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
- package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
- package/src/modules/subscriptions/actions/update-subscription-payment.action.ts +13 -13
- package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
- package/src/modules/subscriptions/constants/query-keys.constants.ts +3 -3
- package/src/modules/subscriptions/constants/subscription.constants.ts +1 -1
- package/src/modules/subscriptions/handlers/list-subscriptions.handler.ts +17 -17
- package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
- package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +22 -22
- package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +22 -22
- package/src/modules/subscriptions/hooks/update-subscription-payment.hook.ts +25 -25
- package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +31 -28
- package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +44 -44
- package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
- package/src/modules/subscriptions/types/calculate-subscription.type.ts +116 -116
- package/src/modules/subscriptions/types/pix-pending.type.ts +38 -38
- package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
- package/src/modules/subscriptions/utils/get-subscription-cancellation-state.ts +37 -37
- package/src/modules/subscriptions/utils/get-subscription-expiry-date.ts +33 -33
- package/src/modules/subscriptions/utils/has-subscription-expired.ts +11 -11
- package/src/modules/subscriptions/utils/periodicity.ts +79 -79
- package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
- package/src/modules/users/action/find-user-by-id.action.ts +8 -8
- package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
- package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
- package/src/modules/users/handlers/list-messages.handler.ts +39 -39
- package/src/modules/users/hooks/messages.hook.ts +69 -69
- package/src/modules/users/services/messages.service.ts +49 -49
- package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
- package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
- package/src/modules/whitelabel/schema.ts +84 -84
- package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
- package/src/providers/auth.provider.tsx +267 -267
- package/src/providers/navigation.provider.tsx +99 -99
- package/src/providers/whitelabel.provider.tsx +90 -90
- package/src/route.ts +4 -4
- package/src/store/useAccountModals.ts +85 -85
- package/src/store/useBuyCreditsModal.ts +21 -21
- package/src/store/useCreditsDisabledModal.ts +11 -11
- package/src/store/useDesktopSidebarStore.ts +47 -47
- package/src/store/useHexaPromoModal.ts +13 -13
- package/src/store/useMdSidebarStore.ts +34 -34
- package/src/store/usePaidPlanRequiredModal.ts +19 -19
- package/src/utils/constants/br-states.ts +29 -29
- package/src/utils/cookies/hexa-promo.ts +114 -114
- package/src/utils/countries.ts +224 -224
- package/src/utils/format/currency.ts +70 -70
- package/src/utils/intl/cookie-domain.ts +29 -29
- package/src/utils/intl/locale-cookie.ts +18 -18
- package/src/utils/next-navigation.ts +7 -7
- package/src/utils/redirect.ts +78 -78
- package/src/utils/safeMutationAction.ts +24 -24
- package/src/utils/safeServerAction.ts +21 -21
- package/src/utils/withAction.ts +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/actions/verify-two-factor.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/actions/verify-two-factor.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { authService } from '../services/auth.service';\nimport { getClientInfoFromRequest } from '../../../infra/utils/client-info';\n\nexport async function verifyTwoFactorAction(\n cookie: string,\n code: string,\n options?: { window?: number; setCookie?: boolean },\n) {\n return safeServerAction(async () => {\n if (!/^\\d{6}$/.test(code)) {\n throw new Error('Formato inválido');\n }\n const clientInfo = await getClientInfoFromRequest();\n return authService.verifyTwoFactor(cookie, code, clientInfo, options);\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,gCAAgC;AAEzC,eAAsB,sBACpB,QACA,MACA,SACA;AACA,SAAO,iBAAiB,YAAY;AAClC,QAAI,CAAC,UAAU,KAAK,IAAI,GAAG;AACzB,YAAM,IAAI,MAAM,qBAAkB;AAAA,IACpC;AACA,UAAM,aAAa,MAAM,yBAAyB;AAClD,WAAO,YAAY,gBAAgB,QAAQ,MAAM,YAAY,OAAO;AAAA,EACtE,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/login.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/login.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { loginAction } from \"../actions/login.action\";\nimport { LoginRequest, LoginSuccessResponse } from \"../schema\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useLogin() {\n return useMutation({\n mutationFn: (credentials: LoginRequest) =>\n withAction(loginAction)(credentials) as Promise<LoginSuccessResponse>,\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAE5B,SAAS,kBAAkB;AAEpB,SAAS,WAAW;AACzB,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,gBACX,WAAW,WAAW,EAAE,WAAW;AAAA,EACvC,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/logout.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/logout.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { logoutAction } from \"../actions/logout.action\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useLogout() {\n return useMutation({\n mutationFn: withAction(logoutAction),\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,SAAS,YAAY;AAC1B,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,YAAY;AAAA,EACrC,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/register.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/register.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { registerAction } from \"../actions/register.action\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useRegister() {\n return useMutation({\n mutationFn: withAction(registerAction),\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAEpB,SAAS,cAAc;AAC5B,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,cAAc;AAAA,EACvC,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/social-google-login.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/social-google-login.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { socialGoogleLoginAction } from \"../actions/social-google-login.action\";\nimport { SocialGoogleResponse } from \"../schema\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useSocialGoogleLogin() {\n return useMutation({\n mutationFn: (code: string) =>\n withAction(socialGoogleLoginAction)(code) as Promise<SocialGoogleResponse>,\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,+BAA+B;AAExC,SAAS,kBAAkB;AAEpB,SAAS,uBAAuB;AACrC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,uBAAuB,EAAE,IAAI;AAAA,EAC5C,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/social-google-onboarding.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/social-google-onboarding.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { socialGoogleOnboardingAction } from \"../actions/social-google-onboarding.action\";\nimport { SocialOnboardingRequest, SocialOnboardingResponse } from \"../schema\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useSocialGoogleOnboarding() {\n return useMutation({\n mutationFn: (data: SocialOnboardingRequest) =>\n withAction(socialGoogleOnboardingAction)(data) as Promise<SocialOnboardingResponse>,\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,oCAAoC;AAE7C,SAAS,kBAAkB;AAEpB,SAAS,4BAA4B;AAC1C,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,4BAA4B,EAAE,IAAI;AAAA,EACjD,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/unlink-google.hook.tsx"],"sourcesContent":["\"use client\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/unlink-google.hook.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMutation } from \"@tanstack/react-query\";\nimport { unlinkGoogleAction } from \"../actions/unlink-google.action\";\nimport { UnlinkGoogleResponse } from \"../schema\";\nimport { withAction } from \"../../../utils/withAction\";\n\nexport function useUnlinkGoogle() {\n return useMutation({\n mutationFn: () =>\n withAction(unlinkGoogleAction)() as Promise<UnlinkGoogleResponse>,\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAEpB,SAAS,kBAAkB;AAChC,SAAO,YAAY;AAAA,IACjB,YAAY,MACV,WAAW,kBAAkB,EAAE;AAAA,EACnC,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/useManagementPermissions.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/useManagementPermissions.ts"],"sourcesContent":["'use client';\n\nimport { UserProfile } from '../../users/schema';\nimport { useAuth } from '../../../providers/auth.provider';\nimport type { ManagementPermission } from '../types/management-permission.type';\n\nexport { type ManagementPermission } from '../types/management-permission.type';\n\nexport function useManagementPermissions() {\n const { user } = useAuth();\n const profile = user?.profile;\n\n const isAdmin = profile === UserProfile.admin;\n const isOwner = profile === UserProfile.owner;\n const isOwnerOrAdmin = isOwner || isAdmin;\n const isViewer = profile === UserProfile.viewer;\n const isCollaborator = profile === UserProfile.collaborator;\n const canManage = !isViewer;\n\n const hasPermission = (permission: ManagementPermission) => {\n switch (permission) {\n case 'manage_pages':\n case 'manage_redirects':\n case 'manage_domains':\n case 'manage_ab_tests':\n case 'restore_pages':\n case 'create_pages':\n case 'update_pages':\n case 'delete_pages':\n return !isViewer;\n case 'manage_projects':\n case 'delete_leads':\n case 'view_cards':\n case 'manage_cards':\n case 'manage_subscriptions':\n return isOwnerOrAdmin;\n default:\n return false;\n }\n };\n\n return {\n profile,\n isAdmin,\n isOwner,\n isOwnerOrAdmin,\n isViewer,\n isCollaborator,\n canManage,\n hasPermission,\n };\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AAKjB,SAAS,2BAA2B;AACzC,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,YAAY,YAAY;AACxC,QAAM,UAAU,YAAY,YAAY;AACxC,QAAM,iBAAiB,WAAW;AAClC,QAAM,WAAW,YAAY,YAAY;AACzC,QAAM,iBAAiB,YAAY,YAAY;AAC/C,QAAM,YAAY,CAAC;AAEnB,QAAM,gBAAgB,CAAC,eAAqC;AAC1D,YAAQ,YAAY;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO,CAAC;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/hooks/useUserQuery.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/hooks/useUserQuery.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQuery, useQueryClient, UseQueryOptions } from '@tanstack/react-query';\nimport { User } from '../../users/schema';\nimport { withAction } from '../../../utils/withAction';\nimport { useWlQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const USER_QUERY_KEY = ['user'] as const;\nexport const USER_VALIDATE_SESSION_KEY = ['user-validate-session'] as const;\n\nasync function fetchUser(): Promise<User | null> {\n const { findUserById: getUserDataAction } = await import('../../users/action/find-user-by-id.action');\n const result = await getUserDataAction();\n return result.success && result.data ? result.data : null;\n}\n\nasync function validateUserSession(publicRoutes: string[] = []): Promise<boolean> {\n const { validateSessionAction } = await import('../actions/validate-session.action');\n return await validateSessionAction(publicRoutes);\n}\n\nexport function useUserQuery() {\n const queryKey = useWlQueryKey([...USER_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: fetchUser,\n staleTime: 60 * 1000,\n gcTime: 10 * 60 * 1000,\n retry: false,\n });\n}\n\n// Overloads preservam o contrato antigo `useUserValidateSession(options?)` enquanto\n// adicionam a forma nova `useUserValidateSession(publicRoutes, options?)`.\nexport function useUserValidateSession(options?: UseQueryOptions): ReturnType<typeof useQuery>;\nexport function useUserValidateSession(\n publicRoutes: string[],\n options?: UseQueryOptions,\n): ReturnType<typeof useQuery>;\nexport function useUserValidateSession(\n publicRoutesOrOptions: string[] | UseQueryOptions = [],\n maybeOptions?: UseQueryOptions,\n) {\n const publicRoutes = Array.isArray(publicRoutesOrOptions) ? publicRoutesOrOptions : [];\n const options = Array.isArray(publicRoutesOrOptions) ? maybeOptions : publicRoutesOrOptions;\n const queryKey = useWlQueryKey([...USER_VALIDATE_SESSION_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: () => validateUserSession(publicRoutes),\n retry: false,\n staleTime: 5 * 60 * 1000,\n ...options,\n refetchOnMount: 'always',\n refetchOnWindowFocus: true,\n });\n}\n\nexport function useTwoFactorVerify() {\n const queryClient = useQueryClient();\n const userKey = useWlQueryKey([...USER_QUERY_KEY]);\n const twoFactorKey = useWlQueryKey(['two-factor-pending']);\n\n return useMutation({\n mutationFn: async ({\n cookie,\n code,\n window,\n setCookie,\n }: {\n cookie: string;\n code: string;\n window?: number;\n /**\n * Quando `false`, o verify não grava o cookie de sessão e devolve o\n * `accessToken` no resultado. Usado em fluxos como SSO em que o token\n * vai pra outro destino (callback de app) e não pode derrubar a\n * sessão atual do Great no navegador.\n */\n setCookie?: boolean;\n }) => {\n const { verifyTwoFactorAction } = await import('../actions/verify-two-factor.action');\n return withAction(() => verifyTwoFactorAction(cookie, code, { window, setCookie }))();\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: userKey });\n queryClient.invalidateQueries({ queryKey: twoFactorKey });\n },\n });\n}\n\nexport function useInvalidateUser() {\n const queryClient = useQueryClient();\n const userKey = useWlQueryKey([...USER_QUERY_KEY]);\n return () => queryClient.invalidateQueries({ queryKey: userKey });\n}\n\nexport function useSetUserData() {\n const queryClient = useQueryClient();\n const userKey = useWlQueryKey([...USER_QUERY_KEY]);\n return (user: User | null) => queryClient.setQueryData(userKey, user);\n}\n"],"mappings":";AAEA,SAAS,aAAa,UAAU,sBAAuC;AAEvE,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAEvB,MAAM,iBAAiB,CAAC,MAAM;AAC9B,MAAM,4BAA4B,CAAC,uBAAuB;AAEjE,eAAe,YAAkC;AAC/C,QAAM,EAAE,cAAc,kBAAkB,IAAI,MAAM,OAAO,2CAA2C;AACpG,QAAM,SAAS,MAAM,kBAAkB;AACvC,SAAO,OAAO,WAAW,OAAO,OAAO,OAAO,OAAO;AACvD;AAEA,eAAe,oBAAoB,eAAyB,CAAC,GAAqB;AAChF,QAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,oCAAoC;AACnF,SAAO,MAAM,sBAAsB,YAAY;AACjD;AAEO,SAAS,eAAe;AAC7B,QAAM,WAAW,cAAc,CAAC,GAAG,cAAc,CAAC;AAElD,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS;AAAA,IACT,WAAW,KAAK;AAAA,IAChB,QAAQ,KAAK,KAAK;AAAA,IAClB,OAAO;AAAA,EACT,CAAC;AACH;AASO,SAAS,uBACd,wBAAoD,CAAC,GACrD,cACA;AACA,QAAM,eAAe,MAAM,QAAQ,qBAAqB,IAAI,wBAAwB,CAAC;AACrF,QAAM,UAAU,MAAM,QAAQ,qBAAqB,IAAI,eAAe;AACtE,QAAM,WAAW,cAAc,CAAC,GAAG,yBAAyB,CAAC;AAE7D,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,MAAM,oBAAoB,YAAY;AAAA,IAC/C,OAAO;AAAA,IACP,WAAW,IAAI,KAAK;AAAA,IACpB,GAAG;AAAA,IACH,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB,CAAC;AACH;AAEO,SAAS,qBAAqB;AACnC,QAAM,cAAc,eAAe;AACnC,QAAM,UAAU,cAAc,CAAC,GAAG,cAAc,CAAC;AACjD,QAAM,eAAe,cAAc,CAAC,oBAAoB,CAAC;AAEzD,SAAO,YAAY;AAAA,IACjB,YAAY,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAWM;AACJ,YAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,qCAAqC;AACpF,aAAO,WAAW,MAAM,sBAAsB,QAAQ,MAAM,EAAE,QAAQ,UAAU,CAAC,CAAC,EAAE;AAAA,IACtF;AAAA,IACA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,QAAQ,CAAC;AACnD,kBAAY,kBAAkB,EAAE,UAAU,aAAa,CAAC;AAAA,IAC1D;AAAA,EACF,CAAC;AACH;AAEO,SAAS,oBAAoB;AAClC,QAAM,cAAc,eAAe;AACnC,QAAM,UAAU,cAAc,CAAC,GAAG,cAAc,CAAC;AACjD,SAAO,MAAM,YAAY,kBAAkB,EAAE,UAAU,QAAQ,CAAC;AAClE;AAEO,SAAS,iBAAiB;AAC/B,QAAM,cAAc,eAAe;AACnC,QAAM,UAAU,cAAc,CAAC,GAAG,cAAc,CAAC;AACjD,SAAO,CAAC,SAAsB,YAAY,aAAa,SAAS,IAAI;AACtE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-management-permission.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-management-permission.ts"],"sourcesContent":["import 'server-only';\n\nimport { UserProfile } from '../../users/schema';\nimport { findUserById } from '../../users/action/find-user-by-id.action';\nimport { ApiError } from '../../../infra/api/types';\nimport { assertManagementSubscription } from './assert-management-subscription';\nimport type { ManagementPermission } from '../types/management-permission.type';\n\nasync function getCurrentUserProfile() {\n const result = await findUserById();\n\n if (!result.success || !result.data) {\n throw new ApiError(\n ('error' in result && result.error) || 'Não foi possível identificar o usuário autenticado',\n 'USER_CONTEXT_FAILED',\n 403\n );\n }\n\n return result.data.profile;\n}\n\nexport async function assertManagementPermission(permission: ManagementPermission) {\n const profile = await getCurrentUserProfile();\n\n switch (permission) {\n case 'manage_pages':\n case 'manage_redirects':\n case 'manage_domains':\n case 'manage_ab_tests':\n case 'restore_pages':\n case 'create_pages':\n case 'update_pages':\n case 'delete_pages':\n if (profile === UserProfile.viewer) {\n throw new ApiError('Você não tem permissão para executar esta ação', 'FORBIDDEN', 403);\n }\n break;\n case 'manage_projects':\n case 'delete_leads':\n case 'view_cards':\n case 'manage_cards':\n case 'manage_subscriptions':\n if (profile !== UserProfile.owner && profile !== UserProfile.admin) {\n throw new ApiError('Você não tem permissão para executar esta ação', 'FORBIDDEN', 403);\n }\n break;\n default:\n throw new ApiError('Permissão inválida', 'INVALID_PERMISSION', 500);\n }\n\n const skipSubscriptionCheck: ManagementPermission[] = ['manage_subscriptions', 'manage_cards', 'view_cards'];\n if (!skipSubscriptionCheck.includes(permission)) {\n await assertManagementSubscription();\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,SAAS,oCAAoC;AAG7C,eAAe,wBAAwB;AACrC,QAAM,SAAS,MAAM,aAAa;AAElC,MAAI,CAAC,OAAO,WAAW,CAAC,OAAO,MAAM;AACnC,UAAM,IAAI;AAAA,MACP,WAAW,UAAU,OAAO,SAAU;AAAA,MACvC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO,KAAK;AACrB;AAEA,eAAsB,2BAA2B,YAAkC;AACjF,QAAM,UAAU,MAAM,sBAAsB;AAE5C,UAAQ,YAAY;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,UAAI,YAAY,YAAY,QAAQ;AAClC,cAAM,IAAI,SAAS,iEAAkD,aAAa,GAAG;AAAA,MACvF;AACA;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,UAAI,YAAY,YAAY,SAAS,YAAY,YAAY,OAAO;AAClE,cAAM,IAAI,SAAS,iEAAkD,aAAa,GAAG;AAAA,MACvF;AACA;AAAA,IACF;AACE,YAAM,IAAI,SAAS,4BAAsB,sBAAsB,GAAG;AAAA,EACtE;AAEA,QAAM,wBAAgD,CAAC,wBAAwB,gBAAgB,YAAY;AAC3G,MAAI,CAAC,sBAAsB,SAAS,UAAU,GAAG;AAC/C,UAAM,6BAA6B;AAAA,EACrC;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-management-subscription.ts"],"sourcesContent":["import \"server-only\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-management-subscription.ts"],"sourcesContent":["import \"server-only\";\n\nimport { ApiError } from \"../../../infra/api/types\";\nimport { listSubscriptionsAction } from \"../../subscriptions/actions/list-subscriptions.action\";\nimport { getSubscriptionExpiryDate } from \"../../subscriptions/utils/get-subscription-expiry-date\";\n\nexport async function assertManagementSubscription() {\n const result = await listSubscriptionsAction({ active: true });\n\n if (!result.success) {\n throw new ApiError(\n result.error || \"Não foi possível validar a assinatura atual\",\n \"SUBSCRIPTION_CONTEXT_FAILED\",\n 403,\n );\n }\n\n const subscription = result.data?.data?.[0];\n\n if (!subscription) {\n throw new ApiError(\n \"Nenhuma assinatura ativa encontrada. Assine um plano para continuar.\",\n \"SUBSCRIPTION_NOT_FOUND\",\n 403,\n );\n }\n\n const expiryDate = getSubscriptionExpiryDate(subscription);\n const isExpired = !!expiryDate && Date.now() >= expiryDate.getTime();\n\n if (isExpired) {\n throw new ApiError(\n \"Sua assinatura está vencida. Assine um novo plano para continuar.\",\n \"SUBSCRIPTION_EXPIRED\",\n 403,\n );\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AACxC,SAAS,iCAAiC;AAE1C,eAAsB,+BAA+B;AACnD,QAAM,SAAS,MAAM,wBAAwB,EAAE,QAAQ,KAAK,CAAC;AAE7D,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI;AAAA,MACR,OAAO,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,MAAM,OAAO,CAAC;AAE1C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,0BAA0B,YAAY;AACzD,QAAM,YAAY,CAAC,CAAC,cAAc,KAAK,IAAI,KAAK,WAAW,QAAQ;AAEnE,MAAI,WAAW;AACb,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-paid-subscription.ts"],"sourcesContent":["import \"server-only\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-paid-subscription.ts"],"sourcesContent":["import \"server-only\";\n\nimport { ApiError } from \"../../../infra/api/types\";\nimport { listSubscriptionsAction } from \"../../subscriptions/actions/list-subscriptions.action\";\nimport { getSubscriptionExpiryDate } from \"../../subscriptions/utils/get-subscription-expiry-date\";\n\nexport async function assertPaidSubscription() {\n const result = await listSubscriptionsAction({ active: true });\n\n if (!result.success) {\n throw new ApiError(\n result.error || \"Não foi possível validar a assinatura atual\",\n \"SUBSCRIPTION_CONTEXT_FAILED\",\n 403,\n );\n }\n\n const subscription = result.data?.data?.[0];\n\n if (!subscription) {\n throw new ApiError(\n \"Nenhuma assinatura ativa encontrada. Assine um plano para continuar.\",\n \"SUBSCRIPTION_NOT_FOUND\",\n 403,\n );\n }\n\n const expiryDate = getSubscriptionExpiryDate(subscription);\n const isExpired = !!expiryDate && Date.now() >= expiryDate.getTime();\n\n if (isExpired) {\n throw new ApiError(\n \"Sua assinatura está vencida. Assine um novo plano para continuar.\",\n \"SUBSCRIPTION_EXPIRED\",\n 403,\n );\n }\n\n \n if (subscription.type === 'free' || subscription.id_plan === 5) {\n throw new ApiError(\n \"Este recurso está disponível apenas para planos pagos. Faça upgrade do seu plano para continuar.\",\n \"PAID_SUBSCRIPTION_REQUIRED\",\n 403,\n );\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AACxC,SAAS,iCAAiC;AAE1C,eAAsB,yBAAyB;AAC7C,QAAM,SAAS,MAAM,wBAAwB,EAAE,QAAQ,KAAK,CAAC;AAE7D,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI;AAAA,MACR,OAAO,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,MAAM,OAAO,CAAC;AAE1C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,0BAA0B,YAAY;AACzD,QAAM,YAAY,CAAC,CAAC,cAAc,KAAK,IAAI,KAAK,WAAW,QAAQ;AAEnE,MAAI,WAAW;AACb,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAGA,MAAI,aAAa,SAAS,UAAU,aAAa,YAAY,GAAG;AAC9D,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-subscription-addon.ts"],"sourcesContent":["import \"server-only\";\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/assert-subscription-addon.ts"],"sourcesContent":["import \"server-only\";\n\nimport { ApiError } from \"../../../infra/api/types\";\nimport { listSubscriptionsAction } from \"../../subscriptions/actions/list-subscriptions.action\";\nimport type { AddonKindEnum } from \"../../subscriptions/constants/addons.constants\";\n\nexport async function assertSubscriptionAddon(\n addonId: AddonKindEnum,\n addonLabel: string,\n) {\n const result = await listSubscriptionsAction({ active: true });\n\n if (!result.success) {\n throw new ApiError(\n result.error || \"Não foi possível validar a assinatura atual\",\n \"SUBSCRIPTION_CONTEXT_FAILED\",\n 403,\n );\n }\n\n const subscription = result.data?.data?.[0];\n\n if (!subscription) {\n throw new ApiError(\n `Nenhuma assinatura ativa encontrada. Para acessar este recurso, é necessário ter uma assinatura com ${addonLabel}.`,\n \"NO_ACTIVE_SUBSCRIPTION\",\n 403,\n );\n }\n\n const hasAddon = subscription?.items?.some(\n (item) => item.id_addon === addonId,\n );\n\n if (!hasAddon) {\n throw new ApiError(\n `Sua assinatura não inclui ${addonLabel}. Faça upgrade do seu plano.`,\n \"ADDON_NOT_AVAILABLE\",\n 403,\n );\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AAGxC,eAAsB,wBACpB,SACA,YACA;AACA,QAAM,SAAS,MAAM,wBAAwB,EAAE,QAAQ,KAAK,CAAC;AAE7D,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI;AAAA,MACR,OAAO,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,MAAM,OAAO,CAAC;AAE1C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR,6GAAuG,UAAU;AAAA,MACjH;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,cAAc,OAAO;AAAA,IACpC,CAAC,SAAS,KAAK,aAAa;AAAA,EAC9B;AAEA,MAAI,CAAC,UAAU;AACb,UAAM,IAAI;AAAA,MACR,gCAA6B,UAAU;AAAA,MACvC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/build-wl-override.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/build-wl-override.ts"],"sourcesContent":["import 'server-only';\n\nimport type { RequestConfig } from '../../../infra/api/client';\nimport type { JWTPayload } from '../../users/schema';\nimport { findWhitelabel } from '../../whitelabel/actions/find-whitelabel.action';\nimport { whitelabelService } from '../../whitelabel/services/whitelabel.service';\n\n/**\n * Compara um `id_wl` com o whitelabel resolvido pelo hostname.\n * Se forem diferentes (ex: admin com id_wl=1 num domínio de id_wl=30),\n * retorna um RequestConfig com o override correto.\n * Se forem iguais, retorna undefined (sem custo extra).\n */\nexport async function buildWlOverride(\n jwtWlId: number,\n): Promise<RequestConfig | undefined> {\n try {\n const { id: hostWlId } = await findWhitelabel();\n\n if (jwtWlId !== hostWlId) {\n const wlToken = await whitelabelService.getTokenByWhitelabelId(jwtWlId);\n return { whiteLabelId: jwtWlId, authToken: wlToken };\n }\n } catch {\n // Fallback to default whitelabel resolution\n }\n\n return undefined;\n}\n\n/**\n * Extrai `id_wl` do JWT cookie e delega para `buildWlOverride`.\n */\nexport async function buildWlOverrideFromJwt(\n cookie: string,\n): Promise<RequestConfig | undefined> {\n try {\n const payload = JSON.parse(atob(cookie.split('.')[1])) as JWTPayload;\n return buildWlOverride(Number(payload.id_wl));\n } catch {\n return undefined;\n }\n}\n"],"mappings":"AAAA,OAAO;AAIP,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAQlC,eAAsB,gBACpB,SACoC;AACpC,MAAI;AACF,UAAM,EAAE,IAAI,SAAS,IAAI,MAAM,eAAe;AAE9C,QAAI,YAAY,UAAU;AACxB,YAAM,UAAU,MAAM,kBAAkB,uBAAuB,OAAO;AACtE,aAAO,EAAE,cAAc,SAAS,WAAW,QAAQ;AAAA,IACrD;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAKA,eAAsB,uBACpB,QACoC;AACpC,MAAI;AACF,UAAM,UAAU,KAAK,MAAM,KAAK,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACrD,WAAO,gBAAgB,OAAO,QAAQ,KAAK,CAAC;AAAA,EAC9C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/require-token-not-expired.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/require-token-not-expired.ts"],"sourcesContent":["import 'server-only';\n\nimport { cookies } from 'next/headers';\nimport { decode } from '@greatapps/jwt';\nimport { ApiError } from '../../../infra/api/types';\n\nconst AUTH_COOKIE_NAME = 'greatapps';\n\n/**\n * Verifica se o JWT do cookie `greatapps` é válido (assinatura + expiração)\n * sem bater no backend.\n *\n * Usa `@greatapps/jwt` decode que:\n * 1. Valida a assinatura HMAC com `SECRET_JWT---{id_wl}`\n * 2. Checa `exp` automaticamente (rejeita se expirou)\n *\n * - Se o token não existe → SESSION_INVALID 401\n * - Se a assinatura é inválida → SESSION_INVALID 401\n * - Se `exp` já passou → SESSION_INVALID 401\n * - Se `SECRET_JWT` não está configurado → skip (não bloqueia)\n */\nexport async function requireTokenNotExpired(): Promise<void> {\n if (process.env.DUMMY_AUTH_TOKEN) return;\n\n const secretJwt = process.env.SECRET_JWT;\n if (!secretJwt) return;\n\n const cookieStore = await cookies();\n const token = cookieStore.get(AUTH_COOKIE_NAME)?.value;\n\n if (!token) {\n throw new ApiError('Sessão inválida ou expirada 1', 'SESSION_INVALID', 401);\n }\n\n try {\n const payload = JSON.parse(atob(token.split('.')[1]));\n const idWl = payload.id_wl;\n\n if (!idWl) {\n throw new ApiError('Sessão inválida ou expirada 2', 'SESSION_INVALID', 401);\n }\n\n const secret = `${secretJwt}---${idWl}`;\n const decoded = await decode(token, secret);\n\n if (!decoded) {\n throw new ApiError('Sessão inválida ou expirada 3', 'SESSION_INVALID', 401);\n }\n } catch (err) {\n if (err instanceof ApiError) throw err;\n throw new ApiError('Sessão inválida ou expirada 4', 'SESSION_INVALID', 401);\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAEzB,MAAM,mBAAmB;AAezB,eAAsB,yBAAwC;AAC5D,MAAI,QAAQ,IAAI,iBAAkB;AAElC,QAAM,YAAY,QAAQ,IAAI;AAC9B,MAAI,CAAC,UAAW;AAEhB,QAAM,cAAc,MAAM,QAAQ;AAClC,QAAM,QAAQ,YAAY,IAAI,gBAAgB,GAAG;AAEjD,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,SAAS,uCAAiC,mBAAmB,GAAG;AAAA,EAC5E;AAEA,MAAI;AACF,UAAM,UAAU,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,UAAM,OAAO,QAAQ;AAErB,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,SAAS,uCAAiC,mBAAmB,GAAG;AAAA,IAC5E;AAEA,UAAM,SAAS,GAAG,SAAS,MAAM,IAAI;AACrC,UAAM,UAAU,MAAM,OAAO,OAAO,MAAM;AAE1C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,SAAS,uCAAiC,mBAAmB,GAAG;AAAA,IAC5E;AAAA,EACF,SAAS,KAAK;AACZ,QAAI,eAAe,SAAU,OAAM;AACnC,UAAM,IAAI,SAAS,uCAAiC,mBAAmB,GAAG;AAAA,EAC5E;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/auth/utils/require-valid-session.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/auth/utils/require-valid-session.ts"],"sourcesContent":["import 'server-only';\n\nimport { cache } from 'react';\n\nimport { ApiError } from '../../../infra/api/types';\nimport { getClientInfoFromRequest } from '../../../infra/utils/client-info';\nimport { authService } from '../services/auth.service';\n\n/**\n * Valida a sessão do usuário chamando POST /auth/keep no backend.\n *\n * Garante que o cookie `greatapps`:\n * 1. Existe.\n * 2. Corresponde a uma sessão registrada no banco (não foi forjado).\n * 3. Ainda é considerada válida pelo backend (não foi revogada/expirada).\n *\n * Deduplicada por request via React.cache — múltiplas chamadas dentro do\n * mesmo server action resultam em 1 round-trip ao backend, não N.\n *\n * Use em server actions sensíveis (mutações, billing, destrutivas).\n * Prefira o wrapper `safeMutationAction` que já envelopa isto junto com\n * o `safeServerAction` padrão.\n *\n * Em caso de erro de rede/backend, falha fechada (SESSION_INVALID 401).\n */\nexport const requireValidSession = cache(async (): Promise<void> => {\n if (process.env.DUMMY_AUTH_TOKEN) return;\n\n const clientInfo = await getClientInfoFromRequest();\n const isValid = await authService.validateSession(clientInfo);\n\n if (!isValid) {\n throw new ApiError('Sessão inválida ou expirada', 'SESSION_INVALID', 401);\n }\n});\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,aAAa;AAEtB,SAAS,gBAAgB;AACzB,SAAS,gCAAgC;AACzC,SAAS,mBAAmB;AAmBrB,MAAM,sBAAsB,MAAM,YAA2B;AAClE,MAAI,QAAQ,IAAI,iBAAkB;AAElC,QAAM,aAAa,MAAM,yBAAyB;AAClD,QAAM,UAAU,MAAM,YAAY,gBAAgB,UAAU;AAE5D,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,SAAS,qCAA+B,mBAAmB,GAAG;AAAA,EAC1E;AACF,CAAC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/actions/create-card.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/actions/create-card.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { cardsService } from '../services/cards.service';\nimport { CreateCardRequest } from '../types';\n\nexport async function createCardAction(data: CreateCardRequest) {\n return safeMutationAction(() => cardsService.createCard(data));\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAG7B,eAAsB,iBAAiB,MAAyB;AAC9D,SAAO,mBAAmB,MAAM,aAAa,WAAW,IAAI,CAAC;AAC/D;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/actions/create-setup-intent.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/actions/create-setup-intent.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { cardsService } from '../services/cards.service';\n\nexport async function createSetupIntentAction() {\n return safeMutationAction(() => cardsService.createSetupIntent());\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAE7B,eAAsB,0BAA0B;AAC9C,SAAO,mBAAmB,MAAM,aAAa,kBAAkB,CAAC;AAClE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/actions/delete-card.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/actions/delete-card.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { cardsService } from '../services/cards.service';\n\nexport async function deleteCardAction(id: string) {\n return safeMutationAction(() => cardsService.deleteCard(id));\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAE7B,eAAsB,iBAAiB,IAAY;AACjD,SAAO,mBAAmB,MAAM,aAAa,WAAW,EAAE,CAAC;AAC7D;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/actions/set-default-card.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/actions/set-default-card.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { cardsService } from '../services/cards.service';\n\nexport async function setDefaultCardAction(cardId: string) {\n return safeMutationAction(() => cardsService.setDefaultCard(cardId));\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAE7B,eAAsB,qBAAqB,QAAgB;AACzD,SAAO,mBAAmB,MAAM,aAAa,eAAe,MAAM,CAAC;AACrE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/handlers/find-card-by-id.handler.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/handlers/find-card-by-id.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { parseId } from '../../../infra/route/parse-id';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { cardsService } from '../services/cards.service';\n\nexport function createFindCardByIdHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return cardsService.findCardById(parseId(id));\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,eAAe;AACxB,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,4BAA4B;AAC1C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,aAAa,aAAa,QAAQ,EAAE,CAAC;AAAA,IAC9C,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/handlers/list-cards.handler.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/handlers/list-cards.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { cardsService } from '../services/cards.service';\n\nexport function createListCardsHandler() {\n return async function GET() {\n return safeRouteHandler(() => cardsService.listCards());\n };\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,yBAAyB;AACvC,SAAO,eAAe,MAAM;AAC1B,WAAO,iBAAiB,MAAM,aAAa,UAAU,CAAC;AAAA,EACxD;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/card-by-id.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/card-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { SuccessResult } from '../../../infra/api/types';\nimport type { Card } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useCardById(id: number | undefined) {\n const cardKey = useAuthQueryKey(['card', id]);\n\n return useQuery({\n queryKey: cardKey,\n queryFn: ({ signal }) => apiFetch<SuccessResult<Card>>(`/api/cards/${id}`, { signal }),\n enabled: id != null,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,SAAS,YAAY,IAAwB;AAClD,QAAM,UAAU,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAE5C,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MAAM,SAA8B,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC;AAAA,IACrF,SAAS,MAAM;AAAA,EACjB,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/cards.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/cards.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport type { Card } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const CARDS_QUERY_KEY = ['cards'] as const;\n\nexport function useCards() {\n const queryKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<PaginatedSuccessResult<Card>>('/api/cards', { signal }),\n select: (result) => ({\n ...result,\n data: result.data.filter((card) => !card.deleted),\n }),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB,CAAC,OAAO;AAEhC,SAAS,WAAW;AACzB,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAuC,cAAc,EAAE,OAAO,CAAC;AAAA,IACxF,QAAQ,CAAC,YAAY;AAAA,MACnB,GAAG;AAAA,MACH,MAAM,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO;AAAA,IAClD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/create-card.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/create-card.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { createCardAction } from '../actions/create-card.action';\nimport type { CreateCardRequest, Card } from '../types';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport { CARDS_QUERY_KEY } from './cards.hook';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useCreateCard() {\n const queryClient = useQueryClient();\n const cardsKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n\n return useMutation({\n mutationFn: (data: CreateCardRequest) => withAction(createCardAction)(data),\n onSuccess: (result) => {\n if (result?.data) {\n queryClient.setQueriesData<PaginatedSuccessResult<Card>>(\n { queryKey: cardsKey },\n (old) => {\n if (!old?.data) return old;\n return { ...old, data: [...old.data, result.data!] };\n }\n );\n }\n queryClient.invalidateQueries({ queryKey: cardsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AAGjC,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAEzB,SAAS,gBAAgB;AAC9B,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SAA4B,WAAW,gBAAgB,EAAE,IAAI;AAAA,IAC1E,WAAW,CAAC,WAAW;AACrB,UAAI,QAAQ,MAAM;AAChB,oBAAY;AAAA,UACV,EAAE,UAAU,SAAS;AAAA,UACrB,CAAC,QAAQ;AACP,gBAAI,CAAC,KAAK,KAAM,QAAO;AACvB,mBAAO,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,OAAO,IAAK,EAAE;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AACA,kBAAY,kBAAkB,EAAE,UAAU,SAAS,CAAC;AAAA,IACtD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/create-setup-intent.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/create-setup-intent.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { createSetupIntentAction } from '../actions/create-setup-intent.action';\n\nexport function useCreateSetupIntent() {\n return useMutation({\n mutationFn: () => withAction(createSetupIntentAction)(),\n });\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,+BAA+B;AAEjC,SAAS,uBAAuB;AACrC,SAAO,YAAY;AAAA,IACjB,YAAY,MAAM,WAAW,uBAAuB,EAAE;AAAA,EACxD,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/delete-card.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/delete-card.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { CARDS_QUERY_KEY } from './cards.hook';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport type { Card } from '../types';\n\nexport function useDeleteCard() {\n const queryClient = useQueryClient();\n const cardsKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n const cardKey = useAuthQueryKey(['card']);\n\n return useMutation({\n mutationFn: async (id: string) => {\n const { deleteCardAction } = await import('../actions/delete-card.action');\n return withAction(deleteCardAction)(id);\n },\n onMutate: async (id: string) => {\n await queryClient.cancelQueries({ queryKey: cardsKey });\n\n const previousQueries = queryClient.getQueriesData<PaginatedSuccessResult<Card>>({\n queryKey: cardsKey,\n });\n\n queryClient.setQueriesData<PaginatedSuccessResult<Card>>(\n { queryKey: cardsKey },\n (old) => {\n if (!old?.data) return old;\n return {\n ...old,\n data: old.data.filter((card) => card.id.toString() !== id),\n };\n }\n );\n\n return { previousQueries };\n },\n onError: (_err, _id, context) => {\n if (context?.previousQueries) {\n for (const [queryKey, data] of context.previousQueries) {\n queryClient.setQueryData(queryKey, data);\n }\n }\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: cardsKey });\n queryClient.invalidateQueries({ queryKey: cardKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAIzB,SAAS,gBAAgB;AAC9B,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AACrD,QAAM,UAAU,gBAAgB,CAAC,MAAM,CAAC;AAExC,SAAO,YAAY;AAAA,IACjB,YAAY,OAAO,OAAe;AAChC,YAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,+BAA+B;AACzE,aAAO,WAAW,gBAAgB,EAAE,EAAE;AAAA,IACxC;AAAA,IACA,UAAU,OAAO,OAAe;AAC9B,YAAM,YAAY,cAAc,EAAE,UAAU,SAAS,CAAC;AAEtD,YAAM,kBAAkB,YAAY,eAA6C;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,SAAS;AAAA,QACrB,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,KAAM,QAAO;AACvB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,MAAM,IAAI,KAAK,OAAO,CAAC,SAAS,KAAK,GAAG,SAAS,MAAM,EAAE;AAAA,UAC3D;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,gBAAgB;AAAA,IAC3B;AAAA,IACA,SAAS,CAAC,MAAM,KAAK,YAAY;AAC/B,UAAI,SAAS,iBAAiB;AAC5B,mBAAW,CAAC,UAAU,IAAI,KAAK,QAAQ,iBAAiB;AACtD,sBAAY,aAAa,UAAU,IAAI;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,SAAS,CAAC;AACpD,kBAAY,kBAAkB,EAAE,UAAU,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/delete-confirmation.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/delete-confirmation.hook.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport z from 'zod';\n\ntype UseDeleteConfirmationProps = {\n confirmWord: string;\n};\n\nfunction createDeleteConfirmationSchema(confirmWord: string) {\n return z.object({\n confirmText: z.string().refine((val) => val === confirmWord, {\n message: `Digite ${confirmWord} para confirmar`,\n }),\n });\n}\n\nexport type DeleteConfirmationFormData = z.infer<\n ReturnType<typeof createDeleteConfirmationSchema>\n>;\n\nexport function useDeleteConfirmation({ confirmWord }: UseDeleteConfirmationProps) {\n const schema = createDeleteConfirmationSchema(confirmWord);\n\n const form = useForm<DeleteConfirmationFormData>({\n resolver: zodResolver(schema),\n defaultValues: { confirmText: '' },\n });\n\n const confirmText = form.watch('confirmText');\n const isValidConfirmation = confirmText === confirmWord;\n\n const resetConfirmation = useCallback(() => {\n form.reset({ confirmText: '' });\n }, [form]);\n\n return { form, confirmText, isValidConfirmation, resetConfirmation };\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,OAAO,OAAO;AAMd,SAAS,+BAA+B,aAAqB;AAC3D,SAAO,EAAE,OAAO;AAAA,IACd,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,QAAQ,aAAa;AAAA,MAC3D,SAAS,UAAU,WAAW;AAAA,IAChC,CAAC;AAAA,EACH,CAAC;AACH;AAMO,SAAS,sBAAsB,EAAE,YAAY,GAA+B;AACjF,QAAM,SAAS,+BAA+B,WAAW;AAEzD,QAAM,OAAO,QAAoC;AAAA,IAC/C,UAAU,YAAY,MAAM;AAAA,IAC5B,eAAe,EAAE,aAAa,GAAG;AAAA,EACnC,CAAC;AAED,QAAM,cAAc,KAAK,MAAM,aAAa;AAC5C,QAAM,sBAAsB,gBAAgB;AAE5C,QAAM,oBAAoB,YAAY,MAAM;AAC1C,SAAK,MAAM,EAAE,aAAa,GAAG,CAAC;AAAA,EAChC,GAAG,CAAC,IAAI,CAAC;AAET,SAAO,EAAE,MAAM,aAAa,qBAAqB,kBAAkB;AACrE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/handle-delete-card.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/handle-delete-card.hook.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { useModalManager } from '../../../store/useModalManager';\nimport { useActiveSubscription } from '../../subscriptions/hooks/find-active-subscription.hook';\nimport { hasSubscriptionExpired } from '../../subscriptions/utils/has-subscription-expired';\nimport type { Card } from '../types';\n\ntype UseHandleDeleteCardOptions = {\n onAfterDelete?: (card: Card) => void;\n};\n\nexport function useHandleDeleteCard({\n onAfterDelete,\n}: UseHandleDeleteCardOptions = {}) {\n const { openModal } = useModalManager();\n const { data: subscriptionData } = useActiveSubscription();\n const activeSubscription = subscriptionData?.data?.[0] ?? null;\n\n return useCallback(\n (card: Card) => {\n // Só bloqueia a exclusão quando o cartão é o método de pagamento de uma\n // assinatura REALMENTE ativa (mesma definição de ConfigurationsMyAccountModal).\n // Se a assinatura foi cancelada ou já expirou, ela não está mais ativa —\n // pula a verificação e segue direto pra exclusão do cartão.\n const isCardLinkedToSubscription =\n !!activeSubscription &&\n activeSubscription.active === true &&\n !activeSubscription.date_cancellation &&\n !hasSubscriptionExpired(activeSubscription.date_due) &&\n card.id.toString() === activeSubscription.id_card?.toString();\n\n if (isCardLinkedToSubscription) {\n openModal('cannotDeleteCardModal', {\n cardId: card.id.toString(),\n });\n return;\n }\n\n openModal('deleteCardModal', {\n cardId: card.id.toString(),\n ...(onAfterDelete && { onSuccess: () => onAfterDelete(card) }),\n });\n },\n [activeSubscription, openModal, onAfterDelete],\n );\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AAOhC,SAAS,oBAAoB;AAAA,EAClC;AACF,IAAgC,CAAC,GAAG;AAClC,QAAM,EAAE,UAAU,IAAI,gBAAgB;AACtC,QAAM,EAAE,MAAM,iBAAiB,IAAI,sBAAsB;AACzD,QAAM,qBAAqB,kBAAkB,OAAO,CAAC,KAAK;AAE1D,SAAO;AAAA,IACL,CAAC,SAAe;AAKd,YAAM,6BACJ,CAAC,CAAC,sBACF,mBAAmB,WAAW,QAC9B,CAAC,mBAAmB,qBACpB,CAAC,uBAAuB,mBAAmB,QAAQ,KACnD,KAAK,GAAG,SAAS,MAAM,mBAAmB,SAAS,SAAS;AAE9D,UAAI,4BAA4B;AAC9B,kBAAU,yBAAyB;AAAA,UACjC,QAAQ,KAAK,GAAG,SAAS;AAAA,QAC3B,CAAC;AACD;AAAA,MACF;AAEA,gBAAU,mBAAmB;AAAA,QAC3B,QAAQ,KAAK,GAAG,SAAS;AAAA,QACzB,GAAI,iBAAiB,EAAE,WAAW,MAAM,cAAc,IAAI,EAAE;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,IACA,CAAC,oBAAoB,WAAW,aAAa;AAAA,EAC/C;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/hooks/set-default-card.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/hooks/set-default-card.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { CARDS_QUERY_KEY } from './cards.hook';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport type { Card } from '../types';\n\nexport function useSetDefaultCard() {\n const queryClient = useQueryClient();\n const cardsKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n const cardKey = useAuthQueryKey(['card']);\n\n return useMutation({\n mutationFn: async (cardId: string) => {\n const { setDefaultCardAction } = await import('../actions/set-default-card.action');\n return withAction(setDefaultCardAction)(cardId);\n },\n onMutate: async (cardId: string) => {\n await queryClient.cancelQueries({ queryKey: cardsKey });\n\n const previousQueries = queryClient.getQueriesData<PaginatedSuccessResult<Card>>({\n queryKey: cardsKey,\n });\n\n queryClient.setQueriesData<PaginatedSuccessResult<Card>>(\n { queryKey: cardsKey },\n (old) => {\n if (!old?.data) return old;\n return {\n ...old,\n data: old.data.map((card) => ({\n ...card,\n is_default: card.id.toString() === cardId,\n })),\n };\n }\n );\n\n return { previousQueries };\n },\n onError: (_err, _cardId, context) => {\n if (context?.previousQueries) {\n for (const [queryKey, data] of context.previousQueries) {\n queryClient.setQueryData(queryKey, data);\n }\n }\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: cardsKey });\n queryClient.invalidateQueries({ queryKey: cardKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAIzB,SAAS,oBAAoB;AAClC,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AACrD,QAAM,UAAU,gBAAgB,CAAC,MAAM,CAAC;AAExC,SAAO,YAAY;AAAA,IACjB,YAAY,OAAO,WAAmB;AACpC,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,oCAAoC;AAClF,aAAO,WAAW,oBAAoB,EAAE,MAAM;AAAA,IAChD;AAAA,IACA,UAAU,OAAO,WAAmB;AAClC,YAAM,YAAY,cAAc,EAAE,UAAU,SAAS,CAAC;AAEtD,YAAM,kBAAkB,YAAY,eAA6C;AAAA,QAC/E,UAAU;AAAA,MACZ,CAAC;AAED,kBAAY;AAAA,QACV,EAAE,UAAU,SAAS;AAAA,QACrB,CAAC,QAAQ;AACP,cAAI,CAAC,KAAK,KAAM,QAAO;AACvB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,MAAM,IAAI,KAAK,IAAI,CAAC,UAAU;AAAA,cAC5B,GAAG;AAAA,cACH,YAAY,KAAK,GAAG,SAAS,MAAM;AAAA,YACrC,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,gBAAgB;AAAA,IAC3B;AAAA,IACA,SAAS,CAAC,MAAM,SAAS,YAAY;AACnC,UAAI,SAAS,iBAAiB;AAC5B,mBAAW,CAAC,UAAU,IAAI,KAAK,QAAQ,iBAAiB;AACtD,sBAAY,aAAa,UAAU,IAAI;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,SAAS,CAAC;AACpD,kBAAY,kBAAkB,EAAE,UAAU,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/cards/services/cards.service.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/cards/services/cards.service.ts"],"sourcesContent":["import 'server-only';\n\nimport { api } from '../../../infra/api/client';\nimport { ApiError, ApiActionResult, ApiPaginatedActionResult, PaginatedSuccessResult, SuccessResult } from '../../../infra/api/types';\nimport { buildQueryParams } from '../../../infra/utils/params';\nimport { assertManagementPermission } from '../../auth/utils/assert-management-permission';\nimport { getUserContext } from '../../auth/utils/get-user-context';\nimport { Card, CardSchema, CreateCardRequest, SetupIntent, SetupIntentSchema } from '../types';\n\nclass CardsService {\n async createSetupIntent(): Promise<SuccessResult<SetupIntent>> {\n await assertManagementPermission('manage_cards');\n const { id_account } = await getUserContext();\n\n const response = await api.apps.post<ApiPaginatedActionResult<SetupIntent>>(\n `/accounts/${id_account}/cards/action/setup-intent`,\n {}\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao criar SetupIntent',\n 'CREATE_SETUP_INTENT_FAILED',\n 400\n );\n }\n\n const data = SetupIntentSchema.parse(response.data[0]);\n\n return { success: true, data };\n }\n\n async listCards(): Promise<PaginatedSuccessResult<Card>> {\n await assertManagementPermission('view_cards');\n const { id_account } = await getUserContext();\n\n const query = buildQueryParams({ id_account });\n const response = await api.apps.get<ApiPaginatedActionResult<Card>>(\n `/accounts/${id_account}/cards?${query}`\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar cartões',\n 'LIST_CARDS_FAILED',\n 400\n );\n }\n\n const data = response.data.map((item) => CardSchema.parse(item));\n\n return { data, total: response.total, success: true };\n }\n\n async findCardById(id: number): Promise<SuccessResult<Card>> {\n await assertManagementPermission('view_cards');\n const { id_account } = await getUserContext();\n\n const response = await api.apps.get<ApiPaginatedActionResult<Card>>(\n `/accounts/${id_account}/cards/${id}`\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao buscar cartão',\n 'FIND_CARD_BY_ID_FAILED',\n 400\n );\n }\n\n if (!response.data?.length) {\n throw new ApiError('Cartão não encontrado', 'CARD_NOT_FOUND', 404);\n }\n\n const data = CardSchema.parse(response.data[0]);\n\n return { success: true, data };\n }\n\n async createCard(data: CreateCardRequest): Promise<SuccessResult<Card>> {\n await assertManagementPermission('manage_cards');\n const { id_account } = await getUserContext();\n\n const response = await api.apps.post<ApiPaginatedActionResult<Card>>(\n `/accounts/${id_account}/cards`,\n data\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao criar cartão', 'CREATE_CARD_FAILED', 400);\n }\n\n const cardData = CardSchema.parse(response.data[0]);\n\n return { success: true, data: cardData };\n }\n\n async setDefaultCard(cardId: string): Promise<SuccessResult<Card>> {\n await assertManagementPermission('manage_cards');\n const { id_account } = await getUserContext();\n\n const response = await api.apps.put<ApiPaginatedActionResult<Card>>(\n `/accounts/${id_account}/cards/${cardId}`,\n { set_default: true }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao definir cartão padrão',\n 'SET_DEFAULT_CARD_FAILED',\n 400\n );\n }\n\n const data = CardSchema.parse(response.data[0]);\n\n return { success: true, data };\n }\n\n async deleteCard(id: string): Promise<SuccessResult<void>> {\n await assertManagementPermission('manage_cards');\n const { id_account } = await getUserContext();\n\n const response = await api.apps.delete<ApiActionResult<void>>(\n `/accounts/${id_account}/cards/${id}`\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao excluir cartão', 'DELETE_CARD_FAILED', 400);\n }\n\n return { success: true };\n }\n}\n\nexport const cardsService = new CardsService();\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/modules/cards/types.ts"],"sourcesContent":["import z from 'zod';\
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/cards/types.ts"],"sourcesContent":["import z from 'zod';\n\nimport {\n PaginationParamsSchema,\n SearchParamsSchema,\n SortParamsSchema,\n} from '../../infra/api/types';\n\nexport const CardSchema = z.object({\n id: z.union([z.number(), z.string()]),\n id_wl: z.number(),\n id_account: z.union([z.number(), z.string()]),\n id_gateway: z.union([z.number(), z.string()]).optional(),\n gateway_account: z.string(),\n gateway_card: z.string(),\n brand: z.string(),\n name: z.string(),\n number: z.string().nullable(),\n date: z.string().nullable(),\n deleted: z\n .number()\n .transform((val) => val === 1)\n .optional()\n .default(false),\n is_default: z.boolean().optional().default(false),\n datetime_add: z.union([z.date(), z.coerce.date()]).nullable().optional(),\n datetime_alt: z.union([z.date(), z.coerce.date()]).nullable().optional(),\n datetime_del: z.union([z.date(), z.coerce.date()]).nullable().optional(),\n});\n\nexport type Card = z.infer<typeof CardSchema>;\n\nexport const CreateCardRequestSchema = z.object({\n setup_intent_id: z.string().min(1, 'setup_intent_id é obrigatório'),\n name: z.string().min(1, 'name é obrigatório'),\n set_default: z.boolean().optional(),\n});\n\nexport type CreateCardRequest = z.infer<typeof CreateCardRequestSchema>;\n\nexport const SetupIntentSchema = z.object({\n client_secret: z.string(),\n setup_intent_id: z.string(),\n});\n\nexport type SetupIntent = z.infer<typeof SetupIntentSchema>;\n\nexport const FindCardsParamsSchema = PaginationParamsSchema.extend(SearchParamsSchema.shape).extend(\n SortParamsSchema.shape\n);\n\nexport type FindCardsParams = z.infer<typeof FindCardsParamsSchema>;\n"],"mappings":"AAAA,OAAO,OAAO;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,aAAa,EAAE,OAAO;AAAA,EACjC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,EACpC,OAAO,EAAE,OAAO;AAAA,EAChB,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,EAC5C,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACvD,iBAAiB,EAAE,OAAO;AAAA,EAC1B,cAAc,EAAE,OAAO;AAAA,EACvB,OAAO,EAAE,OAAO;AAAA,EAChB,MAAM,EAAE,OAAO;AAAA,EACf,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAAS,EACN,OAAO,EACP,UAAU,CAAC,QAAQ,QAAQ,CAAC,EAC5B,SAAS,EACT,QAAQ,KAAK;AAAA,EAChB,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAChD,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvE,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvE,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS;AACzE,CAAC;AAIM,MAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,iBAAiB,EAAE,OAAO,EAAE,IAAI,GAAG,qCAA+B;AAAA,EAClE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,0BAAoB;AAAA,EAC5C,aAAa,EAAE,QAAQ,EAAE,SAAS;AACpC,CAAC;AAIM,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,eAAe,EAAE,OAAO;AAAA,EACxB,iBAAiB,EAAE,OAAO;AAC5B,CAAC;AAIM,MAAM,wBAAwB,uBAAuB,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC3F,iBAAiB;AACnB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/actions/charge-action.action.ts"],"sourcesContent":["'use server';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/actions/charge-action.action.ts"],"sourcesContent":["'use server';\n\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { assertManagementPermission } from '../../auth/utils/assert-management-permission';\nimport { chargesService } from '../services/charges.service';\nimport { PayChargeInput } from '../types/charge.type';\n\nexport async function chargeActionAction(data: PayChargeInput) {\n return safeMutationAction(async () => {\n await assertManagementPermission('manage_subscriptions');\n return chargesService.chargeAction(data);\n });\n}\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,kCAAkC;AAC3C,SAAS,sBAAsB;AAG/B,eAAsB,mBAAmB,MAAsB;AAC7D,SAAO,mBAAmB,YAAY;AACpC,UAAM,2BAA2B,sBAAsB;AACvD,WAAO,eAAe,aAAa,IAAI;AAAA,EACzC,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/handlers/find-charge-by-id.handler.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/handlers/find-charge-by-id.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { chargesService } from '../services/charges.service';\n\nexport function createFindChargeByIdHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return chargesService.findChargeById(id);\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAExB,SAAS,8BAA8B;AAC5C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,eAAe,eAAe,EAAE;AAAA,IACzC,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/handlers/list-charges.handler.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/handlers/list-charges.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { chargesService } from '../services/charges.service';\nimport type { FindChargesParams } from '../types/charge.type';\n\nexport function createListChargesHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n chargesService.listCharges(searchParamsToParams<FindChargesParams>(req.nextUrl.searchParams))\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,sBAAsB;AAGxB,SAAS,2BAA2B;AACzC,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,eAAe,YAAY,qBAAwC,IAAI,QAAQ,YAAY,CAAC;AAAA,IAC9F;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/hooks/charge-action.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/hooks/charge-action.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { chargeActionAction } from '../actions/charge-action.action';\nimport { PayChargeInput } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useChargeAction() {\n const queryClient = useQueryClient();\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY]);\n const subsKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY]);\n\n return useMutation({\n mutationFn: (data: PayChargeInput) =>\n withAction(chargeActionAction)(data),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: chargesKey });\n queryClient.invalidateQueries({ queryKey: subsKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,0BAA0B;AAEnC,SAAS,yBAAyB;AAClC,SAAS,+BAA+B;AAEjC,SAAS,kBAAkB;AAChC,QAAM,cAAc,eAAe;AACnC,QAAM,aAAa,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;AACzD,QAAM,UAAU,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AAE5D,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,WAAW,kBAAkB,EAAE,IAAI;AAAA,IACrC,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,WAAW,CAAC;AACtD,kBAAY,kBAAkB,EAAE,UAAU,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/hooks/charge-by-id.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/hooks/charge-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { SuccessResult } from '../../../infra/api/types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { Charge } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useChargeById(chargeId: string | number | null | undefined) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, chargeId]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: ({ signal }) =>\n apiFetch<SuccessResult<Charge>>(`/api/charges/${chargeId}`, { signal }),\n enabled: !!chargeId,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,SAAS,yBAAyB;AAE3B,SAAS,cAAc,UAA8C;AAC1E,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,QAAQ,CAAC;AAEnE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MACjB,SAAgC,gBAAgB,QAAQ,IAAI,EAAE,OAAO,CAAC;AAAA,IACxE,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/hooks/charges.hook.ts"],"sourcesContent":["'use client';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/hooks/charges.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { Charge, FindChargesParams } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useCharges(params?: Partial<FindChargesParams>) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, params]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: ({ signal }) =>\n apiFetch<PaginatedSuccessResult<Charge>>('/api/charges', { params, signal }),\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,QAAqC;AAC9D,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC;AAEjE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MACjB,SAAyC,gBAAgB,EAAE,QAAQ,OAAO,CAAC;AAAA,IAC7E,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/services/charges.service.ts"],"sourcesContent":["import 'server-only';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/services/charges.service.ts"],"sourcesContent":["import 'server-only';\n\nimport { api } from '../../../infra/api/client';\nimport { ApiError, ApiActionResult, ApiPaginatedActionResult, PaginatedSuccessResult, SuccessResult } from '../../../infra/api/types';\nimport { buildQueryParams } from '../../../infra/utils/params';\nimport { getUserContext } from '../../auth/utils/get-user-context';\nimport { Charge, FindChargesParams, PayChargeInput } from '../types/charge.type';\n\nclass ChargesService {\n async listCharges(params?: Partial<FindChargesParams>): Promise<PaginatedSuccessResult<Charge>> {\n const { id_account } = await getUserContext();\n\n const query = buildQueryParams({ ...params, id_account });\n\n const response = await api.apps.get<ApiPaginatedActionResult<Charge>>(`/charges?${query}`);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar cobranças',\n 'LIST_CHARGES_FAILED',\n 400\n );\n }\n\n return { data: response.data, total: response.total, success: true };\n }\n\n async chargeAction(data: PayChargeInput): Promise<SuccessResult<void>> {\n const response = await api.apps.put<ApiActionResult<void>>(\n `/charges/${data.chargeId}/action/charge`,\n {\n payment_method: data.paymentMethod,\n payment_method_id: data.paymentMethodId,\n }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao processar cobrança',\n 'CHARGE_ACTION_FAILED',\n 400\n );\n }\n\n return { success: true, data: undefined };\n }\n\n async findChargeById(chargeId: string | number): Promise<SuccessResult<Charge>> {\n const { id_account } = await getUserContext();\n\n const response = await api.apps.get<ApiPaginatedActionResult<Charge>>(\n `/charges/${chargeId}?id_account=${id_account}`\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao buscar cobrança', 'FIND_CHARGE_FAILED', 400);\n }\n\n return { data: response.data[0], success: true };\n }\n}\n\nexport const chargesService = new ChargesService();\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,WAAW;AACpB,SAAS,gBAAkG;AAC3G,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAG/B,MAAM,eAAe;AAAA,EACnB,MAAM,YAAY,QAA8E;AAC9F,UAAM,EAAE,WAAW,IAAI,MAAM,eAAe;AAE5C,UAAM,QAAQ,iBAAiB,EAAE,GAAG,QAAQ,WAAW,CAAC;AAExD,UAAM,WAAW,MAAM,IAAI,KAAK,IAAsC,YAAY,KAAK,EAAE;AAEzF,QAAI,SAAS,WAAW,GAAG;AACzB,YAAM,IAAI;AAAA,QACR,SAAS,WAAW;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,MAAM,SAAS,MAAM,OAAO,SAAS,OAAO,SAAS,KAAK;AAAA,EACrE;AAAA,EAEA,MAAM,aAAa,MAAoD;AACrE,UAAM,WAAW,MAAM,IAAI,KAAK;AAAA,MAC9B,YAAY,KAAK,QAAQ;AAAA,MACzB;AAAA,QACE,gBAAgB,KAAK;AAAA,QACrB,mBAAmB,KAAK;AAAA,MAC1B;AAAA,IACF;AAEA,QAAI,SAAS,WAAW,GAAG;AACzB,YAAM,IAAI;AAAA,QACR,SAAS,WAAW;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,SAAS,MAAM,MAAM,OAAU;AAAA,EAC1C;AAAA,EAEA,MAAM,eAAe,UAA2D;AAC9E,UAAM,EAAE,WAAW,IAAI,MAAM,eAAe;AAE5C,UAAM,WAAW,MAAM,IAAI,KAAK;AAAA,MAC9B,YAAY,QAAQ,eAAe,UAAU;AAAA,IAC/C;AAEA,QAAI,SAAS,WAAW,GAAG;AACzB,YAAM,IAAI,SAAS,SAAS,WAAW,8BAA2B,sBAAsB,GAAG;AAAA,IAC7F;AAEA,WAAO,EAAE,MAAM,SAAS,KAAK,CAAC,GAAG,SAAS,KAAK;AAAA,EACjD;AACF;AAEO,MAAM,iBAAiB,IAAI,eAAe;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/modules/charges/types/charge.type.ts"],"sourcesContent":["import { PaginationParamsSchema, SearchParamsSchema, SortParamsSchema } from '../../../infra/api/types';\
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/charges/types/charge.type.ts"],"sourcesContent":["import { PaginationParamsSchema, SearchParamsSchema, SortParamsSchema } from '../../../infra/api/types';\nimport { calendarDateSchema } from '../../../infra/utils/date';\nimport z from 'zod';\n\nconst BoletoPaymentDetailsSchema = z.object({\n type: z.literal('boleto'),\n barcode: z.string().nullable().optional(),\n expiration_date: z.number().nullable().optional(),\n hosted_voucher_url: z.string().nullable().optional(),\n pdf: z.string().nullable().optional(),\n});\n\nconst PaymentDetailsSchema = z.union([BoletoPaymentDetailsSchema, z.record(z.string(), z.unknown())]).nullable().optional();\n\nexport const ChargeSchema = z.object({\n id: z.union([z.number(), z.string()]),\n id_wl: z.number(),\n id_product: z.number().nullable().optional(),\n title: z.string().nullable().optional(),\n id_subscription: z.union([z.number(), z.string()]).nullable().optional(),\n id_account: z.coerce.number(),\n status: z.coerce.number().nullable().optional().transform((val) => val ?? 0),\n description: z.string().nullable().optional(),\n date_due: calendarDateSchema().nullable().optional(),\n date_payment: calendarDateSchema().nullable().optional(),\n payment_method: z.number().nullable().optional(),\n value: z.coerce.number().nullable().optional().transform((val) => val ?? 0),\n type: z.number().nullable().optional(),\n periodicity: z.number().nullable().optional(),\n id_gateway: z.number().nullable().optional(),\n gateway_invoice: z.string().nullable().optional(),\n gateway_billet: z.string().nullable().optional(),\n invoice_id: z.string().nullable().optional(),\n invoice_service: z.string().nullable().optional(),\n invoice_url: z.string().nullable().optional(),\n invoice_pdf: z.string().nullable().optional(),\n date_created: z.coerce.date().nullable().optional(),\n deleted: z.coerce.number().nullable().optional().transform((val) => val === 1),\n datetime_alt: z.coerce.date().nullable().optional(),\n datetime_del: z.coerce.date().nullable().optional(),\n datetime_add: z.coerce.date().nullable().optional(),\n line_descriptions: z.array(z.string()).nullable().optional().transform((val) => val ?? []),\n payment_details: PaymentDetailsSchema,\n});\n\nexport type Charge = z.infer<typeof ChargeSchema>;\n\nexport const FindChargesParamsSchema = z\n .object({\n date_start: z.date(),\n date_end: z.date(),\n date_payment_start: z.date(),\n date_payment_end: z.date(),\n status: z.array(z.number()).optional(),\n })\n .extend(PaginationParamsSchema.shape)\n .extend(SortParamsSchema.shape)\n .extend(SearchParamsSchema.shape);\n\nexport const PayChargeInputSchema = z.object({\n chargeId: z.union([z.number(), z.string()]),\n paymentMethod: z.number(),\n paymentMethodId: z.string().optional(),\n});\n\nexport type PayChargeInput = z.infer<typeof PayChargeInputSchema>;\n\nexport type FindChargesParams = z.infer<typeof FindChargesParamsSchema>;\n"],"mappings":"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","names":[]}
|