@mohasinac/appkit 4.52.4 → 4.53.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 +4 -4
- package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
- package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
- package/dist/_internal/server/features/auctions/actions.js +1 -1
- package/dist/_internal/server/features/categories/data.js +23 -7
- package/dist/_internal/server/features/checkout/actions.js +10 -3
- package/dist/_internal/server/features/checkout/data.d.ts +15 -0
- package/dist/_internal/server/features/checkout/data.js +20 -3
- package/dist/_internal/server/features/lottery/actions.js +9 -1
- package/dist/_internal/server/features/lottery/og.d.ts +40 -0
- package/dist/_internal/server/features/lottery/og.js +79 -0
- package/dist/_internal/server/features/messages/actions.js +4 -0
- package/dist/_internal/server/features/offers/adapters.js +17 -3
- package/dist/_internal/server/features/orders/actions.js +7 -2
- package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
- package/dist/_internal/server/features/raffle/actions.js +25 -0
- package/dist/_internal/server/features/reviews/actions.js +1 -1
- package/dist/_internal/server/features/reviews/data.d.ts +1 -1
- package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
- package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
- package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
- package/dist/_internal/server/features/search/index-build/build.js +285 -0
- package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
- package/dist/_internal/server/features/search/index-build/sources.js +385 -0
- package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
- package/dist/_internal/server/features/search/search-sources.js +142 -7
- package/dist/_internal/server/features/seo/robots.js +21 -1
- package/dist/_internal/server/features/seo/sitemap.js +1 -1
- package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
- package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
- package/dist/_internal/server/features/site-settings/adapters.js +26 -0
- package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
- package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
- package/dist/_internal/server/features/sticker-trace/adapters.d.ts +80 -0
- package/dist/_internal/server/features/sticker-trace/adapters.js +174 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
- package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
- package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
- package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
- package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
- package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
- package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
- package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
- package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +141 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.js +279 -0
- package/dist/_internal/server/features/sticker-trace/storage.d.ts +135 -0
- package/dist/_internal/server/features/sticker-trace/storage.js +282 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +25 -1
- package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
- package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
- package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
- package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
- package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
- package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
- package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
- package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
- package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
- package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
- package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
- package/dist/_internal/server/jobs/core/promotions.js +7 -4
- package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
- package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
- package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
- package/dist/_internal/shared/actions/action-registry.js +29 -0
- package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
- package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
- package/dist/_internal/shared/features/events/config.d.ts +14 -0
- package/dist/_internal/shared/features/events/config.js +14 -0
- package/dist/_internal/shared/features/notifications/action-url.js +8 -0
- package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
- package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
- package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
- package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
- package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
- package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
- package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
- package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
- package/dist/_internal/shared/listing-types/_registry.d.ts +11 -0
- package/dist/_internal/shared/listing-types/art/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/art/config.js +1 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/auction/config.js +1 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/classified/config.js +1 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +1 -0
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
- package/dist/_internal/shared/listing-types/feature-flags.js +9 -0
- package/dist/_internal/shared/listing-types/live/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/live/config.js +1 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +1 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/standard/config.js +1 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +1 -0
- package/dist/_internal/shared/media/limits.d.ts +12 -2
- package/dist/_internal/shared/media/limits.js +12 -2
- package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
- package/dist/_internal/shared/search/artifact-url.js +119 -0
- package/dist/_internal/shared/search/index-record.d.ts +68 -0
- package/dist/_internal/shared/search/index-record.js +96 -0
- package/dist/_internal/shared/search/match.d.ts +65 -0
- package/dist/_internal/shared/search/match.js +263 -0
- package/dist/client.d.ts +8 -7
- package/dist/client.js +12 -5
- package/dist/configs/eslint.js +22 -2
- package/dist/constants/api-endpoints.d.ts +68 -0
- package/dist/constants/api-endpoints.js +32 -0
- package/dist/constants/field-names.d.ts +7 -1
- package/dist/constants/field-names.js +36 -1
- package/dist/contracts/repository.d.ts +8 -7
- package/dist/contracts/search.d.ts +2 -2
- package/dist/contracts/table.d.ts +3 -3
- package/dist/contracts/table.js +3 -3
- package/dist/core/contact-submissions.repository.js +2 -2
- package/dist/core/integration-keys.js +7 -1
- package/dist/core/newsletter.repository.js +2 -2
- package/dist/core/site-config.js +1 -1
- package/dist/errors/error-codes.d.ts +30 -0
- package/dist/errors/error-codes.js +30 -0
- package/dist/errors/error-display-map.js +40 -1
- package/dist/features/account/api/[userId]/addresses/route.js +1 -1
- package/dist/features/account/components/UserBidsView.js +1 -1
- package/dist/features/account/components/index.d.ts +0 -8
- package/dist/features/account/components/index.js +0 -4
- package/dist/features/addresses/repository/addresses.repository.d.ts +17 -6
- package/dist/features/addresses/repository/addresses.repository.js +65 -9
- package/dist/features/addresses/schemas/firestore.d.ts +17 -6
- package/dist/features/admin/actions/notification-actions.js +15 -6
- package/dist/features/admin/api/bids/route.js +1 -1
- package/dist/features/admin/api/coupons/route.js +1 -1
- package/dist/features/admin/api/products/route.js +1 -1
- package/dist/features/admin/api/reviews/route.js +1 -1
- package/dist/features/admin/components/AdminAdEditorView.js +19 -5
- package/dist/features/admin/components/AdminAuditLogView.js +1 -1
- package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
- package/dist/features/admin/components/AdminBlogView.js +1 -1
- package/dist/features/admin/components/AdminBrandsView.js +17 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +0 -1
- package/dist/features/admin/components/AdminContactView.js +1 -1
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
- package/dist/features/admin/components/AdminNewsletterView.js +1 -1
- package/dist/features/admin/components/AdminOrdersView.js +9 -2
- package/dist/features/admin/components/AdminPayoutsView.js +1 -1
- package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
- package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
- package/dist/features/admin/components/AdminProductEditorView.js +24 -37
- package/dist/features/admin/components/AdminProductsView.js +10 -3
- package/dist/features/admin/components/AdminScammersView.js +1 -1
- package/dist/features/admin/components/AdminSectionsView.js +21 -5
- package/dist/features/admin/components/AdminSessionsView.js +1 -1
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
- package/dist/features/admin/components/AdminTeamView.js +1 -1
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
- package/dist/features/admin/components/AdminUsersView.js +1 -1
- package/dist/features/admin/components/DataListingView.d.ts +2 -1
- package/dist/features/admin/components/DataListingView.js +9 -4
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
- package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
- package/dist/features/admin/repository/site-settings.repository.js +8 -3
- package/dist/features/admin/schemas/firestore.d.ts +62 -1
- package/dist/features/admin/schemas/firestore.js +32 -0
- package/dist/features/admin/types/index.d.ts +1 -1
- package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
- package/dist/features/auctions/actions/bid-actions.js +16 -4
- package/dist/features/auctions/api/route.js +1 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
- package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
- package/dist/features/auctions/repository/bid.repository.js +114 -13
- package/dist/features/auctions/schemas/firestore.d.ts +24 -4
- package/dist/features/auctions/schemas/firestore.js +1 -0
- package/dist/features/auth/actions/profile-actions.js +30 -4
- package/dist/features/auth/components/index.d.ts +0 -1
- package/dist/features/auth/components/index.js +0 -1
- package/dist/features/auth/repository/session.repository.d.ts +17 -3
- package/dist/features/auth/repository/session.repository.js +46 -5
- package/dist/features/auth/repository/token.repository.d.ts +27 -4
- package/dist/features/auth/repository/token.repository.js +65 -11
- package/dist/features/auth/repository/user.repository.d.ts +33 -7
- package/dist/features/auth/repository/user.repository.js +100 -15
- package/dist/features/auth/schemas/firestore.d.ts +63 -12
- package/dist/features/auth/schemas/firestore.js +11 -0
- package/dist/features/before-after/api/route.js +1 -1
- package/dist/features/blog/components/BlogListView.js +16 -3
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/blog/schemas/index.d.ts +2 -2
- package/dist/features/cart/api/route.js +1 -1
- package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
- package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
- package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
- package/dist/features/categories/api/route.js +10 -10
- package/dist/features/categories/components/CategoryDetailPageView.js +35 -5
- package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
- package/dist/features/categories/components/index.d.ts +0 -2
- package/dist/features/categories/components/index.js +0 -1
- package/dist/features/categories/repository/categories.repository.d.ts +1 -0
- package/dist/features/categories/repository/categories.repository.js +31 -1
- package/dist/features/categories/schemas/index.d.ts +2 -2
- package/dist/features/categories/utils/taxonomy-visual.d.ts +21 -0
- package/dist/features/categories/utils/taxonomy-visual.js +58 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
- package/dist/features/collections/api/[slug]/route.js +3 -3
- package/dist/features/collections/api/route.js +1 -1
- package/dist/features/consultation/api/route.js +1 -1
- package/dist/features/consultation/repository/consultations.repository.js +1 -1
- package/dist/features/consultation/types/index.d.ts +1 -1
- package/dist/features/contact/components/ContactForm.js +1 -3
- package/dist/features/corporate/api/route.js +1 -1
- package/dist/features/corporate/repository/corporate.repository.js +1 -1
- package/dist/features/corporate/types/index.d.ts +1 -1
- package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
- package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
- package/dist/features/events/actions/event-actions.d.ts +14 -0
- package/dist/features/events/actions/event-actions.js +82 -3
- package/dist/features/events/api/[id]/route.js +2 -2
- package/dist/features/events/components/AdminEventEditorView.js +22 -3
- package/dist/features/events/components/AdminEventsView.js +32 -8
- package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
- package/dist/features/events/components/EventRafflesSection.js +52 -3
- package/dist/features/events/components/SpinWheelView.d.ts +2 -2
- package/dist/features/events/components/SpinWheelView.js +41 -4
- package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
- package/dist/features/events/repository/event-entry.repository.js +41 -7
- package/dist/features/events/schemas/firestore.d.ts +17 -4
- package/dist/features/events/types/index.d.ts +37 -0
- package/dist/features/faq/repository/faqs.repository.js +1 -1
- package/dist/features/faq/schemas/index.d.ts +5 -2
- package/dist/features/faq/schemas/index.js +6 -0
- package/dist/features/faq/types/index.d.ts +0 -1
- package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
- package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
- package/dist/features/homepage/api/carousel/route.js +4 -4
- package/dist/features/homepage/api/route.js +2 -2
- package/dist/features/homepage/api/sections/route.js +1 -1
- package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
- package/dist/features/homepage/components/AnnouncementBar.js +13 -19
- package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
- package/dist/features/homepage/components/index.d.ts +0 -2
- package/dist/features/homepage/components/index.js +0 -1
- package/dist/features/homepage/repository/homepage.repository.js +1 -1
- package/dist/features/homepage/schemas/firestore.d.ts +6 -0
- package/dist/features/homepage/schemas/index.d.ts +10 -10
- package/dist/features/layout/AppLayoutShell.d.ts +12 -3
- package/dist/features/layout/AppLayoutShell.js +65 -13
- package/dist/features/layout/BottomActionsContext.d.ts +16 -0
- package/dist/features/layout/BottomActionsContext.js +5 -0
- package/dist/features/layout/BottomChrome.js +48 -9
- package/dist/features/layout/BottomNavbar.d.ts +14 -0
- package/dist/features/layout/BottomNavbar.js +43 -3
- package/dist/features/layout/MainNavbar.d.ts +11 -0
- package/dist/features/layout/NavbarLayout.d.ts +3 -0
- package/dist/features/layout/NavbarLayout.js +88 -11
- package/dist/features/layout/SideActionDock.d.ts +1 -0
- package/dist/features/layout/SideActionDock.js +219 -0
- package/dist/features/layout/TitleBarLayout.d.ts +1 -3
- package/dist/features/layout/TitleBarLayout.js +3 -4
- package/dist/features/layout/cta-anchor.d.ts +31 -0
- package/dist/features/layout/cta-anchor.js +31 -0
- package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
- package/dist/features/layout/hooks/useBottomActions.js +6 -1
- package/dist/features/layout/index.d.ts +9 -1
- package/dist/features/layout/index.js +9 -1
- package/dist/features/layout/useCtaReveal.d.ts +24 -0
- package/dist/features/layout/useCtaReveal.js +82 -0
- package/dist/features/layout/useHoldToOpen.d.ts +41 -0
- package/dist/features/layout/useHoldToOpen.js +84 -0
- package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
- package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
- package/dist/features/lottery/schemas/firestore.d.ts +33 -5
- package/dist/features/loyalty/api/balance/route.js +1 -1
- package/dist/features/loyalty/api/history/route.js +1 -1
- package/dist/features/media/MediaImage.js +0 -1
- package/dist/features/media/MediaPickerModal.js +7 -1
- package/dist/features/media/modals/ImageEditor.js +5 -1
- package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
- package/dist/features/media/repository/media-assets.repository.d.ts +19 -0
- package/dist/features/media/upload/CameraCapture.js +16 -1
- package/dist/features/media/upload/ImageUpload.js +42 -4
- package/dist/features/media/upload/MediaUploadField.js +69 -13
- package/dist/features/media/upload/downscale-image.d.ts +56 -0
- package/dist/features/media/upload/downscale-image.js +150 -0
- package/dist/features/messages/components/ConversationThreadView.js +45 -2
- package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
- package/dist/features/messages/components/MessageSellerButton.js +10 -2
- package/dist/features/messages/schemas/firestore.d.ts +15 -0
- package/dist/features/orders/hooks/useOrders.js +4 -2
- package/dist/features/orders/repository/orders.repository.d.ts +15 -4
- package/dist/features/orders/repository/orders.repository.js +52 -20
- package/dist/features/orders/schemas/firestore.d.ts +15 -4
- package/dist/features/orders/schemas/index.d.ts +8 -8
- package/dist/features/orders/types/index.d.ts +2 -2
- package/dist/features/payments/repository/payments.repository.js +2 -2
- package/dist/features/payments/repository/payout.repository.d.ts +23 -6
- package/dist/features/payments/repository/payout.repository.js +63 -23
- package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
- package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
- package/dist/features/payments/schemas/firestore.d.ts +14 -3
- package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
- package/dist/features/pre-orders/api/[slug]/route.js +1 -1
- package/dist/features/pre-orders/api/admin/route.js +1 -1
- package/dist/features/pre-orders/api/route.js +1 -1
- package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
- package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
- package/dist/features/products/api/[id]/route.js +1 -1
- package/dist/features/products/components/ListingBottomActions.js +4 -0
- package/dist/features/products/components/ProductDetailPageView.js +2 -1
- package/dist/features/products/components/ProductGalleryClient.js +2 -2
- package/dist/features/products/components/ProductGrid.js +12 -1
- package/dist/features/products/components/index.d.ts +0 -2
- package/dist/features/products/components/index.js +0 -1
- package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
- package/dist/features/products/config/listing-type-listing-config.js +27 -2
- package/dist/features/products/constants/listing-tabs.d.ts +9 -0
- package/dist/features/products/constants/listing-tabs.js +3 -2
- package/dist/features/products/hooks/useProducts.js +2 -2
- package/dist/features/products/repository/products.repository.js +13 -1
- package/dist/features/products/schemas/index.d.ts +2 -2
- package/dist/features/products/types/index.d.ts +1 -1
- package/dist/features/promotions/api/route.js +1 -1
- package/dist/features/reviews/actions/review-actions.d.ts +6 -6
- package/dist/features/reviews/actions/review-actions.js +22 -8
- package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
- package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
- package/dist/features/reviews/repository/reviews.repository.js +63 -12
- package/dist/features/reviews/schemas/firestore.d.ts +13 -2
- package/dist/features/reviews/schemas/index.d.ts +2 -2
- package/dist/features/scams/actions/scam-actions.js +16 -4
- package/dist/features/search/components/SearchResultsPageView.js +2 -1
- package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
- package/dist/features/search/hooks/useSearchIndex.js +172 -0
- package/dist/features/search/repository/search.repository.js +2 -2
- package/dist/features/seller/actions/offer-actions.d.ts +5 -5
- package/dist/features/seller/actions/offer-actions.js +38 -8
- package/dist/features/seller/actions/seller-actions.js +34 -7
- package/dist/features/seller/api/coupons/route.js +1 -1
- package/dist/features/seller/api/products/route.js +1 -1
- package/dist/features/seller/api/store/route.js +1 -1
- package/dist/features/seller/components/SellerBidsView.js +1 -1
- package/dist/features/seller/components/SellerCouponsView.js +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +9 -1
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutSettingsView.js +0 -1
- package/dist/features/seller/components/SellerPayoutsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.js +0 -1
- package/dist/features/seller/components/SellerProductsView.js +1 -1
- package/dist/features/seller/components/SellerShippingView.js +0 -1
- package/dist/features/seller/components/SellerStorefrontView.js +0 -1
- package/dist/features/seller/components/index.d.ts +0 -4
- package/dist/features/seller/components/index.js +0 -2
- package/dist/features/seller/repository/offer.repository.d.ts +15 -3
- package/dist/features/seller/repository/offer.repository.js +43 -7
- package/dist/features/seller/schemas/firestore.d.ts +14 -3
- package/dist/features/seller/schemas/index.d.ts +4 -4
- package/dist/features/seller/schemas/order-forms.d.ts +39 -0
- package/dist/features/seller/schemas/order-forms.js +37 -0
- package/dist/features/shell/FormShell.js +6 -2
- package/dist/features/shell/QuickFormDrawer.js +15 -1
- package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
- package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
- package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
- package/dist/features/sticker-trace/constants/help-content.js +172 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
- package/dist/features/sticker-trace/schemas/firestore.d.ts +248 -0
- package/dist/features/sticker-trace/schemas/firestore.js +79 -0
- package/dist/features/sticker-trace/server.d.ts +8 -0
- package/dist/features/sticker-trace/server.js +51 -0
- package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
- package/dist/features/stores/actions/store-query-actions.js +7 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
- package/dist/features/stores/api/[storeSlug]/route.js +1 -1
- package/dist/features/stores/components/StoreNavTabs.js +17 -2
- package/dist/features/stores/manifest.js +8 -4
- package/dist/features/support/repository/support.repository.d.ts +14 -3
- package/dist/features/support/repository/support.repository.js +93 -13
- package/dist/features/support/schemas/firestore.d.ts +16 -5
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +243 -0
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +85 -0
- package/dist/features/tester/seed-data/authored/index.js +10 -0
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +283 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +235 -22
- package/dist/index.d.ts +10 -23
- package/dist/index.js +27 -19
- package/dist/next/api/routeHandler.js +9 -0
- package/dist/next/routing/require-record.d.ts +13 -0
- package/dist/next/routing/require-record.js +62 -0
- package/dist/next/routing/route-map.d.ts +4 -4
- package/dist/next/routing/route-map.js +25 -3
- package/dist/providers/db-firebase/base.d.ts +4 -2
- package/dist/providers/db-firebase/base.js +21 -5
- package/dist/providers/db-firebase/base.repository.d.ts +11 -9
- package/dist/providers/db-firebase/base.repository.js +19 -0
- package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
- package/dist/providers/db-firebase/rtdb-paths.js +12 -0
- package/dist/react/ErrorBoundary.js +6 -1
- package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
- package/dist/react/hooks/realtime-event-constants.js +8 -0
- package/dist/react/hooks/useEntityDelete.js +5 -1
- package/dist/react/hooks/useMessage.js +5 -1
- package/dist/repositories/index.d.ts +2 -2
- package/dist/repositories/index.js +6 -1
- package/dist/schemas/registry.d.ts +13 -20
- package/dist/schemas/registry.js +31 -14
- package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
- package/dist/security/encrypted.d.ts +117 -0
- package/dist/security/encrypted.js +100 -0
- package/dist/security/index.d.ts +5 -2
- package/dist/security/index.js +16 -2
- package/dist/security/pii-accessors.d.ts +71 -0
- package/dist/security/pii-accessors.js +150 -0
- package/dist/security/pii-encrypt.d.ts +0 -8
- package/dist/security/pii-encrypt.js +22 -15
- package/dist/security/pii-mask.d.ts +18 -0
- package/dist/security/pii-mask.js +27 -0
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
- package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
- package/dist/seed/addresses-seed-data.d.ts +2 -2
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +34 -0
- package/dist/seed/authenticity-knowledge-seed-data.js +1277 -0
- package/dist/seed/bids-seed-data.d.ts +2 -2
- package/dist/seed/bids-seed-data.js +23 -2
- package/dist/seed/events-seed-data.d.ts +2 -2
- package/dist/seed/events-seed-data.js +5 -0
- package/dist/seed/faq-seed-data.js +175 -5
- package/dist/seed/homepage-sections-seed-data.js +39 -23
- package/dist/seed/index.d.ts +1 -0
- package/dist/seed/index.js +1 -0
- package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
- package/dist/seed/offers-seed-data.d.ts +2 -2
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.d.ts +2 -2
- package/dist/seed/payouts-seed-data.d.ts +2 -2
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/reviews-seed-data.d.ts +1 -2
- package/dist/seed/seed-purpose.js +7 -0
- package/dist/seed/sessions-seed-data.d.ts +2 -2
- package/dist/seed/sessions-seed-data.js +5 -0
- package/dist/seed/site-settings-seed-data.js +1 -1
- package/dist/seed/support-tickets-seed-data.d.ts +2 -2
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/users-seed-data.d.ts +2 -2
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seo/json-ld.js +5 -1
- package/dist/server.d.ts +18 -3
- package/dist/server.js +59 -3
- package/dist/styles.css +237 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Button.js +7 -1
- package/dist/ui/components/FilterChipGroup.d.ts +11 -0
- package/dist/ui/components/FilterChipGroup.js +1 -1
- package/dist/ui/components/ImageGallery.js +6 -1
- package/dist/ui/components/ListingLayout.js +14 -8
- package/dist/ui/components/OverflowRow.d.ts +92 -0
- package/dist/ui/components/OverflowRow.js +203 -0
- package/dist/ui/components/OverflowRow.style.css +235 -0
- package/dist/ui/components/RecordDetailModal.js +14 -1
- package/dist/ui/components/RowActionMenu.js +5 -1
- package/dist/ui/components/SideDrawer.js +5 -1
- package/dist/ui/components/SideModal.js +9 -1
- package/dist/ui/components/TabBarShell.d.ts +12 -1
- package/dist/ui/components/TabBarShell.js +3 -2
- package/dist/ui/components/Tabs.js +36 -24
- package/dist/ui/components/Toast.d.ts +3 -24
- package/dist/ui/components/Toast.js +2 -19
- package/dist/ui/components/TopBannerPortal.d.ts +15 -0
- package/dist/ui/components/TopBannerPortal.js +19 -0
- package/dist/ui/components/UnsavedChangesModal.js +5 -1
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/components/row-collapse.d.ts +15 -0
- package/dist/ui/components/row-collapse.js +127 -0
- package/dist/ui/components/toast-context.d.ts +63 -0
- package/dist/ui/components/toast-context.js +48 -0
- package/dist/ui/components/top-banner-slot.d.ts +37 -0
- package/dist/ui/components/top-banner-slot.js +45 -0
- package/dist/ui/icons/icon-registry.d.ts +6 -0
- package/dist/ui/icons/icon-registry.js +17 -1
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/dist/utils/array.helper.d.ts +2 -2
- package/dist/utils/array.helper.js +5 -5
- package/dist/utils/id-generators.d.ts +6 -0
- package/dist/utils/id-generators.js +10 -0
- package/dist/utils/media-url.js +0 -2
- package/dist/utils/search-txt-builders.d.ts +28 -4
- package/dist/utils/search-txt-builders.js +41 -1
- package/dist/validation/schemas.d.ts +8 -8
- package/package.json +6 -2
- package/scripts/seed-cli.mjs +3 -0
- package/dist/features/account/components/UserAddressesView.d.ts +0 -13
- package/dist/features/account/components/UserAddressesView.js +0 -5
- package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
- package/dist/features/account/components/UserNotificationsView.js +0 -12
- package/dist/features/account/components/UserSettingsView.d.ts +0 -16
- package/dist/features/account/components/UserSettingsView.js +0 -13
- package/dist/features/account/components/UserSupportView.d.ts +0 -3
- package/dist/features/account/components/UserSupportView.js +0 -166
- package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
- package/dist/features/admin/components/DemoSeedView.js +0 -5
- package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
- package/dist/features/auth/components/AuthStatusPanel.js +0 -22
- package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
- package/dist/features/categories/components/CategoryProductsView.js +0 -21
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
- package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
- package/dist/features/layout/BottomActions.d.ts +0 -1
- package/dist/features/layout/BottomActions.js +0 -311
- package/dist/features/products/components/ProductsView.d.ts +0 -6
- package/dist/features/products/components/ProductsView.js +0 -5
- package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
- package/dist/features/seller/components/SellerStoreView.js +0 -8
package/dist/client.js
CHANGED
|
@@ -60,6 +60,7 @@ export { Alert } from "./ui/components/Alert.js";
|
|
|
60
60
|
export { Divider } from "./ui/components/Divider.js";
|
|
61
61
|
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./ui/components/Tabs.js";
|
|
62
62
|
export { TabBarShell, TabBarButton, TabsNavSelect } from "./ui/components/TabBarShell.js";
|
|
63
|
+
export { OverflowRow } from "./ui/components/OverflowRow.js";
|
|
63
64
|
export { SellerProductsView } from "./features/seller/components/SellerProductsView.js";
|
|
64
65
|
export { SellerOrderDetailPanel } from "./features/seller/components/SellerOrdersView.js";
|
|
65
66
|
export { SellerPayoutDetailContent } from "./features/seller/components/SellerPayoutsView.js";
|
|
@@ -310,7 +311,7 @@ export { buildBidDetailFields, bidStatusBadge } from "./features/auctions/compon
|
|
|
310
311
|
// Same reason, one feature over: the entry detail modal and its full page
|
|
311
312
|
// render from one builder rather than two lists that can drift.
|
|
312
313
|
export { buildEventEntryDetailFields } from "./features/events/components/event-entry-detail-fields.js";
|
|
313
|
-
export { ProtectedRoute,
|
|
314
|
+
export { ProtectedRoute, ForgotPasswordView, LoginForm, RegisterForm, ResetPasswordView, VerifyEmailView } from "./features/auth/index.js";
|
|
314
315
|
export { useLogout, useLogin, useGoogleLogin, useLinkGoogleAccount, useRegister, useForgotPassword, useResetPassword, useVerifyEmail, useChangeEmail } from "./features/auth/index.js";
|
|
315
316
|
export { CartView, CartItemRow, CartGroupLineRow, CartSummary, CartPriceBreakdown, CartDrawer, CheckoutView, CheckoutSuccessView, CheckoutAddressStep, useGuestCart, useCartCount, useAddToCart, useCart, useGuestCartMerge, useCartQuery } from "./features/cart/index.js";
|
|
316
317
|
export { StoreAddonsPicker, hasAnyStoreAddon } from "./features/cart/index.js";
|
|
@@ -323,12 +324,18 @@ export { useAddresses, useCreateAddress, useUpdateAddress, useDeleteAddress, use
|
|
|
323
324
|
export { AddressBook, AddressCard, AddressForm } from "./features/account/index.js";
|
|
324
325
|
export { useProfile, useUpdateProfile } from "./features/account/index.js";
|
|
325
326
|
export { updateProfileSchema } from "./features/account/index.js";
|
|
326
|
-
export { CategoryProductsView } from "./features/categories/index.js";
|
|
327
327
|
export { MediaImage } from "./features/media/index.js";
|
|
328
328
|
export { StoreSidebar } from "./features/seller/components/SellerSidebar.js";
|
|
329
329
|
export { StoreProductsView, StoreAboutView } from "./features/stores/index.js";
|
|
330
330
|
export { SearchView } from "./features/search/index.js";
|
|
331
|
-
|
|
331
|
+
/*
|
|
332
|
+
* The browser-side search index. Exported from its DEFINING module rather
|
|
333
|
+
* than through `features/search/index` (Root Cause #18) — `ensureSearchIndex`
|
|
334
|
+
* is a module-scope singleton, and routing it through a barrel is how a
|
|
335
|
+
* second copy of that module ends up in the graph, at which point the "one
|
|
336
|
+
* fetch per page session" guarantee quietly becomes two.
|
|
337
|
+
*/
|
|
338
|
+
export { useSearchIndex, ensureSearchIndex } from "./features/search/hooks/useSearchIndex.js";
|
|
332
339
|
export { AdSlot } from "./features/homepage/components/AdSlot.js";
|
|
333
340
|
export { useActiveAd } from "./features/homepage/hooks/useActiveAd.js";
|
|
334
341
|
export { registerAdSlot, registerAdSlots, unregisterAdSlot, clearAdRegistry, setAdConsentGranted, isAdConsentGranted, isAdSlotRenderable, } from "./features/homepage/ad-registry.js";
|
|
@@ -385,7 +392,7 @@ export { SellerDashboardView as StoreDashboardView, SellerDashboardView, useSell
|
|
|
385
392
|
export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView, PrintCenterView, SellerOffersView, SellerGroupedListingsView, StoreGroupedListingsView, SellerAnalyticsAlertsView, StoreAnalyticsAlertsView, BarcodeField, FulfillmentView, SellerListingTypeView, SELLER_LISTING_TYPE_SPECS } from "./features/seller/components/index.js";
|
|
386
393
|
/* The draft → route conversion, so both coupon callsites share one rule. */
|
|
387
394
|
export { couponDraftToPayload } from "./features/seller/schemas/coupon-form.js";
|
|
388
|
-
export { UserAccountHubView, UserOrdersView, UserBidsView, OrderDetailView,
|
|
395
|
+
export { UserAccountHubView, UserOrdersView, UserBidsView, OrderDetailView, UserReturnsView, useNotifications } from "./features/account/index.js";
|
|
389
396
|
export { useOrders, useOrder, OrdersList } from "./features/orders/index.js";
|
|
390
397
|
export { OrderStatusTimeline } from "./features/orders/components/OrderStatusTimeline.js";
|
|
391
398
|
export { CountdownDisplay } from "./ui/components/CountdownDisplay.js";
|
|
@@ -415,7 +422,7 @@ export { normalizeListingType, isAuctionListing, isPreOrderListing, isStandardLi
|
|
|
415
422
|
// `finalSale` field. See the module docstring for why `!p.finalSale` is wrong.
|
|
416
423
|
export { isFinalSale, acceptsChangeOfMindReturns, } from "./features/products/constants/final-sale.js";
|
|
417
424
|
// SB-UNI-X4 2026-05-13 — per-type feature-flag helpers (client-safe).
|
|
418
|
-
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, } from "./_internal/shared/listing-types/feature-flags.js";
|
|
425
|
+
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, isListingType, } from "./_internal/shared/listing-types/feature-flags.js";
|
|
419
426
|
// SB-UNI-X5 2026-05-13 — action telemetry sink (client-safe; defaults to
|
|
420
427
|
// a no-op + console.debug in dev).
|
|
421
428
|
export { actionTracker, setActionTrackerSink, resetActionTrackerSink, } from "./_internal/shared/listing-types/action-tracker.js";
|
package/dist/configs/eslint.js
CHANGED
|
@@ -25,8 +25,28 @@
|
|
|
25
25
|
*/
|
|
26
26
|
const VARIANT_CATALOGUE_RULES = [
|
|
27
27
|
{
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
/*
|
|
29
|
+
* Hardcoded route strings — use ROUTES.* constants.
|
|
30
|
+
*
|
|
31
|
+
* 🛑 The `:not(Property[key.name="route"] > Literal)` is load-bearing, not
|
|
32
|
+
* tidying. `safeRead({ route: "/products", key, fallback })` takes a route
|
|
33
|
+
* as an OBSERVABILITY LABEL — it is the string that appears on a
|
|
34
|
+
* DEGRADED_READ row, never something anything navigates to. Flagging it
|
|
35
|
+
* asked for `ROUTES.PUBLIC.PRODUCTS` in a log field.
|
|
36
|
+
*
|
|
37
|
+
* Measured 2026-10-17 across appkit/src: this rule produced 741 warnings
|
|
38
|
+
* of which 23 were real — a 97% false-positive rate. 653 were tester-case
|
|
39
|
+
* hrefs that MUST be literals (see the file-scoped exemption in the
|
|
40
|
+
* consumer's eslint.config.mjs), 43 were inside route-map.ts itself, and
|
|
41
|
+
* 22 were these labels. A rule at that ratio is not a soft gate, it is
|
|
42
|
+
* noise that teaches people to scroll past the other 23.
|
|
43
|
+
*
|
|
44
|
+
* 🛑 The combinator is DESCENDANT, not child. `>` missed
|
|
45
|
+
* `route: verifiedOnly ? "/sellers" : "/stores"`, where the literal's
|
|
46
|
+
* parent is the ConditionalExpression and not the Property — so a label
|
|
47
|
+
* behind a ternary was still flagged while the plain one beside it was not.
|
|
48
|
+
*/
|
|
49
|
+
selector: 'Literal[value=/^\\/[a-z]+(\\?|#|$)/]:not(Property[key.name="route"] Literal)',
|
|
30
50
|
message: "Use ROUTES.* constants from @mohasinac/appkit instead of hardcoded route strings.",
|
|
31
51
|
},
|
|
32
52
|
{
|
|
@@ -287,6 +287,36 @@ export declare const TOOL_ENDPOINTS: {
|
|
|
287
287
|
*/
|
|
288
288
|
readonly PRICE_INDEX_SEARCH: (q: string) => string;
|
|
289
289
|
};
|
|
290
|
+
/**
|
|
291
|
+
* The sticker-sheet kiss-cut tracer. Admin-only, every route behind
|
|
292
|
+
* `admin:products:write`.
|
|
293
|
+
*
|
|
294
|
+
* 🛑 EVERY ONE OF THESE RETURNS JSON. Not one returns bytes — a binary is
|
|
295
|
+
* always a 5-minute signed GCS URL fetched by the browser directly, which is
|
|
296
|
+
* why `ASSET` takes a KIND and hands back `{ url, expiresAt }`. Vercel Hobby's
|
|
297
|
+
* Fast Origin Transfer allowance is 10 GB and exceeding a cap PAUSES THE
|
|
298
|
+
* PROJECT, which happened here at 52.52 GB (Root Cause #104).
|
|
299
|
+
* `audit-sticker-trace-egress` is strict-zero on it with no suppression marker.
|
|
300
|
+
*/
|
|
301
|
+
export declare const STICKER_SHEET_ENDPOINTS: {
|
|
302
|
+
/** GET the sheet list · POST creates a sheet AND signs its scan upload. */
|
|
303
|
+
readonly SHEETS: "/api/admin/sticker-sheets";
|
|
304
|
+
readonly SHEET_BY_ID: (id: string) => string;
|
|
305
|
+
/** POST finalizes an upload: magic-byte verified, then recorded on the sheet. */
|
|
306
|
+
readonly UPLOAD: (id: string) => string;
|
|
307
|
+
/** GET the attempt history · POST starts a run. 🛑 `name` is REQUIRED. */
|
|
308
|
+
readonly RUNS: (id: string) => string;
|
|
309
|
+
/** POST a retry as a NEW named run. The response carries the resume clamp. */
|
|
310
|
+
readonly RUN_RETRY: (id: string, runId: string) => string;
|
|
311
|
+
/**
|
|
312
|
+
* Mint a signed read URL. `kind` names WHAT is wanted and the server resolves
|
|
313
|
+
* the path itself — accepting a path would be a signed-URL mint for any
|
|
314
|
+
* object in the bucket.
|
|
315
|
+
*/
|
|
316
|
+
readonly ASSET: (id: string, kind: string, runId?: string) => string;
|
|
317
|
+
/** The storage meter — bytes AND object count, biggest sheet first. */
|
|
318
|
+
readonly USAGE: "/api/admin/sticker-sheets/usage";
|
|
319
|
+
};
|
|
290
320
|
export declare const CHECKOUT_ENDPOINTS: {
|
|
291
321
|
readonly PREFLIGHT: "/api/checkout/preflight";
|
|
292
322
|
readonly PLACE_ORDER: "/api/checkout";
|
|
@@ -1018,6 +1048,25 @@ export declare const API_ENDPOINTS: {
|
|
|
1018
1048
|
readonly REPORTS: {
|
|
1019
1049
|
readonly SUBMIT: "/api/reports";
|
|
1020
1050
|
};
|
|
1051
|
+
readonly STICKER_SHEETS: {
|
|
1052
|
+
/** GET the sheet list · POST creates a sheet AND signs its scan upload. */
|
|
1053
|
+
readonly SHEETS: "/api/admin/sticker-sheets";
|
|
1054
|
+
readonly SHEET_BY_ID: (id: string) => string;
|
|
1055
|
+
/** POST finalizes an upload: magic-byte verified, then recorded on the sheet. */
|
|
1056
|
+
readonly UPLOAD: (id: string) => string;
|
|
1057
|
+
/** GET the attempt history · POST starts a run. 🛑 `name` is REQUIRED. */
|
|
1058
|
+
readonly RUNS: (id: string) => string;
|
|
1059
|
+
/** POST a retry as a NEW named run. The response carries the resume clamp. */
|
|
1060
|
+
readonly RUN_RETRY: (id: string, runId: string) => string;
|
|
1061
|
+
/**
|
|
1062
|
+
* Mint a signed read URL. `kind` names WHAT is wanted and the server resolves
|
|
1063
|
+
* the path itself — accepting a path would be a signed-URL mint for any
|
|
1064
|
+
* object in the bucket.
|
|
1065
|
+
*/
|
|
1066
|
+
readonly ASSET: (id: string, kind: string, runId?: string) => string;
|
|
1067
|
+
/** The storage meter — bytes AND object count, biggest sheet first. */
|
|
1068
|
+
readonly USAGE: "/api/admin/sticker-sheets/usage";
|
|
1069
|
+
};
|
|
1021
1070
|
};
|
|
1022
1071
|
/** Canonical alias — prefer API_ROUTES over API_ENDPOINTS in new code. */
|
|
1023
1072
|
export declare const API_ROUTES: {
|
|
@@ -1520,4 +1569,23 @@ export declare const API_ROUTES: {
|
|
|
1520
1569
|
readonly REPORTS: {
|
|
1521
1570
|
readonly SUBMIT: "/api/reports";
|
|
1522
1571
|
};
|
|
1572
|
+
readonly STICKER_SHEETS: {
|
|
1573
|
+
/** GET the sheet list · POST creates a sheet AND signs its scan upload. */
|
|
1574
|
+
readonly SHEETS: "/api/admin/sticker-sheets";
|
|
1575
|
+
readonly SHEET_BY_ID: (id: string) => string;
|
|
1576
|
+
/** POST finalizes an upload: magic-byte verified, then recorded on the sheet. */
|
|
1577
|
+
readonly UPLOAD: (id: string) => string;
|
|
1578
|
+
/** GET the attempt history · POST starts a run. 🛑 `name` is REQUIRED. */
|
|
1579
|
+
readonly RUNS: (id: string) => string;
|
|
1580
|
+
/** POST a retry as a NEW named run. The response carries the resume clamp. */
|
|
1581
|
+
readonly RUN_RETRY: (id: string, runId: string) => string;
|
|
1582
|
+
/**
|
|
1583
|
+
* Mint a signed read URL. `kind` names WHAT is wanted and the server resolves
|
|
1584
|
+
* the path itself — accepting a path would be a signed-URL mint for any
|
|
1585
|
+
* object in the bucket.
|
|
1586
|
+
*/
|
|
1587
|
+
readonly ASSET: (id: string, kind: string, runId?: string) => string;
|
|
1588
|
+
/** The storage meter — bytes AND object count, biggest sheet first. */
|
|
1589
|
+
readonly USAGE: "/api/admin/sticker-sheets/usage";
|
|
1590
|
+
};
|
|
1523
1591
|
};
|
|
@@ -334,6 +334,37 @@ export const TOOL_ENDPOINTS = {
|
|
|
334
334
|
*/
|
|
335
335
|
PRICE_INDEX_SEARCH: (q) => `/api/tools/price-index?q=${encodeURIComponent(q)}`,
|
|
336
336
|
};
|
|
337
|
+
/**
|
|
338
|
+
* The sticker-sheet kiss-cut tracer. Admin-only, every route behind
|
|
339
|
+
* `admin:products:write`.
|
|
340
|
+
*
|
|
341
|
+
* 🛑 EVERY ONE OF THESE RETURNS JSON. Not one returns bytes — a binary is
|
|
342
|
+
* always a 5-minute signed GCS URL fetched by the browser directly, which is
|
|
343
|
+
* why `ASSET` takes a KIND and hands back `{ url, expiresAt }`. Vercel Hobby's
|
|
344
|
+
* Fast Origin Transfer allowance is 10 GB and exceeding a cap PAUSES THE
|
|
345
|
+
* PROJECT, which happened here at 52.52 GB (Root Cause #104).
|
|
346
|
+
* `audit-sticker-trace-egress` is strict-zero on it with no suppression marker.
|
|
347
|
+
*/
|
|
348
|
+
export const STICKER_SHEET_ENDPOINTS = {
|
|
349
|
+
/** GET the sheet list · POST creates a sheet AND signs its scan upload. */
|
|
350
|
+
SHEETS: "/api/admin/sticker-sheets",
|
|
351
|
+
SHEET_BY_ID: (id) => `/api/admin/sticker-sheets/${id}`,
|
|
352
|
+
/** POST finalizes an upload: magic-byte verified, then recorded on the sheet. */
|
|
353
|
+
UPLOAD: (id) => `/api/admin/sticker-sheets/${id}/upload`,
|
|
354
|
+
/** GET the attempt history · POST starts a run. 🛑 `name` is REQUIRED. */
|
|
355
|
+
RUNS: (id) => `/api/admin/sticker-sheets/${id}/runs`,
|
|
356
|
+
/** POST a retry as a NEW named run. The response carries the resume clamp. */
|
|
357
|
+
RUN_RETRY: (id, runId) => `/api/admin/sticker-sheets/${id}/runs/${runId}/retry`,
|
|
358
|
+
/**
|
|
359
|
+
* Mint a signed read URL. `kind` names WHAT is wanted and the server resolves
|
|
360
|
+
* the path itself — accepting a path would be a signed-URL mint for any
|
|
361
|
+
* object in the bucket.
|
|
362
|
+
*/
|
|
363
|
+
ASSET: (id, kind, runId) => `/api/admin/sticker-sheets/${id}/asset?kind=${encodeURIComponent(kind)}` +
|
|
364
|
+
(runId ? `&runId=${encodeURIComponent(runId)}` : ""),
|
|
365
|
+
/** The storage meter — bytes AND object count, biggest sheet first. */
|
|
366
|
+
USAGE: "/api/admin/sticker-sheets/usage",
|
|
367
|
+
};
|
|
337
368
|
// ---------------------------------------------------------------------------
|
|
338
369
|
// Checkout
|
|
339
370
|
// ---------------------------------------------------------------------------
|
|
@@ -734,6 +765,7 @@ export const API_ENDPOINTS = {
|
|
|
734
765
|
SUPPORT: SUPPORT_ENDPOINTS,
|
|
735
766
|
SCAMMERS: SCAMMER_ENDPOINTS,
|
|
736
767
|
REPORTS: REPORT_ENDPOINTS,
|
|
768
|
+
STICKER_SHEETS: STICKER_SHEET_ENDPOINTS,
|
|
737
769
|
};
|
|
738
770
|
/** Canonical alias — prefer API_ROUTES over API_ENDPOINTS in new code. */
|
|
739
771
|
export const API_ROUTES = API_ENDPOINTS;
|
|
@@ -427,7 +427,6 @@ export declare const EVENT_ENTRY_FIELDS: {
|
|
|
427
427
|
readonly USER_ID: "userId";
|
|
428
428
|
readonly USER_DISPLAY_NAME: "userDisplayName";
|
|
429
429
|
readonly USER_EMAIL: "userEmail";
|
|
430
|
-
readonly STATUS: "status";
|
|
431
430
|
readonly RAFFLE_ELIGIBLE: "raffleEligible";
|
|
432
431
|
readonly SPIN_USED: "spinUsed";
|
|
433
432
|
readonly SPIN_COUNT: "spinCount";
|
|
@@ -436,11 +435,18 @@ export declare const EVENT_ENTRY_FIELDS: {
|
|
|
436
435
|
readonly SPIN_WON_AT: "spinWonAt";
|
|
437
436
|
readonly GUEST_IP_HASH: "guestIpHash";
|
|
438
437
|
readonly CREATED_AT: "createdAt";
|
|
438
|
+
readonly STATUS: "status";
|
|
439
439
|
readonly STATUS_VALUES: {
|
|
440
440
|
readonly CONFIRMED: "CONFIRMED";
|
|
441
441
|
readonly WAITLISTED: "WAITLISTED";
|
|
442
442
|
readonly CANCELLED: "CANCELLED";
|
|
443
443
|
};
|
|
444
|
+
readonly REVIEW_STATUS: "reviewStatus";
|
|
445
|
+
readonly REVIEW_STATUS_VALUES: {
|
|
446
|
+
readonly PENDING: "pending";
|
|
447
|
+
readonly APPROVED: "approved";
|
|
448
|
+
readonly FLAGGED: "flagged";
|
|
449
|
+
};
|
|
444
450
|
};
|
|
445
451
|
export declare const PAYOUT_FIELDS: {
|
|
446
452
|
readonly ID: "id";
|
|
@@ -487,7 +487,6 @@ export const EVENT_ENTRY_FIELDS = {
|
|
|
487
487
|
USER_ID: "userId",
|
|
488
488
|
USER_DISPLAY_NAME: "userDisplayName",
|
|
489
489
|
USER_EMAIL: "userEmail",
|
|
490
|
-
STATUS: "status",
|
|
491
490
|
RAFFLE_ELIGIBLE: "raffleEligible",
|
|
492
491
|
SPIN_USED: "spinUsed",
|
|
493
492
|
SPIN_COUNT: "spinCount",
|
|
@@ -496,11 +495,47 @@ export const EVENT_ENTRY_FIELDS = {
|
|
|
496
495
|
SPIN_WON_AT: "spinWonAt",
|
|
497
496
|
GUEST_IP_HASH: "guestIpHash",
|
|
498
497
|
CREATED_AT: "createdAt",
|
|
498
|
+
/*
|
|
499
|
+
* 🛑 TWO status fields, different meanings, and conflating them cost the
|
|
500
|
+
* raffle feature its entire working life.
|
|
501
|
+
*
|
|
502
|
+
* `status` — RSVP / attendance. CONFIRMED | WAITLISTED | CANCELLED.
|
|
503
|
+
* Written ONLY by an admin clicking Confirm / Waitlist /
|
|
504
|
+
* Cancel in `AdminAllEventEntriesView`, which also filters
|
|
505
|
+
* on it. Never set when an entry is created.
|
|
506
|
+
* `reviewStatus` — moderation of what the entrant SUBMITTED.
|
|
507
|
+
* pending | approved | flagged. Written on every entry
|
|
508
|
+
* path, and indexed `(eventId, reviewStatus, submittedAt)`.
|
|
509
|
+
*
|
|
510
|
+
* `EventEntryDocument.status`'s own doc comment claims it "drives raffle
|
|
511
|
+
* eligibility", and `runTriggerEventRaffle` duly queried
|
|
512
|
+
* `status == "CONFIRMED"`. But nothing writes `status` at creation time, so
|
|
513
|
+
* the pool was empty unless an admin had hand-confirmed every entry one row
|
|
514
|
+
* at a time — on a raffle seeded with 1,892 entries. Every draw returned
|
|
515
|
+
* `no_eligible_entries`; the raffle had never once been drawable.
|
|
516
|
+
*
|
|
517
|
+
* Eligibility moved to `reviewStatus == "approved"` on 2026-10-19 (and
|
|
518
|
+
* `enterEvent` now auto-approves raffle entries, since a raffle entry is a
|
|
519
|
+
* name plus an optional message and there is nothing to moderate). `status`
|
|
520
|
+
* stays because its admin workflow is real — it just is not the gate.
|
|
521
|
+
*
|
|
522
|
+
* Both mirror `EVENT_ENTRY_FIELDS` in
|
|
523
|
+
* `features/events/schemas/firestore.ts`, which is the source of truth for
|
|
524
|
+
* the document shape — verify there before adding a value here (Root Cause
|
|
525
|
+
* #34).
|
|
526
|
+
*/
|
|
527
|
+
STATUS: "status",
|
|
499
528
|
STATUS_VALUES: {
|
|
500
529
|
CONFIRMED: "CONFIRMED",
|
|
501
530
|
WAITLISTED: "WAITLISTED",
|
|
502
531
|
CANCELLED: "CANCELLED",
|
|
503
532
|
},
|
|
533
|
+
REVIEW_STATUS: "reviewStatus",
|
|
534
|
+
REVIEW_STATUS_VALUES: {
|
|
535
|
+
PENDING: "pending",
|
|
536
|
+
APPROVED: "approved",
|
|
537
|
+
FLAGGED: "flagged",
|
|
538
|
+
},
|
|
504
539
|
};
|
|
505
540
|
// ============================================================================
|
|
506
541
|
// PAYOUT FIELDS
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Plaintext } from "../security/encrypted";
|
|
1
2
|
/** Field comparison operators supported by Sieve-style query strings. */
|
|
2
3
|
export type WhereOp = "==" | "!=" | "<" | "<=" | ">" | ">=" | "array-contains" | "in" | "not-in" | "array-contains-any";
|
|
3
4
|
/**
|
|
@@ -15,14 +16,14 @@ export interface SieveQuery {
|
|
|
15
16
|
/** 1-based page number (default: 1) */
|
|
16
17
|
page?: number;
|
|
17
18
|
/** Items per page (default: 20) */
|
|
18
|
-
|
|
19
|
+
pageSize?: number;
|
|
19
20
|
}
|
|
20
21
|
/** Paginated result envelope returned by IReadRepository.findAll() */
|
|
21
22
|
export interface PagedResult<T> {
|
|
22
23
|
data: T[];
|
|
23
24
|
total: number;
|
|
24
25
|
page: number;
|
|
25
|
-
|
|
26
|
+
pageSize: number;
|
|
26
27
|
totalPages: number;
|
|
27
28
|
}
|
|
28
29
|
export interface IReadRepository<T> {
|
|
@@ -36,10 +37,10 @@ export interface IReadRepository<T> {
|
|
|
36
37
|
findWhere<K extends keyof T>(field: K, op: WhereOp, value: T[K] | readonly T[K][]): Promise<T[]>;
|
|
37
38
|
}
|
|
38
39
|
export interface IWriteRepository<T> {
|
|
39
|
-
create(data: Omit<T
|
|
40
|
-
update(id: string, data: Partial<T
|
|
40
|
+
create(data: Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">): Promise<T>;
|
|
41
|
+
update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
|
|
41
42
|
delete(id: string): Promise<void>;
|
|
42
|
-
batchCreate(items: Array<Omit<T
|
|
43
|
+
batchCreate(items: Array<Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">>): Promise<T[]>;
|
|
43
44
|
batchDelete(ids: string[]): Promise<void>;
|
|
44
45
|
}
|
|
45
46
|
/** Full CRUD repository — combines read + write. */
|
|
@@ -95,7 +96,7 @@ export interface RepositoryLifecycleHooks<T> {
|
|
|
95
96
|
* Called before `create`. Return the (possibly mutated) data to be persisted.
|
|
96
97
|
* If not returned, the original data is used unchanged.
|
|
97
98
|
*/
|
|
98
|
-
beforeCreate?: (data: Omit<T
|
|
99
|
+
beforeCreate?: (data: Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">) => Omit<T, "id" | "createdAt" | "updatedAt"> | Promise<Omit<T, "id" | "createdAt" | "updatedAt">>;
|
|
99
100
|
/**
|
|
100
101
|
* Called after a successful `create`. Receives the persisted document.
|
|
101
102
|
*/
|
|
@@ -103,7 +104,7 @@ export interface RepositoryLifecycleHooks<T> {
|
|
|
103
104
|
/**
|
|
104
105
|
* Called before `update`. Return the (possibly mutated) partial to be applied.
|
|
105
106
|
*/
|
|
106
|
-
beforeUpdate?: (id: string, data: Partial<T
|
|
107
|
+
beforeUpdate?: (id: string, data: Partial<Plaintext<T>>) => Partial<T> | Promise<Partial<T>>;
|
|
107
108
|
/**
|
|
108
109
|
* Called after a successful `update`. Receives the updated document.
|
|
109
110
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface SearchOptions {
|
|
2
2
|
page?: number;
|
|
3
|
-
|
|
3
|
+
pageSize?: number;
|
|
4
4
|
filters?: string;
|
|
5
5
|
facets?: string[];
|
|
6
6
|
sortBy?: string;
|
|
@@ -19,7 +19,7 @@ export interface SearchResult<T> {
|
|
|
19
19
|
hits: SearchHit<T>[];
|
|
20
20
|
total: number;
|
|
21
21
|
page: number;
|
|
22
|
-
|
|
22
|
+
pageSize: number;
|
|
23
23
|
totalPages: number;
|
|
24
24
|
processingTimeMs?: number;
|
|
25
25
|
facets?: Record<string, Record<string, number>>;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* export const myPaginationConfig: PaginationConfig = {
|
|
18
18
|
* ...DEFAULT_PAGINATION_CONFIG,
|
|
19
|
-
*
|
|
19
|
+
* pageSize: 10,
|
|
20
20
|
* showPageSizeSelector: true,
|
|
21
21
|
* pageSizeOptions: [10, 25, 50],
|
|
22
22
|
* };
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
*/
|
|
34
34
|
export interface PaginationConfig {
|
|
35
35
|
/** Items per page sent to the API. Default: 20 */
|
|
36
|
-
|
|
37
|
-
/** Hard cap on
|
|
36
|
+
pageSize?: number;
|
|
37
|
+
/** Hard cap on pageSize (for page-size selector). Default: 100 */
|
|
38
38
|
maxPerPage?: number;
|
|
39
39
|
/** Show a page-size selector UI element. Default: false */
|
|
40
40
|
showPageSizeSelector?: boolean;
|
package/dist/contracts/table.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* export const myPaginationConfig: PaginationConfig = {
|
|
18
18
|
* ...DEFAULT_PAGINATION_CONFIG,
|
|
19
|
-
*
|
|
19
|
+
* pageSize: 10,
|
|
20
20
|
* showPageSizeSelector: true,
|
|
21
21
|
* pageSizeOptions: [10, 25, 50],
|
|
22
22
|
* };
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* const { products } = useProducts(params, { paginationConfig: myPaginationConfig });
|
|
29
29
|
*/
|
|
30
30
|
export const DEFAULT_PAGINATION_CONFIG = {
|
|
31
|
-
|
|
31
|
+
pageSize: 20,
|
|
32
32
|
maxPerPage: 100,
|
|
33
33
|
showPageSizeSelector: false,
|
|
34
34
|
pageSizeOptions: [10, 20, 50, 100],
|
|
@@ -44,7 +44,7 @@ export const DEFAULT_STICKY_CONFIG = {
|
|
|
44
44
|
zIndex: 10,
|
|
45
45
|
};
|
|
46
46
|
export const DEFAULT_TABLE_CONFIG = {
|
|
47
|
-
pageSize: DEFAULT_PAGINATION_CONFIG.
|
|
47
|
+
pageSize: DEFAULT_PAGINATION_CONFIG.pageSize,
|
|
48
48
|
sticky: DEFAULT_STICKY_CONFIG,
|
|
49
49
|
striped: false,
|
|
50
50
|
selectable: false,
|
|
@@ -19,12 +19,12 @@ export class ContactSubmissionsRepository {
|
|
|
19
19
|
}
|
|
20
20
|
async list(model) {
|
|
21
21
|
const page = Number(model.page || "1");
|
|
22
|
-
const
|
|
22
|
+
const pageSize = Number(model.pageSize || "50");
|
|
23
23
|
return this.repo.findAll({
|
|
24
24
|
filters: model.filters,
|
|
25
25
|
sort: model.sorts || "-createdAt",
|
|
26
26
|
page: Number.isFinite(page) ? page : 1,
|
|
27
|
-
|
|
27
|
+
pageSize: Number.isFinite(pageSize) ? pageSize : 50,
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
async findById(id) {
|
|
@@ -13,7 +13,13 @@
|
|
|
13
13
|
* const keys = await resolveKeys();
|
|
14
14
|
* const client = StandardCheckoutClient.getInstance(keys.phonepeClientId, keys.phonepeClientSecret, Number(keys.phonepeClientVersion), env);
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
/*
|
|
17
|
+
* The DEFINING module, not the `repositories` barrel. That barrel re-exports
|
|
18
|
+
* `unitOfWork` from `../core`, so coming back through it put this file inside
|
|
19
|
+
* the same cycle (`audit-import-cycles` component 2) — and Root Cause #18 asks
|
|
20
|
+
* for the defining module regardless.
|
|
21
|
+
*/
|
|
22
|
+
import { siteSettingsRepository } from "../features/admin/repository/site-settings.repository.js";
|
|
17
23
|
import { normalizeError } from "../errors/normalize.js";
|
|
18
24
|
const EMPTY_KEYS = {
|
|
19
25
|
phonepeClientId: "",
|
|
@@ -52,12 +52,12 @@ export class NewsletterRepository {
|
|
|
52
52
|
}
|
|
53
53
|
async list(model) {
|
|
54
54
|
const page = Number(model.page || "1");
|
|
55
|
-
const
|
|
55
|
+
const pageSize = Number(model.pageSize || "50");
|
|
56
56
|
const result = await this.repo.findAll({
|
|
57
57
|
filters: model.filters,
|
|
58
58
|
sort: model.sorts || "-createdAt",
|
|
59
59
|
page: Number.isFinite(page) ? page : 1,
|
|
60
|
-
|
|
60
|
+
pageSize: Number.isFinite(pageSize) ? pageSize : 50,
|
|
61
61
|
});
|
|
62
62
|
return {
|
|
63
63
|
...result,
|
package/dist/core/site-config.js
CHANGED
|
@@ -15,7 +15,7 @@ export const SITE_CONFIG = {
|
|
|
15
15
|
sellers: ROUTES.PUBLIC.SELLERS,
|
|
16
16
|
stores: ROUTES.PUBLIC.STORES,
|
|
17
17
|
events: ROUTES.PUBLIC.EVENTS,
|
|
18
|
-
blog: ROUTES.
|
|
18
|
+
blog: ROUTES.BLOG.LIST,
|
|
19
19
|
categories: ROUTES.PUBLIC.CATEGORIES,
|
|
20
20
|
promotions: ROUTES.PUBLIC.PROMOTIONS,
|
|
21
21
|
reviews: ROUTES.PUBLIC.REVIEWS,
|
|
@@ -31,6 +31,36 @@ export declare const OFFER_ERROR_CODES: {
|
|
|
31
31
|
readonly CHECKOUT_EXPIRED: "OFFER_CHECKOUT_EXPIRED";
|
|
32
32
|
readonly WRONG_STATE: "OFFER_WRONG_STATE";
|
|
33
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* Event prize-draw refusals — the spin wheel and the raffle draw.
|
|
36
|
+
*
|
|
37
|
+
* These exist because every refusal on those two surfaces used to render as the
|
|
38
|
+
* single string "Spin failed. Please try again.": the client threw a native
|
|
39
|
+
* `Error`, so `normalizeError` produced no code, so `toUserMessage` could only
|
|
40
|
+
* return its fallback. A closed window, an exhausted per-user cap and a
|
|
41
|
+
* misconfigured event were indistinguishable to the person spinning, and a
|
|
42
|
+
* 401 never opened the login modal.
|
|
43
|
+
*
|
|
44
|
+
* Statuses live beside the reasons in
|
|
45
|
+
* `_internal/server/jobs/core/event-draw-reasons.ts`; `audit-error-display-i18n`
|
|
46
|
+
* requires a matching `errors.codes.*` key in `messages/en.json` for every
|
|
47
|
+
* value below.
|
|
48
|
+
*/
|
|
49
|
+
export declare const EVENT_DRAW_ERROR_CODES: {
|
|
50
|
+
readonly IDENTITY_REQUIRED: "EVENT_IDENTITY_REQUIRED";
|
|
51
|
+
readonly LOGIN_REQUIRED: "EVENT_LOGIN_REQUIRED";
|
|
52
|
+
readonly EVENT_NOT_FOUND: "EVENT_NOT_FOUND";
|
|
53
|
+
readonly EVENT_NOT_ACTIVE: "EVENT_NOT_ACTIVE";
|
|
54
|
+
readonly SPIN_NO_PRIZES: "SPIN_NO_PRIZES";
|
|
55
|
+
readonly SPIN_OUTSIDE_WINDOW: "SPIN_OUTSIDE_WINDOW";
|
|
56
|
+
readonly SPIN_ALREADY_USED: "SPIN_ALREADY_USED";
|
|
57
|
+
readonly NOT_A_SPIN_WHEEL: "EVENT_NOT_A_SPIN_WHEEL";
|
|
58
|
+
readonly RAFFLE_NOT_A_RAFFLE: "RAFFLE_NOT_A_RAFFLE";
|
|
59
|
+
readonly RAFFLE_ALREADY_DRAWN: "RAFFLE_ALREADY_DRAWN";
|
|
60
|
+
readonly RAFFLE_NO_ELIGIBLE_ENTRIES: "RAFFLE_NO_ELIGIBLE_ENTRIES";
|
|
61
|
+
/** A reason the status map has never heard of — a bug in the core, mapped 500. */
|
|
62
|
+
readonly UNKNOWN_REASON: "EVENT_DRAW_UNKNOWN_REASON";
|
|
63
|
+
};
|
|
34
64
|
export declare const ERROR_CODES: {
|
|
35
65
|
readonly AUTH_INVALID_CREDENTIALS: "AUTH_001";
|
|
36
66
|
readonly AUTH_TOKEN_EXPIRED: "AUTH_002";
|
|
@@ -31,6 +31,36 @@ export const OFFER_ERROR_CODES = {
|
|
|
31
31
|
CHECKOUT_EXPIRED: "OFFER_CHECKOUT_EXPIRED",
|
|
32
32
|
WRONG_STATE: "OFFER_WRONG_STATE",
|
|
33
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* Event prize-draw refusals — the spin wheel and the raffle draw.
|
|
36
|
+
*
|
|
37
|
+
* These exist because every refusal on those two surfaces used to render as the
|
|
38
|
+
* single string "Spin failed. Please try again.": the client threw a native
|
|
39
|
+
* `Error`, so `normalizeError` produced no code, so `toUserMessage` could only
|
|
40
|
+
* return its fallback. A closed window, an exhausted per-user cap and a
|
|
41
|
+
* misconfigured event were indistinguishable to the person spinning, and a
|
|
42
|
+
* 401 never opened the login modal.
|
|
43
|
+
*
|
|
44
|
+
* Statuses live beside the reasons in
|
|
45
|
+
* `_internal/server/jobs/core/event-draw-reasons.ts`; `audit-error-display-i18n`
|
|
46
|
+
* requires a matching `errors.codes.*` key in `messages/en.json` for every
|
|
47
|
+
* value below.
|
|
48
|
+
*/
|
|
49
|
+
export const EVENT_DRAW_ERROR_CODES = {
|
|
50
|
+
IDENTITY_REQUIRED: "EVENT_IDENTITY_REQUIRED",
|
|
51
|
+
LOGIN_REQUIRED: "EVENT_LOGIN_REQUIRED",
|
|
52
|
+
EVENT_NOT_FOUND: "EVENT_NOT_FOUND",
|
|
53
|
+
EVENT_NOT_ACTIVE: "EVENT_NOT_ACTIVE",
|
|
54
|
+
SPIN_NO_PRIZES: "SPIN_NO_PRIZES",
|
|
55
|
+
SPIN_OUTSIDE_WINDOW: "SPIN_OUTSIDE_WINDOW",
|
|
56
|
+
SPIN_ALREADY_USED: "SPIN_ALREADY_USED",
|
|
57
|
+
NOT_A_SPIN_WHEEL: "EVENT_NOT_A_SPIN_WHEEL",
|
|
58
|
+
RAFFLE_NOT_A_RAFFLE: "RAFFLE_NOT_A_RAFFLE",
|
|
59
|
+
RAFFLE_ALREADY_DRAWN: "RAFFLE_ALREADY_DRAWN",
|
|
60
|
+
RAFFLE_NO_ELIGIBLE_ENTRIES: "RAFFLE_NO_ELIGIBLE_ENTRIES",
|
|
61
|
+
/** A reason the status map has never heard of — a bug in the core, mapped 500. */
|
|
62
|
+
UNKNOWN_REASON: "EVENT_DRAW_UNKNOWN_REASON",
|
|
63
|
+
};
|
|
34
64
|
export const ERROR_CODES = {
|
|
35
65
|
// Authentication
|
|
36
66
|
AUTH_INVALID_CREDENTIALS: "AUTH_001",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { normalizeError } from "./normalize.js";
|
|
2
|
-
import { ERROR_CODES, BID_ERROR_CODES, OFFER_ERROR_CODES } from "./error-codes.js";
|
|
2
|
+
import { ERROR_CODES, BID_ERROR_CODES, OFFER_ERROR_CODES, EVENT_DRAW_ERROR_CODES, } from "./error-codes.js";
|
|
3
3
|
import { HTTP_ERROR_CODES } from "./error-mapping.js";
|
|
4
4
|
const k = (code) => `errors.codes.${code}`;
|
|
5
5
|
export const ERROR_DISPLAY_MAP = {
|
|
@@ -172,6 +172,45 @@ export const ERROR_DISPLAY_MAP = {
|
|
|
172
172
|
[OFFER_ERROR_CODES.WRONG_STATE]: {
|
|
173
173
|
messageKey: k(OFFER_ERROR_CODES.WRONG_STATE),
|
|
174
174
|
},
|
|
175
|
+
// ---------- Event prize draws (spin wheel + raffle) ----------
|
|
176
|
+
// No `field` on any of these: the spin wheel is a button, not a form, and the
|
|
177
|
+
// raffle draw is an admin action. There is no input to route an error onto.
|
|
178
|
+
[EVENT_DRAW_ERROR_CODES.IDENTITY_REQUIRED]: {
|
|
179
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.IDENTITY_REQUIRED),
|
|
180
|
+
},
|
|
181
|
+
[EVENT_DRAW_ERROR_CODES.LOGIN_REQUIRED]: {
|
|
182
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.LOGIN_REQUIRED),
|
|
183
|
+
},
|
|
184
|
+
[EVENT_DRAW_ERROR_CODES.EVENT_NOT_FOUND]: {
|
|
185
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.EVENT_NOT_FOUND),
|
|
186
|
+
},
|
|
187
|
+
[EVENT_DRAW_ERROR_CODES.EVENT_NOT_ACTIVE]: {
|
|
188
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.EVENT_NOT_ACTIVE),
|
|
189
|
+
},
|
|
190
|
+
[EVENT_DRAW_ERROR_CODES.SPIN_NO_PRIZES]: {
|
|
191
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.SPIN_NO_PRIZES),
|
|
192
|
+
},
|
|
193
|
+
[EVENT_DRAW_ERROR_CODES.SPIN_OUTSIDE_WINDOW]: {
|
|
194
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.SPIN_OUTSIDE_WINDOW),
|
|
195
|
+
},
|
|
196
|
+
[EVENT_DRAW_ERROR_CODES.SPIN_ALREADY_USED]: {
|
|
197
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.SPIN_ALREADY_USED),
|
|
198
|
+
},
|
|
199
|
+
[EVENT_DRAW_ERROR_CODES.NOT_A_SPIN_WHEEL]: {
|
|
200
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.NOT_A_SPIN_WHEEL),
|
|
201
|
+
},
|
|
202
|
+
[EVENT_DRAW_ERROR_CODES.RAFFLE_NOT_A_RAFFLE]: {
|
|
203
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.RAFFLE_NOT_A_RAFFLE),
|
|
204
|
+
},
|
|
205
|
+
[EVENT_DRAW_ERROR_CODES.RAFFLE_ALREADY_DRAWN]: {
|
|
206
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.RAFFLE_ALREADY_DRAWN),
|
|
207
|
+
},
|
|
208
|
+
[EVENT_DRAW_ERROR_CODES.RAFFLE_NO_ELIGIBLE_ENTRIES]: {
|
|
209
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.RAFFLE_NO_ELIGIBLE_ENTRIES),
|
|
210
|
+
},
|
|
211
|
+
[EVENT_DRAW_ERROR_CODES.UNKNOWN_REASON]: {
|
|
212
|
+
messageKey: k(EVENT_DRAW_ERROR_CODES.UNKNOWN_REASON),
|
|
213
|
+
},
|
|
175
214
|
// ---------- HTTP / mapped wire codes (from error-mapping.ts) ----------
|
|
176
215
|
[HTTP_ERROR_CODES.VALIDATION_FAILED]: {
|
|
177
216
|
messageKey: k(HTTP_ERROR_CODES.VALIDATION_FAILED),
|
|
@@ -44,7 +44,7 @@ export function UserBidsView() {
|
|
|
44
44
|
endpoint: ACCOUNT_ENDPOINTS.BIDS,
|
|
45
45
|
sortOptions: SORT_OPTIONS,
|
|
46
46
|
hideTableView: true,
|
|
47
|
-
mapRows: (response) => response.
|
|
47
|
+
mapRows: (response) => response.items ?? [],
|
|
48
48
|
getTotal: (response, rows) => response.total ?? rows.length,
|
|
49
49
|
buildFilters: (state) => (state.status ? sieveFilter("status", SIEVE_OP.EQ, state.status) : undefined),
|
|
50
50
|
renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsx(FieldSelect, { name: "status", label: "Bid status", value: pendingFilters.status || "", onChange: (v) => setPendingFilters((p) => ({ ...p, status: v })), options: STATUS_OPTIONS })),
|