@mohasinac/appkit 4.52.5 → 4.53.1
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/client/scaffolds/AppShell.js +1 -1
- package/dist/_internal/server/features/auctions/actions.js +1 -1
- package/dist/_internal/server/features/auctions/og.d.ts +3 -1
- package/dist/_internal/server/features/auctions/og.js +3 -1
- package/dist/_internal/server/features/bundles/actions.js +1 -1
- package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
- package/dist/_internal/server/features/business-documents/download.js +91 -0
- package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
- package/dist/_internal/server/features/categories/adapters.js +10 -0
- package/dist/_internal/server/features/categories/data.js +23 -7
- package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
- package/dist/_internal/server/features/checkout/actions.js +116 -15
- package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
- package/dist/_internal/server/features/checkout/data.d.ts +37 -0
- package/dist/_internal/server/features/checkout/data.js +20 -3
- package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
- package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
- package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
- package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
- package/dist/_internal/server/features/classified/metadata.js +1 -1
- package/dist/_internal/server/features/classified/og.d.ts +3 -1
- package/dist/_internal/server/features/classified/og.js +3 -1
- package/dist/_internal/server/features/digital-code/metadata.js +1 -1
- package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
- package/dist/_internal/server/features/digital-code/og.js +3 -1
- package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
- package/dist/_internal/server/features/digital-code/pool.js +19 -4
- package/dist/_internal/server/features/live/metadata.js +1 -1
- package/dist/_internal/server/features/live/og.d.ts +3 -1
- package/dist/_internal/server/features/live/og.js +3 -1
- 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 +5 -1
- 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/parts/og.js +1 -1
- package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
- package/dist/_internal/server/features/pre-orders/og.js +3 -1
- package/dist/_internal/server/features/price-index/search.d.ts +18 -0
- package/dist/_internal/server/features/price-index/search.js +47 -7
- package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
- package/dist/_internal/server/features/prize-draws/og.js +3 -1
- package/dist/_internal/server/features/products/group-members.d.ts +26 -0
- package/dist/_internal/server/features/products/group-members.js +7 -1
- package/dist/_internal/server/features/products/og.d.ts +3 -1
- package/dist/_internal/server/features/products/og.js +3 -1
- 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/scoped-sources.d.ts +26 -0
- package/dist/_internal/server/features/search/scoped-sources.js +252 -0
- package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
- package/dist/_internal/server/features/search/search-everything.js +70 -20
- 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 +7 -1
- package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
- 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 +91 -0
- package/dist/_internal/server/features/sticker-trace/adapters.js +175 -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-to-listings.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -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 +143 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.js +311 -0
- package/dist/_internal/server/features/sticker-trace/storage.d.ts +154 -0
- package/dist/_internal/server/features/sticker-trace/storage.js +301 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +16 -0
- package/dist/_internal/server/features/stores/index.d.ts +1 -0
- package/dist/_internal/server/features/stores/index.js +1 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
- package/dist/_internal/server/features/stores/tabs.js +122 -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/checkout/rules/_defaults.js +0 -2
- package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
- package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
- package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
- package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
- package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
- package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
- package/dist/_internal/shared/checkout/rules/index.js +9 -0
- package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
- package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
- package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
- package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
- package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
- package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
- package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
- package/dist/_internal/shared/config/schema.d.ts +122 -0
- package/dist/_internal/shared/features/cart/schema.js +3 -2
- 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/products/group-rules.d.ts +75 -0
- package/dist/_internal/shared/features/products/group-rules.js +142 -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 +35 -0
- package/dist/_internal/shared/listing-types/_registry.js +39 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/art/config.js +3 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/auction/config.js +3 -0
- package/dist/_internal/shared/listing-types/availability.js +48 -0
- package/dist/_internal/shared/listing-types/capabilities.js +19 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/classified/config.js +3 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +3 -0
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
- package/dist/_internal/shared/listing-types/feature-flags.js +10 -0
- package/dist/_internal/shared/listing-types/live/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/live/config.js +3 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +3 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +3 -0
- package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
- package/dist/_internal/shared/listing-types/spares/config.js +60 -0
- package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
- package/dist/_internal/shared/listing-types/spares/og.js +1 -0
- package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
- package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/standard/config.js +3 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +3 -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 +76 -0
- package/dist/_internal/shared/search/match.js +264 -0
- package/dist/_internal/shared/search/to-groups.d.ts +52 -0
- package/dist/_internal/shared/search/to-groups.js +141 -0
- package/dist/client.d.ts +16 -9
- package/dist/client.js +16 -6
- package/dist/configs/eslint.js +22 -2
- package/dist/constants/api-endpoints.d.ts +107 -15
- package/dist/constants/api-endpoints.js +60 -5
- package/dist/constants/cache-invalidation.js +3 -1
- package/dist/constants/field-names.d.ts +13 -1
- package/dist/constants/field-names.js +42 -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/about/components/PolicyPageView.d.ts +22 -2
- package/dist/features/about/components/PolicyPageView.js +14 -2
- package/dist/features/about/components/PublicProfileView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +42 -2
- package/dist/features/account/api/[userId]/addresses/route.js +1 -1
- package/dist/features/account/components/NotificationBell.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/account/hooks/useProfileStats.js +5 -1
- package/dist/features/addresses/repository/addresses.repository.d.ts +33 -6
- package/dist/features/addresses/repository/addresses.repository.js +86 -9
- package/dist/features/addresses/schemas/firestore.d.ts +17 -6
- package/dist/features/admin/actions/admin-actions.js +16 -1
- 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 +19 -3
- package/dist/features/admin/components/AdminContactView.js +1 -1
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
- package/dist/features/admin/components/AdminNavigationView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +1 -1
- package/dist/features/admin/components/AdminOrdersView.js +9 -2
- package/dist/features/admin/components/AdminPageHeader.js +1 -1
- 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 +41 -39
- 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/AdminSidebar.js +1 -1
- package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
- package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
- package/dist/features/admin/components/AdminSparesView.js +30 -0
- 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 +10 -8
- 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/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
- package/dist/features/admin/constants/filter-tabs.js +1 -0
- 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 +88 -3
- 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/components/AuctionDetailPageView.js +4 -11
- 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 +46 -7
- package/dist/features/auth/repository/user.repository.js +128 -15
- package/dist/features/auth/schemas/firestore.d.ts +65 -12
- package/dist/features/auth/schemas/firestore.js +13 -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/business-documents/repository/business-documents.repository.d.ts +58 -0
- package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
- package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
- package/dist/features/business-documents/schemas/firestore.js +75 -0
- package/dist/features/cart/actions/cart-actions.js +83 -6
- package/dist/features/cart/api/route.js +1 -1
- package/dist/features/cart/repository/cart.repository.js +32 -4
- package/dist/features/cart/schemas/firestore.d.ts +20 -0
- package/dist/features/cart/schemas/index.d.ts +2 -2
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.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/[id]/price-guidance/route.d.ts +42 -0
- package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
- package/dist/features/categories/api/route.js +10 -10
- package/dist/features/categories/components/BrandDetailPageView.js +19 -3
- package/dist/features/categories/components/BrandDetailTabs.js +10 -0
- package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
- package/dist/features/categories/components/CategoryDetailPageView.js +170 -13
- package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
- package/dist/features/categories/components/CategoryGrid.js +10 -1
- package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
- package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
- package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
- package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
- package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
- package/dist/features/categories/components/index.d.ts +0 -2
- package/dist/features/categories/components/index.js +0 -1
- package/dist/features/categories/constants/category-tabs.d.ts +20 -25
- package/dist/features/categories/constants/category-tabs.js +22 -39
- package/dist/features/categories/repository/categories.repository.d.ts +13 -0
- package/dist/features/categories/repository/categories.repository.js +51 -1
- package/dist/features/categories/schemas/firestore.d.ts +22 -1
- package/dist/features/categories/schemas/firestore.js +10 -0
- package/dist/features/categories/schemas/index.d.ts +8 -2
- package/dist/features/categories/schemas/index.js +2 -0
- package/dist/features/categories/types/index.d.ts +8 -0
- package/dist/features/categories/utils/taxonomy-visual.d.ts +34 -0
- package/dist/features/categories/utils/taxonomy-visual.js +74 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
- package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
- 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/contact/components/ContactPageView.d.ts +33 -1
- package/dist/features/contact/components/ContactPageView.js +58 -28
- 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/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
- 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/GroupedListingDetailView.js +9 -1
- package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
- package/dist/features/grouped/schemas/firestore.d.ts +5 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
- 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/components/AnnouncementBar.d.ts +1 -9
- package/dist/features/homepage/components/AnnouncementBar.js +13 -19
- package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
- package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
- package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
- package/dist/features/homepage/components/HowItWorksSection.js +4 -4
- package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
- package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
- package/dist/features/homepage/components/PromoGrid.js +12 -3
- package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/index.d.ts +0 -22
- package/dist/features/homepage/components/index.js +0 -12
- package/dist/features/homepage/index.d.ts +0 -2
- package/dist/features/homepage/index.js +0 -2
- package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
- package/dist/features/homepage/lib/section-renderer.js +202 -58
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
- package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
- package/dist/features/homepage/schemas/firestore.d.ts +112 -3
- package/dist/features/homepage/schemas/firestore.js +32 -2
- package/dist/features/homepage/schemas/index.d.ts +46 -17
- package/dist/features/homepage/schemas/index.js +39 -27
- package/dist/features/homepage/server.d.ts +0 -3
- package/dist/features/homepage/server.js +0 -3
- package/dist/features/homepage/types/index.d.ts +0 -47
- package/dist/features/homepage/types/index.js +49 -0
- package/dist/features/layout/AppLayoutShell.d.ts +11 -0
- 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/BottomNavItem.js +1 -1
- package/dist/features/layout/BottomNavbar.d.ts +14 -0
- package/dist/features/layout/BottomNavbar.js +43 -3
- package/dist/features/layout/BottomSheet.js +1 -1
- 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/live/components/LiveItemDetailPageView.js +4 -9
- 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/hooks/useMedia.js +17 -0
- 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 +65 -0
- package/dist/features/media/repository/media-assets.repository.js +31 -0
- package/dist/features/media/trust-signals.d.ts +85 -0
- package/dist/features/media/trust-signals.js +126 -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/parts/components/PartDetailPageView.d.ts +14 -1
- package/dist/features/parts/components/PartDetailPageView.js +2 -2
- package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
- package/dist/features/parts/components/PartsIndexPageView.js +2 -2
- package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
- package/dist/features/parts/components/PartsSearchBox.js +57 -0
- package/dist/features/parts/schemas/firestore.d.ts +149 -3
- package/dist/features/parts/schemas/firestore.js +184 -0
- package/dist/features/payments/repository/payments.repository.js +2 -2
- package/dist/features/payments/repository/payout.repository.d.ts +38 -6
- package/dist/features/payments/repository/payout.repository.js +84 -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/components/PreOrderDetailPageView.js +4 -11
- package/dist/features/pre-orders/components/PreOrdersIndexListing.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/price-index/components/PriceIndexToolView.d.ts +3 -1
- package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
- package/dist/features/products/api/[id]/route.js +1 -1
- package/dist/features/products/components/CompareOverlay.d.ts +18 -1
- package/dist/features/products/components/CompareOverlay.js +21 -2
- package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
- package/dist/features/products/components/CustomSectionTabContent.js +29 -3
- package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
- package/dist/features/products/components/GroupMemberPicker.js +46 -8
- package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
- package/dist/features/products/components/GroupSettingsPanel.js +91 -3
- package/dist/features/products/components/ListingBottomActions.js +4 -0
- package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
- package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
- package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
- package/dist/features/products/components/ProductDetailPageView.js +75 -15
- package/dist/features/products/components/ProductForm.d.ts +13 -1
- package/dist/features/products/components/ProductForm.js +16 -2
- package/dist/features/products/components/ProductGalleryClient.js +2 -2
- package/dist/features/products/components/ProductGrid.js +12 -1
- package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
- package/dist/features/products/components/ProductsIndexListing.js +3 -3
- package/dist/features/products/components/ShowGroupSection.js +15 -2
- package/dist/features/products/components/SparesListView.d.ts +7 -0
- package/dist/features/products/components/SparesListView.js +39 -0
- 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/action-defs.d.ts +1 -0
- package/dist/features/products/constants/action-defs.js +1 -0
- 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.d.ts +98 -0
- package/dist/features/products/repository/products.repository.js +248 -18
- package/dist/features/products/schemas/firestore.d.ts +97 -4
- package/dist/features/products/schemas/firestore.js +104 -0
- package/dist/features/products/schemas/index.d.ts +12 -21
- package/dist/features/products/schemas/index.js +23 -6
- package/dist/features/products/types/index.d.ts +46 -2
- package/dist/features/products/utils/group-member-image.d.ts +39 -0
- package/dist/features/products/utils/group-member-image.js +3 -0
- package/dist/features/products/utils/listing-badge-variant.js +4 -0
- 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/components/ReviewsList.js +1 -1
- 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/scams/components/ScamProfileView.js +1 -1
- package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
- package/dist/features/search/components/EntityTypeahead.js +92 -0
- package/dist/features/search/components/Search.d.ts +12 -1
- package/dist/features/search/components/Search.js +47 -3
- package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
- package/dist/features/search/components/SearchFacetRail.js +92 -0
- package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
- package/dist/features/search/components/SearchResultsClient.js +103 -0
- package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
- package/dist/features/search/components/SearchResultsPageView.js +3 -2
- package/dist/features/search/components/index.d.ts +0 -6
- package/dist/features/search/components/index.js +0 -3
- package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
- package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
- package/dist/features/search/hooks/useScopedSearch.js +114 -0
- package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
- package/dist/features/search/hooks/useSearchIndex.js +172 -0
- package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
- package/dist/features/search/hooks/useSiteSearch.js +149 -0
- package/dist/features/search/index.d.ts +0 -4
- package/dist/features/search/index.js +0 -4
- package/dist/features/search/manifest.d.ts +12 -0
- package/dist/features/search/manifest.js +17 -2
- package/dist/features/search/server.d.ts +0 -3
- package/dist/features/search/server.js +0 -3
- 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.d.ts +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +29 -1
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -15
- package/dist/features/seller/components/SellerPayoutsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductShell.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +1 -1
- package/dist/features/seller/components/SellerShippingView.js +0 -1
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
- package/dist/features/seller/components/SellerSparesView.js +6 -0
- package/dist/features/seller/components/SellerStorefrontView.js +0 -1
- package/dist/features/seller/components/index.d.ts +2 -4
- package/dist/features/seller/components/index.js +1 -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/CommandPalette.js +1 -1
- 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 +267 -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/StoreDetailLayoutView.d.ts +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
- package/dist/features/stores/components/StoreHeader.js +1 -2
- package/dist/features/stores/components/StoreNavTabs.js +17 -2
- package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
- package/dist/features/stores/components/StoreSparesPageView.js +48 -0
- package/dist/features/stores/manifest.js +8 -4
- package/dist/features/stores/schemas/firestore.d.ts +19 -0
- 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/buying__spares-and-groups.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +4 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +478 -0
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
- 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/content-discovery__parts-database.js +3 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -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 +24 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -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/selling__spares-and-group-editing.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
- 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 +284 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +558 -34
- package/dist/index.d.ts +27 -80
- package/dist/index.js +62 -115
- 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 +46 -5
- package/dist/next/routing/route-map.js +70 -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 +33 -9
- package/dist/providers/db-firebase/base.repository.js +55 -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 +28 -26
- package/dist/schemas/registry.js +31 -14
- package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
- package/dist/security/blind-index-tokens.d.ts +54 -0
- package/dist/security/blind-index-tokens.js +152 -0
- package/dist/security/encrypted.d.ts +117 -0
- package/dist/security/encrypted.js +100 -0
- package/dist/security/index.d.ts +6 -3
- package/dist/security/index.js +17 -3
- 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/security/settings-encryption.d.ts +35 -0
- package/dist/security/settings-encryption.js +91 -0
- package/dist/seed/_helpers/brand-rows.js +38 -14
- package/dist/seed/_helpers/category-forest.js +73 -7
- package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
- package/dist/seed/_helpers/category-images-generated.js +81 -6
- package/dist/seed/_helpers/category-models.d.ts +1 -1
- package/dist/seed/_helpers/category-models.js +7 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
- package/dist/seed/_helpers/category-parts.d.ts +1 -1
- package/dist/seed/_helpers/category-parts.js +50 -2
- package/dist/seed/_helpers/character-features.d.ts +1 -1
- package/dist/seed/_helpers/character-features.js +2 -1
- package/dist/seed/_helpers/franchise-rows.js +10 -2
- package/dist/seed/_helpers/media.d.ts +47 -0
- package/dist/seed/_helpers/media.js +34 -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 +78 -0
- package/dist/seed/authenticity-knowledge-seed-data.js +10729 -0
- package/dist/seed/bids-seed-data.d.ts +2 -2
- package/dist/seed/bids-seed-data.js +23 -2
- package/dist/seed/categories-seed-data.js +124 -20
- 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/grouped-listings-seed-data.js +16 -0
- package/dist/seed/homepage-sections-seed-data.js +131 -26
- package/dist/seed/index.d.ts +3 -3
- package/dist/seed/index.js +3 -2
- package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
- package/dist/seed/manifest.js +3 -0
- package/dist/seed/media-assets-seed-data.d.ts +1 -1
- package/dist/seed/media-assets-seed-data.js +746 -196
- package/dist/seed/model-composition-seed-data.js +122 -6
- 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/part-glossary-seed-data.d.ts +1 -1
- package/dist/seed/part-glossary-seed-data.js +37219 -463
- package/dist/seed/payouts-seed-data.d.ts +2 -2
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +7 -18
- package/dist/seed/products-auctions-seed-data.js +56 -47
- package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
- package/dist/seed/products-beyblade-x-seed-data.js +441 -0
- package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
- package/dist/seed/products-catalogue-seed-data.js +1500 -1240
- package/dist/seed/products-classifieds-seed-data.js +9 -27
- package/dist/seed/products-digital-codes-seed-data.js +9 -18
- package/dist/seed/products-live-items-seed-data.js +5 -13
- package/dist/seed/products-preorders-seed-data.js +67 -33
- package/dist/seed/products-prize-draws-seed-data.js +8 -17
- package/dist/seed/products-spares-seed-data.d.ts +2 -0
- package/dist/seed/products-spares-seed-data.js +368 -0
- package/dist/seed/products-standard-seed-data.js +39 -126
- package/dist/seed/products-stickers-seed-data.js +59 -15
- 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 +9 -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.d.ts +25 -0
- package/dist/seo/json-ld.js +33 -1
- package/dist/server-entry.d.ts +3 -1
- package/dist/server-entry.js +2 -2
- package/dist/server.d.ts +27 -12
- package/dist/server.js +86 -28
- package/dist/styles.css +438 -1
- package/dist/tailwind-input.css +31 -17
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Accordion.js +1 -1
- package/dist/ui/components/Breadcrumb.js +1 -1
- package/dist/ui/components/Button.js +7 -1
- package/dist/ui/components/DetailPageGallery.js +0 -2
- package/dist/ui/components/DetailPageHero.js +0 -1
- package/dist/ui/components/DetailPageTabs.js +1 -1
- package/dist/ui/components/Divider.js +3 -3
- package/dist/ui/components/FilterChipGroup.d.ts +11 -0
- package/dist/ui/components/FilterChipGroup.js +1 -1
- package/dist/ui/components/GatedPrice.js +5 -1
- package/dist/ui/components/HorizontalScroller.js +1 -1
- package/dist/ui/components/ImageGallery.js +6 -1
- package/dist/ui/components/ListingLayout.js +17 -11
- package/dist/ui/components/MediaTabs.style.css +81 -0
- 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/Pagination.js +1 -1
- package/dist/ui/components/PendingValue.d.ts +45 -0
- package/dist/ui/components/PendingValue.js +7 -0
- package/dist/ui/components/Radio.style.css +119 -0
- package/dist/ui/components/RatingDisplay.js +2 -2
- package/dist/ui/components/RecordDetailModal.js +14 -1
- package/dist/ui/components/RowActionMenu.js +5 -1
- package/dist/ui/components/SettingsSection.js +0 -2
- package/dist/ui/components/SideDrawer.js +5 -1
- package/dist/ui/components/SideModal.js +9 -1
- package/dist/ui/components/SiteLogo.js +3 -0
- package/dist/ui/components/SiteMark.js +3 -0
- package/dist/ui/components/SortDropdown.js +1 -1
- package/dist/ui/components/SpecTable.d.ts +58 -0
- package/dist/ui/components/SpecTable.js +8 -0
- package/dist/ui/components/StarRating.js +1 -3
- package/dist/ui/components/SummaryCard.js +1 -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 +2 -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 +7 -0
- package/dist/ui/icons/icon-registry.js +25 -1
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -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/utils/search-txt-query.d.ts +12 -0
- package/dist/utils/search-txt-query.js +12 -0
- package/dist/validation/schemas.d.ts +8 -8
- package/package.json +6 -2
- package/scripts/dedupe-peer-deps.mjs +18 -0
- package/scripts/seed-cli.mjs +138 -26
- package/scripts/verify-css-build.mjs +118 -37
- package/dist/_internal/server/features/search/actions.d.ts +0 -7
- package/dist/_internal/server/features/search/actions.js +0 -21
- package/dist/_internal/server/features/search/data.d.ts +0 -15
- package/dist/_internal/server/features/search/data.js +0 -18
- package/dist/_internal/server/features/search/index.d.ts +0 -3
- package/dist/_internal/server/features/search/index.js +0 -2
- 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/api/[id]/route.d.ts +0 -23
- package/dist/features/homepage/api/[id]/route.js +0 -103
- package/dist/features/homepage/api/route.d.ts +0 -14
- package/dist/features/homepage/api/route.js +0 -140
- package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
- package/dist/features/homepage/api/sections/[id]/route.js +0 -95
- package/dist/features/homepage/api/sections/route.d.ts +0 -13
- package/dist/features/homepage/api/sections/route.js +0 -82
- package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
- package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
- package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
- package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
- package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
- package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
- package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
- package/dist/features/homepage/components/HeroBanner.js +0 -43
- package/dist/features/homepage/components/HeroSection.d.ts +0 -7
- package/dist/features/homepage/components/HeroSection.js +0 -6
- package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
- package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
- package/dist/features/homepage/components/HomepageView.d.ts +0 -25
- package/dist/features/homepage/components/HomepageView.js +0 -5
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
- package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
- package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
- package/dist/features/homepage/components/NewsletterBanner.js +0 -37
- package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
- package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
- package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
- package/dist/features/homepage/components/TrustBadges.js +0 -46
- package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
- package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
- package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
- package/dist/features/homepage/hooks/useHomepage.js +0 -17
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
- package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
- package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
- package/dist/features/homepage/repository/homepage.repository.js +0 -25
- 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/search/actions/index.d.ts +0 -1
- package/dist/features/search/actions/index.js +0 -1
- package/dist/features/search/actions/search-actions.d.ts +0 -18
- package/dist/features/search/actions/search-actions.js +0 -43
- package/dist/features/search/api/route.d.ts +0 -22
- package/dist/features/search/api/route.js +0 -128
- package/dist/features/search/columns/index.d.ts +0 -17
- package/dist/features/search/columns/index.js +0 -49
- package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
- package/dist/features/search/components/SearchFiltersRow.js +0 -21
- package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
- package/dist/features/search/components/SearchResultsSection.js +0 -35
- package/dist/features/search/components/SearchView.d.ts +0 -27
- package/dist/features/search/components/SearchView.js +0 -8
- package/dist/features/search/hooks/useSearch.d.ts +0 -21
- package/dist/features/search/hooks/useSearch.js +0 -33
- package/dist/features/search/repository/search.repository.d.ts +0 -14
- package/dist/features/search/repository/search.repository.js +0 -59
- package/dist/features/search/schemas/index.d.ts +0 -70
- package/dist/features/search/schemas/index.js +0 -36
- package/dist/features/search/types/index.d.ts +0 -48
- package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
- package/dist/features/seller/components/SellerStoreView.js +0 -8
- package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
- package/dist/features/stores/components/StoreScopedSearch.js +0 -27
- package/dist/seed/defaults/homepage-sections.d.ts +0 -2
- package/dist/seed/defaults/homepage-sections.js +0 -60
- package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
- package/dist/seed/factories/homepage-section.factory.js +0 -13
- /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
|
@@ -50,6 +50,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
50
50
|
readonly STORE_DIGITAL_CODES: (storeSlug: string) => string;
|
|
51
51
|
readonly STORE_LIVE: (storeSlug: string) => string;
|
|
52
52
|
readonly STORE_ART: (storeSlug: string) => string;
|
|
53
|
+
readonly STORE_SPARES: (storeSlug: string) => string;
|
|
53
54
|
readonly CATEGORIES: "/categories";
|
|
54
55
|
readonly CATEGORY_DETAIL: (slug: string) => string;
|
|
55
56
|
readonly BRANDS: "/brands";
|
|
@@ -63,7 +64,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
63
64
|
readonly ABOUT: "/about";
|
|
64
65
|
readonly DEVELOPER: "/developer";
|
|
65
66
|
readonly CONTACT: "/contact";
|
|
66
|
-
readonly BLOG: "/blog";
|
|
67
67
|
readonly HELP: "/help";
|
|
68
68
|
readonly HELP_SHOPPING: "/help/shopping";
|
|
69
69
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
@@ -79,6 +79,19 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
79
79
|
readonly COOKIE_POLICY: "/cookies";
|
|
80
80
|
readonly REFUND_POLICY: "/refund-policy";
|
|
81
81
|
readonly SHIPPING_POLICY: "/shipping-policy";
|
|
82
|
+
/**
|
|
83
|
+
* Cancellation policy. Distinct from the refund policy, which already
|
|
84
|
+
* covers cancellation in passing — PhonePe's merchant review asks for it
|
|
85
|
+
* by name, and so does the Consumer Protection (E-Commerce) Rules 2020
|
|
86
|
+
* disclosure list.
|
|
87
|
+
*/
|
|
88
|
+
readonly CANCELLATION_POLICY: "/cancellation-policy";
|
|
89
|
+
/**
|
|
90
|
+
* Grievance officer. A MANDATORY published disclosure under the Consumer
|
|
91
|
+
* Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
|
|
92
|
+
* designation, contact and a response commitment.
|
|
93
|
+
*/
|
|
94
|
+
readonly GRIEVANCE: "/grievance";
|
|
82
95
|
readonly HOW_AUCTIONS_WORK: "/how-auctions-work";
|
|
83
96
|
readonly HOW_PRE_ORDERS_WORK: "/how-pre-orders-work";
|
|
84
97
|
readonly HOW_OFFERS_WORK: "/how-offers-work";
|
|
@@ -100,7 +113,6 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
100
113
|
readonly EVENT_SPIN_RESULTS: (id: string) => string;
|
|
101
114
|
readonly LOTTERIES: "/lottery";
|
|
102
115
|
readonly LOTTERY_DETAIL: (id: string) => string;
|
|
103
|
-
readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
|
|
104
116
|
readonly SUBLISTING_CATEGORY: (slug: string) => string;
|
|
105
117
|
readonly SUPPORT: "/support";
|
|
106
118
|
readonly SCAMS: "/scams";
|
|
@@ -112,6 +124,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
112
124
|
readonly ITEM_REQUESTS_NEW: "/item-requests/new";
|
|
113
125
|
readonly TOOLS: "/tools";
|
|
114
126
|
readonly TOOL_PRICE_INDEX: "/tools/price-index";
|
|
127
|
+
readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
|
|
128
|
+
readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
|
|
115
129
|
readonly PARTS: "/parts";
|
|
116
130
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
117
131
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
@@ -124,6 +138,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
124
138
|
readonly LIVE: "/live";
|
|
125
139
|
readonly LIVE_DETAIL: (slug: string) => string;
|
|
126
140
|
readonly ART: "/art";
|
|
141
|
+
readonly SPARES: "/spares";
|
|
127
142
|
readonly CATALOGUE_ITEM_DETAIL: (ownerSlug: string, itemId: string) => string;
|
|
128
143
|
};
|
|
129
144
|
readonly ERRORS: {
|
|
@@ -246,6 +261,9 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
246
261
|
readonly STICKERS: "/store/stickers";
|
|
247
262
|
readonly STICKERS_NEW: "/store/stickers/new";
|
|
248
263
|
readonly STICKERS_EDIT: (id: string) => string;
|
|
264
|
+
readonly SPARES: "/store/spares";
|
|
265
|
+
readonly SPARES_NEW: "/store/spares/new";
|
|
266
|
+
readonly SPARES_EDIT: (id: string) => string;
|
|
249
267
|
readonly PRINT_CENTER: "/store/print-center";
|
|
250
268
|
readonly FULFILLMENT: "/store/fulfillment";
|
|
251
269
|
readonly PAYOUT_METHODS: "/store/payout-methods";
|
|
@@ -324,6 +342,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
324
342
|
readonly LIVE: "/admin/live";
|
|
325
343
|
readonly ART: "/admin/art";
|
|
326
344
|
readonly STICKERS: "/admin/stickers";
|
|
345
|
+
readonly SPARES: "/admin/spares";
|
|
327
346
|
readonly GROUPED_LISTINGS: "/admin/grouped-listings";
|
|
328
347
|
readonly GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new";
|
|
329
348
|
readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
|
|
@@ -466,6 +485,7 @@ export declare const ROUTES: {
|
|
|
466
485
|
readonly STORE_DIGITAL_CODES: (storeSlug: string) => string;
|
|
467
486
|
readonly STORE_LIVE: (storeSlug: string) => string;
|
|
468
487
|
readonly STORE_ART: (storeSlug: string) => string;
|
|
488
|
+
readonly STORE_SPARES: (storeSlug: string) => string;
|
|
469
489
|
readonly CATEGORIES: "/categories";
|
|
470
490
|
readonly CATEGORY_DETAIL: (slug: string) => string;
|
|
471
491
|
readonly BRANDS: "/brands";
|
|
@@ -479,7 +499,6 @@ export declare const ROUTES: {
|
|
|
479
499
|
readonly ABOUT: "/about";
|
|
480
500
|
readonly DEVELOPER: "/developer";
|
|
481
501
|
readonly CONTACT: "/contact";
|
|
482
|
-
readonly BLOG: "/blog";
|
|
483
502
|
readonly HELP: "/help";
|
|
484
503
|
readonly HELP_SHOPPING: "/help/shopping";
|
|
485
504
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
@@ -495,6 +514,19 @@ export declare const ROUTES: {
|
|
|
495
514
|
readonly COOKIE_POLICY: "/cookies";
|
|
496
515
|
readonly REFUND_POLICY: "/refund-policy";
|
|
497
516
|
readonly SHIPPING_POLICY: "/shipping-policy";
|
|
517
|
+
/**
|
|
518
|
+
* Cancellation policy. Distinct from the refund policy, which already
|
|
519
|
+
* covers cancellation in passing — PhonePe's merchant review asks for it
|
|
520
|
+
* by name, and so does the Consumer Protection (E-Commerce) Rules 2020
|
|
521
|
+
* disclosure list.
|
|
522
|
+
*/
|
|
523
|
+
readonly CANCELLATION_POLICY: "/cancellation-policy";
|
|
524
|
+
/**
|
|
525
|
+
* Grievance officer. A MANDATORY published disclosure under the Consumer
|
|
526
|
+
* Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
|
|
527
|
+
* designation, contact and a response commitment.
|
|
528
|
+
*/
|
|
529
|
+
readonly GRIEVANCE: "/grievance";
|
|
498
530
|
readonly HOW_AUCTIONS_WORK: "/how-auctions-work";
|
|
499
531
|
readonly HOW_PRE_ORDERS_WORK: "/how-pre-orders-work";
|
|
500
532
|
readonly HOW_OFFERS_WORK: "/how-offers-work";
|
|
@@ -516,7 +548,6 @@ export declare const ROUTES: {
|
|
|
516
548
|
readonly EVENT_SPIN_RESULTS: (id: string) => string;
|
|
517
549
|
readonly LOTTERIES: "/lottery";
|
|
518
550
|
readonly LOTTERY_DETAIL: (id: string) => string;
|
|
519
|
-
readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
|
|
520
551
|
readonly SUBLISTING_CATEGORY: (slug: string) => string;
|
|
521
552
|
readonly SUPPORT: "/support";
|
|
522
553
|
readonly SCAMS: "/scams";
|
|
@@ -528,6 +559,8 @@ export declare const ROUTES: {
|
|
|
528
559
|
readonly ITEM_REQUESTS_NEW: "/item-requests/new";
|
|
529
560
|
readonly TOOLS: "/tools";
|
|
530
561
|
readonly TOOL_PRICE_INDEX: "/tools/price-index";
|
|
562
|
+
readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
|
|
563
|
+
readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
|
|
531
564
|
readonly PARTS: "/parts";
|
|
532
565
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
533
566
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
@@ -540,6 +573,7 @@ export declare const ROUTES: {
|
|
|
540
573
|
readonly LIVE: "/live";
|
|
541
574
|
readonly LIVE_DETAIL: (slug: string) => string;
|
|
542
575
|
readonly ART: "/art";
|
|
576
|
+
readonly SPARES: "/spares";
|
|
543
577
|
readonly CATALOGUE_ITEM_DETAIL: (ownerSlug: string, itemId: string) => string;
|
|
544
578
|
};
|
|
545
579
|
readonly ERRORS: {
|
|
@@ -662,6 +696,9 @@ export declare const ROUTES: {
|
|
|
662
696
|
readonly STICKERS: "/store/stickers";
|
|
663
697
|
readonly STICKERS_NEW: "/store/stickers/new";
|
|
664
698
|
readonly STICKERS_EDIT: (id: string) => string;
|
|
699
|
+
readonly SPARES: "/store/spares";
|
|
700
|
+
readonly SPARES_NEW: "/store/spares/new";
|
|
701
|
+
readonly SPARES_EDIT: (id: string) => string;
|
|
665
702
|
readonly PRINT_CENTER: "/store/print-center";
|
|
666
703
|
readonly FULFILLMENT: "/store/fulfillment";
|
|
667
704
|
readonly PAYOUT_METHODS: "/store/payout-methods";
|
|
@@ -740,6 +777,7 @@ export declare const ROUTES: {
|
|
|
740
777
|
readonly LIVE: "/admin/live";
|
|
741
778
|
readonly ART: "/admin/art";
|
|
742
779
|
readonly STICKERS: "/admin/stickers";
|
|
780
|
+
readonly SPARES: "/admin/spares";
|
|
743
781
|
readonly GROUPED_LISTINGS: "/admin/grouped-listings";
|
|
744
782
|
readonly GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new";
|
|
745
783
|
readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
|
|
@@ -903,6 +941,9 @@ export declare const SELLER_ROUTES: {
|
|
|
903
941
|
readonly STICKERS: "/store/stickers";
|
|
904
942
|
readonly STICKERS_NEW: "/store/stickers/new";
|
|
905
943
|
readonly STICKERS_EDIT: (id: string) => string;
|
|
944
|
+
readonly SPARES: "/store/spares";
|
|
945
|
+
readonly SPARES_NEW: "/store/spares/new";
|
|
946
|
+
readonly SPARES_EDIT: (id: string) => string;
|
|
906
947
|
readonly PRINT_CENTER: "/store/print-center";
|
|
907
948
|
readonly FULFILLMENT: "/store/fulfillment";
|
|
908
949
|
readonly PAYOUT_METHODS: "/store/payout-methods";
|
|
@@ -931,6 +972,6 @@ export declare const SELLER_ROUTES: {
|
|
|
931
972
|
readonly GUIDE_SETTINGS: "/store/guide/settings";
|
|
932
973
|
readonly GUIDE_WHATSAPP: "/store/guide/whatsapp";
|
|
933
974
|
};
|
|
934
|
-
export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
|
|
975
|
+
export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
|
|
935
976
|
export declare const PROTECTED_ROUTES: readonly [string, string, string, string, string, string, string];
|
|
936
977
|
export declare const AUTH_ROUTES: readonly ["/auth/login", "/auth/register"];
|
|
@@ -43,6 +43,13 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
43
43
|
// `standard` — so the tab showed a real non-zero count and then landed on
|
|
44
44
|
// a page containing none of those items.
|
|
45
45
|
STORE_ART: (storeSlug) => `/stores/${storeSlug}/art`,
|
|
46
|
+
/*
|
|
47
|
+
* 🛑 `STORE_PAGE_TABS` is DERIVED from the plugin registry, so this tab
|
|
48
|
+
* appears the moment the plugin exists — and a missing
|
|
49
|
+
* `stores/[storeSlug]/spares/page.tsx` is then a clickable 404 that no
|
|
50
|
+
* audit covers. The folder lands in the same commit as this key.
|
|
51
|
+
*/
|
|
52
|
+
STORE_SPARES: (storeSlug) => `/stores/${storeSlug}/spares`,
|
|
46
53
|
CATEGORIES: "/categories",
|
|
47
54
|
CATEGORY_DETAIL: (slug) => `/categories/${slug}`,
|
|
48
55
|
BRANDS: "/brands",
|
|
@@ -63,7 +70,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
63
70
|
ABOUT: "/about",
|
|
64
71
|
DEVELOPER: "/developer",
|
|
65
72
|
CONTACT: "/contact",
|
|
66
|
-
|
|
73
|
+
/*
|
|
74
|
+
* 🛑 No `PUBLIC.BLOG`. `BLOG.LIST` is the one key for "/blog", and it sits
|
|
75
|
+
* beside `BLOG.ARTICLE` — which is the ONLY blog detail key, so `BLOG` was
|
|
76
|
+
* always the canonical section and `PUBLIC.BLOG` was an alias of its index.
|
|
77
|
+
* Two keys for one path is Root Cause #61's family: the duplicate was
|
|
78
|
+
* reported by `audit-dead-route-key` on every run, and nine call sites had
|
|
79
|
+
* drifted onto the alias while one used the real key.
|
|
80
|
+
*/
|
|
67
81
|
HELP: "/help",
|
|
68
82
|
HELP_SHOPPING: "/help/shopping",
|
|
69
83
|
HELP_AUCTIONS: "/help/auctions",
|
|
@@ -79,6 +93,19 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
79
93
|
COOKIE_POLICY: "/cookies",
|
|
80
94
|
REFUND_POLICY: "/refund-policy",
|
|
81
95
|
SHIPPING_POLICY: "/shipping-policy",
|
|
96
|
+
/**
|
|
97
|
+
* Cancellation policy. Distinct from the refund policy, which already
|
|
98
|
+
* covers cancellation in passing — PhonePe's merchant review asks for it
|
|
99
|
+
* by name, and so does the Consumer Protection (E-Commerce) Rules 2020
|
|
100
|
+
* disclosure list.
|
|
101
|
+
*/
|
|
102
|
+
CANCELLATION_POLICY: "/cancellation-policy",
|
|
103
|
+
/**
|
|
104
|
+
* Grievance officer. A MANDATORY published disclosure under the Consumer
|
|
105
|
+
* Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
|
|
106
|
+
* designation, contact and a response commitment.
|
|
107
|
+
*/
|
|
108
|
+
GRIEVANCE: "/grievance",
|
|
82
109
|
HOW_AUCTIONS_WORK: "/how-auctions-work",
|
|
83
110
|
HOW_PRE_ORDERS_WORK: "/how-pre-orders-work",
|
|
84
111
|
HOW_OFFERS_WORK: "/how-offers-work",
|
|
@@ -119,7 +146,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
119
146
|
EVENT_SPIN_RESULTS: (id) => `/events/${id}/spin-results`,
|
|
120
147
|
LOTTERIES: "/lottery",
|
|
121
148
|
LOTTERY_DETAIL: (id) => `/lottery/${id}`,
|
|
122
|
-
|
|
149
|
+
/*
|
|
150
|
+
* 🛑 There is deliberately NO public `SUBLISTING_CATEGORIES` index key.
|
|
151
|
+
* `src/app/[locale]/sublisting-categories/` holds only `[slug]/`, so the
|
|
152
|
+
* index has never existed; the key promised a route with no page behind
|
|
153
|
+
* it, had zero references anywhere, and `audit-dead-route-key` carried it
|
|
154
|
+
* as its one grandfathered entry. A sub-listing is reached from the
|
|
155
|
+
* category or product it belongs to, not from a top-level list.
|
|
156
|
+
*/
|
|
123
157
|
SUBLISTING_CATEGORY: (slug) => `/sublisting-categories/${slug}`,
|
|
124
158
|
SUPPORT: "/support",
|
|
125
159
|
SCAMS: "/scams",
|
|
@@ -138,6 +172,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
138
172
|
*/
|
|
139
173
|
TOOLS: "/tools",
|
|
140
174
|
TOOL_PRICE_INDEX: "/tools/price-index",
|
|
175
|
+
/*
|
|
176
|
+
* Admin-only, and under a PUBLIC prefix on purpose — it is a tool, and
|
|
177
|
+
* /tools is where tools live. The guard is the layout, not the path: a
|
|
178
|
+
* non-admin is redirected server-side before any HTML is produced, so
|
|
179
|
+
* there is nothing indexable at this URL regardless of robots.txt.
|
|
180
|
+
*/
|
|
181
|
+
TOOL_STICKER_TRACER: "/tools/sticker-tracer",
|
|
182
|
+
TOOL_STICKER_SHEET: (sheetId) => `/tools/sticker-tracer/${sheetId}`,
|
|
141
183
|
/*
|
|
142
184
|
* The PARTS database. A reference surface, so it lives beside the other
|
|
143
185
|
* two things that answer a question rather than sell you something.
|
|
@@ -166,6 +208,21 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
166
208
|
// detail page stays PRODUCT_DETAIL (`/products/{slug}`), already wired in
|
|
167
209
|
// `_internal/shared/listing-types/{art,stickers}/config.ts`.
|
|
168
210
|
ART: "/art",
|
|
211
|
+
/*
|
|
212
|
+
* Part Two — loose components off disassembled items.
|
|
213
|
+
*
|
|
214
|
+
* 🛑 A REAL page, not a redirect shim like `/live`. Its plugin sets
|
|
215
|
+
* `inGeneralCatalogue: false`, and the rule for that flag is nav
|
|
216
|
+
* reachability: a type kept out of `/products` must own a page that
|
|
217
|
+
* `MAIN_NAV_ITEMS` links, or it is reachable from nowhere at all (Root
|
|
218
|
+
* Cause #61). A shim pointing back at `/products` would re-open exactly
|
|
219
|
+
* that hole while looking like it had closed it.
|
|
220
|
+
*
|
|
221
|
+
* Detail route stays `PRODUCT_DETAIL` — a spare checks out like any
|
|
222
|
+
* standard item, so it needs no bespoke detail page, same reasoning as
|
|
223
|
+
* art/stickers above.
|
|
224
|
+
*/
|
|
225
|
+
SPARES: "/spares",
|
|
169
226
|
// Personal catalogue (Feature B) — a user's own photo inventory of owned
|
|
170
227
|
// items, distinct from marketplace listings. Public when the owner sets
|
|
171
228
|
// an item's visibility to "public". The owner's full catalogue listing
|
|
@@ -297,6 +354,10 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
297
354
|
STICKERS: "/store/stickers",
|
|
298
355
|
STICKERS_NEW: "/store/stickers/new",
|
|
299
356
|
STICKERS_EDIT: (id) => `/store/stickers/${id}/edit`,
|
|
357
|
+
// Part Two — spares
|
|
358
|
+
SPARES: "/store/spares",
|
|
359
|
+
SPARES_NEW: "/store/spares/new",
|
|
360
|
+
SPARES_EDIT: (id) => `/store/spares/${id}/edit`,
|
|
300
361
|
PRINT_CENTER: "/store/print-center",
|
|
301
362
|
FULFILLMENT: "/store/fulfillment",
|
|
302
363
|
// S-STORE Tier — new extension routes
|
|
@@ -390,6 +451,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
390
451
|
// EMI/art-stickers session — art / stickers
|
|
391
452
|
ART: "/admin/art",
|
|
392
453
|
STICKERS: "/admin/stickers",
|
|
454
|
+
// Part Two — spares
|
|
455
|
+
SPARES: "/admin/spares",
|
|
393
456
|
GROUPED_LISTINGS: "/admin/grouped-listings",
|
|
394
457
|
GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new",
|
|
395
458
|
GROUPED_LISTINGS_EDIT: (id) => `/admin/grouped-listings/${id}/edit`,
|
|
@@ -552,12 +615,16 @@ export const PUBLIC_ROUTES = [
|
|
|
552
615
|
ROUTES.PUBLIC.PROMOTIONS,
|
|
553
616
|
ROUTES.PUBLIC.ABOUT,
|
|
554
617
|
ROUTES.PUBLIC.CONTACT,
|
|
555
|
-
ROUTES.
|
|
618
|
+
ROUTES.BLOG.LIST,
|
|
556
619
|
ROUTES.PUBLIC.HELP,
|
|
557
620
|
ROUTES.PUBLIC.TERMS,
|
|
558
621
|
ROUTES.PUBLIC.PRIVACY,
|
|
559
622
|
ROUTES.PUBLIC.ETHICS,
|
|
560
623
|
ROUTES.PUBLIC.CODE_OF_CONDUCT,
|
|
624
|
+
ROUTES.PUBLIC.CANCELLATION_POLICY,
|
|
625
|
+
// Public by necessity: a grievance officer a complainant must sign in to
|
|
626
|
+
// find is not a published disclosure.
|
|
627
|
+
ROUTES.PUBLIC.GRIEVANCE,
|
|
561
628
|
ROUTES.ERRORS.UNAUTHORIZED,
|
|
562
629
|
ROUTES.AUTH.LOGIN,
|
|
563
630
|
ROUTES.AUTH.REGISTER,
|
|
@@ -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,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Plaintext } from "../../security/encrypted";
|
|
1
2
|
import type { FirestoreDocument } from "@mohasinac/appkit";
|
|
2
3
|
import type { CollectionReference, DocumentData, DocumentReference, DocumentSnapshot, Firestore, Query, Transaction, WriteBatch } from "firebase-admin/firestore";
|
|
3
4
|
import { type FirebaseSieveFields, type FirebaseSieveOptions, type FirebaseSieveResult, type SieveModel } from "./sieve";
|
|
@@ -48,6 +49,28 @@ export declare abstract class BaseRepository<T extends DocumentData> {
|
|
|
48
49
|
* text, so indexing an encrypted field would undo the encryption.
|
|
49
50
|
*/
|
|
50
51
|
protected buildSearchTxtFor(_data: Record<string, JsonValue>): string[] | null;
|
|
52
|
+
/**
|
|
53
|
+
* Build this document's `*TokensIndex` fields — whole-word HMAC digests
|
|
54
|
+
* over PII, for admin search without decryption. Return `null` to leave
|
|
55
|
+
* the document alone (the default).
|
|
56
|
+
*
|
|
57
|
+
* Mirrors `buildSearchTxtFor`'s shape exactly, and for the reason that
|
|
58
|
+
* shape exists: a hook run from `applyWriteHooks` reaches EVERY write path
|
|
59
|
+
* — create, createWithId, update, the `*InTx`/`*InBatch` family, and a
|
|
60
|
+
* seed load, which goes through the same repository methods. A one-off
|
|
61
|
+
* backfill script cannot reach any of those; it only catches documents
|
|
62
|
+
* that already existed when it ran.
|
|
63
|
+
*
|
|
64
|
+
* 🛑 This is NOT `buildSearchTxtFor`'s inverse rule. `searchTxt` must never
|
|
65
|
+
* carry PII; this hook exists FOR PII, and runs in the only place that
|
|
66
|
+
* sees the plaintext before `encryptPiiFields` replaces it. See
|
|
67
|
+
* `security/blind-index-tokens.ts` for why the tokens are whole-word only.
|
|
68
|
+
*
|
|
69
|
+
* Return shape is `{ fieldName: digests[] }` rather than a single array,
|
|
70
|
+
* because a document can carry more than one token field (a payout has
|
|
71
|
+
* `sellerTokensIndex`, nothing else does yet, but the hook is general).
|
|
72
|
+
*/
|
|
73
|
+
protected buildTokensIndexFor(_data: Record<string, JsonValue>): Record<string, string[]> | null;
|
|
51
74
|
/**
|
|
52
75
|
* The one place writes are transformed. Every write path routes through here
|
|
53
76
|
* so a new method cannot silently skip encryption.
|
|
@@ -111,7 +134,7 @@ export declare abstract class BaseRepository<T extends DocumentData> {
|
|
|
111
134
|
doc: T | null | undefined;
|
|
112
135
|
patch: Partial<T>;
|
|
113
136
|
}>): Promise<number>;
|
|
114
|
-
create(data: Partial<T
|
|
137
|
+
create(data: Partial<Plaintext<T>> | FirestoreDocument): Promise<T>;
|
|
115
138
|
/**
|
|
116
139
|
* Write a document at a CALLER-CHOSEN id.
|
|
117
140
|
*
|
|
@@ -143,8 +166,9 @@ export declare abstract class BaseRepository<T extends DocumentData> {
|
|
|
143
166
|
* NAME: `createWithId` reads as "create" and behaves as "replace", and that
|
|
144
167
|
* gap is what made the wrong conclusion so easy to reach.
|
|
145
168
|
*/
|
|
146
|
-
createWithId(id: string, data: Partial<T
|
|
147
|
-
|
|
169
|
+
createWithId(id: string, data: Partial<Plaintext<T>>): Promise<T>;
|
|
170
|
+
/** Accepts the PLAINTEXT shape — see `create` for why. */
|
|
171
|
+
update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
|
|
148
172
|
delete(id: string): Promise<void>;
|
|
149
173
|
exists(id: string): Promise<boolean>;
|
|
150
174
|
/**
|
|
@@ -195,12 +219,12 @@ export declare abstract class BaseRepository<T extends DocumentData> {
|
|
|
195
219
|
}): Promise<Record<string, number | undefined>>;
|
|
196
220
|
findByIdInTx(tx: Transaction, id: string): Promise<T | null>;
|
|
197
221
|
findByIdOrFailInTx(tx: Transaction, id: string): Promise<T>;
|
|
198
|
-
createInTx(tx: Transaction, data: Partial<T
|
|
199
|
-
createWithIdInTx(tx: Transaction, id: string, data: Partial<T
|
|
200
|
-
updateInTx(tx: Transaction, id: string, data: Partial<T
|
|
222
|
+
createInTx(tx: Transaction, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
|
|
223
|
+
createWithIdInTx(tx: Transaction, id: string, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
|
|
224
|
+
updateInTx(tx: Transaction, id: string, data: Partial<Plaintext<T>>): void;
|
|
201
225
|
deleteInTx(tx: Transaction, id: string): void;
|
|
202
|
-
createInBatch(batch: WriteBatch, data: Partial<T
|
|
203
|
-
createWithIdInBatch(batch: WriteBatch, id: string, data: Partial<T
|
|
204
|
-
updateInBatch(batch: WriteBatch, id: string, data: Partial<T
|
|
226
|
+
createInBatch(batch: WriteBatch, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
|
|
227
|
+
createWithIdInBatch(batch: WriteBatch, id: string, data: Partial<Plaintext<T>> | FirestoreDocument): void;
|
|
228
|
+
updateInBatch(batch: WriteBatch, id: string, data: Partial<Plaintext<T>>): void;
|
|
205
229
|
deleteInBatch(batch: WriteBatch, id: string): void;
|
|
206
230
|
}
|
|
@@ -5,6 +5,7 @@ import { applySieveToFirestore, countSieveMatches, } from "./sieve.js";
|
|
|
5
5
|
import { deserializeTimestamps, prepareForFirestore } from "./helpers.js";
|
|
6
6
|
import { getAdminDb } from "./admin.js";
|
|
7
7
|
import { encryptPiiFields, piiIndicesFor } from "../../security/pii-encrypt.js";
|
|
8
|
+
import { BLIND_INDEX_KEY_VERSION_FIELD, CURRENT_BLIND_INDEX_KEY_VERSION, } from "../../security/blind-index-tokens.js";
|
|
8
9
|
/**
|
|
9
10
|
* The underlying failure's message, for interpolation into a DatabaseError.
|
|
10
11
|
*
|
|
@@ -133,6 +134,30 @@ export class BaseRepository {
|
|
|
133
134
|
buildSearchTxtFor(_data) {
|
|
134
135
|
return null;
|
|
135
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Build this document's `*TokensIndex` fields — whole-word HMAC digests
|
|
139
|
+
* over PII, for admin search without decryption. Return `null` to leave
|
|
140
|
+
* the document alone (the default).
|
|
141
|
+
*
|
|
142
|
+
* Mirrors `buildSearchTxtFor`'s shape exactly, and for the reason that
|
|
143
|
+
* shape exists: a hook run from `applyWriteHooks` reaches EVERY write path
|
|
144
|
+
* — create, createWithId, update, the `*InTx`/`*InBatch` family, and a
|
|
145
|
+
* seed load, which goes through the same repository methods. A one-off
|
|
146
|
+
* backfill script cannot reach any of those; it only catches documents
|
|
147
|
+
* that already existed when it ran.
|
|
148
|
+
*
|
|
149
|
+
* 🛑 This is NOT `buildSearchTxtFor`'s inverse rule. `searchTxt` must never
|
|
150
|
+
* carry PII; this hook exists FOR PII, and runs in the only place that
|
|
151
|
+
* sees the plaintext before `encryptPiiFields` replaces it. See
|
|
152
|
+
* `security/blind-index-tokens.ts` for why the tokens are whole-word only.
|
|
153
|
+
*
|
|
154
|
+
* Return shape is `{ fieldName: digests[] }` rather than a single array,
|
|
155
|
+
* because a document can carry more than one token field (a payout has
|
|
156
|
+
* `sellerTokensIndex`, nothing else does yet, but the hook is general).
|
|
157
|
+
*/
|
|
158
|
+
buildTokensIndexFor(_data) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
136
161
|
/**
|
|
137
162
|
* The one place writes are transformed. Every write path routes through here
|
|
138
163
|
* so a new method cannot silently skip encryption.
|
|
@@ -154,6 +179,17 @@ export class BaseRepository {
|
|
|
154
179
|
const searchTxt = this.buildSearchTxtFor(out);
|
|
155
180
|
if (searchTxt)
|
|
156
181
|
out.searchTxt = searchTxt;
|
|
182
|
+
/*
|
|
183
|
+
* `data`, not `out` — the plaintext source, same as `piiIndicesFor`
|
|
184
|
+
* above. By this point `out` may already hold ciphertext, and hashing
|
|
185
|
+
* ciphertext would make the index meaningless.
|
|
186
|
+
*/
|
|
187
|
+
const tokensIndex = this.buildTokensIndexFor(data);
|
|
188
|
+
if (tokensIndex) {
|
|
189
|
+
Object.assign(out, tokensIndex, {
|
|
190
|
+
[BLIND_INDEX_KEY_VERSION_FIELD]: CURRENT_BLIND_INDEX_KEY_VERSION,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
157
193
|
return out;
|
|
158
194
|
}
|
|
159
195
|
/**
|
|
@@ -268,6 +304,21 @@ export class BaseRepository {
|
|
|
268
304
|
await batch.commit();
|
|
269
305
|
return present.length;
|
|
270
306
|
}
|
|
307
|
+
/*
|
|
308
|
+
* 🛑 Accepts the PLAINTEXT shape, because this method ENCRYPTS.
|
|
309
|
+
*
|
|
310
|
+
* `applyWriteHooks` runs `encryptPiiFields` over the subclass's `piiFields`,
|
|
311
|
+
* so a caller legitimately hands over a real email and Firestore holds
|
|
312
|
+
* ciphertext. Typing this `Partial<T>` demanded `Encrypted<string>` from
|
|
313
|
+
* every caller once the PII fields were branded — and the only way to make
|
|
314
|
+
* one without encrypting is `asEncrypted(value)`, which labels plaintext as
|
|
315
|
+
* ciphertext and is the misuse that helper's docstring forbids. The
|
|
316
|
+
* alternative was a cast at each of the dozens of write sites across
|
|
317
|
+
* fourteen repositories; one honest signature here is that change made once.
|
|
318
|
+
*
|
|
319
|
+
* `Plaintext<T>` is the identity on a document with no branded member, so
|
|
320
|
+
* this is a no-op for every repository holding no PII.
|
|
321
|
+
*/
|
|
271
322
|
async create(data) {
|
|
272
323
|
try {
|
|
273
324
|
const cleanData = prepareForFirestore({
|
|
@@ -315,6 +366,7 @@ export class BaseRepository {
|
|
|
315
366
|
* NAME: `createWithId` reads as "create" and behaves as "replace", and that
|
|
316
367
|
* gap is what made the wrong conclusion so easy to reach.
|
|
317
368
|
*/
|
|
369
|
+
// Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
|
|
318
370
|
async createWithId(id, data) {
|
|
319
371
|
try {
|
|
320
372
|
const now = new Date();
|
|
@@ -339,6 +391,7 @@ export class BaseRepository {
|
|
|
339
391
|
throw new DatabaseError(`Failed to create document with ID: ${id}: ${detailOf(error)}`, error);
|
|
340
392
|
}
|
|
341
393
|
}
|
|
394
|
+
/** Accepts the PLAINTEXT shape — see `create` for why. */
|
|
342
395
|
async update(id, data) {
|
|
343
396
|
try {
|
|
344
397
|
const cleanData = prepareForFirestore({
|
|
@@ -496,6 +549,7 @@ export class BaseRepository {
|
|
|
496
549
|
}));
|
|
497
550
|
return docRef;
|
|
498
551
|
}
|
|
552
|
+
// Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
|
|
499
553
|
updateInTx(tx, id, data) {
|
|
500
554
|
const docRef = this.getCollection().doc(id);
|
|
501
555
|
tx.update(docRef, prepareForFirestore({ ...this.applyWriteHooks(data), updatedAt: new Date() }));
|
|
@@ -523,6 +577,7 @@ export class BaseRepository {
|
|
|
523
577
|
updatedAt: now,
|
|
524
578
|
}));
|
|
525
579
|
}
|
|
580
|
+
// Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
|
|
526
581
|
updateInBatch(batch, id, data) {
|
|
527
582
|
const docRef = this.getCollection().doc(id);
|
|
528
583
|
batch.update(docRef, prepareForFirestore({ ...this.applyWriteHooks(data), updatedAt: new Date() }));
|
|
@@ -34,4 +34,16 @@ export declare const RTDB_PATHS: {
|
|
|
34
34
|
* Pruned by `cleanupRtdbEvents`'s sixth block.
|
|
35
35
|
*/
|
|
36
36
|
readonly CHAT_EVENTS: "chat_events";
|
|
37
|
+
/**
|
|
38
|
+
* Per-run progress for the sticker kiss-cut tracer — stage, pct, parts and
|
|
39
|
+
* shards done. The DURABLE record is `stickerTraceRuns.events[]`; this is
|
|
40
|
+
* only the live bar, which is why losing it is survivable and why the run
|
|
41
|
+
* document is what a failure is diagnosed from weeks later.
|
|
42
|
+
*
|
|
43
|
+
* 🛑 Pruned at SIXTY minutes, not fifteen. A `max`-tier fan-out across sixty
|
|
44
|
+
* parts can outlast a fifteen-minute window, and a channel pruned mid-run
|
|
45
|
+
* reads to the client as "it died" — the same false negative `EMAIL_EVENTS`
|
|
46
|
+
* carries a longer window to avoid.
|
|
47
|
+
*/
|
|
48
|
+
readonly STICKER_TRACE: "sticker_trace";
|
|
37
49
|
};
|
|
@@ -34,4 +34,16 @@ export const RTDB_PATHS = {
|
|
|
34
34
|
* Pruned by `cleanupRtdbEvents`'s sixth block.
|
|
35
35
|
*/
|
|
36
36
|
CHAT_EVENTS: "chat_events",
|
|
37
|
+
/**
|
|
38
|
+
* Per-run progress for the sticker kiss-cut tracer — stage, pct, parts and
|
|
39
|
+
* shards done. The DURABLE record is `stickerTraceRuns.events[]`; this is
|
|
40
|
+
* only the live bar, which is why losing it is survivable and why the run
|
|
41
|
+
* document is what a failure is diagnosed from weeks later.
|
|
42
|
+
*
|
|
43
|
+
* 🛑 Pruned at SIXTY minutes, not fifteen. A `max`-tier fan-out across sixty
|
|
44
|
+
* parts can outlast a fifteen-minute window, and a channel pruned mid-run
|
|
45
|
+
* reads to the client as "it died" — the same false negative `EMAIL_EVENTS`
|
|
46
|
+
* carries a longer window to avoid.
|
|
47
|
+
*/
|
|
48
|
+
STICKER_TRACE: "sticker_trace",
|
|
37
49
|
};
|
|
@@ -10,7 +10,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
10
10
|
*/
|
|
11
11
|
import { Component } from "react";
|
|
12
12
|
import { Logger } from "../core/Logger.js";
|
|
13
|
-
|
|
13
|
+
// Defining modules, not the sibling barrel — Root Cause #18. `ui/index.ts` and
|
|
14
|
+
// `react/index.ts` re-exported into each other, which is the whole of
|
|
15
|
+
// `audit-import-cycles` component 1: an 18-module knot held together entirely
|
|
16
|
+
// by barrel hops, none of which needed the barrel.
|
|
17
|
+
import { Button } from "../ui/components/Button.js";
|
|
18
|
+
import { Heading, Text } from "../ui/components/Typography.js";
|
|
14
19
|
import { trackError, ErrorCategory, ErrorSeverity, } from "../monitoring/error-tracking.js";
|
|
15
20
|
function DefaultFallback({ error, onReset, }) {
|
|
16
21
|
return (_jsxs("div", { role: "alert", style: {
|
|
@@ -20,6 +20,7 @@ export declare const RealtimeEventType: {
|
|
|
20
20
|
readonly CHAT: "chat";
|
|
21
21
|
readonly BID: "bid";
|
|
22
22
|
readonly BULK: "bulk";
|
|
23
|
+
readonly STICKER_TRACE: "sticker-trace";
|
|
23
24
|
};
|
|
24
25
|
export type RealtimeEventType = (typeof RealtimeEventType)[keyof typeof RealtimeEventType];
|
|
25
26
|
export declare const RealtimeEventStatus: {
|
|
@@ -19,6 +19,14 @@ export const RealtimeEventType = {
|
|
|
19
19
|
CHAT: "chat",
|
|
20
20
|
BID: "bid",
|
|
21
21
|
BULK: "bulk",
|
|
22
|
+
/*
|
|
23
|
+
* The sticker kiss-cut tracer's per-run progress channel. Added rather than
|
|
24
|
+
* reusing BULK: the type selects this event's message strings and its
|
|
25
|
+
* claim/path conventions, and a trace reports a STAGE out of eleven where a
|
|
26
|
+
* bulk job reports a count — borrowing BULK's vocabulary would make the
|
|
27
|
+
* progress row say the wrong thing about every failure.
|
|
28
|
+
*/
|
|
29
|
+
STICKER_TRACE: "sticker-trace",
|
|
22
30
|
};
|
|
23
31
|
export const RealtimeEventStatus = {
|
|
24
32
|
IDLE: "idle",
|