@mohasinac/appkit 4.58.0 → 4.60.0
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/.build-stamp.json +3 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +62 -5
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -2
- package/dist/_internal/server/features/brands/actions.js +78 -4
- package/dist/_internal/server/features/checkout/actions.d.ts +36 -13
- package/dist/_internal/server/features/checkout/actions.js +668 -183
- package/dist/_internal/server/features/checkout/supplier-identity.js +18 -1
- package/dist/_internal/server/features/gateway-events/index.d.ts +10 -0
- package/dist/_internal/server/features/gateway-events/index.js +10 -0
- package/dist/_internal/server/features/gateway-events/ingest.d.ts +127 -0
- package/dist/_internal/server/features/gateway-events/ingest.js +188 -0
- package/dist/_internal/server/features/gateway-events/redact.d.ts +66 -0
- package/dist/_internal/server/features/gateway-events/redact.js +151 -0
- package/dist/_internal/server/features/grievance/actions.d.ts +63 -0
- package/dist/_internal/server/features/grievance/actions.js +173 -0
- package/dist/_internal/server/features/grievance/index.d.ts +8 -0
- package/dist/_internal/server/features/grievance/index.js +8 -0
- package/dist/_internal/server/features/grouped/data.js +28 -3
- package/dist/_internal/server/features/lottery/actions.js +99 -4
- package/dist/_internal/server/features/order-completion/actions.d.ts +92 -0
- package/dist/_internal/server/features/order-completion/actions.js +336 -0
- package/dist/_internal/server/features/order-completion/index.d.ts +7 -0
- package/dist/_internal/server/features/order-completion/index.js +7 -0
- package/dist/_internal/server/features/orders/actions.d.ts +13 -0
- package/dist/_internal/server/features/orders/actions.js +56 -2
- package/dist/_internal/server/features/orders/adapters.js +26 -0
- package/dist/_internal/server/features/orders/cancellation-refund.d.ts +116 -0
- package/dist/_internal/server/features/orders/cancellation-refund.js +466 -0
- package/dist/_internal/server/features/orders/index.d.ts +2 -1
- package/dist/_internal/server/features/orders/index.js +1 -1
- package/dist/_internal/server/features/orders/service.d.ts +60 -0
- package/dist/_internal/server/features/orders/service.js +74 -0
- package/dist/_internal/server/features/payment-cases/disputes.d.ts +76 -0
- package/dist/_internal/server/features/payment-cases/disputes.js +241 -0
- package/dist/_internal/server/features/payment-cases/index.d.ts +9 -0
- package/dist/_internal/server/features/payment-cases/index.js +9 -0
- package/dist/_internal/server/features/payouts/actions.d.ts +28 -3
- package/dist/_internal/server/features/payouts/actions.js +84 -10
- package/dist/_internal/server/features/points/adjust.d.ts +61 -0
- package/dist/_internal/server/features/points/adjust.js +121 -0
- package/dist/_internal/server/features/points/award.d.ts +65 -0
- package/dist/_internal/server/features/points/award.js +145 -0
- package/dist/_internal/server/features/price-index/market.d.ts +33 -0
- package/dist/_internal/server/features/price-index/market.js +54 -1
- package/dist/_internal/server/features/products/data.js +40 -22
- package/dist/_internal/server/features/protection-claims/actions.d.ts +72 -0
- package/dist/_internal/server/features/protection-claims/actions.js +228 -0
- package/dist/_internal/server/features/protection-claims/index.d.ts +8 -0
- package/dist/_internal/server/features/protection-claims/index.js +8 -0
- package/dist/_internal/server/features/refunds/actions.d.ts +20 -0
- package/dist/_internal/server/features/refunds/actions.js +259 -17
- package/dist/_internal/server/features/refunds/capacity.d.ts +29 -0
- package/dist/_internal/server/features/refunds/capacity.js +37 -0
- package/dist/_internal/server/features/reviews/actions.js +3 -2
- package/dist/_internal/server/features/search/index-build/sources.js +20 -1
- package/dist/_internal/server/features/shipping/reconcile.d.ts +10 -1
- package/dist/_internal/server/features/shipping/reconcile.js +34 -3
- package/dist/_internal/server/features/shipping/reimbursement.d.ts +117 -0
- package/dist/_internal/server/features/shipping/reimbursement.js +223 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +19 -4
- package/dist/_internal/server/features/stores/tabs.js +24 -4
- package/dist/_internal/server/functions/https.d.ts +31 -1
- package/dist/_internal/server/functions/https.js +52 -1
- package/dist/_internal/server/functions/scheduled.d.ts +72 -1
- package/dist/_internal/server/functions/scheduled.js +124 -1
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +62 -16
- package/dist/_internal/server/jobs/core/boxRollupReconcile.d.ts +46 -0
- package/dist/_internal/server/jobs/core/boxRollupReconcile.js +142 -0
- package/dist/_internal/server/jobs/core/dailyDataCleanup.js +149 -1
- package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +14 -0
- package/dist/_internal/server/jobs/core/dailyStatusDigest.js +79 -1
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.d.ts +64 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.js +153 -0
- package/dist/_internal/server/jobs/core/obligationSweep.d.ts +36 -0
- package/dist/_internal/server/jobs/core/obligationSweep.js +503 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.d.ts +79 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.js +614 -0
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +34 -0
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +35 -4
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.js +15 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.d.ts +65 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.js +89 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +5 -0
- package/dist/_internal/server/jobs/handlers/index.js +5 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.js +2 -0
- package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
- package/dist/_internal/server/jobs/handlers/messages.js +1 -1
- package/dist/_internal/server/jobs/handlers/obligationSweep.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/obligationSweep.js +15 -0
- package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +30 -1
- package/dist/_internal/server/jobs/handlers/paymentReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/paymentReconcile.js +6 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +71 -0
- package/dist/_internal/shared/checkout/coupon-discount.d.ts +73 -0
- package/dist/_internal/shared/checkout/coupon-discount.js +103 -0
- package/dist/_internal/shared/checkout/lanes.d.ts +42 -0
- package/dist/_internal/shared/checkout/lanes.js +46 -0
- package/dist/_internal/shared/checkout/order-math.d.ts +149 -1
- package/dist/_internal/shared/checkout/order-math.js +251 -3
- package/dist/_internal/shared/checkout/refundable-base.d.ts +116 -0
- package/dist/_internal/shared/checkout/refundable-base.js +122 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +14 -1
- package/dist/_internal/shared/features/auctions/config.js +30 -1
- package/dist/_internal/shared/features/brands/schema.d.ts +42 -0
- package/dist/_internal/shared/features/brands/schema.js +18 -0
- package/dist/_internal/shared/features/orders/refund-copy.d.ts +22 -0
- package/dist/_internal/shared/features/orders/refund-copy.js +34 -0
- package/dist/_internal/shared/features/print/label-profiles.d.ts +198 -0
- package/dist/_internal/shared/features/print/label-profiles.js +350 -0
- package/dist/_internal/shared/features/products/to-product-item.js +33 -5
- package/dist/_internal/shared/fees/calculator.d.ts +31 -2
- package/dist/_internal/shared/fees/calculator.js +103 -5
- package/dist/_internal/shared/fees/india-states.d.ts +195 -0
- package/dist/_internal/shared/fees/india-states.js +190 -0
- package/dist/_internal/shared/fees/payout-hold.d.ts +80 -0
- package/dist/_internal/shared/fees/payout-hold.js +74 -0
- package/dist/_internal/shared/obligations/deadlines.d.ts +94 -0
- package/dist/_internal/shared/obligations/deadlines.js +155 -0
- package/dist/_internal/shared/shipping/quote.d.ts +96 -0
- package/dist/_internal/shared/shipping/quote.js +67 -0
- package/dist/_internal/shared/time/business-days.d.ts +91 -0
- package/dist/_internal/shared/time/business-days.js +185 -0
- package/dist/_internal/shared/types/base-document.d.ts +1 -1
- package/dist/cli/index.js +0 -2
- package/dist/client.d.ts +9 -4
- package/dist/client.js +26 -3
- package/dist/configs/tailwind.d.ts +0 -12
- package/dist/configs/tailwind.js +28 -15
- package/dist/constants/api-endpoints.d.ts +51 -9
- package/dist/constants/api-endpoints.js +23 -7
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/constants/seed-meta.d.ts +113 -0
- package/dist/constants/seed-meta.js +91 -0
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/payment.d.ts +131 -0
- package/dist/features/about/components/AboutView.js +1 -1
- package/dist/features/about/components/DeveloperView.js +5 -2
- package/dist/features/about/components/FAQPageView.js +2 -1
- package/dist/features/about/components/FeesView.js +2 -1
- package/dist/features/about/components/HelpPageView.js +2 -1
- package/dist/features/about/components/HowAuctionsWorkView.js +2 -1
- package/dist/features/about/components/HowCheckoutWorksView.js +2 -1
- package/dist/features/about/components/HowEmiWorksView.js +2 -1
- package/dist/features/about/components/HowOffersWorkView.js +2 -1
- package/dist/features/about/components/HowOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowPayoutsWorkView.js +2 -1
- package/dist/features/about/components/HowPreOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowReviewsWorkView.js +2 -1
- package/dist/features/about/components/PolicyPageView.js +2 -1
- package/dist/features/about/components/ProseHero.d.ts +73 -0
- package/dist/features/about/components/ProseHero.js +18 -0
- package/dist/features/about/components/SecurityPrivacyView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +2 -1
- package/dist/features/about/components/TrackOrderView.js +2 -1
- package/dist/features/about/components/UnauthorizedView.js +1 -1
- package/dist/features/about/index.d.ts +2 -0
- package/dist/features/about/index.js +5 -0
- package/dist/features/account/actions/address-actions.d.ts +26 -2
- package/dist/features/account/actions/address-actions.js +25 -1
- package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
- package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
- package/dist/features/account/components/UserOrdersView.js +17 -0
- package/dist/features/account/components/UserSidebar.js +1 -1
- package/dist/features/account/hooks/useNotifications.js +29 -0
- package/dist/features/admin/actions/admin-coupon-actions.js +36 -0
- package/dist/features/admin/components/AdminBeysView.js +2 -2
- package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
- package/dist/features/admin/components/AdminBrandEditorView.js +32 -2
- package/dist/features/admin/components/AdminBundleEditorView.js +1 -1
- package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
- package/dist/features/admin/components/AdminCategoriesView.js +1 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +73 -17
- package/dist/features/admin/components/AdminContactEditorView.js +1 -1
- package/dist/features/admin/components/AdminCouponEditorView.js +26 -1
- package/dist/features/admin/components/AdminFaqEditorView.js +1 -1
- package/dist/features/admin/components/AdminFaqsView.js +2 -2
- package/dist/features/admin/components/AdminGatewayEventsView.d.ts +54 -0
- package/dist/features/admin/components/AdminGatewayEventsView.js +209 -0
- package/dist/features/admin/components/AdminGuideHubView.js +1 -1
- package/dist/features/admin/components/AdminMoneyCasesView.d.ts +60 -0
- package/dist/features/admin/components/AdminMoneyCasesView.js +287 -0
- package/dist/features/admin/components/AdminPartsView.js +2 -2
- package/dist/features/admin/components/AdminProductsView.js +75 -4
- package/dist/features/admin/components/AdminSidebar.js +2 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +65 -7
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
- package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
- package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +72 -1
- package/dist/features/admin/components/AdminViewCards.d.ts +3 -1
- package/dist/features/admin/components/AdminViewCards.js +4 -4
- package/dist/features/admin/components/DataListingView.d.ts +28 -0
- package/dist/features/admin/components/DataListingView.js +175 -14
- package/dist/features/admin/components/DataTable.d.ts +12 -1
- package/dist/features/admin/components/DataTable.js +3 -3
- package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/OwnerQuickActions.js +60 -2
- package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/RecordOwnerQuickActions.js +61 -14
- package/dist/features/admin/components/analytics/AdminStatCard.d.ts +35 -1
- package/dist/features/admin/components/analytics/AdminStatCard.js +77 -2
- package/dist/features/admin/components/index.d.ts +4 -0
- package/dist/features/admin/components/index.js +6 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +156 -0
- package/dist/features/admin/constants/filter-tabs.js +106 -0
- package/dist/features/admin/repository/site-settings.repository.d.ts +22 -0
- package/dist/features/admin/repository/site-settings.repository.js +82 -1
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +21 -0
- package/dist/features/admin/schemas/admin-editor-forms.js +44 -0
- package/dist/features/admin/schemas/firestore.js +5 -1
- package/dist/features/admin/schemas/site-settings-form.js +30 -1
- package/dist/features/auctions/actions/bid-actions.js +13 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +2 -2
- package/dist/features/auctions/components/AuctionDetailPageView.js +3 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +5 -3
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +8 -1
- package/dist/features/auctions/components/PlaceBidFormClient.js +2 -2
- package/dist/features/audit-log/schemas/firestore.d.ts +28 -0
- package/dist/features/audit-log/schemas/firestore.js +14 -0
- package/dist/features/auth/permissions/constants.d.ts +17 -1
- package/dist/features/auth/permissions/constants.js +18 -0
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
- package/dist/features/categories/api/[id]/description-template/route.js +107 -1
- package/dist/features/categories/components/BrandDetailPageView.js +2 -2
- package/dist/features/categories/components/BreadcrumbTrail.js +7 -1
- package/dist/features/categories/components/BundleDetailView.js +1 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
- package/dist/features/categories/components/CategoryForm.js +12 -1
- package/dist/features/categories/components/CategoryTemplatePicker.js +38 -5
- package/dist/features/categories/repository/market-price-index.repository.d.ts +123 -0
- package/dist/features/categories/repository/market-price-index.repository.js +105 -0
- package/dist/features/categories/repository/price-observation.repository.d.ts +166 -0
- package/dist/features/categories/repository/price-observation.repository.js +132 -0
- package/dist/features/events/components/EventSaleBanner.js +1 -1
- package/dist/features/events/components/EventStatusBadge.js +1 -1
- package/dist/features/faq/components/FAQAccordion.js +2 -1
- package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
- package/dist/features/faq/components/FAQHelpfulButtons.js +4 -4
- package/dist/features/faq/components/RelatedFAQs.js +1 -1
- package/dist/features/filters/FilterFacetSection.js +1 -1
- package/dist/features/filters/SwitchFilter.js +1 -1
- package/dist/features/gateway-events/repository/gateway-events.repository.d.ts +117 -0
- package/dist/features/gateway-events/repository/gateway-events.repository.js +274 -0
- package/dist/features/gateway-events/schemas/firestore.d.ts +217 -0
- package/dist/features/gateway-events/schemas/firestore.js +125 -0
- package/dist/features/gateway-events/schemas/index.d.ts +81 -0
- package/dist/features/gateway-events/schemas/index.js +79 -0
- package/dist/features/grouped/components/GroupedListingDetailView.js +1 -1
- package/dist/features/homepage/components/AnnouncementBar.js +37 -1
- package/dist/features/homepage/components/AnnouncementBar.style.css +30 -0
- package/dist/features/homepage/components/BrandsSection.js +1 -1
- package/dist/features/homepage/components/CTABannerSection.js +1 -1
- package/dist/features/homepage/components/FeaturedBundlesSection.js +14 -24
- package/dist/features/homepage/components/HeroCarousel.js +2 -2
- package/dist/features/homepage/components/SocialPostCard.js +1 -1
- package/dist/features/inventory/components/AdminMoveLedgerView.d.ts +7 -0
- package/dist/features/inventory/components/AdminMoveLedgerView.js +157 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.d.ts +11 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.js +168 -0
- package/dist/features/inventory/components/ReceiveStationView.d.ts +39 -0
- package/dist/features/inventory/components/ReceiveStationView.js +413 -0
- package/dist/features/inventory/components/operator-message.d.ts +29 -0
- package/dist/features/inventory/components/operator-message.js +41 -0
- package/dist/features/inventory/index.d.ts +13 -0
- package/dist/features/inventory/index.js +28 -0
- package/dist/features/inventory/repository/inventory-movements.repository.d.ts +97 -0
- package/dist/features/inventory/repository/inventory-movements.repository.js +186 -0
- package/dist/features/inventory/repository/inventory-placements.repository.d.ts +179 -0
- package/dist/features/inventory/repository/inventory-placements.repository.js +345 -0
- package/dist/features/inventory/repository/storage-boxes.repository.d.ts +83 -0
- package/dist/features/inventory/repository/storage-boxes.repository.js +127 -0
- package/dist/features/inventory/schemas/firestore.d.ts +197 -0
- package/dist/features/inventory/schemas/firestore.js +159 -0
- package/dist/features/layout/AppLayoutShell.d.ts +12 -1
- package/dist/features/layout/AppLayoutShell.js +25 -12
- package/dist/features/layout/AutoBreadcrumbs.js +162 -3
- package/dist/features/layout/AutoBreadcrumbs.style.css +45 -0
- package/dist/features/layout/BottomNavbar.d.ts +1 -1
- package/dist/features/layout/BottomNavbar.js +2 -2
- package/dist/features/media/MediaAvatar.js +1 -1
- package/dist/features/media/MediaImage.d.ts +24 -4
- package/dist/features/media/MediaImage.js +44 -4
- package/dist/features/media/MediaLightbox.js +1 -1
- package/dist/features/media/modals/ImageCropModal.js +1 -1
- package/dist/features/media/modals/ImageEditor.js +1 -1
- package/dist/features/media/upload/MediaUploadField.js +91 -3
- package/dist/features/obligations/constants/policies.d.ts +92 -0
- package/dist/features/obligations/constants/policies.js +378 -0
- package/dist/features/obligations/repository/obligations.repository.d.ts +68 -0
- package/dist/features/obligations/repository/obligations.repository.js +158 -0
- package/dist/features/obligations/schemas/firestore.d.ts +160 -0
- package/dist/features/obligations/schemas/firestore.js +87 -0
- package/dist/features/orders/actions/order-actions.d.ts +43 -4
- package/dist/features/orders/actions/order-actions.js +60 -3
- package/dist/features/orders/actions/refund-actions.js +70 -10
- package/dist/features/orders/components/OrderCompletionPanel.d.ts +27 -0
- package/dist/features/orders/components/OrderCompletionPanel.js +192 -0
- package/dist/features/orders/components/OrdersList.js +2 -2
- package/dist/features/orders/components/RefundHistoryTable.js +3 -1
- package/dist/features/orders/components/index.d.ts +2 -0
- package/dist/features/orders/components/index.js +6 -0
- package/dist/features/orders/constants/transitions.d.ts +59 -0
- package/dist/features/orders/constants/transitions.js +104 -0
- package/dist/features/orders/repository/orders.repository.d.ts +109 -6
- package/dist/features/orders/repository/orders.repository.js +464 -21
- package/dist/features/orders/schemas/firestore.d.ts +270 -0
- package/dist/features/orders/schemas/firestore.js +24 -0
- package/dist/features/orders/schemas/index.d.ts +61 -0
- package/dist/features/orders/schemas/index.js +22 -0
- package/dist/features/orders/types/index.d.ts +79 -0
- package/dist/features/parts/components/PartsIndexPageView.js +8 -1
- package/dist/features/payment-cases/repository/payment-cases.repository.d.ts +170 -0
- package/dist/features/payment-cases/repository/payment-cases.repository.js +342 -0
- package/dist/features/payment-cases/schemas/firestore.d.ts +229 -0
- package/dist/features/payment-cases/schemas/firestore.js +105 -0
- package/dist/features/payment-cases/schemas/resolve-form.d.ts +97 -0
- package/dist/features/payment-cases/schemas/resolve-form.js +114 -0
- package/dist/features/payments/repository/payout.repository.d.ts +0 -1
- package/dist/features/payments/repository/payout.repository.js +0 -1
- package/dist/features/points/repository/points.repository.d.ts +122 -0
- package/dist/features/points/repository/points.repository.js +304 -1
- package/dist/features/points/schemas/adjust-form.d.ts +58 -0
- package/dist/features/points/schemas/adjust-form.js +63 -0
- package/dist/features/points/schemas/firestore.d.ts +108 -1
- package/dist/features/points/schemas/firestore.js +84 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -3
- package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +23 -4
- package/dist/features/price-index/components/PriceIndexToolView.js +71 -6
- package/dist/features/price-index/market-stats.d.ts +82 -0
- package/dist/features/price-index/market-stats.js +230 -0
- package/dist/features/print/components/BoxLabelPrintView.d.ts +25 -0
- package/dist/features/print/components/BoxLabelPrintView.js +66 -0
- package/dist/features/print/components/LabelProfilePicker.d.ts +13 -0
- package/dist/features/print/components/LabelProfilePicker.js +38 -0
- package/dist/features/print/components/labels.d.ts +117 -0
- package/dist/features/print/components/labels.js +258 -0
- package/dist/features/print/components/labels.style.css +46 -0
- package/dist/features/print/index.d.ts +6 -0
- package/dist/features/print/index.js +16 -0
- package/dist/features/products/columns/productTableColumns.js +5 -4
- package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +6 -6
- package/dist/features/products/components/PrizeDrawCollage.js +1 -1
- package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
- package/dist/features/products/components/PrizeRevealModal.js +2 -2
- package/dist/features/products/components/ProductDetailPageView.js +18 -4
- package/dist/features/products/components/ProductForm.js +34 -23
- package/dist/features/products/components/ProductGrid.js +86 -62
- package/dist/features/products/constants/card-badges.d.ts +97 -0
- package/dist/features/products/constants/card-badges.js +100 -0
- package/dist/features/products/repository/products.repository.js +34 -1
- package/dist/features/products/schemas/firestore.d.ts +46 -3
- package/dist/features/products/schemas/firestore.js +21 -0
- package/dist/features/promotions/components/PromotionsView.js +1 -1
- package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +32 -0
- package/dist/features/promotions/repository/claimed-coupons.repository.js +58 -0
- package/dist/features/promotions/schemas/firestore.js +30 -3
- package/dist/features/promotions/schemas/index.d.ts +6 -6
- package/dist/features/protection-claims/repository/protection-claims.repository.d.ts +54 -0
- package/dist/features/protection-claims/repository/protection-claims.repository.js +174 -0
- package/dist/features/protection-claims/schemas/firestore.d.ts +168 -0
- package/dist/features/protection-claims/schemas/firestore.js +130 -0
- package/dist/features/reviews/actions/review-actions.js +3 -2
- package/dist/features/reviews/components/ReviewModal.js +1 -1
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/reviews/schemas/firestore.d.ts +20 -1
- package/dist/features/scams/constants/scam-types.d.ts +2 -0
- package/dist/features/scams/constants/scam-types.js +18 -0
- package/dist/features/scams/schemas/report-form.d.ts +3 -3
- package/dist/features/scams/schemas/report-form.js +26 -1
- package/dist/features/search/components/Search.js +9 -9
- package/dist/features/search/components/SearchResultsClient.js +18 -3
- package/dist/features/search/components/SearchResultsPageView.d.ts +1 -6
- package/dist/features/search/components/SearchResultsPageView.js +2 -2
- package/dist/features/seller/actions/offer-actions.js +16 -1
- package/dist/features/seller/actions/seller-actions.js +14 -3
- package/dist/features/seller/components/CategoryInlineSelect.js +75 -11
- package/dist/features/seller/components/PrintCenterView.d.ts +5 -0
- package/dist/features/seller/components/PrintCenterView.js +41 -30
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutRequestView.js +16 -5
- package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +16 -0
- package/dist/features/seller/components/SellerProductShell.js +123 -13
- package/dist/features/seller/components/SellerReviewsView.js +4 -2
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +26 -0
- package/dist/features/seller/schemas/coupon-form.js +27 -0
- package/dist/features/seller/schemas/product-form.d.ts +3 -0
- package/dist/features/seller/schemas/product-form.js +5 -0
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +14 -0
- package/dist/features/shell/SectionForm.d.ts +19 -0
- package/dist/features/shell/SectionForm.js +133 -9
- package/dist/features/shell/SectionForm.style.css +54 -0
- package/dist/features/shipments/components/AdminShipmentsView.js +16 -1
- package/dist/features/shipments/repository/shipment-items.repository.d.ts +9 -0
- package/dist/features/shipments/repository/shipment-items.repository.js +14 -0
- package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +1 -1
- package/dist/features/store-extensions/schemas/report-review-form.d.ts +8 -8
- package/dist/features/stores/components/StoreGuideHubView.js +1 -1
- package/dist/features/stores/components/StoreHeader.js +1 -1
- package/dist/features/support/schemas/firestore.d.ts +73 -2
- package/dist/features/support/schemas/firestore.js +59 -0
- package/dist/index.d.ts +16 -155
- package/dist/index.js +88 -341
- package/dist/next/ErrorBoundary.js +1 -1
- package/dist/next/routing/route-map.d.ts +24 -0
- package/dist/next/routing/route-map.js +40 -0
- package/dist/providers/payment-manual/index.d.ts +15 -1
- package/dist/providers/payment-manual/index.js +37 -0
- package/dist/providers/payment-phonepe/index.d.ts +14 -1
- package/dist/providers/payment-phonepe/index.js +36 -0
- package/dist/providers/payment-razorpay/index.d.ts +44 -1
- package/dist/providers/payment-razorpay/index.js +99 -0
- package/dist/providers/shipping-shiprocket/index.d.ts +18 -0
- package/dist/providers/shipping-shiprocket/index.js +18 -0
- package/dist/schemas/registry.d.ts +44 -11
- package/dist/server-entry.d.ts +2 -0
- package/dist/server-entry.js +27 -0
- package/dist/server.d.ts +42 -69
- package/dist/server.js +93 -69
- package/dist/styles.css +418 -149
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +15 -12
- package/dist/tokens/themes/default-light.js +14 -11
- package/dist/tokens/tokens.css +106 -23
- package/dist/ui/DataTable.style.css +4 -4
- package/dist/ui/columns/cell-renderers.d.ts +20 -0
- package/dist/ui/columns/cell-renderers.js +26 -1
- package/dist/ui/columns/index.d.ts +1 -1
- package/dist/ui/columns/index.js +4 -1
- package/dist/ui/components/Badge.style.css +1 -1
- package/dist/ui/components/Breadcrumb.js +19 -1
- package/dist/ui/components/BulkActionBar.style.css +4 -4
- package/dist/ui/components/Button.style.css +1 -1
- package/dist/ui/components/Checkbox.style.css +1 -1
- package/dist/ui/components/FallbackShell.js +1 -1
- package/dist/ui/components/Form.d.ts +14 -1
- package/dist/ui/components/Form.js +2 -2
- package/dist/ui/components/FormField.js +18 -4
- package/dist/ui/components/FormField.style.css +43 -3
- package/dist/ui/components/GatedPrice.style.css +1 -1
- package/dist/ui/components/IconButton.style.css +1 -1
- package/dist/ui/components/Input.js +22 -1
- package/dist/ui/components/Input.style.css +38 -22
- package/dist/ui/components/ListingFilterDrawer.js +1 -1
- package/dist/ui/components/ListingToolbar.js +1 -1
- package/dist/ui/components/PaginatedSelect.js +0 -0
- package/dist/ui/components/Radio.style.css +1 -1
- package/dist/ui/components/Repeater.d.ts +53 -0
- package/dist/ui/components/Repeater.js +7 -0
- package/dist/ui/components/RichTextEditor.d.ts +20 -1
- package/dist/ui/components/RichTextEditor.js +23 -2
- package/dist/ui/components/Select.style.css +7 -21
- package/dist/ui/components/Semantic.js +27 -3
- package/dist/ui/components/TagInput.style.css +4 -9
- package/dist/ui/components/Textarea.style.css +4 -18
- package/dist/ui/components/Toggle.style.css +1 -1
- package/dist/ui/components/Typography.d.ts +3 -3
- package/dist/ui/components/Typography.js +15 -15
- package/dist/ui/components/ViewToggle.style.css +4 -4
- package/dist/ui/forms/AddAnotherToggle.d.ts +16 -0
- package/dist/ui/forms/AddAnotherToggle.js +56 -0
- package/dist/ui/forms/ColorPickerField.js +15 -2
- package/dist/ui/forms/FieldCheckbox.js +15 -2
- package/dist/ui/forms/FieldInput.d.ts +22 -1
- package/dist/ui/forms/FieldInput.js +19 -5
- package/dist/ui/forms/FieldLabel.d.ts +35 -0
- package/dist/ui/forms/FieldLabel.js +70 -0
- package/dist/ui/forms/FieldSelect.d.ts +4 -1
- package/dist/ui/forms/FieldSelect.js +27 -5
- package/dist/ui/forms/FieldTextarea.d.ts +4 -1
- package/dist/ui/forms/FieldTextarea.js +22 -5
- package/dist/ui/forms/FormShell.d.ts +17 -1
- package/dist/ui/forms/FormShell.js +36 -2
- package/dist/ui/forms/FormShell.style.css +41 -33
- package/dist/ui/forms/index.d.ts +5 -1
- package/dist/ui/forms/index.js +2 -0
- package/dist/ui/icons/icon-registry.d.ts +1 -0
- package/dist/ui/icons/icon-registry.js +17 -1
- package/dist/utils/id-generators.d.ts +80 -0
- package/dist/utils/id-generators.js +93 -0
- package/dist/utils/search-txt-builders.d.ts +12 -0
- package/dist/utils/search-txt-builders.js +17 -0
- package/package.json +4 -2
- package/scripts/seed-cli.mjs +175 -6
- package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +0 -12
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +0 -38
- package/dist/features/loyalty/api/balance/route.d.ts +0 -12
- package/dist/features/loyalty/api/balance/route.js +0 -41
- package/dist/features/loyalty/api/earn/route.d.ts +0 -12
- package/dist/features/loyalty/api/earn/route.js +0 -38
- package/dist/features/loyalty/api/history/route.d.ts +0 -12
- package/dist/features/loyalty/api/history/route.js +0 -58
- package/dist/features/loyalty/api/redeem/route.d.ts +0 -12
- package/dist/features/loyalty/api/redeem/route.js +0 -38
- package/dist/features/loyalty/columns/index.d.ts +0 -17
- package/dist/features/loyalty/columns/index.js +0 -40
- package/dist/features/loyalty/components/CoinsDisplay.d.ts +0 -12
- package/dist/features/loyalty/components/CoinsDisplay.js +0 -10
- package/dist/features/loyalty/components/index.d.ts +0 -1
- package/dist/features/loyalty/components/index.js +0 -1
- package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +0 -4
- package/dist/features/loyalty/hooks/useLoyaltyBalance.js +0 -25
- package/dist/features/loyalty/index.d.ts +0 -6
- package/dist/features/loyalty/index.js +0 -6
- package/dist/features/loyalty/manifest.d.ts +0 -2
- package/dist/features/loyalty/manifest.js +0 -16
- package/dist/features/loyalty/messages/en.json +0 -19
- package/dist/features/loyalty/repository/loyalty.repository.d.ts +0 -8
- package/dist/features/loyalty/repository/loyalty.repository.js +0 -22
- package/dist/features/loyalty/schemas/index.d.ts +0 -85
- package/dist/features/loyalty/schemas/index.js +0 -40
- package/dist/features/loyalty/server.d.ts +0 -6
- package/dist/features/loyalty/server.js +0 -6
- package/dist/features/loyalty/types/index.d.ts +0 -31
- package/dist/features/loyalty/types/index.js +0 -1
- package/dist/features/loyalty/types/loyalty-config.d.ts +0 -7
- package/dist/features/loyalty/types/loyalty-config.js +0 -1
- package/dist/features/loyalty/types/loyalty-math.d.ts +0 -9
- package/dist/features/loyalty/types/loyalty-math.js +0 -27
- package/dist/features/products/components/ProductOwnerQuickActions.d.ts +0 -11
- package/dist/features/products/components/ProductOwnerQuickActions.js +0 -120
- package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
- package/dist/features/tester/seed-data/_happy-path.js +0 -710
- package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
- package/dist/features/tester/seed-data/_money-flows.js +0 -610
- package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
- package/dist/features/tester/seed-data/authored/_types.js +0 -35
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
- package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
- package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/index.js +0 -301
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
- package/dist/features/tester/seed-data/index.d.ts +0 -2
- package/dist/features/tester/seed-data/index.js +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
- package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
- package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
- package/dist/features/tester/seed-data/tester-window.js +0 -66
- package/dist/seed/_helpers/brand-rows.d.ts +0 -35
- package/dist/seed/_helpers/brand-rows.js +0 -600
- package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
- package/dist/seed/_helpers/category-content-generated.js +0 -1853
- package/dist/seed/_helpers/category-content.d.ts +0 -68
- package/dist/seed/_helpers/category-content.js +0 -731
- package/dist/seed/_helpers/category-forest.d.ts +0 -4
- package/dist/seed/_helpers/category-forest.js +0 -824
- package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
- package/dist/seed/_helpers/category-images-generated.js +0 -618
- package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
- package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
- package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
- package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
- package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
- package/dist/seed/_helpers/category-models.d.ts +0 -12
- package/dist/seed/_helpers/category-models.js +0 -45
- package/dist/seed/_helpers/category-names.d.ts +0 -54
- package/dist/seed/_helpers/category-names.js +0 -118
- package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
- package/dist/seed/_helpers/category-parts.d.ts +0 -9
- package/dist/seed/_helpers/category-parts.js +0 -15022
- package/dist/seed/_helpers/category-tree.d.ts +0 -27
- package/dist/seed/_helpers/category-tree.js +0 -119
- package/dist/seed/_helpers/character-features.d.ts +0 -10
- package/dist/seed/_helpers/character-features.js +0 -120
- package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
- package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
- package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
- package/dist/seed/_helpers/franchise-rows.js +0 -189
- package/dist/seed/_helpers/media.d.ts +0 -67
- package/dist/seed/_helpers/media.js +0 -172
- package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
- package/dist/seed/_helpers/part-colours-generated.js +0 -273
- package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
- package/dist/seed/_helpers/product-search-txt.js +0 -23
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
- package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
- package/dist/seed/addresses-seed-data.d.ts +0 -2
- package/dist/seed/addresses-seed-data.js +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
- package/dist/seed/bey-products-seed-data.d.ts +0 -18
- package/dist/seed/bey-products-seed-data.js +0 -18011
- package/dist/seed/beys/chunk0.d.ts +0 -17
- package/dist/seed/beys/chunk0.js +0 -36733
- package/dist/seed/beys/chunk1.d.ts +0 -17
- package/dist/seed/beys/chunk1.js +0 -35728
- package/dist/seed/beys/chunk2.d.ts +0 -17
- package/dist/seed/beys/chunk2.js +0 -35857
- package/dist/seed/beys/chunk3.d.ts +0 -17
- package/dist/seed/beys/chunk3.js +0 -34476
- package/dist/seed/beys-seed-data.d.ts +0 -18
- package/dist/seed/beys-seed-data.js +0 -11
- package/dist/seed/bids-seed-data.d.ts +0 -2
- package/dist/seed/bids-seed-data.js +0 -206
- package/dist/seed/blog-posts-seed-data.d.ts +0 -6
- package/dist/seed/blog-posts-seed-data.js +0 -442
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
- package/dist/seed/carousel-slides-seed-data.js +0 -411
- package/dist/seed/carousels-seed-data.d.ts +0 -2
- package/dist/seed/carousels-seed-data.js +0 -36
- package/dist/seed/cart-seed-data.d.ts +0 -2
- package/dist/seed/cart-seed-data.js +0 -241
- package/dist/seed/catalogue-seed-data.d.ts +0 -2
- package/dist/seed/catalogue-seed-data.js +0 -112
- package/dist/seed/categories-seed-data.d.ts +0 -3
- package/dist/seed/categories-seed-data.js +0 -816
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
- package/dist/seed/claimed-coupons-seed-data.js +0 -85
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
- package/dist/seed/coupon-usage-seed-data.js +0 -55
- package/dist/seed/coupons-seed-data.d.ts +0 -2
- package/dist/seed/coupons-seed-data.js +0 -226
- package/dist/seed/defaults/categories.d.ts +0 -2
- package/dist/seed/defaults/categories.js +0 -12
- package/dist/seed/defaults/faqs.d.ts +0 -2
- package/dist/seed/defaults/faqs.js +0 -40
- package/dist/seed/events-seed-data.d.ts +0 -7
- package/dist/seed/events-seed-data.js +0 -482
- package/dist/seed/factories/address.factory.d.ts +0 -21
- package/dist/seed/factories/address.factory.js +0 -44
- package/dist/seed/factories/bid.factory.d.ts +0 -15
- package/dist/seed/factories/bid.factory.js +0 -33
- package/dist/seed/factories/blog-post.factory.d.ts +0 -15
- package/dist/seed/factories/blog-post.factory.js +0 -22
- package/dist/seed/factories/carousel.factory.d.ts +0 -11
- package/dist/seed/factories/carousel.factory.js +0 -17
- package/dist/seed/factories/cart.factory.d.ts +0 -25
- package/dist/seed/factories/cart.factory.js +0 -35
- package/dist/seed/factories/category.factory.d.ts +0 -11
- package/dist/seed/factories/category.factory.js +0 -16
- package/dist/seed/factories/coupon.factory.d.ts +0 -21
- package/dist/seed/factories/coupon.factory.js +0 -43
- package/dist/seed/factories/faq.factory.d.ts +0 -10
- package/dist/seed/factories/faq.factory.js +0 -15
- package/dist/seed/factories/notification.factory.d.ts +0 -18
- package/dist/seed/factories/notification.factory.js +0 -39
- package/dist/seed/factories/order.factory.d.ts +0 -20
- package/dist/seed/factories/order.factory.js +0 -20
- package/dist/seed/factories/payout.factory.d.ts +0 -21
- package/dist/seed/factories/payout.factory.js +0 -38
- package/dist/seed/factories/product.factory.d.ts +0 -27
- package/dist/seed/factories/product.factory.js +0 -80
- package/dist/seed/factories/review.factory.d.ts +0 -14
- package/dist/seed/factories/review.factory.js +0 -52
- package/dist/seed/factories/session.factory.d.ts +0 -15
- package/dist/seed/factories/session.factory.js +0 -31
- package/dist/seed/factories/store.factory.d.ts +0 -23
- package/dist/seed/factories/store.factory.js +0 -47
- package/dist/seed/factories/user.factory.d.ts +0 -19
- package/dist/seed/factories/user.factory.js +0 -56
- package/dist/seed/faq-seed-data.d.ts +0 -18
- package/dist/seed/faq-seed-data.js +0 -1956
- package/dist/seed/firestore-indexes.d.ts +0 -12
- package/dist/seed/firestore-indexes.js +0 -31
- package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
- package/dist/seed/grouped-listings-seed-data.js +0 -283
- package/dist/seed/history-seed-data.d.ts +0 -12
- package/dist/seed/history-seed-data.js +0 -70
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
- package/dist/seed/homepage-sections-seed-data.js +0 -1034
- package/dist/seed/index.d.ts +0 -100
- package/dist/seed/index.js +0 -115
- package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
- package/dist/seed/lottery-entries-seed-data.js +0 -108
- package/dist/seed/manifest.d.ts +0 -16
- package/dist/seed/manifest.js +0 -235
- package/dist/seed/media-assets-seed-data.d.ts +0 -22
- package/dist/seed/media-assets-seed-data.js +0 -5593
- package/dist/seed/model-composition-seed-data.d.ts +0 -15
- package/dist/seed/model-composition-seed-data.js +0 -9032
- package/dist/seed/notifications-seed-data.d.ts +0 -2
- package/dist/seed/notifications-seed-data.js +0 -606
- package/dist/seed/offers-seed-data.d.ts +0 -2
- package/dist/seed/offers-seed-data.js +0 -398
- package/dist/seed/orders-seed-data.d.ts +0 -2
- package/dist/seed/orders-seed-data.js +0 -845
- package/dist/seed/part-glossary/chunk0.d.ts +0 -9
- package/dist/seed/part-glossary/chunk0.js +0 -35448
- package/dist/seed/part-glossary/chunk1.d.ts +0 -9
- package/dist/seed/part-glossary/chunk1.js +0 -40494
- package/dist/seed/part-glossary/chunk2.d.ts +0 -9
- package/dist/seed/part-glossary/chunk2.js +0 -51242
- package/dist/seed/part-glossary/chunk3.d.ts +0 -9
- package/dist/seed/part-glossary/chunk3.js +0 -53337
- package/dist/seed/part-glossary/chunk4.d.ts +0 -9
- package/dist/seed/part-glossary/chunk4.js +0 -51454
- package/dist/seed/part-glossary-seed-data.d.ts +0 -15
- package/dist/seed/part-glossary-seed-data.js +0 -25
- package/dist/seed/payouts-seed-data.d.ts +0 -2
- package/dist/seed/payouts-seed-data.js +0 -302
- package/dist/seed/product-features-seed-data.d.ts +0 -3
- package/dist/seed/product-features-seed-data.js +0 -366
- package/dist/seed/products-art-seed-data.d.ts +0 -2
- package/dist/seed/products-art-seed-data.js +0 -289
- package/dist/seed/products-auctions-seed-data.d.ts +0 -2
- package/dist/seed/products-auctions-seed-data.js +0 -475
- package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
- package/dist/seed/products-beyblade-x-seed-data.js +0 -476
- package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk0.js +0 -7262
- package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk1.js +0 -7290
- package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk10.js +0 -7290
- package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk11.js +0 -7005
- package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk12.js +0 -7002
- package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk13.js +0 -7002
- package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk14.js +0 -7002
- package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk15.js +0 -7002
- package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk16.js +0 -7002
- package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk17.js +0 -7002
- package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk18.js +0 -4398
- package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk2.js +0 -7268
- package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk3.js +0 -7264
- package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk4.js +0 -7268
- package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk5.js +0 -7258
- package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk6.js +0 -7268
- package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk7.js +0 -7311
- package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk8.js +0 -7304
- package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk9.js +0 -7309
- package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
- package/dist/seed/products-catalogue-seed-data.js +0 -60
- package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
- package/dist/seed/products-classifieds-seed-data.js +0 -435
- package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
- package/dist/seed/products-digital-codes-seed-data.js +0 -395
- package/dist/seed/products-live-items-seed-data.d.ts +0 -7
- package/dist/seed/products-live-items-seed-data.js +0 -269
- package/dist/seed/products-preorders-seed-data.d.ts +0 -2
- package/dist/seed/products-preorders-seed-data.js +0 -360
- package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
- package/dist/seed/products-prize-draws-seed-data.js +0 -427
- package/dist/seed/products-spares-seed-data.d.ts +0 -2
- package/dist/seed/products-spares-seed-data.js +0 -368
- package/dist/seed/products-standard-seed-data.d.ts +0 -2
- package/dist/seed/products-standard-seed-data.js +0 -632
- package/dist/seed/products-stickers-seed-data.d.ts +0 -2
- package/dist/seed/products-stickers-seed-data.js +0 -319
- package/dist/seed/reviews-seed-data.d.ts +0 -1
- package/dist/seed/reviews-seed-data.js +0 -185
- package/dist/seed/runner.d.ts +0 -2
- package/dist/seed/runner.js +0 -125
- package/dist/seed/scammers-seed-data.d.ts +0 -2
- package/dist/seed/scammers-seed-data.js +0 -235
- package/dist/seed/seed-market-config.d.ts +0 -48
- package/dist/seed/seed-market-config.js +0 -199
- package/dist/seed/seed-purpose.d.ts +0 -299
- package/dist/seed/seed-purpose.js +0 -440
- package/dist/seed/sessions-seed-data.d.ts +0 -3
- package/dist/seed/sessions-seed-data.js +0 -116
- package/dist/seed/shipments-seed-data.d.ts +0 -5
- package/dist/seed/shipments-seed-data.js +0 -185
- package/dist/seed/site-settings-seed-data.d.ts +0 -2
- package/dist/seed/site-settings-seed-data.js +0 -1069
- package/dist/seed/store-addresses-seed-data.d.ts +0 -18
- package/dist/seed/store-addresses-seed-data.js +0 -71
- package/dist/seed/store-extensions-seed-data.d.ts +0 -11
- package/dist/seed/store-extensions-seed-data.js +0 -292
- package/dist/seed/stores-seed-data.d.ts +0 -6
- package/dist/seed/stores-seed-data.js +0 -242
- package/dist/seed/support-tickets-seed-data.d.ts +0 -16
- package/dist/seed/support-tickets-seed-data.js +0 -239
- package/dist/seed/tax-codes-seed-data.d.ts +0 -34
- package/dist/seed/tax-codes-seed-data.js +0 -100
- package/dist/seed/test-data-ttl.d.ts +0 -29
- package/dist/seed/test-data-ttl.js +0 -31
- package/dist/seed/test-utils.d.ts +0 -49
- package/dist/seed/test-utils.js +0 -110
- package/dist/seed/types.d.ts +0 -89
- package/dist/seed/types.js +0 -15
- package/dist/seed/users-seed-data.d.ts +0 -2
- package/dist/seed/users-seed-data.js +0 -597
- package/dist/seed/wishlists-seed-data.d.ts +0 -12
- package/dist/seed/wishlists-seed-data.js +0 -54
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
/**
|
|
3
|
+
* Order completion — per-item ratings, and the two ways an order completes.
|
|
4
|
+
*
|
|
5
|
+
* ## The owner's rule, 2026-10-21
|
|
6
|
+
*
|
|
7
|
+
* > *"Points only get issued on successful purchases after buyer put reviews…
|
|
8
|
+
* > they are also assigned if the user [raises] no issues or updates after 7
|
|
9
|
+
* > days of delivery — no further disputes should be entertained as well."*
|
|
10
|
+
*
|
|
11
|
+
* > *"Auto assigned after 7 days of delivery, when order is marked complete; if
|
|
12
|
+
* > review is given and order marked complete by the buyer before — immediate
|
|
13
|
+
* > disburse."*
|
|
14
|
+
*
|
|
15
|
+
* > *"Like in Zomato, each item of the order can be individually rated and a
|
|
16
|
+
* > comment can be given — use that."*
|
|
17
|
+
*
|
|
18
|
+
* So completion has exactly two writers, and they are not equivalent:
|
|
19
|
+
*
|
|
20
|
+
* | writer | when | effect |
|
|
21
|
+
* |---|---|---|
|
|
22
|
+
* | `obligationSweep` (`order-complete`) | 7 days after delivery, nothing contested | completes; points award |
|
|
23
|
+
* | `markOrderCompleteAction` | the buyer, having rated at least one item | completes NOW; **immediate disburse** |
|
|
24
|
+
*
|
|
25
|
+
* 🛑 **The "immediate disburse" half needs no extra mechanism, and that is the
|
|
26
|
+
* nicest property of the design.** `payout-release` is already
|
|
27
|
+
* `blockedBy: ["order-complete", …]`, so a buyer completing early opens the
|
|
28
|
+
* seller's payout gate early as a CONSEQUENCE rather than as a second
|
|
29
|
+
* decision. The buyer confirming satisfaction is precisely the signal a quiet
|
|
30
|
+
* period exists to wait for — so when it arrives, waiting out the rest of the
|
|
31
|
+
* period is pure dead time for the seller.
|
|
32
|
+
*/
|
|
33
|
+
import { wrapAction } from "../../../shared/types/action-result.js";
|
|
34
|
+
import { requireRoleUser } from "../../../../providers/auth-firebase/helpers.js";
|
|
35
|
+
import { normalizeError } from "../../../../errors/normalize.js";
|
|
36
|
+
import { serverLogger } from "../../../../monitoring/index.js";
|
|
37
|
+
import { ValidationError, NotFoundError, ConflictError } from "../../../../errors/index.js";
|
|
38
|
+
import { orderRepository } from "../../../../features/orders/repository/orders.repository.js";
|
|
39
|
+
import { reviewRepository } from "../../../../features/reviews/repository/reviews.repository.js";
|
|
40
|
+
import { obligationsRepository } from "../../../../features/obligations/repository/obligations.repository.js";
|
|
41
|
+
import { awardPurchasePoints } from "../points/award.js";
|
|
42
|
+
/**
|
|
43
|
+
* Which lines of this order the buyer may rate, and which they already have.
|
|
44
|
+
*
|
|
45
|
+
* 🛑 Reads the buyer's OWN reviews (`findByUser`) rather than each product's
|
|
46
|
+
* reviews (`findByProduct`). A product can carry thousands of reviews and a
|
|
47
|
+
* buyer carries a handful, so this is bounded by the right dimension —
|
|
48
|
+
* `findByProduct` on a popular bey would be an unbounded read to answer a
|
|
49
|
+
* question about one person (Rule #6).
|
|
50
|
+
*/
|
|
51
|
+
export async function getRateableItemsAction(orderId) {
|
|
52
|
+
return wrapAction(async () => {
|
|
53
|
+
const user = await requireRoleUser(["user", "buyer", "seller", "admin"]);
|
|
54
|
+
const order = await orderRepository.findById(orderId);
|
|
55
|
+
if (!order)
|
|
56
|
+
throw new NotFoundError(`Order ${orderId} not found`);
|
|
57
|
+
if (order.userId !== user.uid) {
|
|
58
|
+
throw new ValidationError("You can only rate your own order.");
|
|
59
|
+
}
|
|
60
|
+
const mine = await reviewRepository.findByUser(user.uid);
|
|
61
|
+
const byLine = new Map();
|
|
62
|
+
const byProduct = new Map();
|
|
63
|
+
for (const r of mine) {
|
|
64
|
+
if (r.orderId !== orderId)
|
|
65
|
+
continue;
|
|
66
|
+
if (r.orderItemId)
|
|
67
|
+
byLine.set(r.orderItemId, r.rating);
|
|
68
|
+
byProduct.set(r.productId, r.rating);
|
|
69
|
+
}
|
|
70
|
+
return orderLinesOf(order).map((line) => {
|
|
71
|
+
/*
|
|
72
|
+
* Line id first, product id as the fallback — a review written before
|
|
73
|
+
* `orderItemId` existed can only be matched by product, and treating it
|
|
74
|
+
* as "not rated" would ask the buyer to rate something twice.
|
|
75
|
+
*/
|
|
76
|
+
const existing = byLine.get(line.orderItemId) ?? byProduct.get(line.productId);
|
|
77
|
+
return {
|
|
78
|
+
...line,
|
|
79
|
+
...(existing !== undefined ? { existingRating: existing } : {}),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The order's rateable lines.
|
|
86
|
+
*
|
|
87
|
+
* 🛑 `items[]` is OPTIONAL on `OrderDocument` — the flat
|
|
88
|
+
* `productId`/`productTitle`/`quantity`/`unitPrice` fields are the primary
|
|
89
|
+
* shape, not legacy residue (CLAUDE.md corrected this on 2026-10-03 after the
|
|
90
|
+
* opposite was assumed for months). So both shapes are handled, and the flat
|
|
91
|
+
* one synthesises a line id from the order itself.
|
|
92
|
+
*/
|
|
93
|
+
function orderLinesOf(order) {
|
|
94
|
+
/*
|
|
95
|
+
* 🛑 `OrderDocumentItem` HAS NO `itemId` — verified against the interface,
|
|
96
|
+
* which carries `productId`/`productTitle`/`quantity`/`unitPrice`/`totalPrice`
|
|
97
|
+
* and no identity of its own. So a line id has to be synthesised, and the
|
|
98
|
+
* obvious synthesis is wrong.
|
|
99
|
+
*
|
|
100
|
+
* An INDEX-based id (`${order.id}__${index}`) shifts the moment a line is
|
|
101
|
+
* cancelled or the array is rewritten — and `expandCartLineToOrderRows` fans
|
|
102
|
+
* a grouped line into N rows, so rewrites happen. A rating would then attach
|
|
103
|
+
* to a different product than the one it was written about. That is the
|
|
104
|
+
* merge-by-index hazard the lottery-slot fix is about, one feature over.
|
|
105
|
+
*
|
|
106
|
+
* Keyed on `productId` plus an occurrence counter instead: stable under
|
|
107
|
+
* reordering and under the removal of OTHER lines, and only ambiguous if two
|
|
108
|
+
* rows of the SAME product change relative order — which is both rarer and
|
|
109
|
+
* deterministic, since the counter follows array order within that product.
|
|
110
|
+
*/
|
|
111
|
+
if (order.items?.length) {
|
|
112
|
+
const seen = new Map();
|
|
113
|
+
return order.items.map((item) => {
|
|
114
|
+
const n = seen.get(item.productId) ?? 0;
|
|
115
|
+
seen.set(item.productId, n + 1);
|
|
116
|
+
return {
|
|
117
|
+
orderItemId: `${order.id}__${item.productId}__${n}`,
|
|
118
|
+
productId: item.productId,
|
|
119
|
+
productTitle: item.productTitle ?? item.productId,
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/*
|
|
124
|
+
* The FLAT shape. `items[]` is optional and the flat
|
|
125
|
+
* `productId`/`productTitle` fields are the primary form, not legacy residue
|
|
126
|
+
* — CLAUDE.md corrected the opposite assumption on 2026-10-03 after it had
|
|
127
|
+
* stood for months.
|
|
128
|
+
*/
|
|
129
|
+
if (!order.productId)
|
|
130
|
+
return [];
|
|
131
|
+
return [
|
|
132
|
+
{
|
|
133
|
+
orderItemId: `${order.id}__${order.productId}__0`,
|
|
134
|
+
productId: order.productId,
|
|
135
|
+
productTitle: order.productTitle ?? order.productId,
|
|
136
|
+
},
|
|
137
|
+
];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Rate ONE line of an order — the Zomato-style per-item review.
|
|
141
|
+
*
|
|
142
|
+
* 🛑 Gated on DELIVERY, not on completion. A buyer must be able to rate before
|
|
143
|
+
* marking the order complete, because rating is the precondition for the fast
|
|
144
|
+
* completion path — gating it on completion would make the fast path
|
|
145
|
+
* unreachable, which is a circular dependency that would look like a bug in
|
|
146
|
+
* the button.
|
|
147
|
+
*/
|
|
148
|
+
export async function rateOrderItemAction(input) {
|
|
149
|
+
return wrapAction(async () => {
|
|
150
|
+
const user = await requireRoleUser(["user", "buyer", "seller", "admin"]);
|
|
151
|
+
if (!Number.isInteger(input.rating) || input.rating < 1 || input.rating > 5) {
|
|
152
|
+
throw new ValidationError("A rating must be a whole number from 1 to 5.");
|
|
153
|
+
}
|
|
154
|
+
const comment = input.comment?.trim() ?? "";
|
|
155
|
+
if (comment.length < 5) {
|
|
156
|
+
throw new ValidationError("Please say a little about this item — at least a few words.");
|
|
157
|
+
}
|
|
158
|
+
const order = await orderRepository.findById(input.orderId);
|
|
159
|
+
if (!order)
|
|
160
|
+
throw new NotFoundError(`Order ${input.orderId} not found`);
|
|
161
|
+
if (order.userId !== user.uid) {
|
|
162
|
+
throw new ValidationError("You can only rate your own order.");
|
|
163
|
+
}
|
|
164
|
+
if (!order.deliveryDate) {
|
|
165
|
+
throw new ValidationError("This order has not been delivered yet, so there is nothing to rate.");
|
|
166
|
+
}
|
|
167
|
+
const line = orderLinesOf(order).find((l) => l.orderItemId === input.orderItemId);
|
|
168
|
+
if (!line) {
|
|
169
|
+
throw new NotFoundError(`Order ${input.orderId} has no line ${input.orderItemId}`);
|
|
170
|
+
}
|
|
171
|
+
/*
|
|
172
|
+
* One rating per line. Checked against the buyer's own reviews, which is
|
|
173
|
+
* the same bounded read `getRateableItemsAction` uses.
|
|
174
|
+
*
|
|
175
|
+
* 🛑 A 409 rather than an overwrite: editing a published review is a
|
|
176
|
+
* different operation with its own moderation implications, and silently
|
|
177
|
+
* replacing one would let a buyer revise a 1-star to a 5-star after a
|
|
178
|
+
* seller contacted them, with no trace that it had changed.
|
|
179
|
+
*/
|
|
180
|
+
const mine = await reviewRepository.findByUser(user.uid);
|
|
181
|
+
const already = mine.find((r) => r.orderId === input.orderId &&
|
|
182
|
+
(r.orderItemId === input.orderItemId || r.productId === line.productId));
|
|
183
|
+
if (already) {
|
|
184
|
+
throw new ConflictError("You have already rated this item. Edit your existing review rather than adding a second one.");
|
|
185
|
+
}
|
|
186
|
+
/*
|
|
187
|
+
* `createReview`, not `create` — the repository's own method, which mints
|
|
188
|
+
* the semantic review id and sets `status: "pending"` so a rating enters
|
|
189
|
+
* moderation exactly as any other review does. A per-item rating is not a
|
|
190
|
+
* privileged class of review.
|
|
191
|
+
*/
|
|
192
|
+
const review = await reviewRepository.createReview({
|
|
193
|
+
productId: line.productId,
|
|
194
|
+
productTitle: line.productTitle,
|
|
195
|
+
userId: user.uid,
|
|
196
|
+
/* `name`, not `displayName` — AuthPayload carries the Google "name"
|
|
197
|
+
claim under that key and has no `displayName` at all. */
|
|
198
|
+
userName: user.name ?? user.email ?? "Buyer",
|
|
199
|
+
rating: input.rating,
|
|
200
|
+
title: input.title?.trim() || line.productTitle,
|
|
201
|
+
comment,
|
|
202
|
+
...(input.images?.length ? { images: input.images, hasImages: true } : {}),
|
|
203
|
+
/*
|
|
204
|
+
* The link that did not exist. `orderId` + `orderItemId` are what make
|
|
205
|
+
* "was this order rated" answerable, and `isVerifiedPurchase` is finally
|
|
206
|
+
* written by something — it was read in two places and written by
|
|
207
|
+
* nothing, so no review has ever been attributable to a purchase.
|
|
208
|
+
*/
|
|
209
|
+
orderId: order.id,
|
|
210
|
+
orderItemId: line.orderItemId,
|
|
211
|
+
isVerifiedPurchase: true,
|
|
212
|
+
...(order.storeId ? { storeId: order.storeId } : {}),
|
|
213
|
+
});
|
|
214
|
+
serverLogger.info("order item rated", {
|
|
215
|
+
orderId: order.id,
|
|
216
|
+
orderItemId: line.orderItemId,
|
|
217
|
+
rating: input.rating,
|
|
218
|
+
});
|
|
219
|
+
return { reviewId: review.id };
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The buyer marks the order complete — the FAST path.
|
|
224
|
+
*
|
|
225
|
+
* Requires at least one rated line, per the owner's rule (*"if review is given
|
|
226
|
+
* and order marked complete by the buyer"*).
|
|
227
|
+
*
|
|
228
|
+
* 🛑 **At least one, not all.** Requiring every line would make a six-item
|
|
229
|
+
* order's completion hostage to the one item the buyer has no opinion about —
|
|
230
|
+
* and the buyer's alternative is simply to wait 7 days and be completed
|
|
231
|
+
* automatically with no review at all, which is strictly worse for everyone.
|
|
232
|
+
* One rating is the signal; demanding six is a toll.
|
|
233
|
+
*
|
|
234
|
+
* 🛑 It REFUSES while anything is contested, and the check is the obligation
|
|
235
|
+
* policy's own `precondition` rather than a second hand-written copy — so the
|
|
236
|
+
* buyer-initiated path and the 7-day sweep cannot disagree about what "nothing
|
|
237
|
+
* contested" means.
|
|
238
|
+
*/
|
|
239
|
+
export async function markOrderCompleteAction(orderId) {
|
|
240
|
+
return wrapAction(async () => {
|
|
241
|
+
const user = await requireRoleUser(["user", "buyer", "seller", "admin"]);
|
|
242
|
+
const order = await orderRepository.findById(orderId);
|
|
243
|
+
if (!order)
|
|
244
|
+
throw new NotFoundError(`Order ${orderId} not found`);
|
|
245
|
+
if (order.userId !== user.uid) {
|
|
246
|
+
throw new ValidationError("You can only complete your own order.");
|
|
247
|
+
}
|
|
248
|
+
if (order.completedAt) {
|
|
249
|
+
throw new ConflictError("This order is already marked complete.");
|
|
250
|
+
}
|
|
251
|
+
if (!order.deliveryDate) {
|
|
252
|
+
throw new ValidationError("This order has not been delivered yet. You can mark it complete once it arrives.");
|
|
253
|
+
}
|
|
254
|
+
/*
|
|
255
|
+
* Nothing contested. Deliberately mirrors `order-complete`'s precondition
|
|
256
|
+
* — a buyer must not be able to close the dispute window on an order they
|
|
257
|
+
* have an open return or refund against, which would be them waiving a
|
|
258
|
+
* claim by pressing a button labelled "mark complete".
|
|
259
|
+
*/
|
|
260
|
+
if (order.status === "return_requested" ||
|
|
261
|
+
order.status === "returned" ||
|
|
262
|
+
order.returnRequestedAt ||
|
|
263
|
+
order.disputeRaised ||
|
|
264
|
+
(order.refunds?.length ?? 0) > 0) {
|
|
265
|
+
throw new ValidationError("This order has an open return, refund or dispute. It will complete once that is resolved.");
|
|
266
|
+
}
|
|
267
|
+
const mine = await reviewRepository.findByUser(user.uid);
|
|
268
|
+
const ratedThisOrder = mine.some((r) => r.orderId === orderId);
|
|
269
|
+
if (!ratedThisOrder) {
|
|
270
|
+
throw new ValidationError("Please rate at least one item from this order first — that is what lets us close it now rather than waiting out the 7-day window.");
|
|
271
|
+
}
|
|
272
|
+
const now = new Date();
|
|
273
|
+
await orderRepository.update(orderId, {
|
|
274
|
+
completedAt: now,
|
|
275
|
+
completedBy: user.uid,
|
|
276
|
+
});
|
|
277
|
+
/*
|
|
278
|
+
* Close the timer, so the sweep does not re-fire on an order the buyer has
|
|
279
|
+
* already closed. `met`, not `acted`: the thing the obligation was waiting
|
|
280
|
+
* for HAPPENED, which is exactly what that state means.
|
|
281
|
+
*/
|
|
282
|
+
await obligationsRepository().close(orderId, "order-complete", {
|
|
283
|
+
state: "met",
|
|
284
|
+
closeReason: `the buyer marked the order complete after rating it`,
|
|
285
|
+
now,
|
|
286
|
+
});
|
|
287
|
+
/*
|
|
288
|
+
* 🛑 The payout gate opens as a CONSEQUENCE, not as a second write.
|
|
289
|
+
* `payout-release` is `blockedBy: ["order-complete", …]`, so closing the
|
|
290
|
+
* obligation above is what unblocks it — which is the "immediate disburse"
|
|
291
|
+
* the owner asked for, with no extra mechanism and no second place to keep
|
|
292
|
+
* in step.
|
|
293
|
+
*/
|
|
294
|
+
const stillBlocking = await obligationsRepository().listOpenForSubject(orderId);
|
|
295
|
+
const payoutUnblocked = !stillBlocking.some((o) => o.kind !== "payout-release");
|
|
296
|
+
serverLogger.warn("order marked complete by buyer — fast path", {
|
|
297
|
+
orderId,
|
|
298
|
+
payoutUnblocked,
|
|
299
|
+
stillOpen: stillBlocking.map((o) => o.kind),
|
|
300
|
+
});
|
|
301
|
+
/*
|
|
302
|
+
* ── THE POINTS AWARD (Phase P, 2026-10-21) ────────────────────────────
|
|
303
|
+
*
|
|
304
|
+
* Now written, because the key it needed exists: `awardPurchasePoints`
|
|
305
|
+
* checks `order.pointsAwardedAt` and writes it alongside the credit, which
|
|
306
|
+
* is what makes a double fire safe. This path and the 7-day sweep both
|
|
307
|
+
* call the same function — and a double call is the NORMAL case here, not
|
|
308
|
+
* an edge, because a buyer completing early means the sweep later finds an
|
|
309
|
+
* order already complete.
|
|
310
|
+
*
|
|
311
|
+
* 🛑 Best-effort, and awaited rather than fire-and-forget. Awaited so the
|
|
312
|
+
* response can honestly say points were credited; best-effort because the
|
|
313
|
+
* order IS complete and the buyer has been told so — failing the whole
|
|
314
|
+
* action over the credit would leave them unable to retry a completion
|
|
315
|
+
* that already happened. A miss is recoverable (the sweep re-attempts on
|
|
316
|
+
* its next tick, keyed) and loud.
|
|
317
|
+
*/
|
|
318
|
+
let pointsAwarded = 0;
|
|
319
|
+
try {
|
|
320
|
+
const award = await awardPurchasePoints({
|
|
321
|
+
...order,
|
|
322
|
+
completedAt: now,
|
|
323
|
+
completedBy: user.uid,
|
|
324
|
+
});
|
|
325
|
+
pointsAwarded = award.awarded;
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
void normalizeError(err);
|
|
329
|
+
serverLogger.error("order completed but points were NOT credited", {
|
|
330
|
+
orderId,
|
|
331
|
+
userId: user.uid,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
return { completedAt: now.toISOString(), payoutUnblocked, pointsAwarded };
|
|
335
|
+
});
|
|
336
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* order-completion — server surface.
|
|
3
|
+
*
|
|
4
|
+
* The buyer's side of the owner's 2026-10-21 rule: per-item ratings
|
|
5
|
+
* (Zomato-style) and the fast completion path they unlock.
|
|
6
|
+
*/
|
|
7
|
+
export { getRateableItemsAction, rateOrderItemAction, markOrderCompleteAction, type RateableOrderItem, type RateOrderItemInput, } from "./actions";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* order-completion — server surface.
|
|
3
|
+
*
|
|
4
|
+
* The buyer's side of the owner's 2026-10-21 rule: per-item ratings
|
|
5
|
+
* (Zomato-style) and the fast completion path they unlock.
|
|
6
|
+
*/
|
|
7
|
+
export { getRateableItemsAction, rateOrderItemAction, markOrderCompleteAction, } from "./actions.js";
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { type ActionResult } from "@mohasinac/appkit/server";
|
|
2
2
|
export declare function createOrderAction(input: unknown): Promise<ActionResult<unknown>>;
|
|
3
|
+
/**
|
|
4
|
+
* Cancel an order, and give the money back if any was taken (D14).
|
|
5
|
+
*
|
|
6
|
+
* 🛑 `assertOrderCancellable` already RETURNS the order it validated, and this
|
|
7
|
+
* threw that away and let `cancelOrder` fetch it again. Reusing it saves a read
|
|
8
|
+
* on every cancellation and — more importantly — means the refund is decided
|
|
9
|
+
* against the same document the ownership and dispatch checks ran on, rather
|
|
10
|
+
* than against a re-read that could have moved in between.
|
|
11
|
+
*
|
|
12
|
+
* The response shape widened from the bare order to `{ order, refund }`. The
|
|
13
|
+
* order alone could not express the thing a buyer most needs to know, which is
|
|
14
|
+
* whether their money is coming back automatically or waiting on a human.
|
|
15
|
+
*/
|
|
3
16
|
export declare function cancelOrderAction(input: unknown): Promise<ActionResult<unknown>>;
|
|
4
17
|
/**
|
|
5
18
|
* Buyer requests a return on a delivered order.
|
|
@@ -6,6 +6,7 @@ import { createOrderSchema, updateOrderStatusSchema, cancelOrderSchema, returnRe
|
|
|
6
6
|
import { isFinalSaleExempt } from "../../../shared/features/orders/return-reasons.js";
|
|
7
7
|
import { REFUND_COPY } from "../../../shared/features/orders/refund-copy.js";
|
|
8
8
|
import { assertOrderCancellable, assertReturnWindowOpen } from "./service.js";
|
|
9
|
+
import { cancelOrderWithRefund } from "./cancellation-refund.js";
|
|
9
10
|
import { ValidationError } from "../../../shared/errors/index.js";
|
|
10
11
|
import { OrderNotFoundError, OrderOwnershipError } from "../../../shared/features/orders/errors.js";
|
|
11
12
|
import { isAdminUser, isModeratorUser } from "../../../../features/auth/role-predicates.js";
|
|
@@ -14,6 +15,13 @@ import { restoreStockForOrder } from "../checkout/stock-restore.js";
|
|
|
14
15
|
import { getAdminDb } from "../../../../providers/db-firebase/index.js";
|
|
15
16
|
import { enqueueJob } from "../../../../features/jobs/actions/enqueue-job.js";
|
|
16
17
|
import { PAYMENT_WINDOW_MS, PAYMENT_FRAUD_REJECTED_REASON, isManualPaymentMethod } from "../../../../features/orders/constants/payment-window.js";
|
|
18
|
+
/*
|
|
19
|
+
* The dispute cutoff is DERIVED from the `order-complete` policy, never read
|
|
20
|
+
* off a stored flag — one definition of "7 days after delivery", shared with
|
|
21
|
+
* the sweep that closes the window and with whatever page tells the buyer when
|
|
22
|
+
* it closes.
|
|
23
|
+
*/
|
|
24
|
+
import { deadlinesFor } from "../../../shared/obligations/deadlines.js";
|
|
17
25
|
import { normalizeError } from "../../../../errors/normalize.js";
|
|
18
26
|
import { serverLogger } from "../../../../monitoring/index.js";
|
|
19
27
|
export async function createOrderAction(input) {
|
|
@@ -29,14 +37,32 @@ export async function createOrderAction(input) {
|
|
|
29
37
|
});
|
|
30
38
|
});
|
|
31
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Cancel an order, and give the money back if any was taken (D14).
|
|
42
|
+
*
|
|
43
|
+
* 🛑 `assertOrderCancellable` already RETURNS the order it validated, and this
|
|
44
|
+
* threw that away and let `cancelOrder` fetch it again. Reusing it saves a read
|
|
45
|
+
* on every cancellation and — more importantly — means the refund is decided
|
|
46
|
+
* against the same document the ownership and dispatch checks ran on, rather
|
|
47
|
+
* than against a re-read that could have moved in between.
|
|
48
|
+
*
|
|
49
|
+
* The response shape widened from the bare order to `{ order, refund }`. The
|
|
50
|
+
* order alone could not express the thing a buyer most needs to know, which is
|
|
51
|
+
* whether their money is coming back automatically or waiting on a human.
|
|
52
|
+
*/
|
|
32
53
|
export async function cancelOrderAction(input) {
|
|
33
54
|
return wrapAction(async () => {
|
|
34
55
|
const user = await requireRoleUser(["user", "buyer", "seller", "admin"]);
|
|
35
56
|
const parsed = cancelOrderSchema.safeParse(input);
|
|
36
57
|
if (!parsed.success)
|
|
37
58
|
throw new ValidationError(parsed.error.issues[0]?.message ?? "Invalid input");
|
|
38
|
-
await assertOrderCancellable(parsed.data.orderId, user.uid);
|
|
39
|
-
return
|
|
59
|
+
const order = await assertOrderCancellable(parsed.data.orderId, user.uid);
|
|
60
|
+
return cancelOrderWithRefund(order, {
|
|
61
|
+
reason: parsed.data.reason ?? "Cancelled by user",
|
|
62
|
+
actorUid: user.uid,
|
|
63
|
+
actorRole: "buyer",
|
|
64
|
+
trigger: "cancelOrderAction",
|
|
65
|
+
});
|
|
40
66
|
});
|
|
41
67
|
}
|
|
42
68
|
/**
|
|
@@ -375,6 +401,34 @@ export async function raiseOrderDisputeAction(orderId, reason) {
|
|
|
375
401
|
}
|
|
376
402
|
if (order.disputeStatus === "open")
|
|
377
403
|
return; // idempotent
|
|
404
|
+
/*
|
|
405
|
+
* ── THE DISPUTE CUTOFF ────────────────────────────────────────────────
|
|
406
|
+
*
|
|
407
|
+
* Owner's rule, 2026-10-21: *"after 7 days of delivery no further disputes
|
|
408
|
+
* should be entertained."*
|
|
409
|
+
*
|
|
410
|
+
* 🛑 Enforced here, at the one place a dispute is RAISED, rather than in
|
|
411
|
+
* the sweep — because a cutoff is a refusal, and a refusal has to live
|
|
412
|
+
* where the request arrives. The `order-complete` obligation firing records
|
|
413
|
+
* that the window shut; this is what makes the record mean something.
|
|
414
|
+
*
|
|
415
|
+
* 🛑 It closes the door to NEW disputes ONLY. An existing dispute, an
|
|
416
|
+
* in-flight return, or a refund already posted are all untouched — the
|
|
417
|
+
* `order-complete` precondition refuses to fire while any of those is live,
|
|
418
|
+
* so by construction this cutoff can only exist on an order where nothing
|
|
419
|
+
* was ever contested. Reading the rule as "everything closes at 7 days"
|
|
420
|
+
* would cancel a return the buyer raised on day 6, which is the opposite of
|
|
421
|
+
* what a dispute window is for.
|
|
422
|
+
*
|
|
423
|
+
* Derived from `deliveryDate` rather than read off a stored flag, for the
|
|
424
|
+
* same reason every other deadline here is derived: a stored
|
|
425
|
+
* `disputeWindowClosed` boolean would need a backfill and would drift from
|
|
426
|
+
* the policy the day the duration changed (Root Cause #42).
|
|
427
|
+
*/
|
|
428
|
+
const completion = deadlinesFor(order).find((d) => d.kind === "order-complete");
|
|
429
|
+
if (completion && completion.dueAt.getTime() <= Date.now()) {
|
|
430
|
+
throw new ValidationError(`The dispute window for this order closed on ${completion.dueAt.toLocaleDateString("en-IN")} — 7 days after delivery. Contact support if you believe this is wrong.`);
|
|
431
|
+
}
|
|
378
432
|
await orderRepository.update(orderId, {
|
|
379
433
|
disputeRaised: true,
|
|
380
434
|
disputeRaisedBy: user.uid,
|
|
@@ -228,6 +228,32 @@ export function orderDocumentToOrder(doc) {
|
|
|
228
228
|
autoApproved: doc.autoApproved,
|
|
229
229
|
disputeRaised: doc.disputeRaised,
|
|
230
230
|
disputeStatus: doc.disputeStatus,
|
|
231
|
+
/*
|
|
232
|
+
* Completion, and the two anchors `OrderCompletionPanel` needs to decide
|
|
233
|
+
* whether anything is contested.
|
|
234
|
+
*
|
|
235
|
+
* 🛑 Mapped in the SAME change as the client type, because the failure mode
|
|
236
|
+
* of mapping neither — or one — is invisible. With `completedAt` undefined
|
|
237
|
+
* the panel renders its rating UI forever and never confirms completion,
|
|
238
|
+
* which reads as ordinary behaviour; with `returnRequestedAt` undefined it
|
|
239
|
+
* offers "Mark complete" on an order with a live return, the server refuses
|
|
240
|
+
* it, and the buyer gets an error for pressing a button we showed them.
|
|
241
|
+
*
|
|
242
|
+
* This is the field-by-field repeat of the manual-payment incident four
|
|
243
|
+
* lines below: `paymentStatus` was mapped, nothing else payment-related
|
|
244
|
+
* was, and the whole proof-upload flow was dead for every buyer while the
|
|
245
|
+
* page politely said it did not apply.
|
|
246
|
+
*/
|
|
247
|
+
completedAt: toIsoOrUndefined(doc.completedAt),
|
|
248
|
+
completedBy: doc.completedBy,
|
|
249
|
+
returnRequestedAt: toIsoOrUndefined(doc.returnRequestedAt),
|
|
250
|
+
/*
|
|
251
|
+
* A COUNT, not the events. The panel needs one bit — has any money already
|
|
252
|
+
* moved — and `refunds[]` carries staff uids, gateway refund ids and
|
|
253
|
+
* operator-facing reason strings. Publishing those to a buyer's page to
|
|
254
|
+
* answer a yes/no question is the spread-and-publish shape (Root Cause #70).
|
|
255
|
+
*/
|
|
256
|
+
refundCount: doc.refunds?.length ?? 0,
|
|
231
257
|
// Manual-payment (cash / UPI / EMI) passthrough. These were previously
|
|
232
258
|
// dropped here, which silently disabled the entire buyer proof-upload
|
|
233
259
|
// flow: `/user/orders/[id]/payment` branches on `paymentMethod` and so
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cancel an order AND give the money back — one owner, three callers.
|
|
3
|
+
*
|
|
4
|
+
* ## D14, and why passing the amount was only half of it
|
|
5
|
+
*
|
|
6
|
+
* `cancelOrder(orderId, reason, refundAmount?)` has carried an optional
|
|
7
|
+
* `refundAmount` since it was written, and **all four callers omitted it**. So
|
|
8
|
+
* cancelling a *paid* order restored stock and left the money with us, while
|
|
9
|
+
* `previewCancellationRefund` showed the buyer a figure nothing honoured.
|
|
10
|
+
*
|
|
11
|
+
* 🛑 **But passing the amount alone would have made it WORSE.** `cancelOrder`'s
|
|
12
|
+
* body writes `{ refundAmount, refundStatus: "pending" }` and nothing else —
|
|
13
|
+
* there is no provider call anywhere in it. So the obvious fix creates a *new*
|
|
14
|
+
* dead state: a recorded refund intent that nothing ever settles, which is
|
|
15
|
+
* strictly worse than today's honest silence because it reads, in the database,
|
|
16
|
+
* as though a refund is on its way. The amount and the movement have to land
|
|
17
|
+
* together, which is why this module exists rather than a one-line edit at each
|
|
18
|
+
* call site.
|
|
19
|
+
*
|
|
20
|
+
* ## The decision table
|
|
21
|
+
*
|
|
22
|
+
* Every row cancels the order and **restores its stock** — see `releaseStock`,
|
|
23
|
+
* which closes a second half of D14 the plan had recorded backwards. The table
|
|
24
|
+
* is only about the money.
|
|
25
|
+
*
|
|
26
|
+
* | condition | what happens to the money |
|
|
27
|
+
* |---|---|
|
|
28
|
+
* | `paymentStatus !== "paid"` | **nothing** — nothing was ever captured |
|
|
29
|
+
* | nothing left refundable | nothing — already refunded in full |
|
|
30
|
+
* | goods have left the seller | intent recorded, **case opened** — a human decides |
|
|
31
|
+
* | paid by cash / UPI-manual / EMI | intent recorded, **case opened** — there is no automatic rail |
|
|
32
|
+
* | paid through the gateway | **refunded automatically**, in full, once |
|
|
33
|
+
*
|
|
34
|
+
* The last row is the only automatic money movement, and it satisfies the
|
|
35
|
+
* plan's guardrail for one: the ceiling is an amount we captured, the recipient
|
|
36
|
+
* is the payer, and no counterparty is debited.
|
|
37
|
+
*
|
|
38
|
+
* ## Three things that are load-bearing
|
|
39
|
+
*
|
|
40
|
+
* **It goes through `processRefundAction`, never `payment.refund()` directly.**
|
|
41
|
+
* That action owns the idempotency claim, the cumulative cap against
|
|
42
|
+
* `refundableBase`, and the two-phase reserve/settle write around the provider
|
|
43
|
+
* call. A direct provider call here would reintroduce every defect step 8
|
|
44
|
+
* closed — D1, D2, D6 and D7 at once.
|
|
45
|
+
*
|
|
46
|
+
* **The key is `cancel_{orderId}`** — a NATURAL key, so a double-clicked Cancel
|
|
47
|
+
* button, a retried server action and a sweep all collapse to one refund. A
|
|
48
|
+
* `randomUUID()` here would be D2 wearing a new name.
|
|
49
|
+
*
|
|
50
|
+
* ## Points ARE reversed here now (Phase P)
|
|
51
|
+
*
|
|
52
|
+
* `pointsLedger`'s own header states the rule as a legal boundary: *"points
|
|
53
|
+
* spent on a cancelled order are returned as points"* — never as money, because
|
|
54
|
+
* paying them out in rupees is what would make this stored value, which in
|
|
55
|
+
* India is PPI territory with RBI authorisation attached.
|
|
56
|
+
*
|
|
57
|
+
* `reverseRedemptionForOrder` is that rule's first writer; the kind had been
|
|
58
|
+
* declared with none since it was written (D48). It is idempotent on the order
|
|
59
|
+
* — one reversal per order, checked by query before the write, because an
|
|
60
|
+
* append-only ledger cannot net off a double reversal.
|
|
61
|
+
*
|
|
62
|
+
* 🛑 It is a NO-OP today and still correct to call. No order has ever consumed
|
|
63
|
+
* points: the one code path that redeemed any was deleted on 2026-10-21
|
|
64
|
+
* because it debited the buyer without reducing the charge (D46 — see the note
|
|
65
|
+
* at its former site in `checkout/actions.ts`), and it had no caller, route
|
|
66
|
+
* field or UI tender before that. So the query finds no redemption and returns
|
|
67
|
+
* `{ reversed: 0 }`.
|
|
68
|
+
* Wiring it now rather than later is the cheap half — the expensive half is the
|
|
69
|
+
* ledger write, which is already keyed. When redemption becomes a real tender,
|
|
70
|
+
* cancellation already gives the points back instead of needing to remember to.
|
|
71
|
+
*
|
|
72
|
+
* **Cancel, then stock, then money.** The cancellation is the urgent half and
|
|
73
|
+
* must not be held hostage to a gateway round trip; the restock is a local
|
|
74
|
+
* write another buyer is actively waiting on; the refund is the one step that
|
|
75
|
+
* can hang for a full network timeout. The cost of that ordering is a window
|
|
76
|
+
* where the order is `cancelled` with the money still held — which is exactly
|
|
77
|
+
* why `refundAmount` is written *at cancellation time*, before the provider is
|
|
78
|
+
* called: a crash in the window leaves a detectable artefact rather than
|
|
79
|
+
* nothing, and R5 in `paymentReconcile` is the thing that finds it. The reverse
|
|
80
|
+
* ordering has no such consolation, because a refund posted against a live
|
|
81
|
+
* order that then fails to cancel is money gone from an order the buyer still
|
|
82
|
+
* expects to receive.
|
|
83
|
+
*/
|
|
84
|
+
import type { OrderDocument } from "../../../../features/orders/schemas/firestore";
|
|
85
|
+
import type { CancellationRefundOutcome } from "../../../../features/orders/types/index";
|
|
86
|
+
import type { HistoryActor } from "../../../shared/history/types";
|
|
87
|
+
export interface CancelWithRefundOptions {
|
|
88
|
+
reason: string;
|
|
89
|
+
/**
|
|
90
|
+
* The uid of whoever asked for this — a buyer, a seller, or an admin.
|
|
91
|
+
*
|
|
92
|
+
* 🛑 OPTIONAL, and omitted by the obligation sweep on purpose.
|
|
93
|
+
* `HistoryActor.uid`'s own doc says it is "absent for `system` (cron jobs,
|
|
94
|
+
* Firestore triggers)", so stamping a literal `"system"` into a field that
|
|
95
|
+
* otherwise only ever holds Firebase uids would make `actorUid === someUid`
|
|
96
|
+
* comparisons quietly wrong and would read, in a timeline, as a user account
|
|
97
|
+
* named system.
|
|
98
|
+
*/
|
|
99
|
+
actorUid?: string;
|
|
100
|
+
actorRole: HistoryActor["role"];
|
|
101
|
+
/** Overrides the history trigger label with the calling path's name. */
|
|
102
|
+
trigger?: string;
|
|
103
|
+
}
|
|
104
|
+
export interface CancelWithRefundResult {
|
|
105
|
+
order: OrderDocument;
|
|
106
|
+
refund: CancellationRefundOutcome;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Cancel an order and settle whatever money that owes.
|
|
110
|
+
*
|
|
111
|
+
* Callers pass the order they have already fetched and authorised. That is not
|
|
112
|
+
* only a saved read: the authorisation differs per caller (a buyer owns the
|
|
113
|
+
* order, a seller owns the store, an admin owns neither) and this function must
|
|
114
|
+
* not be the place that decides it.
|
|
115
|
+
*/
|
|
116
|
+
export declare function cancelOrderWithRefund(order: OrderDocument, opts: CancelWithRefundOptions): Promise<CancelWithRefundResult>;
|