@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
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { normalizeError } from "../../errors/normalize.js";
|
|
3
3
|
import { useState, useCallback } from "react";
|
|
4
|
-
|
|
4
|
+
// Defining modules, not the sibling barrel — Root Cause #18. `ui/index.ts` and
|
|
5
|
+
// `react/index.ts` re-exported into each other, which is the whole of
|
|
6
|
+
// `audit-import-cycles` component 1: an 18-module knot held together entirely
|
|
7
|
+
// by barrel hops, none of which needed the barrel.
|
|
8
|
+
import { useToast } from "../../ui/components/toast-context.js";
|
|
5
9
|
export function useEntityDelete(opts) {
|
|
6
10
|
const [deletingId, setDeletingId] = useState(null);
|
|
7
11
|
const { showToast } = useToast();
|
|
@@ -10,7 +10,11 @@
|
|
|
10
10
|
* inline (e.g. reviews, settings views).
|
|
11
11
|
*/
|
|
12
12
|
import { useState, useCallback, useRef, useEffect } from "react";
|
|
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 { useToast } from "../../ui/components/toast-context.js";
|
|
14
18
|
export function useMessage() {
|
|
15
19
|
const { showToast } = useToast();
|
|
16
20
|
const [message, setMessage] = useState(null);
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Server-only — all repository instances use firebase-admin.
|
|
6
6
|
*/
|
|
7
7
|
export { BaseRepository } from "../providers/db-firebase";
|
|
8
|
-
export { unitOfWork } from "../core";
|
|
9
|
-
export type { UnitOfWork } from "../core";
|
|
8
|
+
export { unitOfWork } from "../core/unit-of-work";
|
|
9
|
+
export type { UnitOfWork } from "../core/unit-of-work";
|
|
10
10
|
export { UserRepository, userRepository, EmailVerificationTokenRepository, PasswordResetTokenRepository, emailVerificationTokenRepository, passwordResetTokenRepository, tokenRepository, SessionRepository, sessionRepository, } from "../features/auth/repository";
|
|
11
11
|
export { SmsCounterRepository, smsCounterRepository, } from "../features/auth/repository/sms-counter.repository";
|
|
12
12
|
export { AddressesRepository, addressesRepository, } from "../features/addresses";
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
// Shared repository foundations
|
|
8
8
|
export { BaseRepository } from "../providers/db-firebase/index.js";
|
|
9
9
|
// Unit of Work - atomic multi-collection operations
|
|
10
|
-
|
|
10
|
+
/*
|
|
11
|
+
* Deep, not `../core`: that barrel pulls in every core module, several of which
|
|
12
|
+
* import repositories back out of this file. One barrel re-exporting another
|
|
13
|
+
* barrel is how component 2's cycle stayed closed.
|
|
14
|
+
*/
|
|
15
|
+
export { unitOfWork } from "../core/unit-of-work.js";
|
|
11
16
|
// Core repositories
|
|
12
17
|
export { UserRepository, userRepository, EmailVerificationTokenRepository, PasswordResetTokenRepository, emailVerificationTokenRepository, passwordResetTokenRepository, tokenRepository, SessionRepository, sessionRepository, } from "../features/auth/repository/index.js";
|
|
13
18
|
export { SmsCounterRepository, smsCounterRepository, } from "../features/auth/repository/sms-counter.repository.js";
|
|
@@ -502,15 +502,15 @@ export declare const SCHEMAS: {
|
|
|
502
502
|
}, "strip", import("zod").ZodTypeAny, {
|
|
503
503
|
title?: string | undefined;
|
|
504
504
|
description?: string | undefined;
|
|
505
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
506
505
|
textColor?: string | undefined;
|
|
506
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
507
507
|
subtitle?: string | undefined;
|
|
508
508
|
eyebrow?: string | undefined;
|
|
509
509
|
}, {
|
|
510
510
|
title?: string | undefined;
|
|
511
511
|
description?: string | undefined;
|
|
512
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
513
512
|
textColor?: string | undefined;
|
|
513
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
514
514
|
subtitle?: string | undefined;
|
|
515
515
|
eyebrow?: string | undefined;
|
|
516
516
|
}>>;
|
|
@@ -569,8 +569,8 @@ export declare const SCHEMAS: {
|
|
|
569
569
|
content?: {
|
|
570
570
|
title?: string | undefined;
|
|
571
571
|
description?: string | undefined;
|
|
572
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
573
572
|
textColor?: string | undefined;
|
|
573
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
574
574
|
subtitle?: string | undefined;
|
|
575
575
|
eyebrow?: string | undefined;
|
|
576
576
|
} | undefined;
|
|
@@ -610,8 +610,8 @@ export declare const SCHEMAS: {
|
|
|
610
610
|
content?: {
|
|
611
611
|
title?: string | undefined;
|
|
612
612
|
description?: string | undefined;
|
|
613
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
614
613
|
textColor?: string | undefined;
|
|
614
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
615
615
|
subtitle?: string | undefined;
|
|
616
616
|
eyebrow?: string | undefined;
|
|
617
617
|
} | undefined;
|
|
@@ -749,8 +749,8 @@ export declare const SCHEMAS: {
|
|
|
749
749
|
content?: {
|
|
750
750
|
title?: string | undefined;
|
|
751
751
|
description?: string | undefined;
|
|
752
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
753
752
|
textColor?: string | undefined;
|
|
753
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
754
754
|
subtitle?: string | undefined;
|
|
755
755
|
eyebrow?: string | undefined;
|
|
756
756
|
} | undefined;
|
|
@@ -858,8 +858,8 @@ export declare const SCHEMAS: {
|
|
|
858
858
|
content?: {
|
|
859
859
|
title?: string | undefined;
|
|
860
860
|
description?: string | undefined;
|
|
861
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
862
861
|
textColor?: string | undefined;
|
|
862
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
863
863
|
subtitle?: string | undefined;
|
|
864
864
|
eyebrow?: string | undefined;
|
|
865
865
|
} | undefined;
|
|
@@ -1011,6 +1011,8 @@ export declare const SCHEMAS: {
|
|
|
1011
1011
|
brandWebsite: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1012
1012
|
brandCountry: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1013
1013
|
brandFounded: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1014
|
+
hasbroName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1015
|
+
hasbroCoverImage: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1014
1016
|
highlights: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
|
|
1015
1017
|
faqs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
1016
1018
|
question: import("zod").ZodString;
|
|
@@ -1604,6 +1606,8 @@ export declare const SCHEMAS: {
|
|
|
1604
1606
|
brandWebsite?: string | undefined;
|
|
1605
1607
|
brandCountry?: string | undefined;
|
|
1606
1608
|
brandFounded?: number | undefined;
|
|
1609
|
+
hasbroName?: string | undefined;
|
|
1610
|
+
hasbroCoverImage?: string | undefined;
|
|
1607
1611
|
highlights?: string[] | undefined;
|
|
1608
1612
|
contentBody?: string | undefined;
|
|
1609
1613
|
descriptionTemplates?: {
|
|
@@ -1775,6 +1779,8 @@ export declare const SCHEMAS: {
|
|
|
1775
1779
|
brandWebsite?: string | undefined;
|
|
1776
1780
|
brandCountry?: string | undefined;
|
|
1777
1781
|
brandFounded?: number | undefined;
|
|
1782
|
+
hasbroName?: string | undefined;
|
|
1783
|
+
hasbroCoverImage?: string | undefined;
|
|
1778
1784
|
highlights?: string[] | undefined;
|
|
1779
1785
|
contentBody?: string | undefined;
|
|
1780
1786
|
descriptionTemplates?: {
|
|
@@ -2605,12 +2611,12 @@ export declare const SCHEMAS: {
|
|
|
2605
2611
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2606
2612
|
}, import("zod").ZodTypeAny, "passthrough">>]>;
|
|
2607
2613
|
id: import("zod").ZodString;
|
|
2608
|
-
type: import("zod").ZodEnum<["
|
|
2614
|
+
type: import("zod").ZodEnum<[import("..").SectionType, ...import("..").SectionType[]]>;
|
|
2609
2615
|
order: import("zod").ZodNumber;
|
|
2610
2616
|
enabled: import("zod").ZodBoolean;
|
|
2611
2617
|
config: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodType<import("./types").JsonValue, import("zod").ZodTypeDef, import("./types").JsonValue>>;
|
|
2612
2618
|
}, "strip", import("zod").ZodTypeAny, {
|
|
2613
|
-
type: "
|
|
2619
|
+
type: import("..").SectionType;
|
|
2614
2620
|
id: string;
|
|
2615
2621
|
createdAt: string | Date | import("zod").objectOutputType<{
|
|
2616
2622
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
@@ -2622,7 +2628,7 @@ export declare const SCHEMAS: {
|
|
|
2622
2628
|
order: number;
|
|
2623
2629
|
config: Record<string, import("./types").JsonValue>;
|
|
2624
2630
|
}, {
|
|
2625
|
-
type: "
|
|
2631
|
+
type: import("..").SectionType;
|
|
2626
2632
|
id: string;
|
|
2627
2633
|
createdAt: string | Date | import("zod").objectInputType<{
|
|
2628
2634
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
@@ -2796,10 +2802,10 @@ export declare const SCHEMAS: {
|
|
|
2796
2802
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2797
2803
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
2798
2804
|
transactionId?: string | undefined;
|
|
2805
|
+
proofUrl?: string | undefined;
|
|
2799
2806
|
paidAt?: string | Date | import("zod").objectOutputType<{
|
|
2800
2807
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2801
2808
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
2802
|
-
proofUrl?: string | undefined;
|
|
2803
2809
|
reminderSentAt?: string | Date | import("zod").objectOutputType<{
|
|
2804
2810
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2805
2811
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -2811,10 +2817,10 @@ export declare const SCHEMAS: {
|
|
|
2811
2817
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2812
2818
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
2813
2819
|
transactionId?: string | undefined;
|
|
2820
|
+
proofUrl?: string | undefined;
|
|
2814
2821
|
paidAt?: string | Date | import("zod").objectInputType<{
|
|
2815
2822
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2816
2823
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
2817
|
-
proofUrl?: string | undefined;
|
|
2818
2824
|
reminderSentAt?: string | Date | import("zod").objectInputType<{
|
|
2819
2825
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
2820
2826
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -3056,10 +3062,10 @@ export declare const SCHEMAS: {
|
|
|
3056
3062
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3057
3063
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
3058
3064
|
transactionId?: string | undefined;
|
|
3065
|
+
proofUrl?: string | undefined;
|
|
3059
3066
|
paidAt?: string | Date | import("zod").objectOutputType<{
|
|
3060
3067
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3061
3068
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
3062
|
-
proofUrl?: string | undefined;
|
|
3063
3069
|
reminderSentAt?: string | Date | import("zod").objectOutputType<{
|
|
3064
3070
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3065
3071
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -3204,10 +3210,10 @@ export declare const SCHEMAS: {
|
|
|
3204
3210
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3205
3211
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
3206
3212
|
transactionId?: string | undefined;
|
|
3213
|
+
proofUrl?: string | undefined;
|
|
3207
3214
|
paidAt?: string | Date | import("zod").objectInputType<{
|
|
3208
3215
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3209
3216
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
3210
|
-
proofUrl?: string | undefined;
|
|
3211
3217
|
reminderSentAt?: string | Date | import("zod").objectInputType<{
|
|
3212
3218
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
3213
3219
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -4616,14 +4622,7 @@ export declare const SCHEMAS: {
|
|
|
4616
4622
|
internalNotes?: string | undefined;
|
|
4617
4623
|
}>;
|
|
4618
4624
|
};
|
|
4619
|
-
readonly api: {
|
|
4620
|
-
readonly "POST /api/wishlist": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4621
|
-
readonly "POST /api/auth/session": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4622
|
-
readonly "POST /api/admin/products/[id]/group": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4623
|
-
readonly "POST /api/media/sign": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4624
|
-
readonly "POST /api/media/finalize": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4625
|
-
readonly "GET /api/search/suggestions": import("./types").ApiRouteSchema<import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny, import("zod").ZodTypeAny>;
|
|
4626
|
-
};
|
|
4625
|
+
readonly api: {};
|
|
4627
4626
|
readonly forms: {
|
|
4628
4627
|
readonly product: import("zod").ZodObject<{
|
|
4629
4628
|
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -5508,18 +5507,21 @@ export declare const SCHEMAS: {
|
|
|
5508
5507
|
audienceUserIds?: string[] | undefined;
|
|
5509
5508
|
}>;
|
|
5510
5509
|
readonly homepageSection: import("zod").ZodObject<{
|
|
5511
|
-
type: import("zod").ZodEnum<["
|
|
5510
|
+
type: import("zod").ZodEnum<[import("..").SectionType, ...import("..").SectionType[]]>;
|
|
5512
5511
|
enabled: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
|
|
5513
5512
|
order: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
5513
|
+
surface: import("zod").ZodOptional<import("zod").ZodEnum<["homepage", "category", "brand", "product", "store"]>>;
|
|
5514
5514
|
config: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodType<import("./types").JsonValue, import("zod").ZodTypeDef, import("./types").JsonValue>>;
|
|
5515
5515
|
}, "strip", import("zod").ZodTypeAny, {
|
|
5516
|
-
type: "
|
|
5516
|
+
type: import("..").SectionType;
|
|
5517
5517
|
enabled: boolean;
|
|
5518
5518
|
config: Record<string, import("./types").JsonValue>;
|
|
5519
|
+
surface?: "brand" | "category" | "store" | "product" | "homepage" | undefined;
|
|
5519
5520
|
order?: number | undefined;
|
|
5520
5521
|
}, {
|
|
5521
|
-
type: "
|
|
5522
|
+
type: import("..").SectionType;
|
|
5522
5523
|
config: Record<string, import("./types").JsonValue>;
|
|
5524
|
+
surface?: "brand" | "category" | "store" | "product" | "homepage" | undefined;
|
|
5523
5525
|
enabled?: boolean | undefined;
|
|
5524
5526
|
order?: number | undefined;
|
|
5525
5527
|
}>;
|
|
@@ -6354,8 +6356,8 @@ export declare const SCHEMAS: {
|
|
|
6354
6356
|
kind: import("zod").ZodOptional<import("zod").ZodString>;
|
|
6355
6357
|
}, "strip", import("zod").ZodTypeAny, {
|
|
6356
6358
|
refreshToken: string;
|
|
6357
|
-
idToken: string;
|
|
6358
6359
|
localId: string;
|
|
6360
|
+
idToken: string;
|
|
6359
6361
|
expiresIn: string;
|
|
6360
6362
|
email?: string | undefined;
|
|
6361
6363
|
kind?: string | undefined;
|
|
@@ -6372,8 +6374,8 @@ export declare const SCHEMAS: {
|
|
|
6372
6374
|
rawUserInfo?: string | undefined;
|
|
6373
6375
|
}, {
|
|
6374
6376
|
refreshToken: string;
|
|
6375
|
-
idToken: string;
|
|
6376
6377
|
localId: string;
|
|
6378
|
+
idToken: string;
|
|
6377
6379
|
expiresIn: string;
|
|
6378
6380
|
email?: string | undefined;
|
|
6379
6381
|
kind?: string | undefined;
|
package/dist/schemas/registry.js
CHANGED
|
@@ -75,20 +75,37 @@ const firestore = {
|
|
|
75
75
|
// those are touched in W5/W7.
|
|
76
76
|
};
|
|
77
77
|
// ---------------------------------------------------------------------------
|
|
78
|
-
// API route schemas —
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
78
|
+
// API route schemas — see the `api` bucket below.
|
|
79
|
+
/*
|
|
80
|
+
* 🛑 EMPTY, deliberately, as of 2026-10-17 — and `audit-route-schema-registry`
|
|
81
|
+
* is retired with it.
|
|
82
|
+
*
|
|
83
|
+
* This bucket is an ADDRESSING convenience: it lets a route write
|
|
84
|
+
* `schema: "POST /api/wishlist"` instead of importing the schema. Measured
|
|
85
|
+
* before emptying it: 6 keys registered, **0 routes passing a key string**,
|
|
86
|
+
* and 170 route files passing a schema identifier directly. So nothing has
|
|
87
|
+
* ever read it by key.
|
|
88
|
+
*
|
|
89
|
+
* The audit that policed it reported "576 of 582 routes await registration",
|
|
90
|
+
* which reads as a migration backlog and is not one. Its own header said so:
|
|
91
|
+
* *"not a migration backlog winding down, it is a registry almost nothing
|
|
92
|
+
* uses"*. And the codebase had already chosen the other convention — when
|
|
93
|
+
* `postApiWishlist` was found declared here while `/api/wishlist` read its
|
|
94
|
+
* body raw, the fix was to re-export the schema for DIRECT use at the route,
|
|
95
|
+
* not to adopt the key form.
|
|
96
|
+
*
|
|
97
|
+
* The safety property — a handler that reads a body must validate it — is
|
|
98
|
+
* owned by `audit-unvalidated-request-body`, which is strict-zero and at 0.
|
|
99
|
+
* Widening THAT rule to see `export async function POST` (it had only matched
|
|
100
|
+
* `export const POST`) found two genuinely unvalidated bodies on the session
|
|
101
|
+
* endpoints. That is what 576 registry keys would not have found.
|
|
102
|
+
*
|
|
103
|
+
* The bucket stays declared because `audit-schema-registry-completeness`
|
|
104
|
+
* requires every bucket to exist, and because the registry's own doctrine is
|
|
105
|
+
* that an empty bucket is honest while a bucket of placeholders "reads as
|
|
106
|
+
* migrated to everyone who comes after".
|
|
107
|
+
*/
|
|
108
|
+
const api = {};
|
|
92
109
|
// ---------------------------------------------------------------------------
|
|
93
110
|
// Form schemas — keyed by form id (matches FormShell/QuickFormDrawer `formId`).
|
|
94
111
|
// `audit-form-schema` already enforces presence at FormShell sites; this
|
|
@@ -19,8 +19,8 @@ export declare const googleSignInWithIdpResponseSchema: z.ZodObject<{
|
|
|
19
19
|
kind: z.ZodOptional<z.ZodString>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
21
|
refreshToken: string;
|
|
22
|
-
idToken: string;
|
|
23
22
|
localId: string;
|
|
23
|
+
idToken: string;
|
|
24
24
|
expiresIn: string;
|
|
25
25
|
email?: string | undefined;
|
|
26
26
|
kind?: string | undefined;
|
|
@@ -37,8 +37,8 @@ export declare const googleSignInWithIdpResponseSchema: z.ZodObject<{
|
|
|
37
37
|
rawUserInfo?: string | undefined;
|
|
38
38
|
}, {
|
|
39
39
|
refreshToken: string;
|
|
40
|
-
idToken: string;
|
|
41
40
|
localId: string;
|
|
41
|
+
idToken: string;
|
|
42
42
|
expiresIn: string;
|
|
43
43
|
email?: string | undefined;
|
|
44
44
|
kind?: string | undefined;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shortest token worth indexing.
|
|
3
|
+
*
|
|
4
|
+
* 🛑 Three, matching the frequency argument in the header. Two-character
|
|
5
|
+
* tokens are both uninformative as a search ("find everyone with 'li' in
|
|
6
|
+
* their name") and the regime where counting starts to work.
|
|
7
|
+
*/
|
|
8
|
+
export declare const BLIND_INDEX_MIN_TOKEN = 3;
|
|
9
|
+
/** Tokens per field. A bound, so one pathological value cannot bloat a document. */
|
|
10
|
+
export declare const BLIND_INDEX_MAX_TOKENS = 24;
|
|
11
|
+
/** Split a value into whole, normalised, long-enough words. */
|
|
12
|
+
export declare function tokensOf(value: string): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Build a `*TokensIndex` from one or more plaintext values.
|
|
15
|
+
*
|
|
16
|
+
* Returns `[]` rather than undefined for an empty input, so the field is
|
|
17
|
+
* always present and `array-contains` behaves predictably. An ABSENT array
|
|
18
|
+
* field and an empty one are the same to `array-contains`, but they are not
|
|
19
|
+
* the same to a human reading the document and wondering whether the
|
|
20
|
+
* backfill ran.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildTokensIndex(...values: readonly (string | null | undefined)[]): string[];
|
|
23
|
+
/**
|
|
24
|
+
* The digest to pass to `array-contains` for one search term.
|
|
25
|
+
*
|
|
26
|
+
* Returns null when the term is too short to have been indexed — the caller
|
|
27
|
+
* must then return NOTHING rather than fall back to an unfiltered query.
|
|
28
|
+
* A two-character admin search that quietly listed every user would be the
|
|
29
|
+
* `plan.empty` bug (a query that normalises away matching everything) on
|
|
30
|
+
* the one surface where the result set is people.
|
|
31
|
+
*/
|
|
32
|
+
export declare function tokensIndexQueryValue(term: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Which key version wrote a given index.
|
|
35
|
+
*
|
|
36
|
+
* 🛑 Rotating `PII_HMAC_KEY` invalidates every digest written before it, and
|
|
37
|
+
* the failure is silent: searches simply stop matching, which reads as "no
|
|
38
|
+
* such user" rather than as a broken index. Recording the version means a
|
|
39
|
+
* backfill can tell what it still has to rewrite instead of rewriting
|
|
40
|
+
* everything, and a mismatch is detectable rather than invisible.
|
|
41
|
+
*/
|
|
42
|
+
export declare const BLIND_INDEX_KEY_VERSION_FIELD = "blindIndexKeyVersion";
|
|
43
|
+
/**
|
|
44
|
+
* The version every NEW write stamps. Bump by hand when `PII_HMAC_KEY`
|
|
45
|
+
* rotates — never computed, because a value derived from the key itself
|
|
46
|
+
* would be constant across every rotation and the whole point is to tell
|
|
47
|
+
* two rotations apart.
|
|
48
|
+
*
|
|
49
|
+
* Read from `PII_HMAC_KEY_VERSION` so the repository write path (which runs
|
|
50
|
+
* inside the Next.js/Functions runtime) and `backfill-blind-index.mjs`
|
|
51
|
+
* (which runs as a standalone script before `appkit/dist` is necessarily
|
|
52
|
+
* current) agree without importing from each other.
|
|
53
|
+
*/
|
|
54
|
+
export declare const CURRENT_BLIND_INDEX_KEY_VERSION: number;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: An admin needs to find a person by name without anything on the
|
|
3
|
+
* server being able to read that name, and without the index itself
|
|
4
|
+
* becoming the leak.
|
|
5
|
+
* WHAT: `*TokensIndex` — a whole-word HMAC token array, and the ONE
|
|
6
|
+
* normaliser both sides must use.
|
|
7
|
+
*
|
|
8
|
+
* ## 🛑 WHOLE WORDS ONLY, 3 characters minimum. This is the security
|
|
9
|
+
* boundary, not a tuning preference.
|
|
10
|
+
*
|
|
11
|
+
* The edge-n-gram expansion that makes `searchTxt` good is exactly what
|
|
12
|
+
* would make a blind index leak. An attacker with read access cannot
|
|
13
|
+
* compute HMACs without the key — but they can COUNT them. A 1-character
|
|
14
|
+
* prefix has 36 possible hashes and a 2-character one roughly 1,300, so the
|
|
15
|
+
* most frequent hash in the column is `a`, the second is `e`, and the
|
|
16
|
+
* distribution unpicks from there by ordinary frequency analysis. Whole
|
|
17
|
+
* tokens keep the space uninteresting, and "type a full first or last name"
|
|
18
|
+
* is what admin people-search actually needs.
|
|
19
|
+
*
|
|
20
|
+
* So: never call `buildSearchTxt` to build one of these, never add a prefix
|
|
21
|
+
* loop, and never derive one field from the other. `audit-blind-index-tokens`
|
|
22
|
+
* R1 blocks all three.
|
|
23
|
+
*
|
|
24
|
+
* ## 🛑 `hmacBlindIndex` does NOT normalise — it hashes the raw string
|
|
25
|
+
*
|
|
26
|
+
* `Mohasin` and `mohasin` therefore produce different digests. Both sides
|
|
27
|
+
* must run the same normaliser BEFORE hashing, and if they ever diverge a
|
|
28
|
+
* backfill does not fix it: you must first discover the divergence, and the
|
|
29
|
+
* symptom is "search returns nothing", which reads as "no such user".
|
|
30
|
+
*
|
|
31
|
+
* That is why `buildTokensIndex` and `tokensIndexQueryValue` live in one
|
|
32
|
+
* file and share `normaliseToken` — the write side and the query side
|
|
33
|
+
* cannot be edited independently.
|
|
34
|
+
*
|
|
35
|
+
* ## Why this is a DIFFERENT field from `searchTxt`, not an extension
|
|
36
|
+
*
|
|
37
|
+
* Different properties, deliberately: hashed not plaintext, whole-word not
|
|
38
|
+
* prefix-expanded, admin-only not public. `searchTxt` still never carries
|
|
39
|
+
* PII, and that rule is untouched. Keeping them visibly distinct is what
|
|
40
|
+
* stops someone "simplifying" one into the other.
|
|
41
|
+
*
|
|
42
|
+
* @tag domain:security
|
|
43
|
+
* @tag layer:shared
|
|
44
|
+
* @tag pattern:none
|
|
45
|
+
* @tag access:server
|
|
46
|
+
* @tag consumers:UserRepository,PayoutRepository,AddressesRepository,backfill-blind-index
|
|
47
|
+
* @tag sideEffects:none
|
|
48
|
+
*/
|
|
49
|
+
import { hmacBlindIndex } from "./pii-encrypt.js";
|
|
50
|
+
/**
|
|
51
|
+
* The shortest token worth indexing.
|
|
52
|
+
*
|
|
53
|
+
* 🛑 Three, matching the frequency argument in the header. Two-character
|
|
54
|
+
* tokens are both uninformative as a search ("find everyone with 'li' in
|
|
55
|
+
* their name") and the regime where counting starts to work.
|
|
56
|
+
*/
|
|
57
|
+
export const BLIND_INDEX_MIN_TOKEN = 3;
|
|
58
|
+
/** Tokens per field. A bound, so one pathological value cannot bloat a document. */
|
|
59
|
+
export const BLIND_INDEX_MAX_TOKENS = 24;
|
|
60
|
+
/**
|
|
61
|
+
* The ONE normaliser for this path.
|
|
62
|
+
*
|
|
63
|
+
* Deliberately NOT `normalizeSearchText`: that one exists to make the
|
|
64
|
+
* public write path and the Firestore token query agree, and it is tuned
|
|
65
|
+
* for product titles. Reusing it here would couple two schemes that must be
|
|
66
|
+
* able to change independently — and a change made for search reasons would
|
|
67
|
+
* silently invalidate every stored digest.
|
|
68
|
+
*
|
|
69
|
+
* Lower-case, strip diacritics, drop everything that is not a letter or a
|
|
70
|
+
* digit. An email is split on its punctuation too, so `mohsin0502@gmail.com`
|
|
71
|
+
* yields `mohsin0502`, `gmail`, `com` — the local part being the useful one.
|
|
72
|
+
*/
|
|
73
|
+
function normaliseToken(raw) {
|
|
74
|
+
return raw
|
|
75
|
+
.normalize("NFD")
|
|
76
|
+
.replace(/[̀-ͯ]/g, "")
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.replace(/[^a-z0-9]/g, "");
|
|
79
|
+
}
|
|
80
|
+
/** Split a value into whole, normalised, long-enough words. */
|
|
81
|
+
export function tokensOf(value) {
|
|
82
|
+
const out = [];
|
|
83
|
+
const seen = new Set();
|
|
84
|
+
for (const part of value.split(/[\s.@_\-+/\\,;:()[\]]+/)) {
|
|
85
|
+
const t = normaliseToken(part);
|
|
86
|
+
if (t.length < BLIND_INDEX_MIN_TOKEN)
|
|
87
|
+
continue;
|
|
88
|
+
if (seen.has(t))
|
|
89
|
+
continue;
|
|
90
|
+
seen.add(t);
|
|
91
|
+
out.push(t);
|
|
92
|
+
if (out.length >= BLIND_INDEX_MAX_TOKENS)
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build a `*TokensIndex` from one or more plaintext values.
|
|
99
|
+
*
|
|
100
|
+
* Returns `[]` rather than undefined for an empty input, so the field is
|
|
101
|
+
* always present and `array-contains` behaves predictably. An ABSENT array
|
|
102
|
+
* field and an empty one are the same to `array-contains`, but they are not
|
|
103
|
+
* the same to a human reading the document and wondering whether the
|
|
104
|
+
* backfill ran.
|
|
105
|
+
*/
|
|
106
|
+
export function buildTokensIndex(...values) {
|
|
107
|
+
const tokens = new Set();
|
|
108
|
+
for (const v of values) {
|
|
109
|
+
if (!v)
|
|
110
|
+
continue;
|
|
111
|
+
for (const t of tokensOf(v))
|
|
112
|
+
tokens.add(t);
|
|
113
|
+
}
|
|
114
|
+
return [...tokens].slice(0, BLIND_INDEX_MAX_TOKENS).map((t) => hmacBlindIndex(t));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The digest to pass to `array-contains` for one search term.
|
|
118
|
+
*
|
|
119
|
+
* Returns null when the term is too short to have been indexed — the caller
|
|
120
|
+
* must then return NOTHING rather than fall back to an unfiltered query.
|
|
121
|
+
* A two-character admin search that quietly listed every user would be the
|
|
122
|
+
* `plan.empty` bug (a query that normalises away matching everything) on
|
|
123
|
+
* the one surface where the result set is people.
|
|
124
|
+
*/
|
|
125
|
+
export function tokensIndexQueryValue(term) {
|
|
126
|
+
const t = normaliseToken(term);
|
|
127
|
+
if (t.length < BLIND_INDEX_MIN_TOKEN)
|
|
128
|
+
return null;
|
|
129
|
+
return hmacBlindIndex(t);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Which key version wrote a given index.
|
|
133
|
+
*
|
|
134
|
+
* 🛑 Rotating `PII_HMAC_KEY` invalidates every digest written before it, and
|
|
135
|
+
* the failure is silent: searches simply stop matching, which reads as "no
|
|
136
|
+
* such user" rather than as a broken index. Recording the version means a
|
|
137
|
+
* backfill can tell what it still has to rewrite instead of rewriting
|
|
138
|
+
* everything, and a mismatch is detectable rather than invisible.
|
|
139
|
+
*/
|
|
140
|
+
export const BLIND_INDEX_KEY_VERSION_FIELD = "blindIndexKeyVersion";
|
|
141
|
+
/**
|
|
142
|
+
* The version every NEW write stamps. Bump by hand when `PII_HMAC_KEY`
|
|
143
|
+
* rotates — never computed, because a value derived from the key itself
|
|
144
|
+
* would be constant across every rotation and the whole point is to tell
|
|
145
|
+
* two rotations apart.
|
|
146
|
+
*
|
|
147
|
+
* Read from `PII_HMAC_KEY_VERSION` so the repository write path (which runs
|
|
148
|
+
* inside the Next.js/Functions runtime) and `backfill-blind-index.mjs`
|
|
149
|
+
* (which runs as a standalone script before `appkit/dist` is necessarily
|
|
150
|
+
* current) agree without importing from each other.
|
|
151
|
+
*/
|
|
152
|
+
export const CURRENT_BLIND_INDEX_KEY_VERSION = Number((typeof process !== "undefined" ? process.env?.PII_HMAC_KEY_VERSION : undefined) ?? "1");
|