@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
|
@@ -71,6 +71,97 @@ export function decryptSecret(encrypted) {
|
|
|
71
71
|
export function isSecretEncrypted(value) {
|
|
72
72
|
return encEnvelopeKind(value) === "settings";
|
|
73
73
|
}
|
|
74
|
+
/*
|
|
75
|
+
* ---------------------------------------------------------------------------
|
|
76
|
+
* Binary envelope — for FILE BYTES, not strings.
|
|
77
|
+
* ---------------------------------------------------------------------------
|
|
78
|
+
*
|
|
79
|
+
* Same algorithm, same key, same `enc:v1:` marker as the string form above, but
|
|
80
|
+
* a BINARY layout rather than a dot-joined base64 triple:
|
|
81
|
+
*
|
|
82
|
+
* "enc:v1:" (7 ASCII bytes) || iv (12) || authTag (16) || ciphertext
|
|
83
|
+
*
|
|
84
|
+
* 🛑 Why not reuse `encryptSecret` with a base64 string. Two reasons, and the
|
|
85
|
+
* first one is a hard ceiling rather than a preference:
|
|
86
|
+
*
|
|
87
|
+
* 1. Base64 inflates by 4/3, so the 680 KB Udyam certificate becomes ~907 KB
|
|
88
|
+
* of string before the envelope is added. A Firestore document is capped
|
|
89
|
+
* at 1 MiB, so that approach is one slightly-larger PDF away from an
|
|
90
|
+
* unrecoverable write failure — and it fails at UPLOAD time, after the
|
|
91
|
+
* user has handed over the document.
|
|
92
|
+
* 2. The bytes belong in Storage regardless, and Storage takes a Buffer. Round
|
|
93
|
+
* -tripping them through base64 to satisfy a string API costs 33% of the
|
|
94
|
+
* object size and every byte of it is paid again on download.
|
|
95
|
+
*
|
|
96
|
+
* So: metadata in Firestore, ciphertext in Storage. These two functions are the
|
|
97
|
+
* seam between them.
|
|
98
|
+
*/
|
|
99
|
+
/** ASCII `enc:v1:` — the same marker the string envelope uses, as raw bytes. */
|
|
100
|
+
const BINARY_PREFIX = Buffer.from(PREFIX, "ascii");
|
|
101
|
+
const TAG_BYTES = 16;
|
|
102
|
+
/**
|
|
103
|
+
* AES-256-GCM a file's bytes under `SETTINGS_ENCRYPTION_KEY`.
|
|
104
|
+
*
|
|
105
|
+
* Throws when the key is unset — deliberately, and identically to
|
|
106
|
+
* `encryptSecret`. A document store that silently writes plaintext when
|
|
107
|
+
* misconfigured is worse than one that refuses, because nothing downstream can
|
|
108
|
+
* tell the two apart afterwards.
|
|
109
|
+
*/
|
|
110
|
+
export function encryptBuffer(plaintext) {
|
|
111
|
+
const key = getMasterKey();
|
|
112
|
+
const { randomBytes, createCipheriv } = nodeCrypto();
|
|
113
|
+
const iv = randomBytes(IV_BYTES);
|
|
114
|
+
const cipher = createCipheriv(ALGORITHM, key, iv);
|
|
115
|
+
const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
|
|
116
|
+
return Buffer.concat([BINARY_PREFIX, iv, cipher.getAuthTag(), ciphertext]);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Reverse `encryptBuffer`.
|
|
120
|
+
*
|
|
121
|
+
* 🛑 Unlike `decryptSecret`, a buffer with no `enc:v1:` prefix is REJECTED
|
|
122
|
+
* rather than passed through. That asymmetry is intentional. `decryptSecret`
|
|
123
|
+
* tolerates plaintext because the settings collection genuinely holds
|
|
124
|
+
* unencrypted placeholders that predate encryption, so passing them through is
|
|
125
|
+
* the migration path. Here there is no such legacy: every object this reads was
|
|
126
|
+
* written by `encryptBuffer`, so an unprefixed buffer means the wrong object,
|
|
127
|
+
* a truncated download, or an upload that bypassed encryption — and returning
|
|
128
|
+
* it verbatim would serve one of those to an admin as though it were fine.
|
|
129
|
+
*
|
|
130
|
+
* GCM authentication also means `final()` throws on any tampering or on the
|
|
131
|
+
* wrong key, so a corrupted object fails loudly instead of yielding garbage.
|
|
132
|
+
*/
|
|
133
|
+
export function decryptBuffer(encrypted) {
|
|
134
|
+
if (!isBufferEncrypted(encrypted)) {
|
|
135
|
+
// Interpolates PREFIX rather than writing "enc:v1:" a second time —
|
|
136
|
+
// audit-pii-crypto's ENC_PREFIX_REDECLARED rule exists because two
|
|
137
|
+
// independent copies of that literal are how two incompatible formats
|
|
138
|
+
// came to look identical to every "is this encrypted" check.
|
|
139
|
+
throw new Error(`Buffer is not settings-encrypted — expected a '${PREFIX}' binary envelope`);
|
|
140
|
+
}
|
|
141
|
+
const ivStart = BINARY_PREFIX.length;
|
|
142
|
+
const tagStart = ivStart + IV_BYTES;
|
|
143
|
+
const dataStart = tagStart + TAG_BYTES;
|
|
144
|
+
const { createDecipheriv } = nodeCrypto();
|
|
145
|
+
const decipher = createDecipheriv(ALGORITHM, getMasterKey(), encrypted.subarray(ivStart, tagStart));
|
|
146
|
+
decipher.setAuthTag(encrypted.subarray(tagStart, dataStart));
|
|
147
|
+
return Buffer.concat([
|
|
148
|
+
decipher.update(encrypted.subarray(dataStart)),
|
|
149
|
+
decipher.final(),
|
|
150
|
+
]);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* True when `buf` carries the binary envelope AND is long enough to hold a
|
|
154
|
+
* complete one.
|
|
155
|
+
*
|
|
156
|
+
* The length check is not pedantry: without it a 7-byte buffer containing only
|
|
157
|
+
* the prefix passes, and `decryptBuffer` then hands `createDecipheriv` a
|
|
158
|
+
* zero-length IV, which throws `Invalid initialization vector` — an error that
|
|
159
|
+
* describes the crypto call rather than the truncated download that caused it.
|
|
160
|
+
*/
|
|
161
|
+
export function isBufferEncrypted(buf) {
|
|
162
|
+
return (buf.length > BINARY_PREFIX.length + IV_BYTES + TAG_BYTES &&
|
|
163
|
+
buf.subarray(0, BINARY_PREFIX.length).equals(BINARY_PREFIX));
|
|
164
|
+
}
|
|
74
165
|
export function maskSecret(value) {
|
|
75
166
|
if (!value || value.length < 12) {
|
|
76
167
|
return "****";
|
|
@@ -34,23 +34,33 @@
|
|
|
34
34
|
* never attributes a product code to Tomy alone). Every row below is one
|
|
35
35
|
* B6 can put at least one real product behind.
|
|
36
36
|
*
|
|
37
|
-
* ## 🛑
|
|
37
|
+
* ## 🛑 Real logos, decided 2026-10-20 — and what the earlier caution was right about
|
|
38
38
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* 52.52 GB against a 10 GB cap.
|
|
39
|
+
* This block used to argue for neutral `seedPhoto` tiles over real logos, on
|
|
40
|
+
* the grounds that 26 of these are marques we do not own and "shipping drawn
|
|
41
|
+
* approximations of their logos is trademark reproduction for commercial
|
|
42
|
+
* use… a licensed-asset task, not a seed task."
|
|
44
43
|
*
|
|
45
|
-
* That
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
44
|
+
* That call was reversed deliberately, not forgotten. Real wordmarks are now
|
|
45
|
+
* used to IDENTIFY the line a listing belongs to, which is nominative use, and
|
|
46
|
+
* the help pages carry an explicit fair-use and non-affiliation notice naming
|
|
47
|
+
* every marque. Provenance for each file is recorded per-image in
|
|
48
|
+
* `docs/research/taxonomy-images-2026-10/image-provenance.json`, so
|
|
49
|
+
* attribution is possible and a takedown is mechanical.
|
|
49
50
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
51
|
+
* 🛑 Two things the old reasoning got right and this did NOT change:
|
|
52
|
+
*
|
|
53
|
+
* 1. **Never `seedExtMedia`.** A persisted `/api/media/ext?url=…` costs a
|
|
54
|
+
* lambda plus a third-party fetch plus a sharp encode PER RENDER — Root
|
|
55
|
+
* Cause #104, which took Fast Origin Transfer to 52.52 GB against a
|
|
56
|
+
* 10 GB cap. These are fetched ONCE, stored in our own bucket, and
|
|
57
|
+
* referenced as `/media/<slug>`.
|
|
58
|
+
* 2. **No drawn approximations.** Nothing here is an imitation of a logo we
|
|
59
|
+
* traced; each is the actual wordmark, cited.
|
|
60
|
+
*
|
|
61
|
+
* Only three brands resolve an image today (Beyblade, Hasbro, Sonokong). The
|
|
62
|
+
* other 25 have no verified source yet and show no cover rather than a guessed
|
|
63
|
+
* one — see `knownGaps` in the manifest.
|
|
54
64
|
*
|
|
55
65
|
* @tag domain:categories
|
|
56
66
|
* @tag layer:seed
|
|
@@ -96,6 +106,20 @@ export function brandRow(input, order, stamps) {
|
|
|
96
106
|
* forest's DFS numbering, and giving them a position inside it would
|
|
97
107
|
* corrupt the ranges `onCategoryWrite` shifts on insert.
|
|
98
108
|
*/
|
|
109
|
+
/*
|
|
110
|
+
* A placeholder tile, which a real logo now OVERRIDES rather than being
|
|
111
|
+
* blocked by — `withGeneratedCoverImage` treats a `/images/seed-tiles/`
|
|
112
|
+
* path as a default to improve on, not as a hand-authored decision
|
|
113
|
+
* (`isSeedPlaceholderImage`).
|
|
114
|
+
*
|
|
115
|
+
* 🛑 So keep it. Three brands resolve a real wordmark today (Beyblade,
|
|
116
|
+
* Hasbro, Sonokong) and override this; the other 25 have no verified
|
|
117
|
+
* source and fall back to the tile. Removing the line would give those 25
|
|
118
|
+
* an EMPTY grey box, because a brand row carries no `color` and no `icon`
|
|
119
|
+
* either — strictly worse than a neutral tile.
|
|
120
|
+
*
|
|
121
|
+
* `icon` stays unset — see trap 2. An emoji here would outrank the logo.
|
|
122
|
+
*/
|
|
99
123
|
display: {
|
|
100
124
|
coverImage: seedPhoto(`brand-logo-${input.slug}-20260101`, 800, 800),
|
|
101
125
|
showInMenu: false,
|
|
@@ -52,6 +52,24 @@ import { MODEL_LEAVES } from "./category-models.js";
|
|
|
52
52
|
import { PART_LEAVES } from "./category-parts.js";
|
|
53
53
|
import { BEY_TEMPLATES, COLLECTIBLE_TEMPLATES, PART_TEMPLATES, SEALED_TEMPLATES, accessoryDefaults, beyDefaults, diecastDefaults, figureDefaults, launcherDefaults, livingDefaults, marketBand, partDefaults, stadiumDefaults, tcgDefaults, ROOT_TAX_DEFAULTS, ROOT_AUTHENTICITY_DEFAULT, } from "./category-content.js";
|
|
54
54
|
import { seedPhoto } from "./media.js";
|
|
55
|
+
/**
|
|
56
|
+
* A synthetic placeholder tile, for a node with no real cover of its own.
|
|
57
|
+
*
|
|
58
|
+
* 🛑 This is a FALLBACK, not a decision — and that took a fix to become true.
|
|
59
|
+
* `withGeneratedCoverImage` used to skip any row with a non-empty
|
|
60
|
+
* `display.coverImage`, so a `cover(...)` here BLOCKED the generated map
|
|
61
|
+
* outright: a wordmark could be fetched, uploaded and mapped and the card
|
|
62
|
+
* would still show a grey tile, with nothing reporting why.
|
|
63
|
+
*
|
|
64
|
+
* It now ranks the three sources honestly — a real authored path beats a
|
|
65
|
+
* generated image beats a placeholder tile (`isSeedPlaceholderImage`) — so
|
|
66
|
+
* every node can keep a tile in source and simply be overridden when an image
|
|
67
|
+
* exists. Four roots are overridden today (the Beyblade generations); the rest
|
|
68
|
+
* render the tile, which is the right thing to show when there is nothing
|
|
69
|
+
* better and much better than the empty box they would get from no value.
|
|
70
|
+
*
|
|
71
|
+
* So adding artwork to a node is now a manifest entry ALONE — no edit here.
|
|
72
|
+
*/
|
|
55
73
|
const cover = (slug) => seedPhoto(`category-image-${slug}-20260101`, 1200, 600);
|
|
56
74
|
/**
|
|
57
75
|
* A tier-3 line that owns named-model leaves.
|
|
@@ -62,13 +80,28 @@ const cover = (slug) => seedPhoto(`category-image-${slug}-20260101`, 1200, 600);
|
|
|
62
80
|
* empty line, never a crash — but a line that is MEANT to have models and
|
|
63
81
|
* silently has none is the failure this cannot see, which is why the seed
|
|
64
82
|
* asserts `MODEL_LEAF_COUNT` against what it actually spread.
|
|
83
|
+
*
|
|
84
|
+
* `opts.hasbroName` carries the regional-naming divergence for the waves that
|
|
85
|
+
* have one. Last and optional, so all 21 existing call sites are unchanged.
|
|
86
|
+
*
|
|
87
|
+
* 🛑 There is no `hasbroCoverImage` here on purpose. The name is an editorial
|
|
88
|
+
* FACT and belongs in source; the image is a resolved asset and belongs in the
|
|
89
|
+
* generated map, exactly like `display.coverImage` — see
|
|
90
|
+
* `GENERATED_CATEGORY_HASBRO_IMAGES` and `withGeneratedHasbroCover` in
|
|
91
|
+
* `categories-seed-data.ts`. Hard-coding a `/media/…` string here would put
|
|
92
|
+
* the one field that changes on every re-upload into the one file that should
|
|
93
|
+
* not have to be edited for it.
|
|
65
94
|
*/
|
|
66
|
-
function line(id, name, description, defaults, templates) {
|
|
95
|
+
function line(id, name, description, defaults, templates, opts) {
|
|
67
96
|
return {
|
|
68
97
|
id,
|
|
69
98
|
name,
|
|
70
99
|
description,
|
|
71
|
-
extra: {
|
|
100
|
+
extra: {
|
|
101
|
+
productDefaults: defaults,
|
|
102
|
+
descriptionTemplates: templates,
|
|
103
|
+
...(opts?.hasbroName ? { hasbroName: opts.hasbroName } : {}),
|
|
104
|
+
},
|
|
72
105
|
children: MODEL_LEAVES[id] ?? [],
|
|
73
106
|
};
|
|
74
107
|
}
|
|
@@ -234,12 +267,32 @@ const BEYBLADE_BURST = {
|
|
|
234
267
|
},
|
|
235
268
|
children: [
|
|
236
269
|
branch("category-burst-tops", "Burst Tops", "Complete Burst-system Beyblades across every wave.", [
|
|
270
|
+
/*
|
|
271
|
+
* 🛑 `hasbroName` is set on exactly the five waves where a Hasbro season
|
|
272
|
+
* title demonstrably differs, each confirmed by BOTH logos existing in
|
|
273
|
+
* the wiki corpus (a Japanese-market logo and an English-market one for
|
|
274
|
+
* the same wave):
|
|
275
|
+
*
|
|
276
|
+
* God <-> Evolution Beyblade_Burst_{God,Evolution}_Logo
|
|
277
|
+
* Cho-Z <-> Turbo {Chouzetsu,Turbo_English}_Logo
|
|
278
|
+
* GT <-> Rise {GT_Japanese,Rise_English}_Logo
|
|
279
|
+
* Superking <-> Surge {Superking_Japanese,Surge_English}_Logo
|
|
280
|
+
* Dynamite B <-> QuadDrive {Dynamite_Battle_Japanese,QuadDrive_English}_Logo
|
|
281
|
+
*
|
|
282
|
+
* `burst-classic` is unset because season 1 shipped as "Beyblade Burst"
|
|
283
|
+
* in both markets — there is no divergence to show. `burst-bu` is unset
|
|
284
|
+
* because the corpus will not support one: it describes Burst Ultimate
|
|
285
|
+
* as a Takara-Tomy toyline concluding the series, and while Hasbro's
|
|
286
|
+
* QuadStrike is contemporaneous, no source we hold states they are the
|
|
287
|
+
* same line renamed. A guessed pairing on a page a buyer reads as fact
|
|
288
|
+
* is worse than a blank.
|
|
289
|
+
*/
|
|
237
290
|
line("category-burst-classic", "Burst Classic", "The original 2015–2017 single- and dual-layer waves, before any metal entered the Layer.", beyDefaults("category-burst-classic", "Beyblade Burst", "Burst System"), BEY_TEMPLATES),
|
|
238
|
-
line("category-burst-god", "Burst God", "The God Layer wave, which added spring-loaded Layers and the first real burst-resistance tuning.", beyDefaults("category-burst-god", "Beyblade Burst God", "God Layer System"), BEY_TEMPLATES),
|
|
239
|
-
line("category-burst-cho-z", "Cho-Z", "The metal-layer wave — heavier Layers and roughly double the burst resistance of what came before.", beyDefaults("category-burst-cho-z", "Beyblade Burst Cho-Z", "Cho-Z Layer System"), BEY_TEMPLATES),
|
|
240
|
-
line("category-burst-gt", "GT", "The Gatinko wave, with a swappable chip inside the Layer for a third tuning axis.", beyDefaults("category-burst-gt", "Beyblade Burst GT", "Gatinko Layer System"), BEY_TEMPLATES),
|
|
241
|
-
line("category-burst-superking", "Superking", "The Sparking / Superking wave and its five-sided ratchet, which changed launch dynamics entirely.", beyDefaults("category-burst-superking", "Beyblade Burst Superking", "Sparking Layer System"), BEY_TEMPLATES),
|
|
242
|
-
line("category-burst-db", "Dynamite Battle", "The DB wave — Armour Tips and the heaviest Layers Burst had shipped to that point.", beyDefaults("category-burst-db", "Beyblade Burst Dynamite Battle", "Dynamite Battle Layer System"), BEY_TEMPLATES),
|
|
291
|
+
line("category-burst-god", "Burst God", "The God Layer wave, which added spring-loaded Layers and the first real burst-resistance tuning.", beyDefaults("category-burst-god", "Beyblade Burst God", "God Layer System"), BEY_TEMPLATES, { hasbroName: "Beyblade Burst Evolution" }),
|
|
292
|
+
line("category-burst-cho-z", "Cho-Z", "The metal-layer wave — heavier Layers and roughly double the burst resistance of what came before.", beyDefaults("category-burst-cho-z", "Beyblade Burst Cho-Z", "Cho-Z Layer System"), BEY_TEMPLATES, { hasbroName: "Beyblade Burst Turbo" }),
|
|
293
|
+
line("category-burst-gt", "GT", "The Gatinko wave, with a swappable chip inside the Layer for a third tuning axis.", beyDefaults("category-burst-gt", "Beyblade Burst GT", "Gatinko Layer System"), BEY_TEMPLATES, { hasbroName: "Beyblade Burst Rise" }),
|
|
294
|
+
line("category-burst-superking", "Superking", "The Sparking / Superking wave and its five-sided ratchet, which changed launch dynamics entirely.", beyDefaults("category-burst-superking", "Beyblade Burst Superking", "Sparking Layer System"), BEY_TEMPLATES, { hasbroName: "Beyblade Burst Surge" }),
|
|
295
|
+
line("category-burst-db", "Dynamite Battle", "The DB wave — Armour Tips and the heaviest Layers Burst had shipped to that point.", beyDefaults("category-burst-db", "Beyblade Burst Dynamite Battle", "Dynamite Battle Layer System"), BEY_TEMPLATES, { hasbroName: "Beyblade Burst QuadDrive" }),
|
|
243
296
|
line("category-burst-bu", "Burst Ultimate", "The final Burst wave, closing the line in 2023 before Beyblade X replaced it.", beyDefaults("category-burst-bu", "Beyblade Burst Ultimate", "Burst Ultimate Layer System"), BEY_TEMPLATES),
|
|
244
297
|
]),
|
|
245
298
|
branch("category-burst-parts", "Burst Parts", "Layers, Discs, Drivers and the chips and armour that bolt onto them.", [
|
|
@@ -302,6 +355,19 @@ const BEYBLADE_X = {
|
|
|
302
355
|
node("category-x-xtreme-stadiums", "Xtreme Stadiums", "X-format stadiums with the Xtreme Line rail — the feature the whole generation is designed around.", stadiumDefaults("category-x-xtreme-stadiums", "Beyblade X"), SEALED_TEMPLATES),
|
|
303
356
|
node("category-x-standard-stadiums", "Standard X Stadiums", "Plain round X dishes without the rail, for casual play and practice.", stadiumDefaults("category-x-standard-stadiums", "Beyblade X"), SEALED_TEMPLATES),
|
|
304
357
|
]),
|
|
358
|
+
/*
|
|
359
|
+
* Added 2026-10-19 for the real CX-20 "Customize Set C" pre-order fixture.
|
|
360
|
+
* A Customize Set is its own retail concept, distinct from both a complete
|
|
361
|
+
* top (`category-x-tops`) and a single loose part (`category-x-parts`):
|
|
362
|
+
* it bundles one complete top with several loose Blades/Ratchets/Bits, so
|
|
363
|
+
* neither existing leaf is the right home. `partDefaults` is still the
|
|
364
|
+
* closer fit of the two existing helpers — the commercial character is
|
|
365
|
+
* "components for a custom build," which is what its FAQ templates
|
|
366
|
+
* (fit/compatibility, not authenticity) already speak to — and it carries
|
|
367
|
+
* `taxCodeId: TAX_TOY` (HSN 9503 0020, 5%), the same rate every other
|
|
368
|
+
* Beyblade/part/launcher/stadium in this catalogue already uses.
|
|
369
|
+
*/
|
|
370
|
+
node("category-x-customize-sets", "Customize Sets", "CX-line Customize Sets — a complete top plus extra Blades, Ratchets and Bits for building several distinct combinations from one box.", partDefaults("category-x-customize-sets", "Customize Set"), PART_TEMPLATES),
|
|
305
371
|
],
|
|
306
372
|
};
|
|
307
373
|
/**
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* a third-party URL (Root Cause #104 — that adds an upstream fetch to every
|
|
8
8
|
* single render).
|
|
9
9
|
*
|
|
10
|
-
* Covers
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
10
|
+
* Covers model leaves, PART leaves and taxonomy BRANCH rows (generation roots
|
|
11
|
+
* and waves, retail lines, brand rows, franchise rows) — they share one id
|
|
12
|
+
* space (`category-*` / `brand-*` / `franchise-*`), so one map serves the
|
|
13
|
+
* category cover and, through `gen-catalogue-listings.mjs`, a leaf's product
|
|
14
|
+
* listing image too.
|
|
13
15
|
*
|
|
14
16
|
* A hand-authored `display.coverImage` always wins over this map; a row absent
|
|
15
17
|
* from it keeps no image rather than being given a placeholder. See
|
|
@@ -31,8 +33,25 @@
|
|
|
31
33
|
* versioning and soft-delete are both OFF, so a deleted object leaves no
|
|
32
34
|
* recoverable copy and no residual billing.
|
|
33
35
|
*
|
|
34
|
-
* Source and licensing for every file
|
|
35
|
-
*
|
|
36
|
+
* Source and licensing for every file — TWO manifests, because the leaves and
|
|
37
|
+
* the branches were fetched by different scripts from different sources:
|
|
38
|
+
* `docs/research/bey-corpus-2026-10/image-provenance.json` (model/part leaves)
|
|
39
|
+
* `docs/research/taxonomy-images-2026-10/image-provenance.json` (branch wordmarks)
|
|
36
40
|
*/
|
|
37
41
|
export declare const GENERATED_CATEGORY_IMAGES: Readonly<Record<string, string>>;
|
|
38
|
-
export declare const GENERATED_CATEGORY_IMAGE_COUNT =
|
|
42
|
+
export declare const GENERATED_CATEGORY_IMAGE_COUNT = 554;
|
|
43
|
+
/**
|
|
44
|
+
* The REGIONAL-VARIANT logo, keyed on the same category id.
|
|
45
|
+
*
|
|
46
|
+
* 🛑 A separate map rather than more entries in the one above, because this is
|
|
47
|
+
* a SECOND image for the SAME category — `category-burst-god` has both a
|
|
48
|
+
* Takara-Tomy "God" wordmark and a Hasbro "Evolution" one. Merging them would
|
|
49
|
+
* mean one silently overwriting the other, and the loser would be whichever
|
|
50
|
+
* the directory listing happened to reach second.
|
|
51
|
+
*
|
|
52
|
+
* Applied by `withGeneratedHasbroCover` to `hasbroCoverImage`, and rendered
|
|
53
|
+
* beside the "Also known as" name. Only populated for a category that also
|
|
54
|
+
* carries `hasbroName` — an image with no name to label it has nothing to say.
|
|
55
|
+
*/
|
|
56
|
+
export declare const GENERATED_CATEGORY_HASBRO_IMAGES: Readonly<Record<string, string>>;
|
|
57
|
+
export declare const GENERATED_CATEGORY_HASBRO_IMAGE_COUNT = 5;
|
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* a third-party URL (Root Cause #104 — that adds an upstream fetch to every
|
|
8
8
|
* single render).
|
|
9
9
|
*
|
|
10
|
-
* Covers
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
10
|
+
* Covers model leaves, PART leaves and taxonomy BRANCH rows (generation roots
|
|
11
|
+
* and waves, retail lines, brand rows, franchise rows) — they share one id
|
|
12
|
+
* space (`category-*` / `brand-*` / `franchise-*`), so one map serves the
|
|
13
|
+
* category cover and, through `gen-catalogue-listings.mjs`, a leaf's product
|
|
14
|
+
* listing image too.
|
|
13
15
|
*
|
|
14
16
|
* A hand-authored `display.coverImage` always wins over this map; a row absent
|
|
15
17
|
* from it keeps no image rather than being given a placeholder. See
|
|
@@ -31,8 +33,10 @@
|
|
|
31
33
|
* versioning and soft-delete are both OFF, so a deleted object leaves no
|
|
32
34
|
* recoverable copy and no residual billing.
|
|
33
35
|
*
|
|
34
|
-
* Source and licensing for every file
|
|
35
|
-
*
|
|
36
|
+
* Source and licensing for every file — TWO manifests, because the leaves and
|
|
37
|
+
* the branches were fetched by different scripts from different sources:
|
|
38
|
+
* `docs/research/bey-corpus-2026-10/image-provenance.json` (model/part leaves)
|
|
39
|
+
* `docs/research/taxonomy-images-2026-10/image-provenance.json` (branch wordmarks)
|
|
36
40
|
*/
|
|
37
41
|
export const GENERATED_CATEGORY_IMAGES = {
|
|
38
42
|
"category-ace-dragon-sting-charge-zan": "/media/category-ace-dragon-sting-charge-zan-image",
|
|
@@ -165,6 +169,7 @@ export const GENERATED_CATEGORY_IMAGES = {
|
|
|
165
169
|
"category-obelisk-odin-triple-xtreme": "/media/category-obelisk-odin-triple-xtreme-image",
|
|
166
170
|
"category-phantom-fox-ms": "/media/category-phantom-fox-ms-image",
|
|
167
171
|
"category-phantom-orion-b-d": "/media/category-phantom-orion-b-d-image",
|
|
172
|
+
"category-phoenixforce-whm-65mt": "/media/category-phoenixforce-whm-65mt-image",
|
|
168
173
|
"category-poison-serpent-sw145sd": "/media/category-poison-serpent-sw145sd-image",
|
|
169
174
|
"category-prominence-phoenix-tapered-metal-universe-10": "/media/category-prominence-phoenix-tapered-metal-universe-10-image",
|
|
170
175
|
"category-proto-nemesis-ad145d": "/media/category-proto-nemesis-ad145d-image",
|
|
@@ -539,5 +544,75 @@ export const GENERATED_CATEGORY_IMAGES = {
|
|
|
539
544
|
"category-ten-heavy": "/media/category-ten-heavy-image",
|
|
540
545
|
"category-ten-wide": "/media/category-ten-wide-image",
|
|
541
546
|
"category-wing-attacker": "/media/category-wing-attacker-image",
|
|
547
|
+
"brand-bandai": "/media/brand-bandai-image",
|
|
548
|
+
"brand-banpresto": "/media/brand-banpresto-image",
|
|
549
|
+
"brand-beyblade": "/media/brand-beyblade-image",
|
|
550
|
+
"brand-bushiroad": "/media/brand-bushiroad-image",
|
|
551
|
+
"brand-funskool": "/media/brand-funskool-image",
|
|
552
|
+
"brand-furyu": "/media/brand-furyu-image",
|
|
553
|
+
"brand-good-smile-company": "/media/brand-good-smile-company-image",
|
|
554
|
+
"brand-hasbro": "/media/brand-hasbro-image",
|
|
555
|
+
"brand-hot-wheels": "/media/brand-hot-wheels-image",
|
|
556
|
+
"brand-konami": "/media/brand-konami-image",
|
|
557
|
+
"brand-mattel": "/media/brand-mattel-image",
|
|
558
|
+
"brand-mcfarlane-toys": "/media/brand-mcfarlane-toys-image",
|
|
559
|
+
"brand-mezco": "/media/brand-mezco-image",
|
|
560
|
+
"brand-newboy": "/media/brand-newboy-image",
|
|
561
|
+
"brand-pokemon-company": "/media/brand-pokemon-company-image",
|
|
562
|
+
"brand-sonokong": "/media/brand-sonokong-image",
|
|
563
|
+
"brand-taito": "/media/brand-taito-image",
|
|
564
|
+
"brand-takara-tomy": "/media/brand-takara-tomy-image",
|
|
565
|
+
"brand-takara": "/media/brand-takara-image",
|
|
566
|
+
"brand-tamashii-nations": "/media/brand-tamashii-nations-image",
|
|
567
|
+
"brand-toy-biz": "/media/brand-toy-biz-image",
|
|
568
|
+
"brand-wizards-of-the-coast": "/media/brand-wizards-of-the-coast-image",
|
|
569
|
+
"category-beyblade-burst": "/media/category-beyblade-burst-image",
|
|
570
|
+
"category-beyblade-metal": "/media/category-beyblade-metal-image",
|
|
571
|
+
"category-beyblade-original": "/media/category-beyblade-original-image",
|
|
572
|
+
"category-beyblade-x": "/media/category-beyblade-x-image",
|
|
573
|
+
"category-burst-cho-z": "/media/category-burst-cho-z-image",
|
|
574
|
+
"category-burst-classic": "/media/category-burst-classic-image",
|
|
575
|
+
"category-burst-db": "/media/category-burst-db-image",
|
|
576
|
+
"category-burst-god": "/media/category-burst-god-image",
|
|
577
|
+
"category-burst-gt": "/media/category-burst-gt-image",
|
|
578
|
+
"category-burst-superking": "/media/category-burst-superking-image",
|
|
579
|
+
"category-metal-fury-4d": "/media/category-metal-fury-4d-image",
|
|
580
|
+
"category-metal-fusion": "/media/category-metal-fusion-image",
|
|
581
|
+
"category-metal-masters": "/media/category-metal-masters-image",
|
|
582
|
+
"category-metal-shogun-steel": "/media/category-metal-shogun-steel-image",
|
|
583
|
+
"category-original-engine-gear": "/media/category-original-engine-gear-image",
|
|
584
|
+
"category-original-magnacore": "/media/category-original-magnacore-image",
|
|
585
|
+
"category-x-basic": "/media/category-x-basic-image",
|
|
586
|
+
"category-x-custom-cx": "/media/category-x-custom-cx-image",
|
|
587
|
+
"category-x-unique-ux": "/media/category-x-unique-ux-image",
|
|
588
|
+
"franchise-beyblade": "/media/franchise-beyblade-image",
|
|
589
|
+
"franchise-bleach": "/media/franchise-bleach-image",
|
|
590
|
+
"franchise-dc-comics": "/media/franchise-dc-comics-image",
|
|
591
|
+
"franchise-dragon-ball": "/media/franchise-dragon-ball-image",
|
|
592
|
+
"franchise-marvel": "/media/franchise-marvel-image",
|
|
593
|
+
"franchise-naruto": "/media/franchise-naruto-image",
|
|
594
|
+
"franchise-one-piece": "/media/franchise-one-piece-image",
|
|
595
|
+
"franchise-one-punch-man": "/media/franchise-one-punch-man-image",
|
|
542
596
|
};
|
|
543
|
-
export const GENERATED_CATEGORY_IMAGE_COUNT =
|
|
597
|
+
export const GENERATED_CATEGORY_IMAGE_COUNT = 554;
|
|
598
|
+
/**
|
|
599
|
+
* The REGIONAL-VARIANT logo, keyed on the same category id.
|
|
600
|
+
*
|
|
601
|
+
* 🛑 A separate map rather than more entries in the one above, because this is
|
|
602
|
+
* a SECOND image for the SAME category — `category-burst-god` has both a
|
|
603
|
+
* Takara-Tomy "God" wordmark and a Hasbro "Evolution" one. Merging them would
|
|
604
|
+
* mean one silently overwriting the other, and the loser would be whichever
|
|
605
|
+
* the directory listing happened to reach second.
|
|
606
|
+
*
|
|
607
|
+
* Applied by `withGeneratedHasbroCover` to `hasbroCoverImage`, and rendered
|
|
608
|
+
* beside the "Also known as" name. Only populated for a category that also
|
|
609
|
+
* carries `hasbroName` — an image with no name to label it has nothing to say.
|
|
610
|
+
*/
|
|
611
|
+
export const GENERATED_CATEGORY_HASBRO_IMAGES = {
|
|
612
|
+
"category-burst-cho-z": "/media/category-burst-cho-z-hasbro-image",
|
|
613
|
+
"category-burst-db": "/media/category-burst-db-hasbro-image",
|
|
614
|
+
"category-burst-god": "/media/category-burst-god-hasbro-image",
|
|
615
|
+
"category-burst-gt": "/media/category-burst-gt-hasbro-image",
|
|
616
|
+
"category-burst-superking": "/media/category-burst-superking-hasbro-image",
|
|
617
|
+
};
|
|
618
|
+
export const GENERATED_CATEGORY_HASBRO_IMAGE_COUNT = 5;
|
|
@@ -2,4 +2,4 @@ import type { CategoryTreeNode } from "./category-tree";
|
|
|
2
2
|
/** Named-model leaves, keyed by the tier-3 line they belong to. */
|
|
3
3
|
export declare const MODEL_LEAVES: Record<string, CategoryTreeNode[]>;
|
|
4
4
|
/** Total named-model leaves — asserted by the seed so a silent drop is loud. */
|
|
5
|
-
export declare const MODEL_LEAF_COUNT =
|
|
5
|
+
export declare const MODEL_LEAF_COUNT = 221;
|
|
@@ -1330,6 +1330,12 @@ export const MODEL_LEAVES = {
|
|
|
1330
1330
|
},
|
|
1331
1331
|
],
|
|
1332
1332
|
"category-x-custom-cx": [
|
|
1333
|
+
{
|
|
1334
|
+
id: "category-phoenixforce-whm-65mt",
|
|
1335
|
+
name: "PhoenixForce WHM-65MT",
|
|
1336
|
+
description: "PhoenixForce WHM-65MT — a Balance-type, right-spin Custom Line (CX) release, product code CX-20, released by TT Customize Set. Release note: Released only as part of the CX-20 Customize Set C. Complete tops, loose parts, sticker sheets and pre-owned examples of this model are listed here.",
|
|
1337
|
+
extra: { aliases: ["CX-20", "PhoenixForce Weight Heavy M-65 Metal Taper", "Phoenix Force (manga, English)"], productDefaults: { defaultFeatures: ["feature-blader-burn-fujiwara", "feature-type-balance", "feature-right-spin"] } },
|
|
1338
|
+
},
|
|
1333
1339
|
{
|
|
1334
1340
|
id: "category-valkyrievolt-s4-70v",
|
|
1335
1341
|
name: "ValkyrieVolt S4-70V",
|
|
@@ -1385,4 +1391,4 @@ export const MODEL_LEAVES = {
|
|
|
1385
1391
|
],
|
|
1386
1392
|
};
|
|
1387
1393
|
/** Total named-model leaves — asserted by the seed so a silent drop is loud. */
|
|
1388
|
-
export const MODEL_LEAF_COUNT =
|
|
1394
|
+
export const MODEL_LEAF_COUNT = 221;
|
|
@@ -15,6 +15,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
15
15
|
"category-00-00turn": "disc--00-00turn",
|
|
16
16
|
"category-00-part-of-chassis": "disc--00-part-of-chassis",
|
|
17
17
|
"category-1-60": "ratchet--1-60",
|
|
18
|
+
"category-1-70": "ratchet--1-70",
|
|
18
19
|
"category-10": "disc--10",
|
|
19
20
|
"category-100": "spin-track--100",
|
|
20
21
|
"category-105": "spin-track--105",
|
|
@@ -58,6 +59,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
58
59
|
"category-6mobile-ring": "disc--6mobile-ring",
|
|
59
60
|
"category-6vortex": "disc--6vortex",
|
|
60
61
|
"category-8": "disc--8",
|
|
62
|
+
"category-8-80": "ratchet--8-80",
|
|
61
63
|
"category-88": "spin-track--88",
|
|
62
64
|
"category-8flow": "disc--8flow",
|
|
63
65
|
"category-9": "ratchet--9",
|
|
@@ -416,6 +418,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
416
418
|
"category-hexa": "bit--hexa",
|
|
417
419
|
"category-hf": "performance-tip--hf",
|
|
418
420
|
"category-hf-s-hole-flat-sharp": "performance-tip--hf-s-hole-flat-sharp",
|
|
421
|
+
"category-high-needle": "bit--high-needle",
|
|
419
422
|
"category-hit-release": "blade-base--hit-release",
|
|
420
423
|
"category-hit-release-base": "blade-base--hit-release-base",
|
|
421
424
|
"category-hit-release-draciel": "blade-base--hit-release-draciel",
|
|
@@ -442,6 +445,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
442
445
|
"category-karma": "disc--karma",
|
|
443
446
|
"category-kerbecs-clear-wheel": "energy-ring--kerbecs-clear-wheel",
|
|
444
447
|
"category-ketos-clear-wheel": "energy-ring--ketos-clear-wheel",
|
|
448
|
+
"category-kick": "bit--kick",
|
|
445
449
|
"category-kick-3": "driver--kick-3",
|
|
446
450
|
"category-killerken": "chrome-wheel--killerken",
|
|
447
451
|
"category-king-kerbeus-k2": "layer--king-kerbeus-k2",
|
|
@@ -471,6 +475,8 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
471
475
|
"category-loop": "driver--loop",
|
|
472
476
|
"category-lost-l-inor-l2": "layer--lost-l-inor-l2",
|
|
473
477
|
"category-low": "performance-tip--low",
|
|
478
|
+
"category-low-orb": "bit--low-orb",
|
|
479
|
+
"category-low-rush": "bit--low-rush",
|
|
474
480
|
"category-lw105": "spin-track--lw105",
|
|
475
481
|
"category-lw160": "spin-track--lw160",
|
|
476
482
|
"category-m145-gimmick-track": "spin-track--m145-gimmick-track",
|
|
@@ -628,6 +634,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
628
634
|
"category-sg-sharp": "blade-base--sg-sharp",
|
|
629
635
|
"category-sg-sharp-base": "blade-base--sg-sharp-base",
|
|
630
636
|
"category-sharkedge": "blade--sharkedge",
|
|
637
|
+
"category-sharkscale": "blade--sharkscale",
|
|
631
638
|
"category-sharp-core": "running-core--sharp-core",
|
|
632
639
|
"category-shield-hammer": "attack-ring--shield-hammer",
|
|
633
640
|
"category-shooter-change-core": "running-core--shooter-change-core",
|
|
@@ -698,6 +705,7 @@ export const PART_CATEGORY_TO_GLOSSARY_ID = {
|
|
|
698
705
|
"category-turtle-survivor": "attack-ring--turtle-survivor",
|
|
699
706
|
"category-tyrannobeat": "blade--tyrannobeat",
|
|
700
707
|
"category-ultimate-attacker": "attack-ring--ultimate-attacker",
|
|
708
|
+
"category-under-flat": "bit--under-flat",
|
|
701
709
|
"category-unicornsting": "blade--unicornsting",
|
|
702
710
|
"category-unite": "driver--unite",
|
|
703
711
|
"category-unite-dash": "driver--unite-dash",
|
|
@@ -6,4 +6,4 @@ export declare const PART_LEAVES: Record<string, CategoryTreeNode[]>;
|
|
|
6
6
|
* SAME string by construction, so this map exists only to let a reader see that
|
|
7
7
|
* stated rather than inferred.
|
|
8
8
|
*/
|
|
9
|
-
export declare const PART_LEAF_COUNT =
|
|
9
|
+
export declare const PART_LEAF_COUNT = 760;
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* 🛑 The prose is ours, composed from facts (name, classification, printed
|
|
22
22
|
* code, weight, model count). No corpus sentence is reproduced.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
24
|
+
* 760 parts -> 760 leaves across 20 part-type nodes.
|
|
25
25
|
* 129 needed a classification-qualified slug because the bare name
|
|
26
26
|
* collides across classifications; the rest keep the short URL.
|
|
27
27
|
*
|
|
@@ -4280,12 +4280,36 @@ export const PART_LEAVES = {
|
|
|
4280
4280
|
description: "Hexa — a bit (used by 1 model). Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4281
4281
|
extra: { aliases: ["Hexa", "hexa"] },
|
|
4282
4282
|
},
|
|
4283
|
+
{
|
|
4284
|
+
id: "category-high-needle",
|
|
4285
|
+
name: "High Needle",
|
|
4286
|
+
description: "High Needle — a bit. Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4287
|
+
extra: { aliases: ["High Needle", "high-needle"] },
|
|
4288
|
+
},
|
|
4289
|
+
{
|
|
4290
|
+
id: "category-kick",
|
|
4291
|
+
name: "Kick",
|
|
4292
|
+
description: "Kick — a bit. Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4293
|
+
extra: { aliases: ["Kick", "kick"] },
|
|
4294
|
+
},
|
|
4283
4295
|
{
|
|
4284
4296
|
id: "category-bit-lf",
|
|
4285
4297
|
name: "LF",
|
|
4286
4298
|
description: "LF — a bit (used by 2 models). Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4287
4299
|
extra: { aliases: ["LF", "lf"] },
|
|
4288
4300
|
},
|
|
4301
|
+
{
|
|
4302
|
+
id: "category-low-orb",
|
|
4303
|
+
name: "Low Orb",
|
|
4304
|
+
description: "Low Orb — a bit. Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4305
|
+
extra: { aliases: ["Low Orb", "low-orb"] },
|
|
4306
|
+
},
|
|
4307
|
+
{
|
|
4308
|
+
id: "category-low-rush",
|
|
4309
|
+
name: "Low Rush",
|
|
4310
|
+
description: "Low Rush — a bit. Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4311
|
+
extra: { aliases: ["Low Rush", "low-rush"] },
|
|
4312
|
+
},
|
|
4289
4313
|
{
|
|
4290
4314
|
id: "category-n",
|
|
4291
4315
|
name: "N",
|
|
@@ -4346,6 +4370,12 @@ export const PART_LEAVES = {
|
|
|
4346
4370
|
description: "Trans Point — a bit (used by 1 model). Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4347
4371
|
extra: { aliases: ["Trans Point", "trans point"] },
|
|
4348
4372
|
},
|
|
4373
|
+
{
|
|
4374
|
+
id: "category-under-flat",
|
|
4375
|
+
name: "Under Flat",
|
|
4376
|
+
description: "Under Flat — a bit. Loose examples, spares and pre-owned bits of this part are listed here.",
|
|
4377
|
+
extra: { aliases: ["Under Flat", "under-flat"] },
|
|
4378
|
+
},
|
|
4349
4379
|
{
|
|
4350
4380
|
id: "category-vortex",
|
|
4351
4381
|
name: "Vortex",
|
|
@@ -4456,6 +4486,12 @@ export const PART_LEAVES = {
|
|
|
4456
4486
|
description: "SharkEdge — a blade (used by 2 models). Loose examples, spares and pre-owned blades of this part are listed here.",
|
|
4457
4487
|
extra: { aliases: ["SharkEdge", "sharkedge"] },
|
|
4458
4488
|
},
|
|
4489
|
+
{
|
|
4490
|
+
id: "category-sharkscale",
|
|
4491
|
+
name: "SharkScale",
|
|
4492
|
+
description: "SharkScale — a blade. Loose examples, spares and pre-owned blades of this part are listed here.",
|
|
4493
|
+
extra: { aliases: ["SharkScale", "sharkscale"] },
|
|
4494
|
+
},
|
|
4459
4495
|
{
|
|
4460
4496
|
id: "category-silverwolf",
|
|
4461
4497
|
name: "SilverWolf",
|
|
@@ -4512,6 +4548,12 @@ export const PART_LEAVES = {
|
|
|
4512
4548
|
description: "1-60 — a ratchet (used by 1 model). Loose examples, spares and pre-owned ratchets of this part are listed here.",
|
|
4513
4549
|
extra: { aliases: ["1-60"] },
|
|
4514
4550
|
},
|
|
4551
|
+
{
|
|
4552
|
+
id: "category-1-70",
|
|
4553
|
+
name: "1-70",
|
|
4554
|
+
description: "1-70 — a ratchet. Loose examples, spares and pre-owned ratchets of this part are listed here.",
|
|
4555
|
+
extra: { aliases: ["1-70"] },
|
|
4556
|
+
},
|
|
4515
4557
|
{
|
|
4516
4558
|
id: "category-2",
|
|
4517
4559
|
name: "2",
|
|
@@ -4572,6 +4614,12 @@ export const PART_LEAVES = {
|
|
|
4572
4614
|
description: "5-80 — a ratchet (used by 1 model). Loose examples, spares and pre-owned ratchets of this part are listed here.",
|
|
4573
4615
|
extra: { aliases: ["5-80"] },
|
|
4574
4616
|
},
|
|
4617
|
+
{
|
|
4618
|
+
id: "category-8-80",
|
|
4619
|
+
name: "8-80",
|
|
4620
|
+
description: "8-80 — a ratchet. Loose examples, spares and pre-owned ratchets of this part are listed here.",
|
|
4621
|
+
extra: { aliases: ["8-80"] },
|
|
4622
|
+
},
|
|
4575
4623
|
{
|
|
4576
4624
|
id: "category-9",
|
|
4577
4625
|
name: "9",
|
|
@@ -4591,4 +4639,4 @@ export const PART_LEAVES = {
|
|
|
4591
4639
|
* SAME string by construction, so this map exists only to let a reader see that
|
|
4592
4640
|
* stated rather than inferred.
|
|
4593
4641
|
*/
|
|
4594
|
-
export const PART_LEAF_COUNT =
|
|
4642
|
+
export const PART_LEAF_COUNT = 760;
|