@mohasinac/appkit 4.52.5 → 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 +11 -0
- package/dist/features/layout/AppLayoutShell.js +64 -12
- 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.js +1 -1
- 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/index.js +8 -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 +192 -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/index.d.ts
CHANGED
|
@@ -913,13 +913,10 @@ export { NotificationBell } from "./features/account/index";
|
|
|
913
913
|
export { OrderDetailView } from "./features/account/index";
|
|
914
914
|
export { ProfileView } from "./features/account/index";
|
|
915
915
|
export { UserAccountHubView } from "./features/account/index";
|
|
916
|
-
export { UserAddressesView } from "./features/account/index";
|
|
917
|
-
export { UserNotificationsView } from "./features/account/index";
|
|
918
916
|
export { UserOffersPanel } from "./features/account/index";
|
|
919
917
|
export type { UserOffersPanelProps } from "./features/account/index";
|
|
920
918
|
export { UserOrderTrackView } from "./features/account/index";
|
|
921
919
|
export { UserOrdersView } from "./features/account/index";
|
|
922
|
-
export { UserSettingsView } from "./features/account/index";
|
|
923
920
|
export { NotificationPreferencesPanel } from "./features/account/index";
|
|
924
921
|
export type { NotificationPreferencesPanelProps } from "./features/account/index";
|
|
925
922
|
export { accountAdminColumns } from "./features/account/index";
|
|
@@ -979,10 +976,6 @@ export type { UseNotificationsOptions } from "./features/account/index";
|
|
|
979
976
|
export type { UserAccountHubViewLabels } from "./features/account/index";
|
|
980
977
|
export type { UserAccountHubViewProps } from "./features/account/index";
|
|
981
978
|
export type { UserAddress } from "./features/account/index";
|
|
982
|
-
export type { UserAddressesViewLabels } from "./features/account/index";
|
|
983
|
-
export type { UserAddressesViewProps } from "./features/account/index";
|
|
984
|
-
export type { UserNotificationsViewLabels } from "./features/account/index";
|
|
985
|
-
export type { UserNotificationsViewProps } from "./features/account/index";
|
|
986
979
|
export type { UserOffer } from "./features/account/index";
|
|
987
980
|
export type { UserOrder } from "./features/account/index";
|
|
988
981
|
export type { UserOrderTrackViewLabels } from "./features/account/index";
|
|
@@ -990,8 +983,6 @@ export type { UserOrderTrackViewProps } from "./features/account/index";
|
|
|
990
983
|
export type { UserOrdersViewProps } from "./features/account/index";
|
|
991
984
|
export type { UserProfile } from "./features/account/index";
|
|
992
985
|
export type { UserProfileStats } from "./features/account/index";
|
|
993
|
-
export type { UserSettingsViewLabels } from "./features/account/index";
|
|
994
|
-
export type { UserSettingsViewProps } from "./features/account/index";
|
|
995
986
|
export { AccountRepository } from "./features/account/server";
|
|
996
987
|
export { createAddressForUser } from "./features/account/server";
|
|
997
988
|
export { deleteAddressForUser } from "./features/account/server";
|
|
@@ -1483,7 +1474,6 @@ export { CategoryCard } from "./features/categories/index";
|
|
|
1483
1474
|
export { CategoryFilters } from "./features/categories/index";
|
|
1484
1475
|
export { CategoryForm } from "./features/categories/index";
|
|
1485
1476
|
export { CategoryGrid } from "./features/categories/index";
|
|
1486
|
-
export { CategoryProductsView } from "./features/categories/index";
|
|
1487
1477
|
export { CategoryProductsListing } from "./features/categories/index";
|
|
1488
1478
|
export type { CategoryProductsListingProps } from "./features/categories/index";
|
|
1489
1479
|
export { CategoriesIndexListing } from "./features/categories/index";
|
|
@@ -1539,7 +1529,6 @@ export type { CategoryGridProps } from "./features/categories/index";
|
|
|
1539
1529
|
export type { CategoryItem } from "./features/categories/index";
|
|
1540
1530
|
export type { CategoryMetrics } from "./features/categories/index";
|
|
1541
1531
|
export type { CategoryMoveInput } from "./features/categories/index";
|
|
1542
|
-
export type { CategoryProductsViewProps } from "./features/categories/index";
|
|
1543
1532
|
export type { CategorySelectorCreateLabels } from "./features/categories/index";
|
|
1544
1533
|
export type { CategorySelectorCreateProps } from "./features/categories/index";
|
|
1545
1534
|
export type { CategorySeo } from "./features/categories/index";
|
|
@@ -1642,6 +1631,7 @@ export { AdminEventsView } from "./features/events/index";
|
|
|
1642
1631
|
export { AdminEventEditorView } from "./features/events/index";
|
|
1643
1632
|
export type { AdminEventEditorViewProps } from "./features/events/index";
|
|
1644
1633
|
export { EVENTS_COLLECTION } from "./features/events/index";
|
|
1634
|
+
export { RAFFLE_MAX_ENTRIES_PER_USER } from "./_internal/shared/features/events/config";
|
|
1645
1635
|
export { EVENT_ADMIN_SORT_OPTIONS } from "./features/events/index";
|
|
1646
1636
|
export { EVENT_ENTRIES_COLLECTION } from "./features/events/index";
|
|
1647
1637
|
export { LOTTERY_ENTRIES_COLLECTION } from "./features/lottery/schemas/firestore";
|
|
@@ -1882,7 +1872,6 @@ export { HeroCarousel } from "./features/homepage/index";
|
|
|
1882
1872
|
export { HeroSection } from "./features/homepage/index";
|
|
1883
1873
|
export { HomepageSkeleton } from "./features/homepage/index";
|
|
1884
1874
|
export { HomepageView } from "./features/homepage/index";
|
|
1885
|
-
export { HowItWorksInfoView } from "./features/homepage/index";
|
|
1886
1875
|
export { HowItWorksSection } from "./features/homepage/index";
|
|
1887
1876
|
export { NewsletterBanner } from "./features/homepage/index";
|
|
1888
1877
|
export { NewsletterSection } from "./features/homepage/index";
|
|
@@ -1930,9 +1919,6 @@ export type { HomepageSection } from "./features/homepage/index";
|
|
|
1930
1919
|
export type { HomepageSectionContent } from "./features/homepage/index";
|
|
1931
1920
|
export type { HomepageViewProps } from "./features/homepage/index";
|
|
1932
1921
|
export type { HotspotPin } from "./features/homepage/index";
|
|
1933
|
-
export type { HowItWorksInfoDetail } from "./features/homepage/index";
|
|
1934
|
-
export type { HowItWorksInfoStep } from "./features/homepage/index";
|
|
1935
|
-
export type { HowItWorksInfoViewProps } from "./features/homepage/index";
|
|
1936
1922
|
export type { HowItWorksSectionProps } from "./features/homepage/index";
|
|
1937
1923
|
export type { HowItWorksStep } from "./features/homepage/index";
|
|
1938
1924
|
export type { NewsletterBannerProps } from "./features/homepage/index";
|
|
@@ -1995,6 +1981,8 @@ export { AppLayoutShell } from "./features/layout/index";
|
|
|
1995
1981
|
export { AutoBreadcrumbs } from "./features/layout/index";
|
|
1996
1982
|
export { BackToTop } from "./features/layout/index";
|
|
1997
1983
|
export { BottomActions } from "./features/layout/index";
|
|
1984
|
+
export { SideActionDock } from "./features/layout/index";
|
|
1985
|
+
export { ctaAnchorProps, CTA_ANCHOR_ATTR } from "./features/layout/index";
|
|
1998
1986
|
export { BottomActionsProvider } from "./features/layout/index";
|
|
1999
1987
|
export { BottomNavItem } from "./features/layout/index";
|
|
2000
1988
|
export { BottomNavLayout } from "./features/layout/index";
|
|
@@ -2341,7 +2329,6 @@ export { ProductGrid } from "./features/products/index";
|
|
|
2341
2329
|
export { ProductInfo } from "./features/products/index";
|
|
2342
2330
|
export { ProductStatusValues } from "./features/products/index";
|
|
2343
2331
|
export { ProductTabs } from "./features/products/index";
|
|
2344
|
-
export { ProductsView } from "./features/products/index";
|
|
2345
2332
|
export { RelatedProducts } from "./features/products/index";
|
|
2346
2333
|
export { buildProductColumns } from "./features/products/index";
|
|
2347
2334
|
export { createAuctionId } from "./features/products/index";
|
|
@@ -2352,7 +2339,7 @@ export { getProductSortOptions } from "./features/products/index";
|
|
|
2352
2339
|
export { getProductTableColumns } from "./features/products/index";
|
|
2353
2340
|
export { normalizeListingType, isAuctionListing, isPreOrderListing, isStandardListing, isPrizeDrawListing, isClassifiedListing, isDigitalCodeListing, isLiveListing, isArtListing, isStickersListing, } from "./features/products/index";
|
|
2354
2341
|
export { isFinalSale, acceptsChangeOfMindReturns, } from "./features/products/constants/final-sale";
|
|
2355
|
-
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, } from "./_internal/shared/listing-types/feature-flags";
|
|
2342
|
+
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, isListingType, } from "./_internal/shared/listing-types/feature-flags";
|
|
2356
2343
|
export { actionTracker, setActionTrackerSink, resetActionTrackerSink, type ActionEvent, type ActionTrackerSink, } from "./_internal/shared/listing-types/action-tracker";
|
|
2357
2344
|
export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_internal/shared/listing-types/cart-shipping";
|
|
2358
2345
|
export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, type ActionDef, type ActionKind, type ActionResource, type ActionTree, type ActionConfirmation, } from "./_internal/shared/actions/action-registry";
|
|
@@ -2414,7 +2401,6 @@ export type { ProductTableColumnsConfig } from "./features/products/index";
|
|
|
2414
2401
|
export type { ProductTabsProps } from "./features/products/index";
|
|
2415
2402
|
export type { ProductUpdateInput } from "./features/products/index";
|
|
2416
2403
|
export type { ProductVideoField } from "./features/products/index";
|
|
2417
|
-
export type { ProductsViewProps } from "./features/products/index";
|
|
2418
2404
|
export type { RelatedProductsProps } from "./features/products/index";
|
|
2419
2405
|
export { getFeaturedAuctions } from "./features/products/server";
|
|
2420
2406
|
export { getFeaturedPreOrders } from "./features/products/server";
|
|
@@ -2579,6 +2565,8 @@ export { searchQuerySchema } from "./features/search/index";
|
|
|
2579
2565
|
export { searchResultAdminColumns } from "./features/search/index";
|
|
2580
2566
|
export { useNavSuggestions } from "./features/search/index";
|
|
2581
2567
|
export { useSearch } from "./features/search/index";
|
|
2568
|
+
export { useSearchIndex, ensureSearchIndex } from "./features/search/hooks/useSearchIndex";
|
|
2569
|
+
export type { SearchIndexState, SearchIndexStatus, LoadedSearchIndex, UseSearchIndexOptions, } from "./features/search/hooks/useSearchIndex";
|
|
2582
2570
|
export type { NavSuggestionRecord } from "./features/search/index";
|
|
2583
2571
|
export type { SearchCategoryOption } from "./features/search/index";
|
|
2584
2572
|
export type { SearchLabels } from "./features/search/index";
|
|
@@ -2632,7 +2620,6 @@ export { SellerProductsView } from "./features/seller/index";
|
|
|
2632
2620
|
export { SellerRevenueChart } from "./features/seller/index";
|
|
2633
2621
|
export { SellerShippingView } from "./features/seller/index";
|
|
2634
2622
|
export { SellerStoreSetupView } from "./features/seller/index";
|
|
2635
|
-
export { SellerStoreView } from "./features/seller/index";
|
|
2636
2623
|
export { SellerStorefrontView } from "./features/seller/index";
|
|
2637
2624
|
export { SellerTopProducts } from "./features/seller/index";
|
|
2638
2625
|
export { SellersListView } from "./features/seller/index";
|
|
@@ -2648,7 +2635,6 @@ export { SellerPayoutSettingsView as StorePayoutSettingsView } from "./features/
|
|
|
2648
2635
|
export { SellerPayoutsView as StorePayoutsView } from "./features/seller/index";
|
|
2649
2636
|
export { SellerProductsView as StoreProductListingsView } from "./features/seller/index";
|
|
2650
2637
|
export { SellerShippingView as StoreShippingView } from "./features/seller/index";
|
|
2651
|
-
export { SellerStorefrontView as StoreStorefrontView } from "./features/seller/index";
|
|
2652
2638
|
export { buildPayoutColumns } from "./features/seller/index";
|
|
2653
2639
|
export { buildSellerColumns } from "./features/seller/index";
|
|
2654
2640
|
export { createOfferId } from "./features/seller/index";
|
|
@@ -2705,7 +2691,6 @@ export type { SellerRevenueDataPoint } from "./features/seller/index";
|
|
|
2705
2691
|
export type { SellerShippingViewProps } from "./features/seller/index";
|
|
2706
2692
|
export type { SellerStore } from "./features/seller/index";
|
|
2707
2693
|
export type { SellerStoreSetupViewProps } from "./features/seller/index";
|
|
2708
|
-
export type { SellerStoreViewProps } from "./features/seller/index";
|
|
2709
2694
|
export type { SellerStorefrontViewProps, StorefrontDraft } from "./features/seller/index";
|
|
2710
2695
|
export type { SellerTopProductsLabels } from "./features/seller/index";
|
|
2711
2696
|
export type { SellerTopProductsProps } from "./features/seller/index";
|
|
@@ -2721,7 +2706,6 @@ export type { SellerPayoutSettingsViewProps as StorePayoutSettingsViewProps } fr
|
|
|
2721
2706
|
export type { SellerPayoutsViewProps as StorePayoutsViewProps } from "./features/seller/index";
|
|
2722
2707
|
export type { SellerProductsViewProps as StoreProductListingsViewProps } from "./features/seller/index";
|
|
2723
2708
|
export type { SellerShippingViewProps as StoreShippingViewProps } from "./features/seller/index";
|
|
2724
|
-
export type { SellerStorefrontViewProps as StoreStorefrontViewProps } from "./features/seller/index";
|
|
2725
2709
|
export type { StoreStatus } from "./features/seller/index";
|
|
2726
2710
|
export type { UpdateSellerStoreInput } from "./features/seller/index";
|
|
2727
2711
|
export type { UseBecomeSellerOptions } from "./features/seller/index";
|
|
@@ -2978,6 +2962,8 @@ export { CardBody, MenuTrigger, MenuContent, MenuSeparator, RoleBadge, SkipToMai
|
|
|
2978
2962
|
export { Tabs, TabsList, TabsTrigger, TabsContent, PasswordStrengthIndicator, TablePagination } from "./ui/index";
|
|
2979
2963
|
export { TabBarShell, TabBarButton, TabsNavSelect } from "./ui/index";
|
|
2980
2964
|
export type { TabBarShellProps, TabBarButtonProps, TabsNavSelectProps } from "./ui/index";
|
|
2965
|
+
export { OverflowRow } from "./ui/index";
|
|
2966
|
+
export type { OverflowRowProps, OverflowRowItem, OverflowRowDotTone, OverflowRowLinkProps } from "./ui/index";
|
|
2981
2967
|
export { Stack, classNames, mergeTailwindClasses, SideModal, SideDrawer, RichText, RichTextRenderer } from "./ui/index";
|
|
2982
2968
|
export type { RichTextRendererProps } from "./ui/index";
|
|
2983
2969
|
export { SlottedListingView, DetailViewShell, StackedViewShell } from "./ui/index";
|
|
@@ -2992,7 +2978,7 @@ export { WishlistFullError } from "./features/wishlist/server";
|
|
|
2992
2978
|
export { useHistory, useHistoryMergeOnLogin, getGuestHistory, trackGuestHistory, removeGuestHistoryItem, clearGuestHistory, getGuestHistoryCount, type GuestHistoryItem, type GuestHistoryType, type UserHistoryItem, type HistoryProductType, type HistoryItemSnapshot, type TrackArgs as TrackHistoryArgs, } from "./features/history";
|
|
2993
2979
|
export { historyRepository, UserHistoryRepository, trackHistoryView, getHistoryForUser, removeHistoryItem, clearHistory, mergeGuestHistory, } from "./features/history/server";
|
|
2994
2980
|
export { useMediaQuery, useBreakpoint, useClickOutside, useKeyPress, useLongPress, useGesture, useSwipe, useSession, useAuth, useCountdown, useCamera, useBulkSelection, useUrlTable, usePendingFilters, usePendingTable, useUnsavedChanges, UNSAVED_CHANGES_EVENT, useBulkAction, useEntityDelete, useContainerGrid, useMessage, useModalStack, RTDBPayloadStatus, } from "./react/index";
|
|
2995
|
-
export { RoleGate, ProtectedRoute, SocialAuthButtons,
|
|
2981
|
+
export { RoleGate, ProtectedRoute, SocialAuthButtons, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView } from "./features/auth/index";
|
|
2996
2982
|
export type { RoleGateProps, ProtectedRouteProps, AuthGuardUser, AuthRouteConfig, LoginFormProps, LoginFormValues, RegisterFormProps, RegisterFormValues, ForgotPasswordViewProps, ResetPasswordViewProps, VerifyEmailViewProps, } from "./features/auth/index";
|
|
2997
2983
|
export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index";
|
|
2998
2984
|
export type { ShippingPickerProps } from "./features/cart/index";
|
|
@@ -3059,6 +3045,7 @@ export { navItemFormSchema, navItemCreateSchema, navItemUpdateSchema, type NavIt
|
|
|
3059
3045
|
export { groupedListingFormSchema, groupedListingCreateSchema, groupedListingUpdateSchema, type GroupedListingFormValues, } from "./features/grouped/schemas/grouped-listing-form";
|
|
3060
3046
|
export { scammersSeedData } from "./seed/index";
|
|
3061
3047
|
export { productFeaturesSeedData } from "./seed/index";
|
|
3048
|
+
export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./seed/index";
|
|
3062
3049
|
export { taxCodesSeedData } from "./seed/index";
|
|
3063
3050
|
export { PART_GLOSSARY_COLLECTION, MODEL_COMPOSITION_COLLECTION, PART_SLOT_VALUES, PART_SLOT_LABEL, ALL_PART_SLOTS, LISTING_TYPE_HAS_COMPOSITION, partSlotFromSegment, partGlossaryId, } from "./features/parts/schemas/firestore";
|
|
3064
3051
|
export type { PartGlossaryDocument, ModelCompositionDocument, ModelSlot, ModelSlotMerge, PartSlot, } from "./features/parts/schemas/firestore";
|
package/dist/index.js
CHANGED
|
@@ -1875,11 +1875,7 @@ export { ProfileView } from "./features/account/index.js";
|
|
|
1875
1875
|
// UserAccountHubView - Component for user account hub view.
|
|
1876
1876
|
export { UserAccountHubView } from "./features/account/index.js";
|
|
1877
1877
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
1878
|
-
// UserAddressesView - Component for user addresses view.
|
|
1879
|
-
export { UserAddressesView } from "./features/account/index.js";
|
|
1880
1878
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
1881
|
-
// UserNotificationsView - Component for user notifications view.
|
|
1882
|
-
export { UserNotificationsView } from "./features/account/index.js";
|
|
1883
1879
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
1884
1880
|
// [CLIENT]-Runs in browser only â€" interactive buyer offers panel with accept/withdraw actions.
|
|
1885
1881
|
// UserOffersPanel - Interactive buyer offers panel.
|
|
@@ -1891,8 +1887,6 @@ export { UserOrderTrackView } from "./features/account/index.js";
|
|
|
1891
1887
|
// UserOrdersView - Component for user orders view.
|
|
1892
1888
|
export { UserOrdersView } from "./features/account/index.js";
|
|
1893
1889
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
1894
|
-
// UserSettingsView - Component for user settings view.
|
|
1895
|
-
export { UserSettingsView } from "./features/account/index.js";
|
|
1896
1890
|
// [CLIENT-SSR]-Runs in both SSR and browser — React component that lets users manage their notification channel and type preferences.
|
|
1897
1891
|
// NotificationPreferencesPanel - Panel for user notification preferences.
|
|
1898
1892
|
export { NotificationPreferencesPanel } from "./features/account/index.js";
|
|
@@ -1952,6 +1946,10 @@ export { useUpdateProfile } from "./features/account/index.js";
|
|
|
1952
1946
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
1953
1947
|
// userProfileSchema - Model for user profile schema.
|
|
1954
1948
|
export { userProfileSchema } from "./features/account/index.js";
|
|
1949
|
+
// [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
|
|
1950
|
+
// UserSettingsViewLabels - Type contract for user settings view labels.
|
|
1951
|
+
// [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
|
|
1952
|
+
// UserSettingsViewProps - Type contract for user settings view props.
|
|
1955
1953
|
// ./features/account/server
|
|
1956
1954
|
// [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
|
|
1957
1955
|
// AccountRepository - Shared export for account repository.
|
|
@@ -2194,7 +2192,6 @@ export { DEFAULT_TRUST_BAR_ITEMS } from "./features/admin/index.js";
|
|
|
2194
2192
|
// DashboardStatsGrid - Component for dashboard stats grid.
|
|
2195
2193
|
export { DashboardStatsGrid } from "./features/admin/index.js";
|
|
2196
2194
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
2197
|
-
// DemoSeedView — removed from main barrel (dev-only, load via dynamic import)
|
|
2198
2195
|
// AdminTeamView - Employee management list view.
|
|
2199
2196
|
export { AdminTeamView } from "./features/admin/index.js";
|
|
2200
2197
|
// AdminEmployeeEditorView - Invite/edit employee permissions SideDrawer.
|
|
@@ -2874,8 +2871,6 @@ export { CategoryForm } from "./features/categories/index.js";
|
|
|
2874
2871
|
// CategoryGrid - Component for category grid.
|
|
2875
2872
|
export { CategoryGrid } from "./features/categories/index.js";
|
|
2876
2873
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
2877
|
-
// CategoryProductsView - Component for category products view.
|
|
2878
|
-
export { CategoryProductsView } from "./features/categories/index.js";
|
|
2879
2874
|
// CategoryProductsListing - Client toolbar listing for category detail pages.
|
|
2880
2875
|
export { CategoryProductsListing } from "./features/categories/index.js";
|
|
2881
2876
|
export { CategoriesIndexListing } from "./features/categories/index.js";
|
|
@@ -3174,6 +3169,15 @@ export { AdminEventEditorView } from "./features/events/index.js";
|
|
|
3174
3169
|
// [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
|
|
3175
3170
|
// EVENTS_COLLECTION - Constant used across modules.
|
|
3176
3171
|
export { EVENTS_COLLECTION } from "./features/events/index.js";
|
|
3172
|
+
/*
|
|
3173
|
+
* [SHARED] RAFFLE_MAX_ENTRIES_PER_USER — one entry per person in a raffle.
|
|
3174
|
+
*
|
|
3175
|
+
* Public because the consumer's participate page must hand the SAME number to
|
|
3176
|
+
* `EventRaffleEntryForm` that `enterEvent` enforces server-side. Two mirrored
|
|
3177
|
+
* literals is the shape that caused the bug: the form already said "you've
|
|
3178
|
+
* used all 1 entry slot" while the server enforced nothing at all.
|
|
3179
|
+
*/
|
|
3180
|
+
export { RAFFLE_MAX_ENTRIES_PER_USER } from "./_internal/shared/features/events/config.js";
|
|
3177
3181
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
3178
3182
|
// EVENT_ADMIN_SORT_OPTIONS - Constant used across modules.
|
|
3179
3183
|
export { EVENT_ADMIN_SORT_OPTIONS } from "./features/events/index.js";
|
|
@@ -3593,8 +3597,6 @@ export { HomepageSkeleton } from "./features/homepage/index.js";
|
|
|
3593
3597
|
// HomepageView - Component for homepage view.
|
|
3594
3598
|
export { HomepageView } from "./features/homepage/index.js";
|
|
3595
3599
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
3596
|
-
// HowItWorksInfoView - Component for how it works info view.
|
|
3597
|
-
export { HowItWorksInfoView } from "./features/homepage/index.js";
|
|
3598
3600
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
3599
3601
|
// HowItWorksSection - Shared export for how it works section.
|
|
3600
3602
|
export { HowItWorksSection } from "./features/homepage/index.js";
|
|
@@ -3760,8 +3762,13 @@ export { AutoBreadcrumbs } from "./features/layout/index.js";
|
|
|
3760
3762
|
// BackToTop - Shared export for back to top.
|
|
3761
3763
|
export { BackToTop } from "./features/layout/index.js";
|
|
3762
3764
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
3763
|
-
// BottomActions - Shared export for bottom actions.
|
|
3765
|
+
// BottomActions - Shared export for bottom actions. @deprecated — alias of SideActionDock.
|
|
3764
3766
|
export { BottomActions } from "./features/layout/index.js";
|
|
3767
|
+
// [CLIENT-SSR]-Runs in both SSR and browser — React component or hook that does not depend on browser-only APIs.
|
|
3768
|
+
// SideActionDock - The floating action dock that replaced the bottom action bar.
|
|
3769
|
+
export { SideActionDock } from "./features/layout/index.js";
|
|
3770
|
+
// [SHARED]-Pure helper — marks a page's inline primary CTA so the dock reveals only after it scrolls out of view.
|
|
3771
|
+
export { ctaAnchorProps, CTA_ANCHOR_ATTR } from "./features/layout/index.js";
|
|
3765
3772
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
3766
3773
|
// BottomActionsProvider - Component for bottom actions provider.
|
|
3767
3774
|
export { BottomActionsProvider } from "./features/layout/index.js";
|
|
@@ -4302,8 +4309,6 @@ export { ProductTabs } from "./features/products/index.js";
|
|
|
4302
4309
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4303
4310
|
// ProductsIndexPageView - Component for products index page view.
|
|
4304
4311
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4305
|
-
// ProductsView - Component for products view.
|
|
4306
|
-
export { ProductsView } from "./features/products/index.js";
|
|
4307
4312
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4308
4313
|
// RelatedProducts - Shared export for related products.
|
|
4309
4314
|
export { RelatedProducts } from "./features/products/index.js";
|
|
@@ -4336,7 +4341,7 @@ export { normalizeListingType, isAuctionListing, isPreOrderListing, isStandardLi
|
|
|
4336
4341
|
// `finalSale` field. See the module docstring for why `!p.finalSale` is wrong.
|
|
4337
4342
|
export { isFinalSale, acceptsChangeOfMindReturns, } from "./features/products/constants/final-sale.js";
|
|
4338
4343
|
// SB-UNI-X4 2026-05-13 â€" per-type feature-flag helpers.
|
|
4339
|
-
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, } from "./_internal/shared/listing-types/feature-flags.js";
|
|
4344
|
+
export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, isListingType, } from "./_internal/shared/listing-types/feature-flags.js";
|
|
4340
4345
|
// SB-UNI-X5 2026-05-13 â€" action telemetry sink.
|
|
4341
4346
|
export { actionTracker, setActionTrackerSink, resetActionTrackerSink, } from "./_internal/shared/listing-types/action-tracker.js";
|
|
4342
4347
|
// SB-UNI-S 2026-05-13 â€" cart-level shipping-requirement helpers.
|
|
@@ -4733,6 +4738,9 @@ export { useNavSuggestions } from "./features/search/index.js";
|
|
|
4733
4738
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4734
4739
|
// useSearch - React hook for use search.
|
|
4735
4740
|
export { useSearch } from "./features/search/index.js";
|
|
4741
|
+
// [CLIENT]-Browser only. Fetches the public search artifact once per page session.
|
|
4742
|
+
// Exported from the defining module, not the feature barrel — see client.ts.
|
|
4743
|
+
export { useSearchIndex, ensureSearchIndex } from "./features/search/hooks/useSearchIndex.js";
|
|
4736
4744
|
// ./features/search/server
|
|
4737
4745
|
// [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
|
|
4738
4746
|
// SearchRepository - Shared export for search repository.
|
|
@@ -4832,8 +4840,6 @@ export { SellerShippingView } from "./features/seller/index.js";
|
|
|
4832
4840
|
// SellerStoreSetupView - Component for seller store setup view.
|
|
4833
4841
|
export { SellerStoreSetupView } from "./features/seller/index.js";
|
|
4834
4842
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4835
|
-
// SellerStoreView - Component for seller store view.
|
|
4836
|
-
export { SellerStoreView } from "./features/seller/index.js";
|
|
4837
4843
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4838
4844
|
// SellerStorefrontView - Component for seller storefront view.
|
|
4839
4845
|
export { SellerStorefrontView } from "./features/seller/index.js";
|
|
@@ -4869,7 +4875,6 @@ export { SellerProductsView as StoreProductListingsView } from "./features/selle
|
|
|
4869
4875
|
// StoreShippingView - Alias for SellerShippingView.
|
|
4870
4876
|
export { SellerShippingView as StoreShippingView } from "./features/seller/index.js";
|
|
4871
4877
|
// StoreStorefrontView - Alias for SellerStorefrontView.
|
|
4872
|
-
export { SellerStorefrontView as StoreStorefrontView } from "./features/seller/index.js";
|
|
4873
4878
|
// [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
|
|
4874
4879
|
// buildPayoutColumns - Helper for build payout columns.
|
|
4875
4880
|
export { buildPayoutColumns } from "./features/seller/index.js";
|
|
@@ -5349,6 +5354,8 @@ export { CardBody, MenuTrigger, MenuContent, MenuSeparator, RoleBadge, SkipToMai
|
|
|
5349
5354
|
export { Tabs, TabsList, TabsTrigger, TabsContent, PasswordStrengthIndicator, TablePagination } from "./ui/index.js";
|
|
5350
5355
|
// TabBarShell - rail + overflow scroll arrows around a role="tablist"; TabBarButton / TabsNavSelect - its two trigger flavours
|
|
5351
5356
|
export { TabBarShell, TabBarButton, TabsNavSelect } from "./ui/index.js";
|
|
5357
|
+
// OverflowRow - pill/tab row that collapses into a searchable dropdown when it measures wider than its container
|
|
5358
|
+
export { OverflowRow } from "./ui/index.js";
|
|
5352
5359
|
export { Stack, classNames, mergeTailwindClasses, SideModal, SideDrawer, RichText, RichTextRenderer } from "./ui/index.js";
|
|
5353
5360
|
export { SlottedListingView, DetailViewShell, StackedViewShell } from "./ui/index.js";
|
|
5354
5361
|
export { buildColumns, createColumnBuilder } from "./ui/index.js";
|
|
@@ -5367,7 +5374,7 @@ export { historyRepository, UserHistoryRepository, trackHistoryView, getHistoryF
|
|
|
5367
5374
|
export { useMediaQuery, useBreakpoint, useClickOutside, useKeyPress, useLongPress, useGesture, useSwipe, useSession, useAuth, useCountdown, useCamera, useBulkSelection, useUrlTable, usePendingFilters, usePendingTable, useUnsavedChanges, UNSAVED_CHANGES_EVENT, useBulkAction, useEntityDelete, useContainerGrid, useMessage, useModalStack, RTDBPayloadStatus, } from "./react/index.js";
|
|
5368
5375
|
// Missing core types (already exported above; skipped to avoid duplicates)
|
|
5369
5376
|
// Missing auth feature components
|
|
5370
|
-
export { RoleGate, ProtectedRoute, SocialAuthButtons,
|
|
5377
|
+
export { RoleGate, ProtectedRoute, SocialAuthButtons, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView } from "./features/auth/index.js";
|
|
5371
5378
|
// Missing cart and checkout feature components
|
|
5372
5379
|
export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index.js";
|
|
5373
5380
|
export { CheckoutView, CheckoutAddressStep, CheckoutSuccessView } from "./features/cart/index.js";
|
|
@@ -5454,6 +5461,7 @@ export { groupedListingFormSchema, groupedListingCreateSchema, groupedListingUpd
|
|
|
5454
5461
|
export { scammersSeedData } from "./seed/index.js";
|
|
5455
5462
|
// Product features â€" seed data (FI2)
|
|
5456
5463
|
export { productFeaturesSeedData } from "./seed/index.js";
|
|
5464
|
+
export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./seed/index.js";
|
|
5457
5465
|
/*
|
|
5458
5466
|
* 🛑 Registering a seed collection takes FOUR edits and three of them are
|
|
5459
5467
|
* silent if missed: seed/index.ts, THIS re-export, and seed-cli's own import
|
|
@@ -116,6 +116,15 @@ function shouldPersist(mapped) {
|
|
|
116
116
|
function resolveBodySchema(schema) {
|
|
117
117
|
if (typeof schema !== "string")
|
|
118
118
|
return schema;
|
|
119
|
+
/*
|
|
120
|
+
* `SCHEMAS.api` is empty by design (see its own comment in registry.ts):
|
|
121
|
+
* the key form had 6 registered keys and ZERO routes passing one, so the
|
|
122
|
+
* lookup is kept for the contract while `RegisteredApiRouteKey` narrows to
|
|
123
|
+
* `never`. The cast is what lets an indexed read of an empty literal type
|
|
124
|
+
* compile; the `!entry` branch below is the whole behaviour — a key string
|
|
125
|
+
* resolves to nothing and `createRouteHandler` throws "Route schema not
|
|
126
|
+
* registered", which is the correct answer for a key nobody registered.
|
|
127
|
+
*/
|
|
119
128
|
const entry = SCHEMAS.api[schema];
|
|
120
129
|
if (!entry || !("body" in entry) || !entry.body)
|
|
121
130
|
return null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface RequireRecordOptions {
|
|
2
|
+
/** `route` field on the persisted degraded-read entry, e.g. "/admin/events/[id]/edit". */
|
|
3
|
+
route: string;
|
|
4
|
+
/** Stable identifier for the read site, e.g. "events.findById". */
|
|
5
|
+
key: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Calls `notFound()` when `read()` resolves to `null` / `undefined`.
|
|
9
|
+
*
|
|
10
|
+
* Returns the record when it exists, so a caller that already needs the
|
|
11
|
+
* document does not pay for a second read.
|
|
12
|
+
*/
|
|
13
|
+
export declare function requireRecord<T>(read: () => Promise<T | null | undefined>, opts: RequireRecordOptions): Promise<T | null>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { notFound } from "next/navigation.js";
|
|
2
|
+
import { safeRead } from "../../errors/safe-read.js";
|
|
3
|
+
/**
|
|
4
|
+
* 404 a dynamic detail page whose record does not exist.
|
|
5
|
+
*
|
|
6
|
+
* ## The defect this closes
|
|
7
|
+
*
|
|
8
|
+
* `/admin/coupons/zzzznope-not-a-coupon-42/edit` rendered a fully editable
|
|
9
|
+
* coupon form — twelve inputs, "Save changes", "Delete coupon" — because its
|
|
10
|
+
* `page.tsx` was a bare shim that passed the id straight to an editor. The
|
|
11
|
+
* sibling `/admin/orders/[id]/view` fetched server-side and 404'd correctly;
|
|
12
|
+
* the two differed only because one never grew the check. `audit-admin-detail-notfound`
|
|
13
|
+
* found **fourteen** more, and the danger is Root Cause #98's: the form looks
|
|
14
|
+
* ready to save, and what it saves is a record keyed on an id nobody meant to
|
|
15
|
+
* create.
|
|
16
|
+
*
|
|
17
|
+
* ## 🛑 A FAILED read is not an ABSENT record
|
|
18
|
+
*
|
|
19
|
+
* This is the whole subtlety, and it is why the helper exists rather than each
|
|
20
|
+
* page writing `if (!(await repo.findById(id))) notFound()`.
|
|
21
|
+
*
|
|
22
|
+
* Dashboard pages sit under a layout that `await`s the session, so Next still
|
|
23
|
+
* ATTEMPTS to prerender them and an unguarded throw there is **fatal to the
|
|
24
|
+
* build** (§ "a dynamic API in a DASHBOARD layout is the correct lever"). The
|
|
25
|
+
* read therefore has to go through `safeRead`. But `safeRead` returns its
|
|
26
|
+
* fallback on failure — so a naive `fallback: null` would turn a transient
|
|
27
|
+
* Firestore error, a missing composite index, or a quota exception into a
|
|
28
|
+
* **404 on a record that exists**. That is strictly worse than the bug being
|
|
29
|
+
* fixed: the admin is told their data is gone.
|
|
30
|
+
*
|
|
31
|
+
* So failure and absence are separated by a sentinel. `notFound()` fires ONLY
|
|
32
|
+
* when the read succeeded and returned nothing. When the read fails the page
|
|
33
|
+
* renders, the degradation is recorded as a `DEGRADED_READ` row by `safeRead`
|
|
34
|
+
* itself, and the editor's own fetch surfaces whatever is really wrong.
|
|
35
|
+
*
|
|
36
|
+
* ## Cost
|
|
37
|
+
*
|
|
38
|
+
* One document read, on a route that is per-request anyway. Well inside Rule
|
|
39
|
+
* #6's ~3-round-trip budget, and the editor's client fetch is unchanged — this
|
|
40
|
+
* does not replace it, because the editor is also reachable from a drawer.
|
|
41
|
+
*/
|
|
42
|
+
/** Distinguishes "the read threw" from "the record is absent". */
|
|
43
|
+
const READ_FAILED = Symbol("read-failed");
|
|
44
|
+
/**
|
|
45
|
+
* Calls `notFound()` when `read()` resolves to `null` / `undefined`.
|
|
46
|
+
*
|
|
47
|
+
* Returns the record when it exists, so a caller that already needs the
|
|
48
|
+
* document does not pay for a second read.
|
|
49
|
+
*/
|
|
50
|
+
export async function requireRecord(read, opts) {
|
|
51
|
+
const result = await safeRead(read, {
|
|
52
|
+
route: opts.route,
|
|
53
|
+
key: opts.key,
|
|
54
|
+
fallback: READ_FAILED,
|
|
55
|
+
});
|
|
56
|
+
// The read itself broke. Render the page; `safeRead` has already recorded it.
|
|
57
|
+
if (result === READ_FAILED)
|
|
58
|
+
return null;
|
|
59
|
+
if (result === null || result === undefined)
|
|
60
|
+
notFound();
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
@@ -63,7 +63,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
63
63
|
readonly ABOUT: "/about";
|
|
64
64
|
readonly DEVELOPER: "/developer";
|
|
65
65
|
readonly CONTACT: "/contact";
|
|
66
|
-
readonly BLOG: "/blog";
|
|
67
66
|
readonly HELP: "/help";
|
|
68
67
|
readonly HELP_SHOPPING: "/help/shopping";
|
|
69
68
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
@@ -100,7 +99,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
100
99
|
readonly EVENT_SPIN_RESULTS: (id: string) => string;
|
|
101
100
|
readonly LOTTERIES: "/lottery";
|
|
102
101
|
readonly LOTTERY_DETAIL: (id: string) => string;
|
|
103
|
-
readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
|
|
104
102
|
readonly SUBLISTING_CATEGORY: (slug: string) => string;
|
|
105
103
|
readonly SUPPORT: "/support";
|
|
106
104
|
readonly SCAMS: "/scams";
|
|
@@ -112,6 +110,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
112
110
|
readonly ITEM_REQUESTS_NEW: "/item-requests/new";
|
|
113
111
|
readonly TOOLS: "/tools";
|
|
114
112
|
readonly TOOL_PRICE_INDEX: "/tools/price-index";
|
|
113
|
+
readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
|
|
114
|
+
readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
|
|
115
115
|
readonly PARTS: "/parts";
|
|
116
116
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
117
117
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
@@ -479,7 +479,6 @@ export declare const ROUTES: {
|
|
|
479
479
|
readonly ABOUT: "/about";
|
|
480
480
|
readonly DEVELOPER: "/developer";
|
|
481
481
|
readonly CONTACT: "/contact";
|
|
482
|
-
readonly BLOG: "/blog";
|
|
483
482
|
readonly HELP: "/help";
|
|
484
483
|
readonly HELP_SHOPPING: "/help/shopping";
|
|
485
484
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
@@ -516,7 +515,6 @@ export declare const ROUTES: {
|
|
|
516
515
|
readonly EVENT_SPIN_RESULTS: (id: string) => string;
|
|
517
516
|
readonly LOTTERIES: "/lottery";
|
|
518
517
|
readonly LOTTERY_DETAIL: (id: string) => string;
|
|
519
|
-
readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
|
|
520
518
|
readonly SUBLISTING_CATEGORY: (slug: string) => string;
|
|
521
519
|
readonly SUPPORT: "/support";
|
|
522
520
|
readonly SCAMS: "/scams";
|
|
@@ -528,6 +526,8 @@ export declare const ROUTES: {
|
|
|
528
526
|
readonly ITEM_REQUESTS_NEW: "/item-requests/new";
|
|
529
527
|
readonly TOOLS: "/tools";
|
|
530
528
|
readonly TOOL_PRICE_INDEX: "/tools/price-index";
|
|
529
|
+
readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
|
|
530
|
+
readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
|
|
531
531
|
readonly PARTS: "/parts";
|
|
532
532
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
533
533
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
@@ -63,7 +63,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
63
63
|
ABOUT: "/about",
|
|
64
64
|
DEVELOPER: "/developer",
|
|
65
65
|
CONTACT: "/contact",
|
|
66
|
-
|
|
66
|
+
/*
|
|
67
|
+
* 🛑 No `PUBLIC.BLOG`. `BLOG.LIST` is the one key for "/blog", and it sits
|
|
68
|
+
* beside `BLOG.ARTICLE` — which is the ONLY blog detail key, so `BLOG` was
|
|
69
|
+
* always the canonical section and `PUBLIC.BLOG` was an alias of its index.
|
|
70
|
+
* Two keys for one path is Root Cause #61's family: the duplicate was
|
|
71
|
+
* reported by `audit-dead-route-key` on every run, and nine call sites had
|
|
72
|
+
* drifted onto the alias while one used the real key.
|
|
73
|
+
*/
|
|
67
74
|
HELP: "/help",
|
|
68
75
|
HELP_SHOPPING: "/help/shopping",
|
|
69
76
|
HELP_AUCTIONS: "/help/auctions",
|
|
@@ -119,7 +126,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
119
126
|
EVENT_SPIN_RESULTS: (id) => `/events/${id}/spin-results`,
|
|
120
127
|
LOTTERIES: "/lottery",
|
|
121
128
|
LOTTERY_DETAIL: (id) => `/lottery/${id}`,
|
|
122
|
-
|
|
129
|
+
/*
|
|
130
|
+
* 🛑 There is deliberately NO public `SUBLISTING_CATEGORIES` index key.
|
|
131
|
+
* `src/app/[locale]/sublisting-categories/` holds only `[slug]/`, so the
|
|
132
|
+
* index has never existed; the key promised a route with no page behind
|
|
133
|
+
* it, had zero references anywhere, and `audit-dead-route-key` carried it
|
|
134
|
+
* as its one grandfathered entry. A sub-listing is reached from the
|
|
135
|
+
* category or product it belongs to, not from a top-level list.
|
|
136
|
+
*/
|
|
123
137
|
SUBLISTING_CATEGORY: (slug) => `/sublisting-categories/${slug}`,
|
|
124
138
|
SUPPORT: "/support",
|
|
125
139
|
SCAMS: "/scams",
|
|
@@ -138,6 +152,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
138
152
|
*/
|
|
139
153
|
TOOLS: "/tools",
|
|
140
154
|
TOOL_PRICE_INDEX: "/tools/price-index",
|
|
155
|
+
/*
|
|
156
|
+
* Admin-only, and under a PUBLIC prefix on purpose — it is a tool, and
|
|
157
|
+
* /tools is where tools live. The guard is the layout, not the path: a
|
|
158
|
+
* non-admin is redirected server-side before any HTML is produced, so
|
|
159
|
+
* there is nothing indexable at this URL regardless of robots.txt.
|
|
160
|
+
*/
|
|
161
|
+
TOOL_STICKER_TRACER: "/tools/sticker-tracer",
|
|
162
|
+
TOOL_STICKER_SHEET: (sheetId) => `/tools/sticker-tracer/${sheetId}`,
|
|
141
163
|
/*
|
|
142
164
|
* The PARTS database. A reference surface, so it lives beside the other
|
|
143
165
|
* two things that answer a question rather than sell you something.
|
|
@@ -552,7 +574,7 @@ export const PUBLIC_ROUTES = [
|
|
|
552
574
|
ROUTES.PUBLIC.PROMOTIONS,
|
|
553
575
|
ROUTES.PUBLIC.ABOUT,
|
|
554
576
|
ROUTES.PUBLIC.CONTACT,
|
|
555
|
-
ROUTES.
|
|
577
|
+
ROUTES.BLOG.LIST,
|
|
556
578
|
ROUTES.PUBLIC.HELP,
|
|
557
579
|
ROUTES.PUBLIC.TERMS,
|
|
558
580
|
ROUTES.PUBLIC.PRIVACY,
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { CollectionReference, DocumentData, DocumentSnapshot, Firestore } from "firebase-admin/firestore";
|
|
21
21
|
import type { IRepository, PagedResult, SieveQuery, WhereOp } from "../../contracts";
|
|
22
|
+
import type { Plaintext } from "../../security/encrypted";
|
|
22
23
|
export declare class FirebaseRepository<T extends DocumentData> implements IRepository<T> {
|
|
23
24
|
protected readonly collection: string;
|
|
24
25
|
constructor(collectionName: string);
|
|
@@ -29,8 +30,9 @@ export declare class FirebaseRepository<T extends DocumentData> implements IRepo
|
|
|
29
30
|
findById(id: string): Promise<T | null>;
|
|
30
31
|
findAll(query?: SieveQuery): Promise<PagedResult<T>>;
|
|
31
32
|
findWhere(field: keyof T, op: WhereOp, value: unknown): Promise<T[]>;
|
|
32
|
-
create(data: Omit<T
|
|
33
|
-
|
|
33
|
+
create(data: Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">): Promise<T>;
|
|
34
|
+
/** Accepts the PLAINTEXT shape — see `create` for why. */
|
|
35
|
+
update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
|
|
34
36
|
delete(id: string): Promise<void>;
|
|
35
37
|
batchCreate(items: Array<Omit<T, "id" | "createdAt" | "updatedAt">>): Promise<T[]>;
|
|
36
38
|
batchDelete(ids: string[]): Promise<void>;
|
|
@@ -46,7 +46,7 @@ export class FirebaseRepository {
|
|
|
46
46
|
}
|
|
47
47
|
async findAll(query) {
|
|
48
48
|
const page = Math.max(1, query?.page ?? 1);
|
|
49
|
-
const
|
|
49
|
+
const pageSize = Math.max(1, Math.min(query?.pageSize ?? 20, 500));
|
|
50
50
|
let q = this.getCollection();
|
|
51
51
|
// -- Sort ------------------------------------------------------------------
|
|
52
52
|
// SieveQuery.sort supports a leading "-" prefix for descending order
|
|
@@ -89,11 +89,11 @@ export class FirebaseRepository {
|
|
|
89
89
|
// -- Count -----------------------------------------------------------------
|
|
90
90
|
const total = await getFirestoreCount(q);
|
|
91
91
|
// -- Paginate --------------------------------------------------------------
|
|
92
|
-
const offset = (page - 1) *
|
|
93
|
-
const pagedSnap = await q.offset(offset).limit(
|
|
92
|
+
const offset = (page - 1) * pageSize;
|
|
93
|
+
const pagedSnap = await q.offset(offset).limit(pageSize).get();
|
|
94
94
|
const data = pagedSnap.docs.map((d) => this.mapDoc(d));
|
|
95
|
-
const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total /
|
|
96
|
-
return { data, total, page,
|
|
95
|
+
const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total / pageSize));
|
|
96
|
+
return { data, total, page, pageSize, totalPages };
|
|
97
97
|
}
|
|
98
98
|
async findWhere(field, op, value) {
|
|
99
99
|
const snap = await this.getCollection()
|
|
@@ -102,6 +102,21 @@ export class FirebaseRepository {
|
|
|
102
102
|
return snap.docs.map((d) => this.mapDoc(d));
|
|
103
103
|
}
|
|
104
104
|
// -- IWriteRepository -------------------------------------------------------
|
|
105
|
+
/*
|
|
106
|
+
* 🛑 Accepts the PLAINTEXT shape, because this method ENCRYPTS.
|
|
107
|
+
*
|
|
108
|
+
* `applyWriteHooks` runs `encryptPiiFields` over the subclass's `piiFields`,
|
|
109
|
+
* so a caller legitimately hands over a real email and gets ciphertext in
|
|
110
|
+
* Firestore. Typing the parameter `Omit<T, …>` demanded `Encrypted<string>`
|
|
111
|
+
* from every caller — and the only way to produce one without encrypting is
|
|
112
|
+
* `asEncrypted(value)`, which labels plaintext as ciphertext and is the
|
|
113
|
+
* misuse that helper's own docstring forbids. The alternative was a cast at
|
|
114
|
+
* each of the dozens of write sites across fourteen repositories; one honest
|
|
115
|
+
* signature here is the same change made once.
|
|
116
|
+
*
|
|
117
|
+
* `Plaintext<T>` is the identity on any document with no branded field, so
|
|
118
|
+
* this is a no-op for every repository that holds no PII.
|
|
119
|
+
*/
|
|
105
120
|
async create(data) {
|
|
106
121
|
const now = new Date();
|
|
107
122
|
const payload = prepareForFirestore({
|
|
@@ -113,6 +128,7 @@ export class FirebaseRepository {
|
|
|
113
128
|
const snap = await ref.get();
|
|
114
129
|
return this.mapDoc(snap);
|
|
115
130
|
}
|
|
131
|
+
/** Accepts the PLAINTEXT shape — see `create` for why. */
|
|
116
132
|
async update(id, data) {
|
|
117
133
|
const payload = prepareForFirestore({
|
|
118
134
|
...data,
|