@mohasinac/appkit 4.57.0 → 4.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/server/features/beys/data.d.ts +44 -0
  3. package/dist/_internal/server/features/beys/data.js +107 -0
  4. package/dist/_internal/server/features/beys/og.d.ts +42 -0
  5. package/dist/_internal/server/features/beys/og.js +89 -0
  6. package/dist/_internal/server/features/parts/data.js +3 -2
  7. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  8. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  9. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  10. package/dist/_internal/shared/actions/action-registry.js +86 -0
  11. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  12. package/dist/client.d.ts +2 -0
  13. package/dist/client.js +1 -0
  14. package/dist/constants/api-endpoints.d.ts +12 -0
  15. package/dist/constants/api-endpoints.js +10 -0
  16. package/dist/constants/field-names.d.ts +46 -0
  17. package/dist/constants/field-names.js +46 -0
  18. package/dist/constants/seed-meta.d.ts +113 -0
  19. package/dist/constants/seed-meta.js +91 -0
  20. package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
  21. package/dist/features/admin/components/AdminBeysView.js +178 -0
  22. package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
  23. package/dist/features/admin/components/AdminPartsView.js +160 -0
  24. package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
  25. package/dist/features/admin/components/OwnerQuickActions.js +31 -3
  26. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
  27. package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
  28. package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
  29. package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
  30. package/dist/features/admin/schemas/firestore.d.ts +1 -1
  31. package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
  32. package/dist/features/auth/permissions/constants.d.ts +1 -1
  33. package/dist/features/auth/permissions/constants.js +12 -1
  34. package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
  35. package/dist/features/beys/components/BeyDetailPageView.js +98 -0
  36. package/dist/features/beys/schemas/firestore.d.ts +417 -0
  37. package/dist/features/beys/schemas/firestore.js +65 -0
  38. package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
  39. package/dist/features/blog/components/BlogPostView.js +2 -2
  40. package/dist/features/categories/components/BrandDetailPageView.js +4 -2
  41. package/dist/features/categories/components/BundleDetailView.js +2 -2
  42. package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
  43. package/dist/features/categories/components/CategoryGrid.js +24 -2
  44. package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
  45. package/dist/features/events/components/EventCard.js +15 -2
  46. package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
  47. package/dist/features/homepage/components/CustomCardsSection.js +67 -50
  48. package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
  49. package/dist/features/homepage/schemas/index.d.ts +10 -10
  50. package/dist/features/parts/components/PartDetailPageView.js +5 -3
  51. package/dist/features/parts/components/PartsSearchBox.js +79 -4
  52. package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
  53. package/dist/features/parts/schemas/admin-edit.js +89 -0
  54. package/dist/features/parts/schemas/firestore.d.ts +2 -1
  55. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
  56. package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
  57. package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
  58. package/dist/features/products/components/ProductGrid.js +18 -2
  59. package/dist/features/products/schemas/firestore.d.ts +18 -0
  60. package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
  61. package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
  62. package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
  63. package/dist/features/seller/components/SellerProductShell.js +31 -3
  64. package/dist/index.d.ts +6 -129
  65. package/dist/index.js +61 -292
  66. package/dist/next/routing/route-map.d.ts +13 -1
  67. package/dist/next/routing/route-map.js +37 -0
  68. package/dist/schemas/registry.d.ts +6 -6
  69. package/dist/server.d.ts +2 -69
  70. package/dist/server.js +8 -69
  71. package/dist/styles.css +468 -1
  72. package/dist/tailwind-utilities.css +1 -1
  73. package/dist/ui/components/PosterCard.d.ts +99 -0
  74. package/dist/ui/components/PosterCard.js +109 -0
  75. package/dist/ui/components/PosterCard.style.css +466 -0
  76. package/dist/ui/components/index.style.css +1 -0
  77. package/dist/ui/index.d.ts +2 -0
  78. package/dist/ui/index.js +2 -0
  79. package/package.json +4 -2
  80. package/scripts/seed-cli.mjs +177 -2
  81. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  82. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  83. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  84. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  85. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  86. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  87. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  89. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  91. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  93. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  95. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  97. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  99. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  101. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  103. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  105. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  107. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  109. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  111. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  113. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  115. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  117. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  119. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  120. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  121. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  123. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  125. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  127. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  129. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  131. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  133. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  135. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  137. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  139. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  141. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  143. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  145. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  147. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  149. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  151. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  153. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  155. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  157. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  159. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  161. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  163. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  165. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  167. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  169. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  171. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  173. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  175. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  177. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  179. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  181. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  183. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  185. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  187. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  188. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  189. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  191. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  193. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  195. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  197. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  199. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  201. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  203. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  205. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  207. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  209. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  211. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  213. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  215. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  217. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  219. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  221. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  223. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  224. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  225. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  227. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  229. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  231. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  233. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  235. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  237. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  239. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  241. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  243. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  245. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  247. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  249. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  251. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  253. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  255. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  257. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  259. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  261. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  263. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/index.js +0 -301
  265. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  267. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  269. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  271. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  273. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  275. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  277. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  279. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  281. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  283. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  285. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  287. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  289. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  291. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  292. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  293. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  294. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  295. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  296. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  297. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  298. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  299. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  300. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  301. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  302. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  303. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  304. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  305. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  306. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  307. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  308. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  309. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  310. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  311. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  312. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  313. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  314. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  315. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  316. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  317. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  318. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  319. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  320. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  321. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  322. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  323. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  324. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  325. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  326. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  327. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  328. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  329. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  330. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  331. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  332. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  333. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  334. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  335. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  336. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  337. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  338. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  339. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  340. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  341. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  342. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  343. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  344. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  345. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  346. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  347. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  348. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  349. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  350. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  351. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  352. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  353. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  354. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  355. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  356. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  357. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  358. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  359. package/dist/features/tester/seed-data/index.d.ts +0 -2
  360. package/dist/features/tester/seed-data/index.js +0 -2
  361. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  362. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  363. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  364. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  365. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  366. package/dist/features/tester/seed-data/tester-window.js +0 -66
  367. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  368. package/dist/seed/_helpers/brand-rows.js +0 -600
  369. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  370. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  371. package/dist/seed/_helpers/category-content.d.ts +0 -68
  372. package/dist/seed/_helpers/category-content.js +0 -731
  373. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  374. package/dist/seed/_helpers/category-forest.js +0 -824
  375. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  376. package/dist/seed/_helpers/category-images-generated.js +0 -618
  377. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  378. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  379. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  380. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  381. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  382. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  383. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  384. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  385. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  386. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  387. package/dist/seed/_helpers/category-models.d.ts +0 -12
  388. package/dist/seed/_helpers/category-models.js +0 -45
  389. package/dist/seed/_helpers/category-names.d.ts +0 -54
  390. package/dist/seed/_helpers/category-names.js +0 -118
  391. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  392. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  393. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  394. package/dist/seed/_helpers/category-parts.js +0 -15022
  395. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  396. package/dist/seed/_helpers/category-tree.js +0 -119
  397. package/dist/seed/_helpers/character-features.d.ts +0 -10
  398. package/dist/seed/_helpers/character-features.js +0 -120
  399. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  400. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  401. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  402. package/dist/seed/_helpers/franchise-rows.js +0 -189
  403. package/dist/seed/_helpers/media.d.ts +0 -67
  404. package/dist/seed/_helpers/media.js +0 -172
  405. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  406. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  407. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  408. package/dist/seed/_helpers/product-search-txt.js +0 -23
  409. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  410. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  411. package/dist/seed/addresses-seed-data.d.ts +0 -2
  412. package/dist/seed/addresses-seed-data.js +0 -78
  413. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  414. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  415. package/dist/seed/bids-seed-data.d.ts +0 -2
  416. package/dist/seed/bids-seed-data.js +0 -206
  417. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  418. package/dist/seed/blog-posts-seed-data.js +0 -442
  419. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  420. package/dist/seed/carousel-slides-seed-data.js +0 -411
  421. package/dist/seed/carousels-seed-data.d.ts +0 -2
  422. package/dist/seed/carousels-seed-data.js +0 -36
  423. package/dist/seed/cart-seed-data.d.ts +0 -2
  424. package/dist/seed/cart-seed-data.js +0 -241
  425. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  426. package/dist/seed/catalogue-seed-data.js +0 -112
  427. package/dist/seed/categories-seed-data.d.ts +0 -3
  428. package/dist/seed/categories-seed-data.js +0 -816
  429. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  430. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  431. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  432. package/dist/seed/coupon-usage-seed-data.js +0 -55
  433. package/dist/seed/coupons-seed-data.d.ts +0 -2
  434. package/dist/seed/coupons-seed-data.js +0 -226
  435. package/dist/seed/defaults/categories.d.ts +0 -2
  436. package/dist/seed/defaults/categories.js +0 -12
  437. package/dist/seed/defaults/faqs.d.ts +0 -2
  438. package/dist/seed/defaults/faqs.js +0 -40
  439. package/dist/seed/events-seed-data.d.ts +0 -7
  440. package/dist/seed/events-seed-data.js +0 -482
  441. package/dist/seed/factories/address.factory.d.ts +0 -21
  442. package/dist/seed/factories/address.factory.js +0 -44
  443. package/dist/seed/factories/bid.factory.d.ts +0 -15
  444. package/dist/seed/factories/bid.factory.js +0 -33
  445. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  446. package/dist/seed/factories/blog-post.factory.js +0 -22
  447. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  448. package/dist/seed/factories/carousel.factory.js +0 -17
  449. package/dist/seed/factories/cart.factory.d.ts +0 -25
  450. package/dist/seed/factories/cart.factory.js +0 -35
  451. package/dist/seed/factories/category.factory.d.ts +0 -11
  452. package/dist/seed/factories/category.factory.js +0 -16
  453. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  454. package/dist/seed/factories/coupon.factory.js +0 -43
  455. package/dist/seed/factories/faq.factory.d.ts +0 -10
  456. package/dist/seed/factories/faq.factory.js +0 -15
  457. package/dist/seed/factories/notification.factory.d.ts +0 -18
  458. package/dist/seed/factories/notification.factory.js +0 -39
  459. package/dist/seed/factories/order.factory.d.ts +0 -20
  460. package/dist/seed/factories/order.factory.js +0 -20
  461. package/dist/seed/factories/payout.factory.d.ts +0 -21
  462. package/dist/seed/factories/payout.factory.js +0 -38
  463. package/dist/seed/factories/product.factory.d.ts +0 -27
  464. package/dist/seed/factories/product.factory.js +0 -80
  465. package/dist/seed/factories/review.factory.d.ts +0 -14
  466. package/dist/seed/factories/review.factory.js +0 -52
  467. package/dist/seed/factories/session.factory.d.ts +0 -15
  468. package/dist/seed/factories/session.factory.js +0 -31
  469. package/dist/seed/factories/store.factory.d.ts +0 -23
  470. package/dist/seed/factories/store.factory.js +0 -47
  471. package/dist/seed/factories/user.factory.d.ts +0 -19
  472. package/dist/seed/factories/user.factory.js +0 -56
  473. package/dist/seed/faq-seed-data.d.ts +0 -18
  474. package/dist/seed/faq-seed-data.js +0 -1956
  475. package/dist/seed/firestore-indexes.d.ts +0 -12
  476. package/dist/seed/firestore-indexes.js +0 -31
  477. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  478. package/dist/seed/grouped-listings-seed-data.js +0 -283
  479. package/dist/seed/history-seed-data.d.ts +0 -12
  480. package/dist/seed/history-seed-data.js +0 -70
  481. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  482. package/dist/seed/homepage-sections-seed-data.js +0 -1018
  483. package/dist/seed/index.d.ts +0 -98
  484. package/dist/seed/index.js +0 -112
  485. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  486. package/dist/seed/lottery-entries-seed-data.js +0 -108
  487. package/dist/seed/manifest.d.ts +0 -16
  488. package/dist/seed/manifest.js +0 -235
  489. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  490. package/dist/seed/media-assets-seed-data.js +0 -5593
  491. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  492. package/dist/seed/model-composition-seed-data.js +0 -9032
  493. package/dist/seed/notifications-seed-data.d.ts +0 -2
  494. package/dist/seed/notifications-seed-data.js +0 -606
  495. package/dist/seed/offers-seed-data.d.ts +0 -2
  496. package/dist/seed/offers-seed-data.js +0 -398
  497. package/dist/seed/orders-seed-data.d.ts +0 -2
  498. package/dist/seed/orders-seed-data.js +0 -845
  499. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  500. package/dist/seed/part-glossary/chunk0.js +0 -35448
  501. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  502. package/dist/seed/part-glossary/chunk1.js +0 -40494
  503. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  504. package/dist/seed/part-glossary/chunk2.js +0 -51242
  505. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  506. package/dist/seed/part-glossary/chunk3.js +0 -53337
  507. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  508. package/dist/seed/part-glossary/chunk4.js +0 -51454
  509. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  510. package/dist/seed/part-glossary-seed-data.js +0 -25
  511. package/dist/seed/payouts-seed-data.d.ts +0 -2
  512. package/dist/seed/payouts-seed-data.js +0 -302
  513. package/dist/seed/product-features-seed-data.d.ts +0 -3
  514. package/dist/seed/product-features-seed-data.js +0 -366
  515. package/dist/seed/products-art-seed-data.d.ts +0 -2
  516. package/dist/seed/products-art-seed-data.js +0 -289
  517. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  518. package/dist/seed/products-auctions-seed-data.js +0 -475
  519. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  520. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  521. package/dist/seed/products-catalogue-seed-data.d.ts +0 -22
  522. package/dist/seed/products-catalogue-seed-data.js +0 -86384
  523. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  524. package/dist/seed/products-classifieds-seed-data.js +0 -435
  525. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  526. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  527. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  528. package/dist/seed/products-live-items-seed-data.js +0 -269
  529. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  530. package/dist/seed/products-preorders-seed-data.js +0 -360
  531. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  532. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  533. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  534. package/dist/seed/products-spares-seed-data.js +0 -368
  535. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  536. package/dist/seed/products-standard-seed-data.js +0 -632
  537. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  538. package/dist/seed/products-stickers-seed-data.js +0 -319
  539. package/dist/seed/reviews-seed-data.d.ts +0 -1
  540. package/dist/seed/reviews-seed-data.js +0 -185
  541. package/dist/seed/runner.d.ts +0 -2
  542. package/dist/seed/runner.js +0 -125
  543. package/dist/seed/scammers-seed-data.d.ts +0 -2
  544. package/dist/seed/scammers-seed-data.js +0 -235
  545. package/dist/seed/seed-market-config.d.ts +0 -48
  546. package/dist/seed/seed-market-config.js +0 -199
  547. package/dist/seed/seed-purpose.d.ts +0 -299
  548. package/dist/seed/seed-purpose.js +0 -431
  549. package/dist/seed/sessions-seed-data.d.ts +0 -3
  550. package/dist/seed/sessions-seed-data.js +0 -116
  551. package/dist/seed/shipments-seed-data.d.ts +0 -5
  552. package/dist/seed/shipments-seed-data.js +0 -185
  553. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  554. package/dist/seed/site-settings-seed-data.js +0 -1069
  555. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  556. package/dist/seed/store-addresses-seed-data.js +0 -71
  557. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  558. package/dist/seed/store-extensions-seed-data.js +0 -292
  559. package/dist/seed/stores-seed-data.d.ts +0 -6
  560. package/dist/seed/stores-seed-data.js +0 -242
  561. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  562. package/dist/seed/support-tickets-seed-data.js +0 -239
  563. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  564. package/dist/seed/tax-codes-seed-data.js +0 -100
  565. package/dist/seed/test-data-ttl.d.ts +0 -29
  566. package/dist/seed/test-data-ttl.js +0 -31
  567. package/dist/seed/test-utils.d.ts +0 -49
  568. package/dist/seed/test-utils.js +0 -110
  569. package/dist/seed/types.d.ts +0 -89
  570. package/dist/seed/types.js +0 -15
  571. package/dist/seed/users-seed-data.d.ts +0 -2
  572. package/dist/seed/users-seed-data.js +0 -597
  573. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  574. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,476 +0,0 @@
