@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,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const bidsSeedData:
|
|
1
|
+
import type { BidPlain } from "../features/auctions/schemas/firestore";
|
|
2
|
+
export declare const bidsSeedData: BidPlain[];
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
24
24
|
* @tag sideEffects:none
|
|
25
25
|
*/
|
|
26
|
+
import { buildBidSearchTxt } from "../utils/search-txt-builders.js";
|
|
26
27
|
const NOW = new Date();
|
|
27
28
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
28
29
|
const BIDDER_EMAILS = {
|
|
@@ -36,7 +37,7 @@ const BIDDER_NAMES = {
|
|
|
36
37
|
"user-ananya-collector": "Mock User 9",
|
|
37
38
|
};
|
|
38
39
|
/*
|
|
39
|
-
* Typed on the
|
|
40
|
+
* Typed on the PLAIN shape, not `FirestoreDocument`. Once `BidDocument` gained
|
|
40
41
|
* `statusHistory?: StatusChangeEntry[]`, `Partial<BidDocument>` stopped being
|
|
41
42
|
* assignable to `FirestoreDocument` — an array of objects does not satisfy
|
|
42
43
|
* that index signature. The right fix is to narrow the parameter to what the
|
|
@@ -51,6 +52,26 @@ function withBidDefaults(b) {
|
|
|
51
52
|
currency: "INR",
|
|
52
53
|
isWinning: b.status === "active" || b.status === "won",
|
|
53
54
|
updatedAt: (b.createdAt ?? NOW),
|
|
55
|
+
/*
|
|
56
|
+
* 🛑 DERIVED here, from the same builder the repository's write hook uses —
|
|
57
|
+
* never a hand-written token list.
|
|
58
|
+
*
|
|
59
|
+
* A seeded row without this is invisible to search forever:
|
|
60
|
+
* `array-contains` cannot match a field the document does not have, and it
|
|
61
|
+
* raises nothing (Root Cause #101's shape). Deriving it from
|
|
62
|
+
* `buildBidSearchTxt` is also what keeps the seed and every runtime write
|
|
63
|
+
* agreeing on the normalisation — two token lists built two ways is the
|
|
64
|
+
* mirror-drift trap (Root Cause #42).
|
|
65
|
+
*
|
|
66
|
+
* Applied INSIDE `withBidDefaults` on purpose, after `productTitle` is
|
|
67
|
+
* defaulted above: a derivation placed before it would index the empty
|
|
68
|
+
* string for every row that relies on the fallback.
|
|
69
|
+
*/
|
|
70
|
+
searchTxt: buildBidSearchTxt({
|
|
71
|
+
productTitle: b.productTitle ??
|
|
72
|
+
(b.productId ?? "").replace(/^auction-/, "").replace(/-/g, " "),
|
|
73
|
+
userName: b.userName,
|
|
74
|
+
}),
|
|
54
75
|
};
|
|
55
76
|
}
|
|
56
77
|
/**
|
|
@@ -154,7 +175,7 @@ const _rawBidsSeedData = [
|
|
|
154
175
|
// auction-beyblade-burst-spriggan-requiem-bought-out — a BUYOUT ended it.
|
|
155
176
|
//
|
|
156
177
|
// Three competitive bids that lost, then the buyout that won. A buyout is a
|
|
157
|
-
// real
|
|
178
|
+
// real BidPlain (`isBuyout: true`) — it is not a bid-free purchase, which
|
|
158
179
|
// is why the order's `sourceContext.bidCount` is 3 rather than 0: the buyout
|
|
159
180
|
// itself is excluded from the "against N bidders" figure, the three it beat
|
|
160
181
|
// are not. `standingBidAtBuyout` is read from these bids and NOT from
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
* @tag sideEffects:none
|
|
52
52
|
*/
|
|
53
53
|
import { CATEGORY_FIELDS } from "../constants/field-names.js";
|
|
54
|
-
import { seedPhoto } from "./_helpers/media.js";
|
|
54
|
+
import { seedPhoto, isSeedPlaceholderImage } from "./_helpers/media.js";
|
|
55
55
|
import { buildCategoryTree } from "./_helpers/category-tree.js";
|
|
56
56
|
import { withCategorySearchTxt } from "./_helpers/search-txt-wrappers.js";
|
|
57
57
|
import { CATEGORY_FOREST } from "./_helpers/category-forest.js";
|
|
@@ -61,8 +61,9 @@ import { MODEL_LEAF_COUNT } from "./_helpers/category-models.js";
|
|
|
61
61
|
import { PART_LEAF_COUNT } from "./_helpers/category-parts.js";
|
|
62
62
|
import { MARKET_BAND_LEAF_IDS } from "./_helpers/category-content.js";
|
|
63
63
|
import { GENERATED_CATEGORY_CONTENT, GENERATED_CATEGORY_CONTENT_COUNT, } from "./_helpers/category-content-generated.js";
|
|
64
|
-
import { GENERATED_CATEGORY_IMAGES, GENERATED_CATEGORY_IMAGE_COUNT, } from "./_helpers/category-images-generated.js";
|
|
64
|
+
import { GENERATED_CATEGORY_IMAGES, GENERATED_CATEGORY_IMAGE_COUNT, GENERATED_CATEGORY_HASBRO_IMAGES, } from "./_helpers/category-images-generated.js";
|
|
65
65
|
import { productsStandardSeedData } from "./products-standard-seed-data.js";
|
|
66
|
+
import { productsBeybladeXSeedData } from "./products-beyblade-x-seed-data.js";
|
|
66
67
|
const NOW = new Date();
|
|
67
68
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
68
69
|
const emptyMetrics = {
|
|
@@ -228,19 +229,36 @@ const franchiseRows = buildFranchiseRows({
|
|
|
228
229
|
* Deriving from the members' own chains means the union cannot disagree with
|
|
229
230
|
* them, and a member whose chain moves updates every bundle holding it.
|
|
230
231
|
*/
|
|
231
|
-
|
|
232
|
+
/*
|
|
233
|
+
* Both real-product arrays, not just the standard one.
|
|
234
|
+
*
|
|
235
|
+
* `productsBeybladeXSeedData` was added 2026-10-19 as a separate file (real,
|
|
236
|
+
* wiki-verified Beyblade X listings under store-letitrip-official). A bundle
|
|
237
|
+
* may legitimately hold one of those, and resolving only the standard array
|
|
238
|
+
* would make `bundleCategorySlugsFor` throw "not in productsStandardSeedData"
|
|
239
|
+
* for a product that genuinely exists — which is exactly what happened when
|
|
240
|
+
* the two fictional X fixtures this file's bundles used to reference were
|
|
241
|
+
* removed in favour of real ones.
|
|
242
|
+
*/
|
|
243
|
+
const PRODUCT_CHAINS = new Map([...productsStandardSeedData, ...productsBeybladeXSeedData].map((p) => [
|
|
244
|
+
String(p.id),
|
|
245
|
+
(p.categorySlugs ?? []),
|
|
246
|
+
]));
|
|
232
247
|
function bundleCategorySlugsFor(productIds) {
|
|
233
248
|
const out = [];
|
|
234
249
|
for (const id of productIds) {
|
|
235
250
|
const chain = PRODUCT_CHAINS.get(id);
|
|
236
251
|
/*
|
|
237
|
-
* A member missing from the
|
|
238
|
-
* past: the bundle would silently lose that member's categories and
|
|
239
|
-
* Bundles tab would under-report.
|
|
240
|
-
*
|
|
252
|
+
* A member missing from the real-product seeds is a BUG, not something to
|
|
253
|
+
* shrug past: the bundle would silently lose that member's categories and
|
|
254
|
+
* the Bundles tab would under-report. The map was widened (rather than
|
|
255
|
+
* this check softened) on 2026-10-19 to cover
|
|
256
|
+
* `productsBeybladeXSeedData` as well — if another real-product file is
|
|
257
|
+
* added, widen it again.
|
|
241
258
|
*/
|
|
242
|
-
if (!chain)
|
|
243
|
-
throw new Error(`bundle member ${id} is
|
|
259
|
+
if (!chain) {
|
|
260
|
+
throw new Error(`bundle member ${id} is in neither productsStandardSeedData nor productsBeybladeXSeedData`);
|
|
261
|
+
}
|
|
244
262
|
for (const c of chain)
|
|
245
263
|
if (!out.includes(c))
|
|
246
264
|
out.push(c);
|
|
@@ -268,8 +286,11 @@ function withBundleMosaic(row) {
|
|
|
268
286
|
// half-built.
|
|
269
287
|
if (ids.length === 0 || !row.display)
|
|
270
288
|
return row;
|
|
289
|
+
// Both real-product arrays, for the same reason as PRODUCT_CHAINS above —
|
|
290
|
+
// otherwise a bundle holding a Beyblade X member silently loses that tile.
|
|
271
291
|
const images = ids
|
|
272
|
-
.map((id) => productsStandardSeedData.find((p) => p.id === id)
|
|
292
|
+
.map((id) => [...productsStandardSeedData, ...productsBeybladeXSeedData].find((p) => p.id === id)
|
|
293
|
+
?.mainImage)
|
|
273
294
|
.filter((src) => typeof src === "string" && src.length > 0);
|
|
274
295
|
if (images.length === 0)
|
|
275
296
|
return row;
|
|
@@ -387,18 +408,21 @@ const bundleRows = [
|
|
|
387
408
|
id: "bundle-x-series-starter",
|
|
388
409
|
name: "X-Series Starter Set",
|
|
389
410
|
slug: "bundle-x-series-starter",
|
|
390
|
-
description: "
|
|
411
|
+
description: "WizardArrow and KnightShield Ver.2.0 — the re-tuned Stamina and Defense tops from the BX-53 set, paired with a Burst-era Valkyrie.",
|
|
391
412
|
categoryType: "bundle",
|
|
392
413
|
bundleKind: "special",
|
|
393
414
|
brandSlug: "brand-takara-tomy",
|
|
394
415
|
bundlePrice: 2499,
|
|
395
416
|
bundleQueryRule: {
|
|
396
417
|
type: "static",
|
|
397
|
-
productIds: ["product-beyblade-x-
|
|
418
|
+
productIds: ["product-beyblade-x-bx-53-wizardarrow-v2", "product-beyblade-x-bx-53-knightshield-v2", "product-beyblade-burst-valkyrie"],
|
|
398
419
|
},
|
|
399
|
-
bundleProductIds: ["product-beyblade-x-
|
|
400
|
-
bundleCategorySlugs: bundleCategorySlugsFor(["product-beyblade-x-
|
|
401
|
-
|
|
420
|
+
bundleProductIds: ["product-beyblade-x-bx-53-wizardarrow-v2", "product-beyblade-x-bx-53-knightshield-v2", "product-beyblade-burst-valkyrie"],
|
|
421
|
+
bundleCategorySlugs: bundleCategorySlugsFor(["product-beyblade-x-bx-53-wizardarrow-v2", "product-beyblade-x-bx-53-knightshield-v2", "product-beyblade-burst-valkyrie"]),
|
|
422
|
+
// 1500 + 1500 + 999. Recomputed 2026-10-19 when the two fictional X
|
|
423
|
+
// fixtures (899 + 949) were replaced by the real BX-53 component
|
|
424
|
+
// listings — a stale total here drives a wrong discount-% badge.
|
|
425
|
+
bundleOriginalTotal: 3999,
|
|
402
426
|
bundleStockStatus: "in_stock",
|
|
403
427
|
display: { coverImage: seedPhoto("bundle-x-series-starter-20260101", 1200, 900), showInFooter: false },
|
|
404
428
|
isActive: true,
|
|
@@ -436,17 +460,20 @@ const bundleRows = [
|
|
|
436
460
|
"product-beyblade-original-driger-v",
|
|
437
461
|
"product-beyblade-metal-storm-pegasus",
|
|
438
462
|
"product-beyblade-burst-valkyrie",
|
|
439
|
-
"product-beyblade-x-
|
|
463
|
+
"product-beyblade-x-bx-53-wizardarrow-v2",
|
|
440
464
|
],
|
|
441
465
|
},
|
|
442
466
|
bundleProductIds: [
|
|
443
467
|
"product-beyblade-original-driger-v",
|
|
444
468
|
"product-beyblade-metal-storm-pegasus",
|
|
445
469
|
"product-beyblade-burst-valkyrie",
|
|
446
|
-
"product-beyblade-x-
|
|
470
|
+
"product-beyblade-x-bx-53-wizardarrow-v2",
|
|
447
471
|
],
|
|
448
|
-
bundleCategorySlugs: bundleCategorySlugsFor(["product-beyblade-original-driger-v", "product-beyblade-metal-storm-pegasus", "product-beyblade-burst-valkyrie", "product-beyblade-x-
|
|
449
|
-
|
|
472
|
+
bundleCategorySlugs: bundleCategorySlugsFor(["product-beyblade-original-driger-v", "product-beyblade-metal-storm-pegasus", "product-beyblade-burst-valkyrie", "product-beyblade-x-bx-53-wizardarrow-v2"]),
|
|
473
|
+
// 1799 + 1299 + 999 + 1500. Recomputed 2026-10-19 — the X member changed
|
|
474
|
+
// from the fictional "wizard-arrow" (899) to the real BX-53 WizardArrow
|
|
475
|
+
// 4-80B Ver.2.0 (1500).
|
|
476
|
+
bundleOriginalTotal: 5597,
|
|
450
477
|
bundleStockStatus: "in_stock",
|
|
451
478
|
display: { coverImage: seedPhoto("bundle-every-generation-starter-pack-20260101", 1200, 900), showInFooter: false },
|
|
452
479
|
isActive: true,
|
|
@@ -530,13 +557,51 @@ function withGeneratedContent(row) {
|
|
|
530
557
|
*/
|
|
531
558
|
function withGeneratedCoverImage(row) {
|
|
532
559
|
const existing = row.display?.coverImage;
|
|
533
|
-
|
|
560
|
+
/*
|
|
561
|
+
* 🛑 A seed PLACEHOLDER tile does not count as hand-authored.
|
|
562
|
+
*
|
|
563
|
+
* The rule is still "a hand-authored cover wins", but a `seedPhoto(...)`
|
|
564
|
+
* tile was never authored — it is what the seed emits when it has nothing
|
|
565
|
+
* better. Treating it as a decision is what made the placeholder BLOCK every
|
|
566
|
+
* fetched wordmark: a logo could be downloaded, uploaded to Storage, mapped,
|
|
567
|
+
* and the card would still show a grey tile, with nothing anywhere
|
|
568
|
+
* reporting why.
|
|
569
|
+
*
|
|
570
|
+
* So the precedence is: real authored path > generated image > placeholder
|
|
571
|
+
* tile. That lets every branch row keep an honest tile in source — which is
|
|
572
|
+
* what it falls back to when no image exists, and is much better than the
|
|
573
|
+
* empty grey box a brand row would otherwise render, since brand rows carry
|
|
574
|
+
* no `color` and no `icon` either.
|
|
575
|
+
*/
|
|
576
|
+
if (typeof existing === "string" && existing.trim().length > 0 && !isSeedPlaceholderImage(existing)) {
|
|
534
577
|
return row;
|
|
578
|
+
}
|
|
535
579
|
const generated = row.id ? GENERATED_CATEGORY_IMAGES[row.id] : undefined;
|
|
536
580
|
if (!generated)
|
|
537
581
|
return row;
|
|
538
582
|
return { ...row, display: { ...(row.display ?? {}), coverImage: generated } };
|
|
539
583
|
}
|
|
584
|
+
/**
|
|
585
|
+
* Attach the REGIONAL-VARIANT logo to a row that names a Hasbro equivalent.
|
|
586
|
+
*
|
|
587
|
+
* 🛑 Gated on `hasbroName`, not merely on the map having an entry. The image is
|
|
588
|
+
* rendered beside the "Also known as" line, so without the name there is
|
|
589
|
+
* nothing to label it and a bare second logo reads as a duplicate of the
|
|
590
|
+
* cover. The name is the fact; the image only illustrates it.
|
|
591
|
+
*
|
|
592
|
+
* Same hand-authored-wins rule as the cover, for the same reason: the admin
|
|
593
|
+
* editor can set `hasbroCoverImage` on a row the generator knows nothing
|
|
594
|
+
* about, and a reseed must not take that away.
|
|
595
|
+
*/
|
|
596
|
+
function withGeneratedHasbroCover(row) {
|
|
597
|
+
if (!row.hasbroName)
|
|
598
|
+
return row;
|
|
599
|
+
const existing = row.hasbroCoverImage;
|
|
600
|
+
if (typeof existing === "string" && existing.trim().length > 0)
|
|
601
|
+
return row;
|
|
602
|
+
const generated = row.id ? GENERATED_CATEGORY_HASBRO_IMAGES[row.id] : undefined;
|
|
603
|
+
return generated ? { ...row, hasbroCoverImage: generated } : row;
|
|
604
|
+
}
|
|
540
605
|
const allCategoryRows = [
|
|
541
606
|
...rawCategories.map((c) => ({ ancestors: [], ...c, createdByType: "admin" })),
|
|
542
607
|
...sublistingRows.map((s) => ({ ancestors: [], ...s, createdByType: "admin" })),
|
|
@@ -546,6 +611,7 @@ const allCategoryRows = [
|
|
|
546
611
|
]
|
|
547
612
|
.map(withGeneratedContent)
|
|
548
613
|
.map(withGeneratedCoverImage)
|
|
614
|
+
.map(withGeneratedHasbroCover)
|
|
549
615
|
.map(withCategorySearchTxt);
|
|
550
616
|
/*
|
|
551
617
|
* ── Assertions, at MODULE LOAD, so a silent drop is loud ─────────────────────
|
|
@@ -626,6 +692,44 @@ if (generatedImagesApplied < Math.floor(GENERATED_CATEGORY_IMAGE_COUNT * 0.9)) {
|
|
|
626
692
|
`scripts/fetch-taxonomy-images.mjs against the current forest. Nothing would error ` +
|
|
627
693
|
`at load time: the category grids would just go back to blank cards.`);
|
|
628
694
|
}
|
|
695
|
+
/*
|
|
696
|
+
* The regional-variant logos. This catches ORPHANED logos, and deliberately
|
|
697
|
+
* only those.
|
|
698
|
+
*
|
|
699
|
+
* 🛑 The two directions are NOT symmetric, which a first draft of this comment
|
|
700
|
+
* got wrong until a negative control was actually run against it:
|
|
701
|
+
*
|
|
702
|
+
* - **A map entry whose row does not name a Hasbro wave is an ERROR.**
|
|
703
|
+
* `withGeneratedHasbroCover` gates on `hasbroName`, so that image can
|
|
704
|
+
* never render — it was fetched, uploaded to Storage and mapped, and is
|
|
705
|
+
* now a stored object nothing will ever serve. Silent waste. Throw.
|
|
706
|
+
*
|
|
707
|
+
* - **A named wave with no logo is FINE.** The "Also known as" block renders
|
|
708
|
+
* the name and omits the image (`CategoryDetailPageView` makes the picture
|
|
709
|
+
* conditional), which is a correct, intentional-looking page. Setting a
|
|
710
|
+
* name we can evidence while having no logo we can source is exactly the
|
|
711
|
+
* honest-gap rule the rest of this work follows, so failing the seed for
|
|
712
|
+
* it would punish the right behaviour.
|
|
713
|
+
*
|
|
714
|
+
* Hence `covered !== keys` and NOT `covered !== named`. Exact equality rather
|
|
715
|
+
* than a 90% floor because there are five, hand-set against five confirmed
|
|
716
|
+
* pairings: "most of them" is not a meaningful tolerance at that size.
|
|
717
|
+
*/
|
|
718
|
+
const hasbroNamed = allCategoryRows.filter((c) => typeof c.hasbroName === "string" && c.hasbroName);
|
|
719
|
+
const hasbroCovered = hasbroNamed.filter((c) => typeof c.id === "string" && GENERATED_CATEGORY_HASBRO_IMAGES[c.id] === c.hasbroCoverImage);
|
|
720
|
+
const hasbroMapKeys = Object.keys(GENERATED_CATEGORY_HASBRO_IMAGES);
|
|
721
|
+
if (hasbroCovered.length !== hasbroMapKeys.length) {
|
|
722
|
+
const namedIds = new Set(hasbroNamed.map((c) => c.id));
|
|
723
|
+
const orphanLogos = hasbroMapKeys.filter((k) => !namedIds.has(k));
|
|
724
|
+
throw new Error(`category seed: ${hasbroCovered.length} of ${hasbroMapKeys.length} regional-variant logos ` +
|
|
725
|
+
`reached a row that names one. ` +
|
|
726
|
+
(orphanLogos.length > 0
|
|
727
|
+
? `These have a logo but no hasbroName: ${orphanLogos.join(", ")}. `
|
|
728
|
+
: "") +
|
|
729
|
+
`Either set hasbroName in category-forest.ts, or drop the entry from the manifest and ` +
|
|
730
|
+
`re-run scripts/fetch-category-images.mjs. Nothing would error at load time — the ` +
|
|
731
|
+
`"Also known as" block would just render without its logo.`);
|
|
732
|
+
}
|
|
629
733
|
const allIds = allCategoryRows.map((c) => c.id).filter((x) => typeof x === "string");
|
|
630
734
|
const duplicateIds = [...new Set(allIds.filter((id, i) => allIds.indexOf(id) !== i))];
|
|
631
735
|
if (duplicateIds.length > 0) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventDocument,
|
|
2
|
-
export declare const eventEntriesSeedData:
|
|
1
|
+
import type { EventDocument, EventEntryPlain } from "../features/events/schemas";
|
|
2
|
+
export declare const eventEntriesSeedData: EventEntryPlain[];
|
|
3
3
|
/**
|
|
4
4
|
* Tokens derived here, not per record — see _helpers/search-txt-wrappers.ts for
|
|
5
5
|
* why the wrapper form is what makes omission impossible.
|
|
@@ -361,6 +361,11 @@ const _raweventsSeedData = [
|
|
|
361
361
|
},
|
|
362
362
|
];
|
|
363
363
|
// ── Event Entries ────────────────────────────────────────────────────────────
|
|
364
|
+
/*
|
|
365
|
+
* 🛑 `EventEntryPlain`: these fixtures hold REAL plaintext and `seed-cli`
|
|
366
|
+
* encrypts the PII fields on write. The document type now declares them
|
|
367
|
+
* `Encrypted<string>`, so the document type would be a false claim.
|
|
368
|
+
*/
|
|
364
369
|
export const eventEntriesSeedData = [
|
|
365
370
|
// Rehan entered the poll
|
|
366
371
|
{
|
|
@@ -659,7 +659,7 @@ const faqSeedRecords = [
|
|
|
659
659
|
{
|
|
660
660
|
id: "faq-how-to-verify-authenticity",
|
|
661
661
|
question: "How can I verify if a collectible is authentic?",
|
|
662
|
-
answer: html(`<p>Look for these trust signals on LetItRip: <strong>Verified Seller</strong> badge (store has passed manual review), <strong>Graded</strong> badge (PSA/BGS/CGC certified with certificate number), <strong>Sealed</strong> badge (factory-sealed product). For ungraded items, check the seller's photo quality and description detail. If in doubt, message the seller before purchasing.</p>`),
|
|
662
|
+
answer: html(`<p>Look for these trust signals on LetItRip: <strong>Verified Seller</strong> badge (store has passed manual review), <strong>Graded</strong> badge (PSA/BGS/CGC certified with certificate number), <strong>Sealed</strong> badge (factory-sealed product). For ungraded items, check the seller's photo quality and description detail. If in doubt, message the seller before purchasing.</p><p>For <strong>Beyblades specifically</strong>, the <a href="/tools/authenticity">authenticity checker</a> takes a model name, a box code or the brand on the packaging and tells you which checks apply to that generation — and the <a href="/spot-a-fake">spot-a-fake guide</a> walks the same signals by hand, with no account needed.</p>`),
|
|
663
663
|
category: "product_information",
|
|
664
664
|
showOnHomepage: true,
|
|
665
665
|
showInFooter: false,
|
|
@@ -667,7 +667,7 @@ const faqSeedRecords = [
|
|
|
667
667
|
order: 32,
|
|
668
668
|
priority: 8,
|
|
669
669
|
tags: ["authentication", "verification", "trust"],
|
|
670
|
-
relatedFAQs: ["faq-counterfeit-guarantee", "faq-psa-vs-bgs-vs-cgc"],
|
|
670
|
+
relatedFAQs: ["faq-counterfeit-guarantee", "faq-psa-vs-bgs-vs-cgc", "faq-check-if-my-beyblade-is-original"],
|
|
671
671
|
stats: makeStats(3800, 190),
|
|
672
672
|
seo: { slug: "faq-how-to-verify-authenticity", metaTitle: "Verify Collectible Authenticity", metaDescription: "How to verify if a collectible is authentic on LetItRip." },
|
|
673
673
|
isActive: true,
|
|
@@ -1464,10 +1464,79 @@ const faqSeedRecords = [
|
|
|
1464
1464
|
createdAt: daysAgo(30),
|
|
1465
1465
|
updatedAt: daysAgo(2),
|
|
1466
1466
|
},
|
|
1467
|
+
{
|
|
1468
|
+
id: "faq-check-if-my-beyblade-is-original",
|
|
1469
|
+
question: "How do I check whether my Beyblade is original?",
|
|
1470
|
+
answer: html("<p>Start with the <a href=\"/tools/authenticity\">authenticity checker</a>. Give it a model name, the code printed on the box, or the brand on the packaging, and it tells you which checks apply to that generation, what the recorded box codes say, and what is still unsettled. The reference half of that page — the generation table, the box-code explanation, the checks that apply regardless — is free and needs no account; only the per-item lookup asks you to sign in.</p><p>🛑 <strong>It grades, it does not rule.</strong> The strongest thing it will say is that something matches a batch collectors record as a reduced-quality run — a statement about a production batch, never an accusation against your seller. Authenticity is settled by physical checks, and the tool lists the conclusive ones first for your generation: a fully die-cast performance tip on a Metal Fight bey, Phillips screws where tri-wing belong on Burst, a Gear Chip missing the <em>Beyblade X</em> logo, or moulded Takara copyright text absent from a plastic-generation part.</p><p>The longer buying guide is at <a href=\"/spot-a-fake\">how to spot a fake</a>. If the problem is a specific seller rather than a specific item, the <a href=\"/scams\">scam registry</a> takes reports.</p>"),
|
|
1471
|
+
category: "product_information",
|
|
1472
|
+
showOnHomepage: true,
|
|
1473
|
+
showInFooter: false,
|
|
1474
|
+
isPinned: false,
|
|
1475
|
+
order: 208,
|
|
1476
|
+
priority: 10,
|
|
1477
|
+
tags: ["authenticity", "fake", "original", "beyblade", "checker", "takara tomy"],
|
|
1478
|
+
relatedFAQs: ["faq-beyblade-box-code-meaning", "faq-what-is-a-reproduction", "faq-is-funskool-beyblade-fake"],
|
|
1479
|
+
stats: makeStats(0, 0),
|
|
1480
|
+
seo: {
|
|
1481
|
+
slug: "faq-check-if-my-beyblade-is-original",
|
|
1482
|
+
metaTitle: "How do I check whether my Beyblade is original?",
|
|
1483
|
+
metaDescription: "Use the authenticity checker: a model name, a box code or the brand on the packaging, and it shows which checks apply to that generation and what is still unsettled.",
|
|
1484
|
+
},
|
|
1485
|
+
isActive: true,
|
|
1486
|
+
createdBy: "user-admin-letitrip",
|
|
1487
|
+
createdAt: daysAgo(1),
|
|
1488
|
+
updatedAt: daysAgo(1),
|
|
1489
|
+
},
|
|
1490
|
+
{
|
|
1491
|
+
id: "faq-beyblade-box-code-meaning",
|
|
1492
|
+
question: "What does the code on the bottom of the box mean?",
|
|
1493
|
+
answer: html("<p>Two different things are both called “the code”, and they answer different questions.</p><p>A <strong>product code</strong> — <code>BB-105</code>, <code>B-174</code>, <code>BX-34</code>, <code>MA-09</code> — identifies the release, and its letter prefix identifies the generation. Read the whole letter group before the digits: <code>BB-</code> is Metal Fight while <code>B-</code> is Burst, so they are easy to confuse. 🛑 <strong>A product code existing proves nothing about authenticity.</strong> One counterfeit catalogue we measured carried more than 900 genuine Takara Tomy codes across 1,277 unlicensed products. What carries information is whether the code and the model name <em>agree</em> — which is what the <a href=\"/tools/authenticity\">authenticity checker</a> compares.</p><p>A <strong>date code</strong> is a letter followed by four digits, like <code>A0813</code>, and it is a production stamp. Collectors have compiled which of these appear on boxes known to be genuine and which belong to reduced-quality batches, and the checker holds both lists for the Metal Fight era. 🛑 <strong>How it decodes is disputed.</strong> One reading takes the letter as the month and the next two digits as the day (8 January 2013); another takes the letter as the factory and the digits as the week of the year. Takara Tomy has published neither, so treat any date as indicative. No decoding has been established at all for Burst or Beyblade X boxes.</p><p>A code that is in neither list means <em>not recorded</em>, not <em>fake</em> — the lists were compiled from boxes collectors personally held, and new genuine codes still surface.</p>"),
|
|
1494
|
+
category: "product_information",
|
|
1495
|
+
showOnHomepage: false,
|
|
1496
|
+
showInFooter: false,
|
|
1497
|
+
isPinned: false,
|
|
1498
|
+
order: 209,
|
|
1499
|
+
priority: 9,
|
|
1500
|
+
tags: ["box code", "date code", "product code", "authenticity", "takara tomy", "midfake"],
|
|
1501
|
+
relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
|
|
1502
|
+
stats: makeStats(0, 0),
|
|
1503
|
+
seo: {
|
|
1504
|
+
slug: "faq-beyblade-box-code-meaning",
|
|
1505
|
+
metaTitle: "What does the code on the bottom of a Beyblade box mean?",
|
|
1506
|
+
metaDescription: "Product codes identify the release and the generation; date codes are production stamps with two disputed readings. Neither proves a bey is genuine on its own.",
|
|
1507
|
+
},
|
|
1508
|
+
isActive: true,
|
|
1509
|
+
createdBy: "user-admin-letitrip",
|
|
1510
|
+
createdAt: daysAgo(1),
|
|
1511
|
+
updatedAt: daysAgo(1),
|
|
1512
|
+
},
|
|
1513
|
+
{
|
|
1514
|
+
id: "faq-is-funskool-beyblade-fake",
|
|
1515
|
+
question: "Is a Funskool Beyblade fake? What about Sonokong?",
|
|
1516
|
+
answer: html("<p><strong>No. Both are legitimate.</strong> Funskool is a licensed Indian importer and Sonokong is the licensed South Korean producer — their names on a box are a <em>positive</em> signal, not a warning. The same goes for the other regional importers: Mani (Hong Kong), Funbox (Taiwan), Sheng Tai (Singapore), NewBoy (Middle East), Bankee (Philippines) and PT Emway (Indonesia). An importer’s holographic sticker or certificate inside the packaging is a sign of a properly imported product.</p><p>🛑 A guide that tells you anything other than “Takara Tomy” or “Hasbro” is a fake is simply wrong, and that mistake is costly in India specifically, where Funskool product is common.</p><p>What <em>should</em> worry you is a box whose most prominent branding is a name nobody licenses — or no manufacturer name at all. Sellers of unlicensed tops here rarely claim to be originals; they sell under their own brand as “aftermarket”, “custom” or “upgraded”. That framing is not a grey area. You can check a brand name against the known lists in the <a href=\"/tools/authenticity\">authenticity checker</a>.</p>"),
|
|
1517
|
+
category: "product_information",
|
|
1518
|
+
showOnHomepage: false,
|
|
1519
|
+
showInFooter: false,
|
|
1520
|
+
isPinned: false,
|
|
1521
|
+
order: 211,
|
|
1522
|
+
priority: 8,
|
|
1523
|
+
tags: ["funskool", "sonokong", "importer", "authenticity", "india", "licensed"],
|
|
1524
|
+
relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
|
|
1525
|
+
stats: makeStats(0, 0),
|
|
1526
|
+
seo: {
|
|
1527
|
+
slug: "faq-is-funskool-beyblade-fake",
|
|
1528
|
+
metaTitle: "Is a Funskool Beyblade fake?",
|
|
1529
|
+
metaDescription: "No — Funskool is a licensed Indian importer and Sonokong the licensed Korean producer. Both marques are a positive signal, not a warning.",
|
|
1530
|
+
},
|
|
1531
|
+
isActive: true,
|
|
1532
|
+
createdBy: "user-admin-letitrip",
|
|
1533
|
+
createdAt: daysAgo(1),
|
|
1534
|
+
updatedAt: daysAgo(1),
|
|
1535
|
+
},
|
|
1467
1536
|
{
|
|
1468
1537
|
id: "faq-what-is-a-reproduction",
|
|
1469
1538
|
question: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
|
|
1470
|
-
answer: html("<p
|
|
1539
|
+
answer: html("<p><strong>“Midfake” is used two ways</strong>, and the difference matters. In the Metal Fight community it means a specific thing: a <em>Takara Tomy</em> batch of reduced quality, built on Takara Tomy blueprints in Taiwan, with different alloys and TT-style box codes — so it may well carry the real marque. Collectors identify those batches by the code on the bottom of the box. Used more loosely — and this is the commoner sense in India — it means any 1st-copy of an original design, mostly Chinese-made, carrying no manufacturer's marque at all. Quality is often genuinely good, and some tournament formats permit certain reproduction parts.</p><p>🛑 There is <strong>no official Takara Tomy statement</strong> acknowledging the reduced-quality batches, so everything known about them comes from collectors comparing boxes.</p><p>It is <strong>not</strong> the same as a cheap counterfeit. A counterfeit is poor-quality and can contain lead or cadmium in its metal parts, which is a safety matter — we do not allow those listed at all. A reproduction is a legitimate thing to sell <em>when it is labelled</em>, and every listing on LetItRip states its authenticity as Original, Reproduction, or Unverified.</p><p>🛑 If a seller calls something \"aftermarket\", \"custom\" or \"upgraded\" without naming a manufacturer, they are describing a reproduction. Ask.</p>"),
|
|
1471
1540
|
category: "product_information",
|
|
1472
1541
|
showOnHomepage: true,
|
|
1473
1542
|
showInFooter: false,
|
|
@@ -1475,12 +1544,12 @@ const faqSeedRecords = [
|
|
|
1475
1544
|
order: 210,
|
|
1476
1545
|
priority: 10,
|
|
1477
1546
|
tags: ["reproduction", "midfake", "authenticity", "fake", "aftermarket"],
|
|
1478
|
-
relatedFAQs: [],
|
|
1547
|
+
relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-beyblade-box-code-meaning", "faq-counterfeit-guarantee"],
|
|
1479
1548
|
stats: makeStats(670, 50),
|
|
1480
1549
|
seo: {
|
|
1481
1550
|
slug: "faq-what-is-a-reproduction",
|
|
1482
1551
|
metaTitle: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
|
|
1483
|
-
metaDescription: "
|
|
1552
|
+
metaDescription: "“Midfake” means two different things — a reduced-quality Takara Tomy batch, or any unbranded 1st-copy. Both differ from a counterfeit.",
|
|
1484
1553
|
},
|
|
1485
1554
|
isActive: true,
|
|
1486
1555
|
createdBy: "user-admin-letitrip",
|
|
@@ -1763,6 +1832,107 @@ const faqSeedRecords = [
|
|
|
1763
1832
|
createdAt: daysAgo(30),
|
|
1764
1833
|
updatedAt: daysAgo(2),
|
|
1765
1834
|
},
|
|
1835
|
+
// ── STICKER SHEETS (3) ──────────────────────────────────────────────────────
|
|
1836
|
+
//
|
|
1837
|
+
// 🛑 FILED UNDER `product_information`, NOT A NEW `stickers` CATEGORY.
|
|
1838
|
+
// The plan called for one, on the premise that the seeded set was
|
|
1839
|
+
// Shipping/Returns/Payments/Auctions/Pre-orders — that list came from a stale
|
|
1840
|
+
// paragraph in CLAUDE.md. The real union already carries `product_information`
|
|
1841
|
+
// (FAQ_CATEGORY_LABELS), which is exactly what these are. Adding a tenth
|
|
1842
|
+
// category for three entries would mean extending a compile-checked union,
|
|
1843
|
+
// the admin option list and every chip derived from it, to say something an
|
|
1844
|
+
// existing value already says.
|
|
1845
|
+
//
|
|
1846
|
+
// 🛑 THREE, NOT SIX. The plan drafted six questions and said plainly that the
|
|
1847
|
+
// answers to half of them need product facts nobody has yet. Those three are
|
|
1848
|
+
// listed below as questions ONLY, and are deliberately NOT seeded — `faqs` is
|
|
1849
|
+
// a public, indexed collection with its own seo.slug, so a placeholder answer
|
|
1850
|
+
// there is a confident lie on a page Google will read.
|
|
1851
|
+
//
|
|
1852
|
+
// · "What size are the stickers?" needs: real sheet + part dimensions
|
|
1853
|
+
// · "Are they weatherproof / dishwasher-safe?" needs: material + laminate spec
|
|
1854
|
+
// · "Can I buy a single sticker rather than a whole sheet?"
|
|
1855
|
+
// needs: the per-part listings from Part Two. Today the honest answer is
|
|
1856
|
+
// "no", and seeding that now would have to be rewritten the week the
|
|
1857
|
+
// grouped parent+parts listings ship.
|
|
1858
|
+
//
|
|
1859
|
+
// The three below need no product facts — they explain what a kiss cut IS,
|
|
1860
|
+
// which is true of every kiss-cut sticker ever made.
|
|
1861
|
+
{
|
|
1862
|
+
id: "faq-what-is-a-kiss-cut-sticker",
|
|
1863
|
+
question: "What is a kiss-cut sticker?",
|
|
1864
|
+
answer: html(`<p>A <strong>kiss cut</strong> goes through the sticker's vinyl but <em>not</em> through the paper backing behind it. The sheet stays in one piece, and each sticker peels off individually when you want it.</p><p>A <strong>die cut</strong> goes all the way through both layers, so every sticker is already a separate loose piece.</p><p>Kiss-cut sheets are what vintage Beyblade stickers were originally made as: one sheet, many stickers, each outlined along its own shape.</p>`),
|
|
1865
|
+
category: "product_information",
|
|
1866
|
+
showOnHomepage: false,
|
|
1867
|
+
showInFooter: false,
|
|
1868
|
+
isPinned: false,
|
|
1869
|
+
order: 1,
|
|
1870
|
+
priority: 5,
|
|
1871
|
+
tags: ["stickers", "kiss-cut", "die-cut", "sheets"],
|
|
1872
|
+
relatedFAQs: ["faq-sticker-white-border", "faq-how-to-apply-a-sticker"],
|
|
1873
|
+
useSiteSettings: true,
|
|
1874
|
+
variables: {},
|
|
1875
|
+
stats: makeStats(0, 0),
|
|
1876
|
+
seo: {
|
|
1877
|
+
slug: "faq-what-is-a-kiss-cut-sticker",
|
|
1878
|
+
metaTitle: "What is a kiss-cut sticker? | LetItRip",
|
|
1879
|
+
metaDescription: "A kiss cut goes through the vinyl but not the backing, so the sheet stays whole and each sticker peels off on its own.",
|
|
1880
|
+
},
|
|
1881
|
+
isActive: true,
|
|
1882
|
+
createdBy: "user-admin-letitrip",
|
|
1883
|
+
createdAt: daysAgo(1),
|
|
1884
|
+
updatedAt: daysAgo(1),
|
|
1885
|
+
},
|
|
1886
|
+
{
|
|
1887
|
+
id: "faq-sticker-white-border",
|
|
1888
|
+
question: "Why do some stickers have a white border around them?",
|
|
1889
|
+
answer: html(`<p>That border is part of the cut, not a printing mistake. A cutter cannot follow fine detail perfectly, so the cut line is placed slightly <em>outside</em> the artwork — the small margin that leaves is what stops a sliver of artwork being shaved off if the blade drifts by a fraction of a millimetre.</p><p>Where the original sticker was designed with a border, we keep it. Where it was cut tight to the art, we cut tight to the art.</p>`),
|
|
1890
|
+
category: "product_information",
|
|
1891
|
+
showOnHomepage: false,
|
|
1892
|
+
showInFooter: false,
|
|
1893
|
+
isPinned: false,
|
|
1894
|
+
order: 2,
|
|
1895
|
+
priority: 4,
|
|
1896
|
+
tags: ["stickers", "border", "cutting", "bleed"],
|
|
1897
|
+
relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
|
|
1898
|
+
useSiteSettings: true,
|
|
1899
|
+
variables: {},
|
|
1900
|
+
stats: makeStats(0, 0),
|
|
1901
|
+
seo: {
|
|
1902
|
+
slug: "faq-sticker-white-border",
|
|
1903
|
+
metaTitle: "Why do stickers have a white border? | LetItRip",
|
|
1904
|
+
metaDescription: "The margin around a sticker is part of the cut — it stops the blade shaving artwork if it drifts a fraction of a millimetre.",
|
|
1905
|
+
},
|
|
1906
|
+
isActive: true,
|
|
1907
|
+
createdBy: "user-admin-letitrip",
|
|
1908
|
+
createdAt: daysAgo(1),
|
|
1909
|
+
updatedAt: daysAgo(1),
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
id: "faq-how-to-apply-a-sticker",
|
|
1913
|
+
question: "How do I apply a sticker so it does not lift at the edges?",
|
|
1914
|
+
answer: html(`<p>Clean the surface first and let it dry completely — most lifting is a dusty or slightly greasy surface rather than the adhesive.</p><p>Peel the sticker from one corner rather than lifting it flat, lay that edge down first, then press across the sticker in one direction so the air pushes out ahead of your finger instead of being trapped under it.</p><p>Press firmly for a few seconds once it is down, and leave it a day before getting it wet.</p>`),
|
|
1915
|
+
category: "product_information",
|
|
1916
|
+
showOnHomepage: false,
|
|
1917
|
+
showInFooter: false,
|
|
1918
|
+
isPinned: false,
|
|
1919
|
+
order: 3,
|
|
1920
|
+
priority: 3,
|
|
1921
|
+
tags: ["stickers", "application", "how-to"],
|
|
1922
|
+
relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
|
|
1923
|
+
useSiteSettings: true,
|
|
1924
|
+
variables: {},
|
|
1925
|
+
stats: makeStats(0, 0),
|
|
1926
|
+
seo: {
|
|
1927
|
+
slug: "faq-how-to-apply-a-sticker",
|
|
1928
|
+
metaTitle: "How to apply a sticker without lifting edges | LetItRip",
|
|
1929
|
+
metaDescription: "Clean the surface, lay one edge first, and press across in one direction so air pushes out ahead of your finger.",
|
|
1930
|
+
},
|
|
1931
|
+
isActive: true,
|
|
1932
|
+
createdBy: "user-admin-letitrip",
|
|
1933
|
+
createdAt: daysAgo(1),
|
|
1934
|
+
updatedAt: daysAgo(1),
|
|
1935
|
+
},
|
|
1766
1936
|
];
|
|
1767
1937
|
/**
|
|
1768
1938
|
* Derive `searchTxt` for every record from its own content.
|
|
@@ -96,6 +96,22 @@ export const groupedListingsSeedData = [
|
|
|
96
96
|
createdBy: "user-admin-letitrip",
|
|
97
97
|
createdAt: daysAgo(15),
|
|
98
98
|
updatedAt: daysAgo(3),
|
|
99
|
+
/*
|
|
100
|
+
* Part Two E — the one seeded fixture exercising self-assembled-selection
|
|
101
|
+
* rules end to end (`GroupMemberPicker` ↔ `checkGroupRules` ↔
|
|
102
|
+
* `deriveLinePrice`'s discount), without requiring the sticker tracer's
|
|
103
|
+
* multi-step admin flow to produce one first.
|
|
104
|
+
*
|
|
105
|
+
* 🛑 Deliberately NOT `minActiveMembers` (above) — that is visibility ("hide
|
|
106
|
+
* the whole group below 2 ACTIVE members"). `groupMinMembers` constrains
|
|
107
|
+
* what ONE BUYER'S SELECTION may contain, and the two can legitimately
|
|
108
|
+
* disagree: this group stays visible at 2 active members while requiring a
|
|
109
|
+
* buyer to pick at least 2 of the 4.
|
|
110
|
+
*/
|
|
111
|
+
groupMinMembers: 2,
|
|
112
|
+
groupMaxMembers: 3,
|
|
113
|
+
groupMaxUnitsPerMember: 2,
|
|
114
|
+
groupDiscountPercent: 10,
|
|
99
115
|
},
|
|
100
116
|
// --- Coverage for every other listing type — previously only standard products had a
|
|
101
117
|
// group, so the public GroupedListingsCarousel (Phase 3) had nothing to render on
|