@mohasinac/appkit 4.58.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 (556) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  3. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  4. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  5. package/dist/constants/seed-meta.d.ts +113 -0
  6. package/dist/constants/seed-meta.js +91 -0
  7. package/dist/index.d.ts +0 -131
  8. package/dist/index.js +50 -294
  9. package/dist/server.d.ts +0 -69
  10. package/dist/server.js +0 -69
  11. package/package.json +4 -2
  12. package/scripts/seed-cli.mjs +69 -1
  13. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  14. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  15. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  16. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  17. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  18. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  19. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  20. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  21. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  22. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  23. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  24. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  25. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  26. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  27. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  28. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  29. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  30. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  31. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  32. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  33. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  34. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  35. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  36. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  37. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  38. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  39. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  40. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  41. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  42. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  43. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  44. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  45. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  46. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  47. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  48. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  49. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  50. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  51. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  52. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  53. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  54. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  55. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  56. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  57. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  58. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  59. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  60. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  61. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  62. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  63. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  64. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  65. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  66. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  67. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  68. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  69. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  70. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  71. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  72. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  73. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  74. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  75. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  76. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  77. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  78. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  79. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  80. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  81. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  82. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  83. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  84. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  85. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  86. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  87. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  89. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  91. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  93. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  95. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  97. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  99. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  101. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  103. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  105. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  107. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  109. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  111. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  113. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  115. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  117. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  119. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  120. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  121. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  123. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  125. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  127. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  129. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  131. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  133. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  135. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  137. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  139. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  141. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  143. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  145. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  147. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  149. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  151. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  153. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  155. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  157. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  159. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  161. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  163. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  165. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  167. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  169. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  171. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  173. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  175. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  177. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  179. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  181. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  183. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  185. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  187. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  188. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  189. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  191. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  193. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  195. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/index.js +0 -301
  197. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  199. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  201. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  203. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  205. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  207. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  209. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  211. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  213. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  215. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  217. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  219. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  221. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  223. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  224. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  225. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  227. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  229. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  231. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  233. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  235. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  237. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  239. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  241. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  243. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  245. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  247. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  249. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  251. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  253. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  255. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  257. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  259. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  261. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  263. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  265. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  267. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  269. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  271. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  273. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  275. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  277. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  279. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  281. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  283. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  285. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  287. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  289. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  291. package/dist/features/tester/seed-data/index.d.ts +0 -2
  292. package/dist/features/tester/seed-data/index.js +0 -2
  293. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  294. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  295. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  296. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  297. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  298. package/dist/features/tester/seed-data/tester-window.js +0 -66
  299. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  300. package/dist/seed/_helpers/brand-rows.js +0 -600
  301. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  302. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  303. package/dist/seed/_helpers/category-content.d.ts +0 -68
  304. package/dist/seed/_helpers/category-content.js +0 -731
  305. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  306. package/dist/seed/_helpers/category-forest.js +0 -824
  307. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  308. package/dist/seed/_helpers/category-images-generated.js +0 -618
  309. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  310. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  311. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  312. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  313. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  314. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  315. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  316. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  317. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  318. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  319. package/dist/seed/_helpers/category-models.d.ts +0 -12
  320. package/dist/seed/_helpers/category-models.js +0 -45
  321. package/dist/seed/_helpers/category-names.d.ts +0 -54
  322. package/dist/seed/_helpers/category-names.js +0 -118
  323. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  324. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  325. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  326. package/dist/seed/_helpers/category-parts.js +0 -15022
  327. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  328. package/dist/seed/_helpers/category-tree.js +0 -119
  329. package/dist/seed/_helpers/character-features.d.ts +0 -10
  330. package/dist/seed/_helpers/character-features.js +0 -120
  331. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  332. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  333. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  334. package/dist/seed/_helpers/franchise-rows.js +0 -189
  335. package/dist/seed/_helpers/media.d.ts +0 -67
  336. package/dist/seed/_helpers/media.js +0 -172
  337. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  338. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  339. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  340. package/dist/seed/_helpers/product-search-txt.js +0 -23
  341. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  342. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  343. package/dist/seed/addresses-seed-data.d.ts +0 -2
  344. package/dist/seed/addresses-seed-data.js +0 -78
  345. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  346. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  347. package/dist/seed/bey-products-seed-data.d.ts +0 -18
  348. package/dist/seed/bey-products-seed-data.js +0 -18011
  349. package/dist/seed/beys/chunk0.d.ts +0 -17
  350. package/dist/seed/beys/chunk0.js +0 -36733
  351. package/dist/seed/beys/chunk1.d.ts +0 -17
  352. package/dist/seed/beys/chunk1.js +0 -35728
  353. package/dist/seed/beys/chunk2.d.ts +0 -17
  354. package/dist/seed/beys/chunk2.js +0 -35857
  355. package/dist/seed/beys/chunk3.d.ts +0 -17
  356. package/dist/seed/beys/chunk3.js +0 -34476
  357. package/dist/seed/beys-seed-data.d.ts +0 -18
  358. package/dist/seed/beys-seed-data.js +0 -11
  359. package/dist/seed/bids-seed-data.d.ts +0 -2
  360. package/dist/seed/bids-seed-data.js +0 -206
  361. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  362. package/dist/seed/blog-posts-seed-data.js +0 -442
  363. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  364. package/dist/seed/carousel-slides-seed-data.js +0 -411
  365. package/dist/seed/carousels-seed-data.d.ts +0 -2
  366. package/dist/seed/carousels-seed-data.js +0 -36
  367. package/dist/seed/cart-seed-data.d.ts +0 -2
  368. package/dist/seed/cart-seed-data.js +0 -241
  369. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  370. package/dist/seed/catalogue-seed-data.js +0 -112
  371. package/dist/seed/categories-seed-data.d.ts +0 -3
  372. package/dist/seed/categories-seed-data.js +0 -816
  373. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  374. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  375. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  376. package/dist/seed/coupon-usage-seed-data.js +0 -55
  377. package/dist/seed/coupons-seed-data.d.ts +0 -2
  378. package/dist/seed/coupons-seed-data.js +0 -226
  379. package/dist/seed/defaults/categories.d.ts +0 -2
  380. package/dist/seed/defaults/categories.js +0 -12
  381. package/dist/seed/defaults/faqs.d.ts +0 -2
  382. package/dist/seed/defaults/faqs.js +0 -40
  383. package/dist/seed/events-seed-data.d.ts +0 -7
  384. package/dist/seed/events-seed-data.js +0 -482
  385. package/dist/seed/factories/address.factory.d.ts +0 -21
  386. package/dist/seed/factories/address.factory.js +0 -44
  387. package/dist/seed/factories/bid.factory.d.ts +0 -15
  388. package/dist/seed/factories/bid.factory.js +0 -33
  389. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  390. package/dist/seed/factories/blog-post.factory.js +0 -22
  391. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  392. package/dist/seed/factories/carousel.factory.js +0 -17
  393. package/dist/seed/factories/cart.factory.d.ts +0 -25
  394. package/dist/seed/factories/cart.factory.js +0 -35
  395. package/dist/seed/factories/category.factory.d.ts +0 -11
  396. package/dist/seed/factories/category.factory.js +0 -16
  397. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  398. package/dist/seed/factories/coupon.factory.js +0 -43
  399. package/dist/seed/factories/faq.factory.d.ts +0 -10
  400. package/dist/seed/factories/faq.factory.js +0 -15
  401. package/dist/seed/factories/notification.factory.d.ts +0 -18
  402. package/dist/seed/factories/notification.factory.js +0 -39
  403. package/dist/seed/factories/order.factory.d.ts +0 -20
  404. package/dist/seed/factories/order.factory.js +0 -20
  405. package/dist/seed/factories/payout.factory.d.ts +0 -21
  406. package/dist/seed/factories/payout.factory.js +0 -38
  407. package/dist/seed/factories/product.factory.d.ts +0 -27
  408. package/dist/seed/factories/product.factory.js +0 -80
  409. package/dist/seed/factories/review.factory.d.ts +0 -14
  410. package/dist/seed/factories/review.factory.js +0 -52
  411. package/dist/seed/factories/session.factory.d.ts +0 -15
  412. package/dist/seed/factories/session.factory.js +0 -31
  413. package/dist/seed/factories/store.factory.d.ts +0 -23
  414. package/dist/seed/factories/store.factory.js +0 -47
  415. package/dist/seed/factories/user.factory.d.ts +0 -19
  416. package/dist/seed/factories/user.factory.js +0 -56
  417. package/dist/seed/faq-seed-data.d.ts +0 -18
  418. package/dist/seed/faq-seed-data.js +0 -1956
  419. package/dist/seed/firestore-indexes.d.ts +0 -12
  420. package/dist/seed/firestore-indexes.js +0 -31
  421. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  422. package/dist/seed/grouped-listings-seed-data.js +0 -283
  423. package/dist/seed/history-seed-data.d.ts +0 -12
  424. package/dist/seed/history-seed-data.js +0 -70
  425. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  426. package/dist/seed/homepage-sections-seed-data.js +0 -1034
  427. package/dist/seed/index.d.ts +0 -100
  428. package/dist/seed/index.js +0 -115
  429. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  430. package/dist/seed/lottery-entries-seed-data.js +0 -108
  431. package/dist/seed/manifest.d.ts +0 -16
  432. package/dist/seed/manifest.js +0 -235
  433. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  434. package/dist/seed/media-assets-seed-data.js +0 -5593
  435. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  436. package/dist/seed/model-composition-seed-data.js +0 -9032
  437. package/dist/seed/notifications-seed-data.d.ts +0 -2
  438. package/dist/seed/notifications-seed-data.js +0 -606
  439. package/dist/seed/offers-seed-data.d.ts +0 -2
  440. package/dist/seed/offers-seed-data.js +0 -398
  441. package/dist/seed/orders-seed-data.d.ts +0 -2
  442. package/dist/seed/orders-seed-data.js +0 -845
  443. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  444. package/dist/seed/part-glossary/chunk0.js +0 -35448
  445. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  446. package/dist/seed/part-glossary/chunk1.js +0 -40494
  447. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  448. package/dist/seed/part-glossary/chunk2.js +0 -51242
  449. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  450. package/dist/seed/part-glossary/chunk3.js +0 -53337
  451. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  452. package/dist/seed/part-glossary/chunk4.js +0 -51454
  453. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  454. package/dist/seed/part-glossary-seed-data.js +0 -25
  455. package/dist/seed/payouts-seed-data.d.ts +0 -2
  456. package/dist/seed/payouts-seed-data.js +0 -302
  457. package/dist/seed/product-features-seed-data.d.ts +0 -3
  458. package/dist/seed/product-features-seed-data.js +0 -366
  459. package/dist/seed/products-art-seed-data.d.ts +0 -2
  460. package/dist/seed/products-art-seed-data.js +0 -289
  461. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  462. package/dist/seed/products-auctions-seed-data.js +0 -475
  463. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  464. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  465. package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
  466. package/dist/seed/products-catalogue/chunk0.js +0 -7262
  467. package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
  468. package/dist/seed/products-catalogue/chunk1.js +0 -7290
  469. package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
  470. package/dist/seed/products-catalogue/chunk10.js +0 -7290
  471. package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
  472. package/dist/seed/products-catalogue/chunk11.js +0 -7005
  473. package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
  474. package/dist/seed/products-catalogue/chunk12.js +0 -7002
  475. package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
  476. package/dist/seed/products-catalogue/chunk13.js +0 -7002
  477. package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
  478. package/dist/seed/products-catalogue/chunk14.js +0 -7002
  479. package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
  480. package/dist/seed/products-catalogue/chunk15.js +0 -7002
  481. package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
  482. package/dist/seed/products-catalogue/chunk16.js +0 -7002
  483. package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
  484. package/dist/seed/products-catalogue/chunk17.js +0 -7002
  485. package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
  486. package/dist/seed/products-catalogue/chunk18.js +0 -4398
  487. package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
  488. package/dist/seed/products-catalogue/chunk2.js +0 -7268
  489. package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
  490. package/dist/seed/products-catalogue/chunk3.js +0 -7264
  491. package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
  492. package/dist/seed/products-catalogue/chunk4.js +0 -7268
  493. package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
  494. package/dist/seed/products-catalogue/chunk5.js +0 -7258
  495. package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
  496. package/dist/seed/products-catalogue/chunk6.js +0 -7268
  497. package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
  498. package/dist/seed/products-catalogue/chunk7.js +0 -7311
  499. package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
  500. package/dist/seed/products-catalogue/chunk8.js +0 -7304
  501. package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
  502. package/dist/seed/products-catalogue/chunk9.js +0 -7309
  503. package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
  504. package/dist/seed/products-catalogue-seed-data.js +0 -60
  505. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  506. package/dist/seed/products-classifieds-seed-data.js +0 -435
  507. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  508. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  509. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  510. package/dist/seed/products-live-items-seed-data.js +0 -269
  511. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  512. package/dist/seed/products-preorders-seed-data.js +0 -360
  513. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  514. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  515. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  516. package/dist/seed/products-spares-seed-data.js +0 -368
  517. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  518. package/dist/seed/products-standard-seed-data.js +0 -632
  519. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  520. package/dist/seed/products-stickers-seed-data.js +0 -319
  521. package/dist/seed/reviews-seed-data.d.ts +0 -1
  522. package/dist/seed/reviews-seed-data.js +0 -185
  523. package/dist/seed/runner.d.ts +0 -2
  524. package/dist/seed/runner.js +0 -125
  525. package/dist/seed/scammers-seed-data.d.ts +0 -2
  526. package/dist/seed/scammers-seed-data.js +0 -235
  527. package/dist/seed/seed-market-config.d.ts +0 -48
  528. package/dist/seed/seed-market-config.js +0 -199
  529. package/dist/seed/seed-purpose.d.ts +0 -299
  530. package/dist/seed/seed-purpose.js +0 -440
  531. package/dist/seed/sessions-seed-data.d.ts +0 -3
  532. package/dist/seed/sessions-seed-data.js +0 -116
  533. package/dist/seed/shipments-seed-data.d.ts +0 -5
  534. package/dist/seed/shipments-seed-data.js +0 -185
  535. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  536. package/dist/seed/site-settings-seed-data.js +0 -1069
  537. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  538. package/dist/seed/store-addresses-seed-data.js +0 -71
  539. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  540. package/dist/seed/store-extensions-seed-data.js +0 -292
  541. package/dist/seed/stores-seed-data.d.ts +0 -6
  542. package/dist/seed/stores-seed-data.js +0 -242
  543. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  544. package/dist/seed/support-tickets-seed-data.js +0 -239
  545. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  546. package/dist/seed/tax-codes-seed-data.js +0 -100
  547. package/dist/seed/test-data-ttl.d.ts +0 -29
  548. package/dist/seed/test-data-ttl.js +0 -31
  549. package/dist/seed/test-utils.d.ts +0 -49
  550. package/dist/seed/test-utils.js +0 -110
  551. package/dist/seed/types.d.ts +0 -89
  552. package/dist/seed/types.js +0 -15
  553. package/dist/seed/users-seed-data.d.ts +0 -2
  554. package/dist/seed/users-seed-data.js +0 -597
  555. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  556. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,366 +0,0 @@