1
- /*
2
- * WHY: Real, wiki-verified Beyblade X listings under `store-letitrip-official` — built
3
- * 2026-10-19 so the production catalogue has genuinely purchasable products ahead of
4
- * PhonePe merchant registration, which requires at least one real listing. Every name,
5
- * product code, release date and image is sourced from beyblade.fandom.com (see
6
- * docs/research/bey-corpus-2026-10/ for the corpus and image provenance) — nothing here
7
- * is invented. `scripts/fetch-product-images.mjs` + `scripts/upload-product-images.mjs`
8
- * are the reproducible pipeline that produced the `/media/product-*-image` references.
9
- *
10
- * Two of five standalone tops (CobaltDrake, PhoenixWing) are documented twice in the
11
- * research corpus under a slug collision and sit in its `review` bucket rather than
12
- * `canonical` — NOT because they are two competing retail releases, but because the two
13
- * corpus documents describing each have different completeness (one has the anime
14
- * owner's name, the other has the product code). Both describe the same real product;
15
- * this file uses the fuller description of each.
16
- *
17
- * The BX-53 All-in-One Set demonstrates the PRODUCT GROUP feature (`isGroupParent` /
18
- * `groupId` / `groupChildSlugs` on `ProductDocument` — see CLAUDE.md "Bundles vs
19
- * Product Groups vs Grouped Listings"): one parent listing (the boxed set) plus six
20
- * child listings, each independently stocked and independently purchasable. Stock is
21
- * NOT pooled — selling the parent box does not decrement any child's `stockQuantity`,
22
- * and vice versa. This is also the first STATIC SEED fixture of this shape in the
23
- * codebase (confirmed by research — the only prior producer of `isGroupParent` is the
24
- * live sticker-trace "promote sheet to listings" code path, never a seed file), so there
25
- * was no existing template; cross-referenced ids were verified against the real
26
- * `products.repository.ts` field contract rather than guessed.
27
- *
28
- * Two of the group's six children reuse a LEAF CATEGORY a standalone listing in this
29
- * same file already occupies (`category-aeropegasus-3-70a`, `category-x-xtreme-
30
- * stadiums`) — this is correct, not a collision: the box's AeroPegasus is a "Double
31
- * Metal Coat" colourway exclusive to the set, distinct from the standalone AeroPegasus
32
- * (the Rare Bey Get Battle Prize Booster colourway), and the box's stadium is a "Clear
33
- * Black×Green" colourway distinct from the standard-release Xtreme Stadium. Two
34
- * differently-priced, differently-described, independently-stocked products sharing one
35
- * taxonomy leaf is the correct way to model "same model line, different real release."
36
- *
37
- * WHAT: Exports 12 standard products with listingType:"standard" — 5 standalone (4 tops + 1
38
- * stadium) and 7 forming one product group (1 parent + 6 children).
39
- *
40
- * EXPORTS:
41
- * productsBeybladeXSeedData — Array of 12 standard products
42
- *
43
- * @tag domain:products,catalog
44
- * @tag layer:seed
45
- * @tag pattern:none
46
- * @tag access:server-only
47
- * @tag consumers:seed/index.ts,seed/runner.ts
48
- * @tag sideEffects:none
49
- */
50
- import { seedGallery } from "./_helpers/media.js";
51
- import { PRODUCT_FIELDS } from "../constants/field-names.js";
52
- import { withFinalSale } from "./_helpers/final-sale-fixtures.js";
53
- import { withDerivedCategoryNames } from "./_helpers/category-names.js";
54
- import { buildSearchTxt } from "../utils/search-txt.js";
55
- const STORE_ID = "store-letitrip-official";
56
- const STORE_NAME = "LetItRip Official";
57
- const BRAND_SLUG = "brand-takara-tomy";
58
- const BRAND = "Takara-Tomy";
59
- /**
60
- * Build the `searchTxt` prefix index for a row.
61
- *
62
- * 🛑 THIS FILE SHIPPED WITHOUT IT AND EVERY LISTING WAS UNSEARCHABLE.
63
- *
64
- * `searchTxt` is the ONLY field the public product search queries. A row
65
- * without it is not ranked lower — it is absent. Measured on production
66
- * before this fix: 12 of the 14 real listings had no `searchTxt` at all, and
67
- * the only two that did were the auction and the pre-order, whose own files
68
- * already applied a tokeniser. So `?q=aero` returned 1 of the 3 AeroPegasus
69
- * products and `?q=beyblade` returned 2 of 14, while a nonsense control
70
- * correctly returned 0 — the search was working perfectly against an index
71
- * that was almost empty.
72
- *
73
- * CLAUDE.md documents this exact trap on this exact pipeline: a wrapper
74
- * missed when a seed file is created, with no error anywhere, because an
75
- * absent field is indistinguishable from "no match" at every layer above.
76
- *
77
- * 🛑 Applied LAST, after `withDerivedCategoryNames`. The category names are
78
- * derived by that wrapper, so tokenising before it indexes `undefined` and
79
- * silently loses every category term ("Basic Line", "Beyblade X Tops") from
80
- * the index.
81
- */
82
- function withSearchTokens(p) {
83
- return {
84
- ...p,
85
- searchTxt: buildSearchTxt([
86
- p.title, p.description, p.brand, p.brandSlug,
87
- p.categoryNames, p.tags, p.condition,
88
- p.specifications?.map((s) => `${s.name} ${s.value}`),
89
- ]),
90
- };
91
- }
92
- const _raw = [
93
- // ===== Standalone tops =====
94
- {
95
- id: "product-beyblade-x-aeropegasus-3-70a",
96
- slug: "product-beyblade-x-aeropegasus-3-70a",
97
- barcodeId: "LIR-BEY-X-001",
98
- title: "Beyblade X AeroPegasus 3-70A",
99
- description: "AeroPegasus 3-70A, an Attack-type Beyblade X top — the Rare Bey Get Battle mobile-app prize colourway, sold new in box. Previously obtainable only as a limited app reward; this is the collector-premium release, distinct from the Double Metal Coat colourway included in the BX-53 All-in-One Set (listed separately).",
100
- categorySlugs: ["category-aeropegasus-3-70a"],
101
- brandSlug: BRAND_SLUG,
102
- brand: BRAND,
103
- price: 20000,
104
- allowOffers: true,
105
- minOfferPercent: 70,
106
- currency: "INR",
107
- stockQuantity: 2,
108
- availableQuantity: 2,
109
- isSold: false,
110
- mainImage: "/media/product-aeropegasus-3-70a-image",
111
- images: seedGallery("/media/product-aeropegasus-3-70a-image"),
112
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
113
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
114
- featured: true,
115
- tags: ["attack-type", "rare-bey", "prize-exclusive"],
116
- storeId: STORE_ID,
117
- storeName: STORE_NAME,
118
- createdAt: new Date("2026-10-19"),
119
- updatedAt: new Date("2026-10-19"),
120
- },
121
- {
122
- id: "product-beyblade-x-valkyrievolt-s4-70v",
123
- slug: "product-beyblade-x-valkyrievolt-s4-70v",
124
- barcodeId: "LIR-BEY-X-002",
125
- title: "Beyblade X ValkyrieVolt S4-70V",
126
- description: "ValkyrieVolt S4-70V, a Custom Line (CX) Beyblade X top. The CX Blade splits into a Lock Chip, a Main Blade and an Assist Blade, giving one purchase several distinct build combinations. Sold new in box.",
127
- categorySlugs: ["category-valkyrievolt-s4-70v"],
128
- brandSlug: BRAND_SLUG,
129
- brand: BRAND,
130
- price: 10500,
131
- allowOffers: true,
132
- minOfferPercent: 70,
133
- currency: "INR",
134
- stockQuantity: 3,
135
- availableQuantity: 3,
136
- isSold: false,
137
- mainImage: "/media/product-valkyrievolt-s4-70v-image",
138
- images: seedGallery("/media/product-valkyrievolt-s4-70v-image"),
139
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
140
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
141
- featured: true,
142
- tags: ["custom-line", "cx"],
143
- storeId: STORE_ID,
144
- storeName: STORE_NAME,
145
- createdAt: new Date("2026-10-19"),
146
- updatedAt: new Date("2026-10-19"),
147
- },
148
- {
149
- id: "product-beyblade-x-cobaltdrake-4-60f",
150
- slug: "product-beyblade-x-cobaltdrake-4-60f",
151
- barcodeId: "LIR-BEY-X-003",
152
- title: "Beyblade X CobaltDrake 4-60F",
153
- description: "CobaltDrake 4-60F (BX-00), an Attack-type Basic Line top released as a Rare Bey Get Battle prize booster in September 2023. In the anime, piloted by Khrome Ryugu. Sold new in box.",
154
- categorySlugs: ["category-x-basic"],
155
- brandSlug: BRAND_SLUG,
156
- brand: BRAND,
157
- price: 17500,
158
- allowOffers: true,
159
- minOfferPercent: 70,
160
- currency: "INR",
161
- stockQuantity: 2,
162
- availableQuantity: 2,
163
- isSold: false,
164
- mainImage: "/media/product-cobaltdrake-4-60f-image",
165
- images: seedGallery("/media/product-cobaltdrake-4-60f-image"),
166
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
167
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
168
- featured: true,
169
- tags: ["attack-type", "rare-bey", "prize-exclusive"],
170
- storeId: STORE_ID,
171
- storeName: STORE_NAME,
172
- createdAt: new Date("2026-10-19"),
173
- updatedAt: new Date("2026-10-19"),
174
- },
175
- {
176
- id: "product-beyblade-x-phoenixwing-9-60gf",
177
- slug: "product-beyblade-x-phoenixwing-9-60gf",
178
- barcodeId: "LIR-BEY-X-004",
179
- title: "Beyblade X PhoenixWing 9-60GF",
180
- description: "PhoenixWing 9-60GF (BX-23), a Basic Line Beyblade X booster released December 2023. In the anime, the signature top of Blaze Fujiwara, designer of Yggdrasil Inc. Originally Attack-classed; later reclassified Stamina in the UX era. Sold new in box.",
181
- categorySlugs: ["category-x-basic"],
182
- brandSlug: BRAND_SLUG,
183
- brand: BRAND,
184
- price: 2500,
185
- allowOffers: true,
186
- minOfferPercent: 70,
187
- currency: "INR",
188
- stockQuantity: 6,
189
- availableQuantity: 6,
190
- isSold: false,
191
- mainImage: "/media/product-phoenixwing-9-60gf-image",
192
- images: seedGallery("/media/product-phoenixwing-9-60gf-image"),
193
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
194
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
195
- tags: ["booster"],
196
- storeId: STORE_ID,
197
- storeName: STORE_NAME,
198
- createdAt: new Date("2026-10-19"),
199
- updatedAt: new Date("2026-10-19"),
200
- },
201
- // ===== Standalone stadium =====
202
- {
203
- id: "product-beyblade-x-xtreme-stadium-bx-10",
204
- slug: "product-beyblade-x-xtreme-stadium-bx-10",
205
- barcodeId: "LIR-BEY-X-005",
206
- title: "Beyblade X Xtreme Stadium (BX-10)",
207
- description: "The BX-10 Xtreme Stadium — the standard 1v1 arena for Beyblade X, released July 2023. Its raised Xtreme Line rail is what the whole X generation is tuned around: a top that reaches and holds the rail accelerates along it (the Xtreme Dash). The tournament-standard stadium for both Beyblade Battle Base (B4) and World Beyblade Organization (WBO) play. Sold new.",
208
- categorySlugs: ["category-x-xtreme-stadiums"],
209
- brandSlug: BRAND_SLUG,
210
- brand: BRAND,
211
- price: 4500,
212
- allowOffers: true,
213
- minOfferPercent: 70,
214
- currency: "INR",
215
- stockQuantity: 4,
216
- availableQuantity: 4,
217
- isSold: false,
218
- mainImage: "/media/product-xtreme-stadium-bx-10-image",
219
- images: seedGallery("/media/product-xtreme-stadium-bx-10-image"),
220
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
221
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
222
- featured: true,
223
- tags: ["stadium", "tournament-standard"],
224
- storeId: STORE_ID,
225
- storeName: STORE_NAME,
226
- createdAt: new Date("2026-10-19"),
227
- updatedAt: new Date("2026-10-19"),
228
- },
229
- // ===== BX-53 All-in-One Set — Product Group parent =====
230
- {
231
- id: "product-beyblade-x-bx-53-all-in-one-set",
232
- slug: "product-beyblade-x-bx-53-all-in-one-set",
233
- barcodeId: "LIR-BEY-X-006",
234
- title: "Beyblade X BX-53 All-in-One Set",
235
- description: "The BX-53 All-in-One Set — Takara Tomy's deluxe Beyblade X starter box, released October 2026 at ¥7,480. One box, three ready-to-battle tops (Attack/Stamina/Defense), two launchers and a dedicated stadium: everything needed to go from first battle to part customisation. Every item in the box is also listed individually below — pick exactly what you want, buy the complete set, or mix and match. Buying this box does not affect the stock of the individual listings, and vice versa.",
236
- categorySlugs: ["category-beyblade-x"],
237
- brandSlug: BRAND_SLUG,
238
- brand: BRAND,
239
- price: 12500,
240
- allowOffers: true,
241
- minOfferPercent: 70,
242
- currency: "INR",
243
- stockQuantity: 3,
244
- availableQuantity: 3,
245
- isSold: false,
246
- mainImage: "/media/product-bx-53-box-image",
247
- images: seedGallery("/media/product-bx-53-box-image"),
248
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
249
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
250
- featured: true,
251
- tags: ["starter-set", "all-in-one", "deluxe"],
252
- storeId: STORE_ID,
253
- storeName: STORE_NAME,
254
- createdAt: new Date("2026-10-19"),
255
- updatedAt: new Date("2026-10-19"),
256
- // ── Product Group (parent) ──
257
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
258
- isGroupParent: true,
259
- groupTitle: "BX-53 All-in-One Set",
260
- groupChildSlugs: [
261
- "product-beyblade-x-bx-53-aeropegasus-dmc",
262
- "product-beyblade-x-bx-53-wizardarrow-v2",
263
- "product-beyblade-x-bx-53-knightshield-v2",
264
- "product-beyblade-x-bx-53-winder-launcher",
265
- "product-beyblade-x-bx-53-string-launcher",
266
- "product-beyblade-x-bx-53-xtreme-stadium-variant",
267
- ],
268
- // No groupMinMembers/groupMaxMembers/groupRequiredMemberIds/groupMaxUnitsPerMember —
269
- // absent means unrestricted. This is deliberately OPEN pick-and-choose: a
270
- // buyer may select any subset of the six children in any quantity, which
271
- // is the entire distinction from a Bundle (all-or-nothing, fixed price).
272
- },
273
- // ===== BX-53 All-in-One Set — Product Group children =====
274
- {
275
- id: "product-beyblade-x-bx-53-aeropegasus-dmc",
276
- slug: "product-beyblade-x-bx-53-aeropegasus-dmc",
277
- barcodeId: "LIR-BEY-X-007",
278
- title: "AeroPegasus 3-70A (Double Metal Coat) — BX-53 Set Component",
279
- description: "AeroPegasus 3-70A in the Double Metal Coat finish — the colourway exclusive to the BX-53 All-in-One Set, distinct from the Rare Bey Get Battle prize-app colourway (listed separately). Sold individually; buying this does not require buying the rest of the BX-53 set.",
280
- categorySlugs: ["category-aeropegasus-3-70a"],
281
- brandSlug: BRAND_SLUG,
282
- brand: BRAND,
283
- price: 7500,
284
- allowOffers: true,
285
- minOfferPercent: 70,
286
- currency: "INR",
287
- stockQuantity: 5,
288
- availableQuantity: 5,
289
- isSold: false,
290
- mainImage: "/media/product-bx-53-aeropegasus-dmc-image",
291
- images: seedGallery("/media/product-bx-53-aeropegasus-dmc-image"),
292
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
293
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
294
- tags: ["attack-type", "bx-53-component", "double-metal-coat"],
295
- storeId: STORE_ID,
296
- storeName: STORE_NAME,
297
- createdAt: new Date("2026-10-19"),
298
- updatedAt: new Date("2026-10-19"),
299
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
300
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
301
- groupTitle: "BX-53 All-in-One Set",
302
- },
303
- {
304
- id: "product-beyblade-x-bx-53-wizardarrow-v2",
305
- slug: "product-beyblade-x-bx-53-wizardarrow-v2",
306
- barcodeId: "LIR-BEY-X-008",
307
- title: "WizardArrow 4-80B Ver.2.0 — BX-53 Set Component",
308
- description: "WizardArrow 4-80B Version 2.0, the Stamina-type top from the BX-53 All-in-One Set. The Ver.2.0 Blade is re-tuned over the original release: Attack 17 (was 15), Defense 33 (was 30), Stamina 60 (was 55). Sold individually; buying this does not require buying the rest of the BX-53 set.",
309
- categorySlugs: ["category-wizardarrow-4-80b"],
310
- brandSlug: BRAND_SLUG,
311
- brand: BRAND,
312
- price: 1500,
313
- allowOffers: true,
314
- minOfferPercent: 70,
315
- currency: "INR",
316
- stockQuantity: 8,
317
- availableQuantity: 8,
318
- isSold: false,
319
- mainImage: "/media/product-bx-53-wizardarrow-v2-image",
320
- images: seedGallery("/media/product-bx-53-wizardarrow-v2-image"),
321
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
322
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
323
- tags: ["stamina-type", "bx-53-component", "ver-2"],
324
- storeId: STORE_ID,
325
- storeName: STORE_NAME,
326
- createdAt: new Date("2026-10-19"),
327
- updatedAt: new Date("2026-10-19"),
328
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
329
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
330
- groupTitle: "BX-53 All-in-One Set",
331
- },
332
- {
333
- id: "product-beyblade-x-bx-53-knightshield-v2",
334
- slug: "product-beyblade-x-bx-53-knightshield-v2",
335
- barcodeId: "LIR-BEY-X-009",
336
- title: "KnightShield 3-80N Ver.2.0 — BX-53 Set Component",
337
- description: "KnightShield 3-80N Version 2.0, the Defense-type top from the BX-53 All-in-One Set. The Ver.2.0 Blade improves on the original: Attack 22 (was 20), Defense 60 (was 55), Stamina 28 (was 25). Sold individually; buying this does not require buying the rest of the BX-53 set.",
338
- categorySlugs: ["category-knightshield-3-80n"],
339
- brandSlug: BRAND_SLUG,
340
- brand: BRAND,
341
- price: 1500,
342
- allowOffers: true,
343
- minOfferPercent: 70,
344
- currency: "INR",
345
- stockQuantity: 8,
346
- availableQuantity: 8,
347
- isSold: false,
348
- mainImage: "/media/product-bx-53-knightshield-v2-image",
349
- images: seedGallery("/media/product-bx-53-knightshield-v2-image"),
350
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
351
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
352
- tags: ["defense-type", "bx-53-component", "ver-2"],
353
- storeId: STORE_ID,
354
- storeName: STORE_NAME,
355
- createdAt: new Date("2026-10-19"),
356
- updatedAt: new Date("2026-10-19"),
357
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
358
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
359
- groupTitle: "BX-53 All-in-One Set",
360
- },
361
- {
362
- id: "product-beyblade-x-bx-53-winder-launcher",
363
- slug: "product-beyblade-x-bx-53-winder-launcher",
364
- barcodeId: "LIR-BEY-X-010",
365
- title: "Winder Launcher — BX-53 Set Component",
366
- description: "The right-spin Winder Launcher from the BX-53 All-in-One Set — uses a rigid, notched plastic ripcord that threads into an internal gear and is pulled straight out via the ringed handle. Sold individually; buying this does not require buying the rest of the BX-53 set.",
367
- categorySlugs: ["category-x-winders"],
368
- brandSlug: BRAND_SLUG,
369
- brand: BRAND,
370
- price: 250,
371
- allowOffers: false,
372
- currency: "INR",
373
- stockQuantity: 15,
374
- availableQuantity: 15,
375
- isSold: false,
376
- mainImage: "/media/product-bx-53-winder-launcher-image",
377
- images: seedGallery("/media/product-bx-53-winder-launcher-image"),
378
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
379
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
380
- tags: ["launcher", "bx-53-component"],
381
- storeId: STORE_ID,
382
- storeName: STORE_NAME,
383
- createdAt: new Date("2026-10-19"),
384
- updatedAt: new Date("2026-10-19"),
385
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
386
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
387
- groupTitle: "BX-53 All-in-One Set",
388
- },
389
- {
390
- id: "product-beyblade-x-bx-53-string-launcher",
391
- slug: "product-beyblade-x-bx-53-string-launcher",
392
- barcodeId: "LIR-BEY-X-011",
393
- title: "String Launcher — BX-53 Set Component",
394
- description: "The String Launcher from the BX-53 All-in-One Set — the only Beyblade X launcher type with no ripcord, using a string built into the unit itself: load the top, pull the string, launch. Shown here as packaged inside the BX-53 box (no separate studio photo exists for this launcher on its own). Sold individually; buying this does not require buying the rest of the BX-53 set.",
395
- categorySlugs: ["category-x-string-launchers"],
396
- brandSlug: BRAND_SLUG,
397
- brand: BRAND,
398
- price: 250,
399
- allowOffers: false,
400
- currency: "INR",
401
- stockQuantity: 15,
402
- availableQuantity: 15,
403
- isSold: false,
404
- mainImage: "/media/product-bx-53-string-launcher-image",
405
- images: seedGallery("/media/product-bx-53-string-launcher-image"),
406
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
407
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
408
- tags: ["launcher", "bx-53-component"],
409
- storeId: STORE_ID,
410
- storeName: STORE_NAME,
411
- createdAt: new Date("2026-10-19"),
412
- updatedAt: new Date("2026-10-19"),
413
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
414
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
415
- groupTitle: "BX-53 All-in-One Set",
416
- },
417
- {
418
- id: "product-beyblade-x-bx-53-xtreme-stadium-variant",
419
- slug: "product-beyblade-x-bx-53-xtreme-stadium-variant",
420
- barcodeId: "LIR-BEY-X-012",
421
- title: "Xtreme Stadium — Clear Black×Green (BX-53 Set Component)",
422
- description: "The Clear Black×Green Xtreme Stadium colourway included in the BX-53 All-in-One Set — the same Xtreme Line rail as the standard-release Xtreme Stadium (listed separately), in a colourway exclusive to this box. Sold individually; buying this does not require buying the rest of the BX-53 set.",
423
- categorySlugs: ["category-x-xtreme-stadiums"],
424
- brandSlug: BRAND_SLUG,
425
- brand: BRAND,
426
- price: 3500,
427
- allowOffers: true,
428
- minOfferPercent: 70,
429
- currency: "INR",
430
- stockQuantity: 5,
431
- availableQuantity: 5,
432
- isSold: false,
433
- mainImage: "/media/product-bx-53-xtreme-stadium-image",
434
- images: seedGallery("/media/product-bx-53-xtreme-stadium-image"),
435
- status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
436
- condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
437
- tags: ["stadium", "bx-53-component", "colourway-variant"],
438
- storeId: STORE_ID,
439
- storeName: STORE_NAME,
440
- createdAt: new Date("2026-10-19"),
441
- updatedAt: new Date("2026-10-19"),
442
- groupId: "product-beyblade-x-bx-53-all-in-one-set",
443
- groupParentSlug: "product-beyblade-x-bx-53-all-in-one-set",
444
- groupTitle: "BX-53 All-in-One Set",
445
- },
446
- ];
447
- /*
448
- * 🛑 `listingType` applied AFTER the array literal's closing `]`, inside the
449
- * `.map()` — never spliced onto a spread. CLAUDE.md's J13 documents this
450
- * exact bug surviving its own fix once already in this codebase.
451
- */
452
- export const productsBeybladeXSeedData = _raw
453
- .map((p) => ({
454
- ...p,
455
- listingType: PRODUCT_FIELDS.LISTING_TYPE_VALUES.STANDARD,
456
- /*
457
- * 🛑 `permanent`, explicitly — the `products` collection defaults to
458
- * `test` (SEED_COLLECTION_PURPOSE), and that default is correct for the
459
- * curated demo fixtures it was written for. It is WRONG for these.
460
- *
461
- * `appkit-seed purge` deletes every document resolving `test` and nothing
462
- * else. Left on the default, this entire real catalogue — the only
463
- * genuinely purchasable listings on the site, built for PhonePe merchant
464
- * registration — would be destroyed by the next routine purge, silently
465
- * and with no way to tell it apart from clearing mock data.
466
- *
467
- * Set inline (resolution step 1) rather than as `SEED_ROW_PURPOSE`
468
- * entries (step 2): an external id list is a hand-maintained mirror that
469
- * drifts the moment a row is added or renamed here (Root Cause #42),
470
- * whereas this cannot go out of sync with the rows it describes.
471
- */
472
- seedPurpose: "permanent",
473
- }))
474
- .map(withFinalSale)
475
- .map(withDerivedCategoryNames)
476
- .map(withSearchTokens);
@@ -1,22 +0,0 @@
1
- /**
2
- * GENERATED by scripts/gen-catalogue-listings.mjs — do not edit by hand.
3
- *
4
- * One product listing per taxonomy leaf: 2488 parts + 221 complete
5
- * models = 2974 rows. This is what makes `products` reproducible from
6
- * committed data alone — see the generator's own header for the incident that
7
- * made that matter (968 live documents with no committed source).
8
- *
9
- * Deterministic: price/stock/condition/authenticity/image are derived from an
10
- * FNV-1a hash of each listing's own id, never `Math.random()` (Root Cause #25)
11
- * — so a re-run of the generator, and a re-run of `appkit-seed load`, both
12
- * reproduce the SAME 968 documents rather than minting duplicates.
13
- *
14
- * 2753 of 2488 part listings carry `partGlossaryId`, resolved through
15
- * `PART_CATEGORY_TO_GLOSSARY_ID` (the pairing `gen-category-parts.mjs` already
16
- * computes, emitted rather than re-derived). 600 of 221 model listings
17
- * reuse the real wiki cover photo their category page already shows; the rest
18
- * fall back to a deterministic coloured tile from `public/images/seed-tiles/`.
19
- */
20
- import type { ProductDocument } from "../features/products/schemas/firestore";
21
- export declare const productsCatalogueSeedData: Partial<ProductDocument>[];
22
- export declare const CATALOGUE_LISTING_COUNT = 2974;