1
- /*
2
- * WHY: `productFeatures` held 10 platform badge flags while `ProductDocument.tags`
3
- * held free text with no vocabulary at all — which is how `attack-type` and
4
- * `attack type` coexist. B5 retires `tags` and makes this collection the ONE
5
- * vocabulary, so it has to carry everything a facet needs: release type,
6
- * authenticity, battle type, spin, card language, card format, grade, chase
7
- * status, figure scale. Those are exactly the axes the crawl measured and
8
- * that §4.4 refuses to put in the tree, because a product has one category
9
- * chain and any number of features.
10
- * WHAT: 171 platform-scope rows, grouped by `FeatureGroup`, built by a factory —
11
- * 76 hand-authored from the crawl's measured vocabulary plus 95 GENERATED
12
- * blader/character rows. id === slug, prefix `feature-`.
13
- *
14
- * EXPORTS:
15
- * productFeaturesSeedData — ProductFeatureDocument[]
16
- * PRODUCT_FEATURE_COUNT — asserted downstream so a silent drop is loud
17
- *
18
- * ## 🛑 Three things the factory exists to prevent
19
- *
20
- * 1. **`searchTxt` is built from the LABEL and the aliases, never the slug.**
21
- * `buildProductSearchTxt` used to index `features` raw, so the id
22
- * `feature-free-shipping` tokenised to free/shipping and searching the
23
- * LABEL "Free Shipping" worked only by coincidence — while a label like
24
- * "New in Box" whose slug is `feature-nib` was unfindable entirely.
25
- *
26
- * 2. **Aliases are BUDGETED.** They fold into a 600-token array that truncates
27
- * SILENTLY, so each row caps at a handful. The misspelling corpus from
28
- * bladekingbeys is deliberately NOT dumped in here wholesale — a
29
- * counterfeiter's trademark-evasion spellings (`Pegasis`, `Jupitar`,
30
- * `Fireblase`) are what real buyers mistype, so they belong on the MODEL
31
- * leaf that owns the name, not on a generic feature.
32
- *
33
- * 3. **`group` is not `category`.** `category` groups by the SURFACE that shows
34
- * the badge; `group` groups by what the feature MEANS, and drives one facet
35
- * section each. "Sealed" on a TCG booster box and "sealed" on a bey are the
36
- * same word about different things.
37
- *
38
- * @tag domain:products
39
- * @tag layer:seed
40
- * @tag pattern:shared-literal
41
- * @tag access:server-only
42
- * @tag consumers:seed/index.ts,seed/runner.ts
43
- * @tag sideEffects:none
44
- */
45
- import { buildSearchTxt } from "../utils/search-txt.js";
46
- import { CHARACTER_SEEDS, CHARACTER_SEED_COUNT } from "./_helpers/character-features.js";
47
- const NOW = new Date("2026-05-11T00:00:00.000Z");
48
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
49
- const STAMP = daysAgo(30);
50
- const TONE = {
51
- primary: "--appkit-color-primary",
52
- secondary: "--appkit-color-secondary",
53
- neutral: undefined,
54
- };
55
- function featureRow(input, order) {
56
- const id = `feature-${input.slug}`;
57
- return {
58
- id,
59
- slug: id,
60
- label: input.label,
61
- description: input.description,
62
- icon: input.icon,
63
- ...(TONE[input.tone ?? "neutral"] ? { iconColor: TONE[input.tone ?? "neutral"] } : {}),
64
- category: input.category,
65
- group: input.group,
66
- scope: "platform",
67
- productTypes: input.types ?? ["all"],
68
- ...(input.aliases?.length ? { aliases: input.aliases } : {}),
69
- /*
70
- * 🛑 LABEL + aliases. Never the slug — see note 1. A row whose label and
71
- * slug diverge ("New in Box" / `feature-nib`) is precisely the case a
72
- * slug-derived index cannot find.
73
- */
74
- searchTxt: buildSearchTxt([input.label, ...(input.aliases ?? [])]),
75
- isActive: true,
76
- displayOrder: order,
77
- createdAt: STAMP,
78
- updatedAt: STAMP,
79
- };
80
- }
81
- // ─────────────────────────────────────────────────────────────────────────────
82
- // Platform badges — the ORIGINAL TEN, now grouped
83
- //
84
- // 🛑 Their ids are unchanged on purpose. `group` was optional purely so these
85
- // compiled before B5; leaving them ungrouped would have put them in no facet
86
- // section, which is indistinguishable from not existing.
87
- //
88
- // 🛑 `feature-condition-used` is relabelled "Pre-owned" with "Used" as an
89
- // ALIAS rather than being joined by a second `feature-pre-owned` row. The two
90
- // words describe one state — the category description templates treat them
91
- // identically, by design — and a second row for a synonym is how the two
92
- // vocabularies this merge exists to collapse started in the first place.
93
- // ─────────────────────────────────────────────────────────────────────────────
94
- const PLATFORM = [
95
- { slug: "free-shipping", label: "Free Shipping", description: "Shipping is included in the listed price.", icon: "truck", group: "commercial", category: "shipping", tone: "primary", aliases: ["Free delivery"] },
96
- { slug: "verified-seller", label: "Verified Seller", description: "Sold by a LetItRip verified seller — identity and address confirmed.", icon: "badge-check", group: "commercial", category: "seller", tone: "primary" },
97
- { slug: "accept-returns", label: "Returns Accepted", description: "Eligible for return within the platform return window.", icon: "refresh-ccw", group: "commercial", category: "platform", tone: "secondary", aliases: ["Returnable"] },
98
- { slug: "condition-new", label: "Brand New", description: "Factory-sealed or unopened, in original packaging.", icon: "sparkles", group: "condition", category: "condition", tone: "primary", aliases: ["New", "Unused"] },
99
- /*
100
- * 🛑 "Preowned" unhyphenated is a real alias, not a typo. `buildSearchTxt`
101
- * splits on punctuation, so the label "Pre-owned" indexes as `pre` + `owned`
102
- * and a buyer who types "preowned" as one word matches NEITHER. "Pre owned"
103
- * with a space would have been useless here — it tokenises identically to
104
- * the label it was meant to supplement.
105
- */
106
- { slug: "condition-used", label: "Pre-owned", description: "Previously owned and sold as pictured. Condition is graded on the listing.", icon: "history", group: "condition", category: "condition", aliases: ["Used", "Second-hand", "Preowned"] },
107
- { slug: "featured", label: "Featured", description: "Highlighted by the platform across browse and homepage surfaces.", icon: "star", group: "commercial", category: "platform", tone: "primary" },
108
- { slug: "promoted", label: "Promoted", description: "A paid promotion placement by the seller.", icon: "megaphone", group: "commercial", category: "platform", tone: "secondary" },
109
- { slug: "auction-winner-badge", label: "Auction Win", description: "Acquired by winning an auction on LetItRip.", icon: "gavel", group: "commercial", category: "auction", types: ["auction"] },
110
- { slug: "shipping-paid-by-seller", label: "Seller Pays Shipping", description: "The seller covers shipping on this listing.", icon: "package", group: "commercial", category: "shipping", tone: "primary", aliases: ["Seller paid shipping"] },
111
- { slug: "preorder-confirmed", label: "Pre-order Confirmed", description: "Stock is allocated and the release date is confirmed by the seller.", icon: "calendar-check", group: "release", category: "preorder", types: ["preorder"] },
112
- ];
113
- // ─────────────────────────────────────────────────────────────────────────────
114
- // condition — the packaging and wear vocabulary, from the crawl
115
- //
116
- // `without-box` is worth its own row for a measured reason: hobson's 57
117
- // "Without Box" listings have a median of ₹599 against ₹1,699 for the same
118
- // items boxed. A ~3× spread is a facet, not a prose detail.
119
- // ─────────────────────────────────────────────────────────────────────────────
120
- const CONDITION = [
121
- { slug: "nib", label: "New in Box", description: "Unopened in its original box, with the box intact.", icon: "box", group: "condition", category: "condition", tone: "primary", aliases: ["NIB", "Boxed", "Sealed box", "MIB"] },
122
- { slug: "nip", label: "New in Packet", description: "New on its original card or in its original polybag, unopened.", icon: "package-2", group: "condition", category: "condition", tone: "primary", aliases: ["NIP", "Carded", "On card", "Blister"] },
123
- { slug: "sealed", label: "Sealed", description: "Factory wrap intact and never opened.", icon: "shield-check", group: "condition", category: "condition", tone: "primary", aliases: ["Factory sealed", "Shrink wrapped"] },
124
- { slug: "mint", label: "Mint", description: "No visible wear — indistinguishable from new on inspection.", icon: "gem", group: "condition", category: "condition", tone: "primary", aliases: ["Mint condition", "As new"] },
125
- { slug: "loose", label: "Loose", description: "Out of its packaging, complete and functional.", icon: "puzzle", group: "condition", category: "condition", aliases: ["Unboxed", "Open"] },
126
- { slug: "no-box", label: "Without Box", description: "The item only — no original box or card. Priced well below a boxed example.", icon: "box-select", group: "condition", category: "condition", aliases: ["No box", "Box missing", "Item only"] },
127
- { slug: "incomplete", label: "Incomplete", description: "One or more original parts are missing. What is included is listed and photographed.", icon: "circle-slash", group: "condition", category: "condition", aliases: ["Missing parts", "Partial"] },
128
- { slug: "damaged", label: "Damaged", description: "Has a chip, crack, stripped tooth or similar structural fault, disclosed and photographed.", icon: "alert-triangle", group: "condition", category: "condition", aliases: ["Broken", "Faulty", "Cracked"] },
129
- ];
130
- // ─────────────────────────────────────────────────────────────────────────────
131
- // authenticity — mirrors `ProductDocument.authenticity`
132
- //
133
- // 🛑 There is NO "fake" row, and that is a product decision rather than an
134
- // omission. A lead-bearing counterfeit is not a listing state we offer; it is
135
- // a scam report. The duplication with the enum field is the one place it is
136
- // justified: a feature can be left off and nothing notices, and a mislabelled
137
- // reproduction is a refund while a mislabelled counterfeit is a child handling
138
- // leaded metal.
139
- //
140
- // 🛑 "Midfake" is an ALIAS on `reproduction`, not a row. It is the word the
141
- // community actually searches — worldhobbyshop ships a top-level nav category
142
- // literally called "MidFake Beyblades" — but it names the same state.
143
- // ─────────────────────────────────────────────────────────────────────────────
144
- const AUTHENTICITY = [
145
- { slug: "original", label: "Original", description: "Licensed manufacture — Takara, Takara Tomy, Hasbro or a regional licensee.", icon: "shield-check", group: "authenticity", category: "condition", tone: "primary", aliases: ["Genuine", "Authentic", "Licensed"] },
146
- { slug: "reproduction", label: "Reproduction", description: "An unlicensed copy of an original design, carrying no manufacturer's marque. Disclosed, never described as original.", icon: "copy", group: "authenticity", category: "condition", tone: "secondary", aliases: ["Midfake", "Repro", "1st copy", "Aftermarket"] },
147
- { slug: "unverified", label: "Authenticity Unverified", description: "The seller has not confirmed whether this is an original or a reproduction.", icon: "help-circle", group: "authenticity", category: "condition", aliases: ["Unconfirmed", "Unknown authenticity"] },
148
- ];
149
- // ─────────────────────────────────────────────────────────────────────────────
150
- // release — measured as a REAL price multiplier, not a label
151
- //
152
- // beybladeshopindia, n=419: Limited Releases median ₹2,499 against Regular's
153
- // ₹1,399 — 1.8×. Early Releases run 0.6×. That is why release type has to be a
154
- // facet the price hint can account for.
155
- // ─────────────────────────────────────────────────────────────────────────────
156
- const RELEASE = [
157
- { slug: "regular-release", label: "Regular Release", description: "A standard retail release, generally available.", icon: "circle", group: "release", category: "platform", aliases: ["Standard release"] },
158
- { slug: "limited-release", label: "Limited Release", description: "A limited production run. Measured at ~1.8× a regular release's median price.", icon: "timer", group: "release", category: "platform", tone: "secondary", aliases: ["Limited edition", "Limited press", "Ltd"] },
159
- { slug: "early-release", label: "Early Release", description: "Released ahead of general availability, often at an event.", icon: "fast-forward", group: "release", category: "platform", aliases: ["Pre-release", "Early"] },
160
- { slug: "random-booster", label: "Random Booster", description: "Sold in a sealed random assortment — the specific contents were not chosen.", icon: "dices", group: "release", category: "platform", aliases: ["RB", "Blind box", "Random"] },
161
- { slug: "rlc", label: "Red Line Club", description: "A members-only Hot Wheels release, produced in small numbers and sold directly by Mattel.", icon: "crown", group: "release", category: "platform", tone: "secondary", aliases: ["RLC", "Red Line"] },
162
- { slug: "remake", label: "Remake", description: "A modern reissue of an earlier design on current hardware.", icon: "rotate-ccw", group: "release", category: "platform", aliases: ["Reissue", "Reprint", "X-Over"] },
163
- { slug: "promo", label: "Promotional", description: "Given away or sold at an event, a campaign or a magazine tie-in rather than at retail.", icon: "gift", group: "release", category: "platform", aliases: ["Promotional", "Event exclusive", "Prize"] },
164
- { slug: "store-exclusive", label: "Store Exclusive", description: "Sold only through one retailer or region.", icon: "store", group: "release", category: "platform", aliases: ["Retailer exclusive", "Regional exclusive"] },
165
- ];
166
- // ─────────────────────────────────────────────────────────────────────────────
167
- // type and spin — the Beyblade axes
168
- //
169
- // 🛑 FOUR type values and THREE spin values, and no more. The local corpus has
170
- // 100% Type coverage in ~90 SPELLINGS and 97% Spin in 54 — a feature slug like
171
- // `feature-attack-hammer-variant-heavy-slow-smash` is a vocabulary that has
172
- // already failed. The parenthetical qualifier stays product prose; only the
173
- // leading enum word becomes a feature.
174
- // ─────────────────────────────────────────────────────────────────────────────
175
- const BATTLE_TYPE = [
176
- { slug: "type-attack", label: "Attack Type", description: "Built to strike hard and end a battle quickly, at the cost of stamina.", icon: "swords", group: "type", category: "platform", tone: "secondary", aliases: ["Attack", "Attack-type"] },
177
- { slug: "type-defense", label: "Defense Type", description: "Built to absorb hits and stay in the stadium.", icon: "shield", group: "type", category: "platform", aliases: ["Defense", "Defence", "Defense-type"] },
178
- { slug: "type-stamina", label: "Stamina Type", description: "Built to outlast — the last top spinning wins.", icon: "battery-full", group: "type", category: "platform", aliases: ["Stamina", "Endurance", "Stamina-type"] },
179
- { slug: "type-balance", label: "Balance Type", description: "A compromise build, competent at attack, defense and stamina without excelling.", icon: "scale", group: "type", category: "platform", aliases: ["Balance", "Balance-type"] },
180
- ];
181
- const SPIN = [
182
- { slug: "right-spin", label: "Right Spin", description: "Spins clockwise — the standard direction for most releases.", icon: "rotate-cw", group: "spin", category: "platform", aliases: ["Right", "Clockwise", "Right-spin"] },
183
- { slug: "left-spin", label: "Left Spin", description: "Spins anticlockwise. Needs a left-capable or LR launcher, and disrupts a right-spin opponent on contact.", icon: "rotate-ccw", group: "spin", category: "platform", tone: "secondary", aliases: ["Left", "Anticlockwise", "Left-spin"] },
184
- { slug: "dual-spin", label: "Dual Spin", description: "Can be launched in either direction — the HMS standard, and rare elsewhere.", icon: "repeat", group: "spin", category: "platform", aliases: ["Dual", "Both directions", "Dual-spin"] },
185
- ];
186
- // ─────────────────────────────────────────────────────────────────────────────
187
- // commercial, sourcing
188
- // ─────────────────────────────────────────────────────────────────────────────
189
- const COMMERCIAL = [
190
- { slug: "clearance", label: "Clearance", description: "Discounted to clear. Often paired with a reproduction or damaged disclosure.", icon: "tag", group: "commercial", category: "platform", tone: "secondary", aliases: ["Sale", "Clearance sale"] },
191
- { slug: "on-sale", label: "On Sale", description: "Currently below the seller's usual price.", icon: "percent", group: "commercial", category: "platform", tone: "secondary", aliases: ["Discounted", "Reduced"] },
192
- { slug: "latest-release", label: "Latest Release", description: "From the most recent wave or set.", icon: "zap", group: "commercial", category: "platform", tone: "primary", aliases: ["New release", "Newest"] },
193
- { slug: "best-seller", label: "Best Seller", description: "Among the most-sold listings in its category here.", icon: "trending-up", group: "commercial", category: "platform", tone: "primary", aliases: ["Popular", "Top seller"] },
194
- { slug: "lot", label: "Lot", description: "Several items sold together as one listing.", icon: "layers", group: "commercial", category: "platform", aliases: ["Bundle lot", "Job lot", "Multi-pack"] },
195
- ];
196
- const SOURCING = [
197
- { slug: "japan-import", label: "Japan Import", description: "A Japanese-market release, imported. Packaging and part names are the Takara Tomy originals.", icon: "plane", group: "sourcing", category: "shipping", tone: "secondary", aliases: ["JP import", "Japanese release", "TT release"] },
198
- { slug: "imported", label: "Imported", description: "Imported from outside India. Customs duty was paid on entry.", icon: "globe", group: "sourcing", category: "shipping", aliases: ["Import", "Overseas"] },
199
- { slug: "domestic", label: "Indian Release", description: "Sold through the Indian market — no import duty in the price.", icon: "home", group: "sourcing", category: "shipping", aliases: ["India release", "Local", "Funskool"] },
200
- ];
201
- // ─────────────────────────────────────────────────────────────────────────────
202
- // Trading cards — language and format
203
- //
204
- // 🛑 Language is a FACET and not prose, because a Japanese print and an
205
- // English print of one card are different products with different print runs,
206
- // different pull rates and often very different prices. Measured at tcgindia:
207
- // japanese 159, english 14, korean 12, chinese 2.
208
- //
209
- // 🛑 Format is a facet because the bands differ ~20× — a single is ₹350–500
210
- // and a booster box ₹7,000–14,500 — and shoppers never cross-shop them.
211
- // ─────────────────────────────────────────────────────────────────────────────
212
- const TCG_LANG = [
213
- { slug: "lang-japanese", label: "Japanese", description: "A Japanese-language print. Smaller print runs and generally better-regarded card stock.", icon: "languages", group: "tcg-lang", category: "platform", tone: "secondary", aliases: ["JP", "Japanese print"] },
214
- { slug: "lang-english", label: "English", description: "An English-language print — the largest market and the most liquid resale.", icon: "languages", group: "tcg-lang", category: "platform", aliases: ["EN", "English print"] },
215
- { slug: "lang-korean", label: "Korean", description: "A Korean-language print.", icon: "languages", group: "tcg-lang", category: "platform", aliases: ["KR"] },
216
- { slug: "lang-chinese", label: "Chinese", description: "A Simplified or Traditional Chinese print.", icon: "languages", group: "tcg-lang", category: "platform", aliases: ["CN", "Simplified Chinese"] },
217
- ];
218
- const TCG_FORMAT = [
219
- { slug: "single-card", label: "Single Card", description: "One individual card, graded on condition and rarity.", icon: "credit-card", group: "tcg-format", category: "platform", aliases: ["Single", "Singles"] },
220
- { slug: "booster-pack", label: "Booster Pack", description: "One sealed pack. Contents are random by design.", icon: "package", group: "tcg-format", category: "platform", aliases: ["Pack", "Booster"] },
221
- { slug: "booster-box", label: "Booster Box", description: "A sealed box of packs — the best per-pack price of any sealed format.", icon: "boxes", group: "tcg-format", category: "platform", tone: "primary", aliases: ["Box", "Sealed box", "Display box"] },
222
- { slug: "etb", label: "Elite Trainer Box", description: "Fewer packs than a booster box, plus sleeves, dice and a deck box. Better value if you want the accessories.", icon: "briefcase", group: "tcg-format", category: "platform", aliases: ["ETB", "Elite Trainer"] },
223
- { slug: "blister", label: "Blister Pack", description: "A small carded pack, usually with a promo card.", icon: "package-2", group: "tcg-format", category: "platform", aliases: ["Blister", "Three-pack blister"] },
224
- { slug: "card-bundle", label: "Bundle", description: "A small sealed pack count at the lowest entry price of the sealed formats.", icon: "layers", group: "tcg-format", category: "platform", aliases: ["Pack bundle", "Booster bundle"] },
225
- { slug: "collection-box", label: "Collection Box", description: "A themed sealed box with promo cards and often a figure or a pin.", icon: "archive", group: "tcg-format", category: "platform", aliases: ["Collection", "Premium collection", "Box set"] },
226
- { slug: "premium-set", label: "Premium Set", description: "A high-tier sealed set, usually with an exclusive card treatment.", icon: "gem", group: "tcg-format", category: "platform", tone: "secondary", aliases: ["Premium", "UPC", "Ultra premium"] },
227
- { slug: "starter-deck", label: "Starter Deck", description: "A ready-to-play preconstructed deck.", icon: "list-ordered", group: "tcg-format", category: "platform", aliases: ["Deck", "Structure deck", "Preconstructed"] },
228
- ];
229
- // ─────────────────────────────────────────────────────────────────────────────
230
- // grade — pairs with the `sublisting` + `itemCode` axis
231
- //
232
- // A graded slab is not a condition claim, it is a third party's certification,
233
- // which is exactly why a PSA 10 of a ₹500 raw card can be worth twenty times
234
- // that. hobbykart's 15 slabs run ₹4,600–11,000 against ₹350–500 raw.
235
- // ─────────────────────────────────────────────────────────────────────────────
236
- const GRADE = [
237
- { slug: "grade-psa-10", label: "PSA 10", description: "Graded Gem Mint by Professional Sports Authenticator — their top grade.", icon: "award", group: "grade", category: "condition", tone: "primary", aliases: ["PSA10", "Gem Mint", "PSA Gem Mint 10"] },
238
- { slug: "grade-psa-9", label: "PSA 9", description: "Graded Mint by PSA — one step below Gem Mint, at a materially lower price.", icon: "award", group: "grade", category: "condition", aliases: ["PSA9", "PSA Mint 9"] },
239
- { slug: "grade-bgs", label: "BGS Graded", description: "Graded by Beckett Grading Services, with four subgrades on the label.", icon: "award", group: "grade", category: "condition", aliases: ["Beckett", "BGS", "Black label"] },
240
- { slug: "grade-cgc", label: "CGC Graded", description: "Graded by Certified Guaranty Company.", icon: "award", group: "grade", category: "condition", aliases: ["CGC"] },
241
- { slug: "grade-raw", label: "Raw", description: "Ungraded and unslabbed. Condition is the seller's own assessment.", icon: "file", group: "grade", category: "condition", aliases: ["Ungraded", "Unslabbed", "Not graded"] },
242
- ];
243
- // ─────────────────────────────────────────────────────────────────────────────
244
- // chase — Hot Wheels variants
245
- //
246
- // 🛑 `indian-card` is here because it is a genuinely LOCAL signal no global
247
- // taxonomy would surface: toycollectorsindia tags 40 products
248
- // `Hotwheelsindiancard` / `hotwheelsindian` / `Hotwheels indian`, because the
249
- // Indian-market blister card is printed differently from the US one and
250
- // collectors here price the two differently.
251
- // ─────────────────────────────────────────────────────────────────────────────
252
- const CHASE = [
253
- { slug: "treasure-hunt", label: "Treasure Hunt", description: "A chase casting within a mainline wave, marked with the flame-circle logo.", icon: "search", group: "chase", category: "platform", tone: "secondary", aliases: ["TH", "Treasure Hunt", "Regular TH"] },
254
- { slug: "super-treasure-hunt", label: "Super Treasure Hunt", description: "The premium chase: Spectraflame paint, Real Riders rubber tyres and the TH logo. Usually one per case.", icon: "flame", group: "chase", category: "platform", tone: "primary", aliases: ["STH", "Super TH", "Super Treasure"] },
255
- { slug: "real-riders", label: "Real Riders", description: "Rubber tyres rather than plastic — a Premium and Super Treasure Hunt marker.", icon: "circle-dot", group: "chase", category: "platform", aliases: ["Rubber tyres", "Rubber tires", "RR"] },
256
- { slug: "indian-card", label: "Indian Card", description: "On the Indian-market blister card, which is printed differently from the US release and priced differently here.", icon: "map-pin", group: "chase", category: "platform", tone: "secondary", aliases: ["India card", "Indian blister", "IND card"] },
257
- ];
258
- // ─────────────────────────────────────────────────────────────────────────────
259
- // figure — scale, finish, packaging
260
- // ─────────────────────────────────────────────────────────────────────────────
261
- const FIGURE = [
262
- { slug: "scale-1-12", label: "1/12 Scale", description: "Around 15 cm — the articulated-figure standard.", icon: "ruler", group: "figure", category: "platform", aliases: ["1:12", "6 inch", "15cm"] },
263
- { slug: "scale-1-7", label: "1/7 Scale", description: "Around 25 cm — the most common scale-statue size.", icon: "ruler", group: "figure", category: "platform", aliases: ["1:7", "25cm"] },
264
- { slug: "scale-1-6", label: "1/6 Scale", description: "Around 30 cm — large display statues and the premium tier.", icon: "ruler", group: "figure", category: "platform", tone: "secondary", aliases: ["1:6", "12 inch", "30cm"] },
265
- { slug: "prize-figure", label: "Prize Figure", description: "Produced for Japanese arcade prize machines rather than retail. Usually unarticulated, and genuinely cheaper.", icon: "joystick", group: "figure", category: "platform", aliases: ["Arcade prize", "Banpresto prize", "Crane figure"] },
266
- { slug: "articulated", label: "Articulated", description: "Poseable joints rather than a fixed sculpt.", icon: "move", group: "figure", category: "platform", aliases: ["Poseable", "Action figure", "Jointed"] },
267
- { slug: "statue", label: "Statue", description: "A fixed-pose sculpt with no articulation.", icon: "image", group: "figure", category: "platform", aliases: ["Fixed pose", "Scale statue"] },
268
- { slug: "pvc", label: "PVC", description: "Moulded PVC — the standard material for anime scale figures.", icon: "droplet", group: "figure", category: "platform", aliases: ["Polyvinyl", "PVC figure"] },
269
- { slug: "vintage-figure", label: "Vintage", description: "From a production run that has long ended — pre-2005 for most lines.", icon: "clock", group: "figure", category: "platform", tone: "secondary", aliases: ["Retro", "Old stock", "Classic"] },
270
- ];
271
- // ─────────────────────────────────────────────────────────────────────────────
272
- // tournament — legality, as DATA
273
- //
274
- // The Beyblade Wiki's infoboxes carry Burst{Standard,GT,Limited,Classic}
275
- // legality flags per release, so this is a fact to record rather than a claim
276
- // to assert per listing.
277
- // ─────────────────────────────────────────────────────────────────────────────
278
- const TOURNAMENT = [
279
- { slug: "wbo-legal", label: "WBO Legal", description: "Permitted in World Beyblade Organization standard formats — the rules most Indian events run.", icon: "check-circle", group: "tournament", category: "platform", tone: "primary", aliases: ["WBO", "Tournament legal", "Standard format"] },
280
- { slug: "limited-format", label: "Limited Format", description: "Restricted or banned in limited formats, usually for being too strong.", icon: "ban", group: "tournament", category: "platform", aliases: ["Limited", "Restricted", "Banned"] },
281
- ];
282
- // ─────────────────────────────────────────────────────────────────────────────
283
- // character — the clickable owner linkage, GENERATED from the corpus
284
- //
285
- // 95 bladers across 183 of the 216 canonical beys, from a field that is 100%
286
- // populated but written as prose: "Tyson Granger (Tyson's 9th and final bey)".
287
- // The normalisation is in scripts/parse-bey-corpus.mjs and the rows in
288
- // _helpers/character-features.ts.
289
- //
290
- // 🛑 Generated rather than hand-listed, and these 95 are the reason the
291
- // hand-authored blocks above stop at 76: a name typed by hand is a name that
292
- // can be typed two ways, and this group is where that would bite hardest —
293
- // `Tyson Granger` and `Tyson Granger (Tyson's 4th bey` were BOTH produced by
294
- // an earlier normaliser, and a facet offering both is worse than no facet.
295
- //
296
- // Each row is also what a model leaf's `productDefaults.defaultFeatures`
297
- // points at, so a seller who files a Dragoon G gets the blader without
298
- // choosing it. That is what turns an owner from prose into a facet.
299
- // ─────────────────────────────────────────────────────────────────────────────
300
- const CHARACTERS = CHARACTER_SEEDS.map((c) => ({
301
- slug: c.slug,
302
- label: c.name,
303
- description: c.beyCount > 1
304
- ? `${c.name}'s Beyblades — ${c.beyCount} models in the catalogue, across every generation they appear in.`
305
- : `${c.name}'s Beyblade.`,
306
- icon: "user",
307
- group: "character",
308
- category: "platform",
309
- /*
310
- * The FIRST NAME as an alias, because that is what people actually type —
311
- * "tyson", not "tyson granger" — and `buildSearchTxt` indexes edge n-grams
312
- * per WORD, so the full label already matches a "tyson" prefix. The alias
313
- * earns its place on the handful of bladers known by a single name in the
314
- * dub ("Tala", "Ozuma", "Lee"), where there is nothing to abbreviate and the
315
- * alias is skipped.
316
- */
317
- aliases: c.name.includes(" ") ? [c.name.split(" ")[0]] : undefined,
318
- }));
319
- const ALL_FEATURE_INPUTS = [
320
- ...PLATFORM,
321
- ...CONDITION,
322
- ...AUTHENTICITY,
323
- ...RELEASE,
324
- ...BATTLE_TYPE,
325
- ...SPIN,
326
- ...COMMERCIAL,
327
- ...SOURCING,
328
- ...TCG_LANG,
329
- ...TCG_FORMAT,
330
- ...GRADE,
331
- ...CHASE,
332
- ...FIGURE,
333
- ...TOURNAMENT,
334
- ...CHARACTERS,
335
- ];
336
- /*
337
- * 🛑 A duplicate slug is FATAL. The id derives from it, so two rows at one id
338
- * write the first and SILENTLY overwrite it — and `appkit-seed status` cannot
339
- * see it, because it counts ids and the id exists either way. With 68 rows
340
- * authored across fourteen blocks, a collision is a realistic mistake rather
341
- * than a theoretical one; `pre-owned` vs `condition-used` was exactly that
342
- * near-miss, resolved as an alias.
343
- */
344
- {
345
- const seen = new Set();
346
- for (const f of ALL_FEATURE_INPUTS) {
347
- if (seen.has(f.slug))
348
- throw new Error(`duplicate feature slug: feature-${f.slug}`);
349
- seen.add(f.slug);
350
- }
351
- }
352
- export const productFeaturesSeedData = ALL_FEATURE_INPUTS.map((f, i) => featureRow(f, (i + 1) * 10));
353
- /** Asserted downstream so a silently dropped block is loud. */
354
- /*
355
- * 🛑 Asserted at MODULE LOAD, because the character block is GENERATED and a
356
- * generated import that silently empties is the failure this cannot otherwise
357
- * see: 95 facet rows would vanish, every model leaf's `defaultFeatures` would
358
- * point at ids that do not exist, and the only symptom would be a "Blader &
359
- * character" section that renders nothing — which reads as "no bladers in
360
- * this category" rather than as a broken build.
361
- */
362
- if (CHARACTERS.length !== CHARACTER_SEED_COUNT) {
363
- throw new Error(`product features: ${CHARACTERS.length} character rows built, expected ` +
364
- `${CHARACTER_SEED_COUNT}. Re-run node scripts/gen-category-models.mjs.`);
365
- }
366
- export const PRODUCT_FEATURE_COUNT = ALL_FEATURE_INPUTS.length;
@@ -1,2 +0,0 @@
1
- import { ProductDocument } from "../features/products/schemas/firestore";
2
- export declare const productsArtSeedData: Partial<ProductDocument>[];