@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.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
- package/dist/_internal/server/jobs/handlers/messages.js +1 -1
- package/dist/_internal/shared/types/base-document.d.ts +1 -1
- package/dist/constants/seed-meta.d.ts +113 -0
- package/dist/constants/seed-meta.js +91 -0
- package/dist/index.d.ts +0 -131
- package/dist/index.js +50 -294
- package/dist/server.d.ts +0 -69
- package/dist/server.js +0 -69
- package/package.json +4 -2
- package/scripts/seed-cli.mjs +69 -1
- package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
- package/dist/features/tester/seed-data/_happy-path.js +0 -710
- package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
- package/dist/features/tester/seed-data/_money-flows.js +0 -610
- package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
- package/dist/features/tester/seed-data/authored/_types.js +0 -35
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
- package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
- package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/index.js +0 -301
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
- package/dist/features/tester/seed-data/index.d.ts +0 -2
- package/dist/features/tester/seed-data/index.js +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
- package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
- package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
- package/dist/features/tester/seed-data/tester-window.js +0 -66
- package/dist/seed/_helpers/brand-rows.d.ts +0 -35
- package/dist/seed/_helpers/brand-rows.js +0 -600
- package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
- package/dist/seed/_helpers/category-content-generated.js +0 -1853
- package/dist/seed/_helpers/category-content.d.ts +0 -68
- package/dist/seed/_helpers/category-content.js +0 -731
- package/dist/seed/_helpers/category-forest.d.ts +0 -4
- package/dist/seed/_helpers/category-forest.js +0 -824
- package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
- package/dist/seed/_helpers/category-images-generated.js +0 -618
- package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
- package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
- package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
- package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
- package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
- package/dist/seed/_helpers/category-models.d.ts +0 -12
- package/dist/seed/_helpers/category-models.js +0 -45
- package/dist/seed/_helpers/category-names.d.ts +0 -54
- package/dist/seed/_helpers/category-names.js +0 -118
- package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
- package/dist/seed/_helpers/category-parts.d.ts +0 -9
- package/dist/seed/_helpers/category-parts.js +0 -15022
- package/dist/seed/_helpers/category-tree.d.ts +0 -27
- package/dist/seed/_helpers/category-tree.js +0 -119
- package/dist/seed/_helpers/character-features.d.ts +0 -10
- package/dist/seed/_helpers/character-features.js +0 -120
- package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
- package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
- package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
- package/dist/seed/_helpers/franchise-rows.js +0 -189
- package/dist/seed/_helpers/media.d.ts +0 -67
- package/dist/seed/_helpers/media.js +0 -172
- package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
- package/dist/seed/_helpers/part-colours-generated.js +0 -273
- package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
- package/dist/seed/_helpers/product-search-txt.js +0 -23
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
- package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
- package/dist/seed/addresses-seed-data.d.ts +0 -2
- package/dist/seed/addresses-seed-data.js +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
- package/dist/seed/bey-products-seed-data.d.ts +0 -18
- package/dist/seed/bey-products-seed-data.js +0 -18011
- package/dist/seed/beys/chunk0.d.ts +0 -17
- package/dist/seed/beys/chunk0.js +0 -36733
- package/dist/seed/beys/chunk1.d.ts +0 -17
- package/dist/seed/beys/chunk1.js +0 -35728
- package/dist/seed/beys/chunk2.d.ts +0 -17
- package/dist/seed/beys/chunk2.js +0 -35857
- package/dist/seed/beys/chunk3.d.ts +0 -17
- package/dist/seed/beys/chunk3.js +0 -34476
- package/dist/seed/beys-seed-data.d.ts +0 -18
- package/dist/seed/beys-seed-data.js +0 -11
- package/dist/seed/bids-seed-data.d.ts +0 -2
- package/dist/seed/bids-seed-data.js +0 -206
- package/dist/seed/blog-posts-seed-data.d.ts +0 -6
- package/dist/seed/blog-posts-seed-data.js +0 -442
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
- package/dist/seed/carousel-slides-seed-data.js +0 -411
- package/dist/seed/carousels-seed-data.d.ts +0 -2
- package/dist/seed/carousels-seed-data.js +0 -36
- package/dist/seed/cart-seed-data.d.ts +0 -2
- package/dist/seed/cart-seed-data.js +0 -241
- package/dist/seed/catalogue-seed-data.d.ts +0 -2
- package/dist/seed/catalogue-seed-data.js +0 -112
- package/dist/seed/categories-seed-data.d.ts +0 -3
- package/dist/seed/categories-seed-data.js +0 -816
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
- package/dist/seed/claimed-coupons-seed-data.js +0 -85
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
- package/dist/seed/coupon-usage-seed-data.js +0 -55
- package/dist/seed/coupons-seed-data.d.ts +0 -2
- package/dist/seed/coupons-seed-data.js +0 -226
- package/dist/seed/defaults/categories.d.ts +0 -2
- package/dist/seed/defaults/categories.js +0 -12
- package/dist/seed/defaults/faqs.d.ts +0 -2
- package/dist/seed/defaults/faqs.js +0 -40
- package/dist/seed/events-seed-data.d.ts +0 -7
- package/dist/seed/events-seed-data.js +0 -482
- package/dist/seed/factories/address.factory.d.ts +0 -21
- package/dist/seed/factories/address.factory.js +0 -44
- package/dist/seed/factories/bid.factory.d.ts +0 -15
- package/dist/seed/factories/bid.factory.js +0 -33
- package/dist/seed/factories/blog-post.factory.d.ts +0 -15
- package/dist/seed/factories/blog-post.factory.js +0 -22
- package/dist/seed/factories/carousel.factory.d.ts +0 -11
- package/dist/seed/factories/carousel.factory.js +0 -17
- package/dist/seed/factories/cart.factory.d.ts +0 -25
- package/dist/seed/factories/cart.factory.js +0 -35
- package/dist/seed/factories/category.factory.d.ts +0 -11
- package/dist/seed/factories/category.factory.js +0 -16
- package/dist/seed/factories/coupon.factory.d.ts +0 -21
- package/dist/seed/factories/coupon.factory.js +0 -43
- package/dist/seed/factories/faq.factory.d.ts +0 -10
- package/dist/seed/factories/faq.factory.js +0 -15
- package/dist/seed/factories/notification.factory.d.ts +0 -18
- package/dist/seed/factories/notification.factory.js +0 -39
- package/dist/seed/factories/order.factory.d.ts +0 -20
- package/dist/seed/factories/order.factory.js +0 -20
- package/dist/seed/factories/payout.factory.d.ts +0 -21
- package/dist/seed/factories/payout.factory.js +0 -38
- package/dist/seed/factories/product.factory.d.ts +0 -27
- package/dist/seed/factories/product.factory.js +0 -80
- package/dist/seed/factories/review.factory.d.ts +0 -14
- package/dist/seed/factories/review.factory.js +0 -52
- package/dist/seed/factories/session.factory.d.ts +0 -15
- package/dist/seed/factories/session.factory.js +0 -31
- package/dist/seed/factories/store.factory.d.ts +0 -23
- package/dist/seed/factories/store.factory.js +0 -47
- package/dist/seed/factories/user.factory.d.ts +0 -19
- package/dist/seed/factories/user.factory.js +0 -56
- package/dist/seed/faq-seed-data.d.ts +0 -18
- package/dist/seed/faq-seed-data.js +0 -1956
- package/dist/seed/firestore-indexes.d.ts +0 -12
- package/dist/seed/firestore-indexes.js +0 -31
- package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
- package/dist/seed/grouped-listings-seed-data.js +0 -283
- package/dist/seed/history-seed-data.d.ts +0 -12
- package/dist/seed/history-seed-data.js +0 -70
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
- package/dist/seed/homepage-sections-seed-data.js +0 -1034
- package/dist/seed/index.d.ts +0 -100
- package/dist/seed/index.js +0 -115
- package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
- package/dist/seed/lottery-entries-seed-data.js +0 -108
- package/dist/seed/manifest.d.ts +0 -16
- package/dist/seed/manifest.js +0 -235
- package/dist/seed/media-assets-seed-data.d.ts +0 -22
- package/dist/seed/media-assets-seed-data.js +0 -5593
- package/dist/seed/model-composition-seed-data.d.ts +0 -15
- package/dist/seed/model-composition-seed-data.js +0 -9032
- package/dist/seed/notifications-seed-data.d.ts +0 -2
- package/dist/seed/notifications-seed-data.js +0 -606
- package/dist/seed/offers-seed-data.d.ts +0 -2
- package/dist/seed/offers-seed-data.js +0 -398
- package/dist/seed/orders-seed-data.d.ts +0 -2
- package/dist/seed/orders-seed-data.js +0 -845
- package/dist/seed/part-glossary/chunk0.d.ts +0 -9
- package/dist/seed/part-glossary/chunk0.js +0 -35448
- package/dist/seed/part-glossary/chunk1.d.ts +0 -9
- package/dist/seed/part-glossary/chunk1.js +0 -40494
- package/dist/seed/part-glossary/chunk2.d.ts +0 -9
- package/dist/seed/part-glossary/chunk2.js +0 -51242
- package/dist/seed/part-glossary/chunk3.d.ts +0 -9
- package/dist/seed/part-glossary/chunk3.js +0 -53337
- package/dist/seed/part-glossary/chunk4.d.ts +0 -9
- package/dist/seed/part-glossary/chunk4.js +0 -51454
- package/dist/seed/part-glossary-seed-data.d.ts +0 -15
- package/dist/seed/part-glossary-seed-data.js +0 -25
- package/dist/seed/payouts-seed-data.d.ts +0 -2
- package/dist/seed/payouts-seed-data.js +0 -302
- package/dist/seed/product-features-seed-data.d.ts +0 -3
- package/dist/seed/product-features-seed-data.js +0 -366
- package/dist/seed/products-art-seed-data.d.ts +0 -2
- package/dist/seed/products-art-seed-data.js +0 -289
- package/dist/seed/products-auctions-seed-data.d.ts +0 -2
- package/dist/seed/products-auctions-seed-data.js +0 -475
- package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
- package/dist/seed/products-beyblade-x-seed-data.js +0 -476
- package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk0.js +0 -7262
- package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk1.js +0 -7290
- package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk10.js +0 -7290
- package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk11.js +0 -7005
- package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk12.js +0 -7002
- package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk13.js +0 -7002
- package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk14.js +0 -7002
- package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk15.js +0 -7002
- package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk16.js +0 -7002
- package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk17.js +0 -7002
- package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk18.js +0 -4398
- package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk2.js +0 -7268
- package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk3.js +0 -7264
- package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk4.js +0 -7268
- package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk5.js +0 -7258
- package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk6.js +0 -7268
- package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk7.js +0 -7311
- package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk8.js +0 -7304
- package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk9.js +0 -7309
- package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
- package/dist/seed/products-catalogue-seed-data.js +0 -60
- package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
- package/dist/seed/products-classifieds-seed-data.js +0 -435
- package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
- package/dist/seed/products-digital-codes-seed-data.js +0 -395
- package/dist/seed/products-live-items-seed-data.d.ts +0 -7
- package/dist/seed/products-live-items-seed-data.js +0 -269
- package/dist/seed/products-preorders-seed-data.d.ts +0 -2
- package/dist/seed/products-preorders-seed-data.js +0 -360
- package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
- package/dist/seed/products-prize-draws-seed-data.js +0 -427
- package/dist/seed/products-spares-seed-data.d.ts +0 -2
- package/dist/seed/products-spares-seed-data.js +0 -368
- package/dist/seed/products-standard-seed-data.d.ts +0 -2
- package/dist/seed/products-standard-seed-data.js +0 -632
- package/dist/seed/products-stickers-seed-data.d.ts +0 -2
- package/dist/seed/products-stickers-seed-data.js +0 -319
- package/dist/seed/reviews-seed-data.d.ts +0 -1
- package/dist/seed/reviews-seed-data.js +0 -185
- package/dist/seed/runner.d.ts +0 -2
- package/dist/seed/runner.js +0 -125
- package/dist/seed/scammers-seed-data.d.ts +0 -2
- package/dist/seed/scammers-seed-data.js +0 -235
- package/dist/seed/seed-market-config.d.ts +0 -48
- package/dist/seed/seed-market-config.js +0 -199
- package/dist/seed/seed-purpose.d.ts +0 -299
- package/dist/seed/seed-purpose.js +0 -440
- package/dist/seed/sessions-seed-data.d.ts +0 -3
- package/dist/seed/sessions-seed-data.js +0 -116
- package/dist/seed/shipments-seed-data.d.ts +0 -5
- package/dist/seed/shipments-seed-data.js +0 -185
- package/dist/seed/site-settings-seed-data.d.ts +0 -2
- package/dist/seed/site-settings-seed-data.js +0 -1069
- package/dist/seed/store-addresses-seed-data.d.ts +0 -18
- package/dist/seed/store-addresses-seed-data.js +0 -71
- package/dist/seed/store-extensions-seed-data.d.ts +0 -11
- package/dist/seed/store-extensions-seed-data.js +0 -292
- package/dist/seed/stores-seed-data.d.ts +0 -6
- package/dist/seed/stores-seed-data.js +0 -242
- package/dist/seed/support-tickets-seed-data.d.ts +0 -16
- package/dist/seed/support-tickets-seed-data.js +0 -239
- package/dist/seed/tax-codes-seed-data.d.ts +0 -34
- package/dist/seed/tax-codes-seed-data.js +0 -100
- package/dist/seed/test-data-ttl.d.ts +0 -29
- package/dist/seed/test-data-ttl.js +0 -31
- package/dist/seed/test-utils.d.ts +0 -49
- package/dist/seed/test-utils.js +0 -110
- package/dist/seed/types.d.ts +0 -89
- package/dist/seed/types.js +0 -15
- package/dist/seed/users-seed-data.d.ts +0 -2
- package/dist/seed/users-seed-data.js +0 -597
- package/dist/seed/wishlists-seed-data.d.ts +0 -12
- package/dist/seed/wishlists-seed-data.js +0 -54
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: `listingType: "stickers"` shares ProductPrintMeta (size/material/finish/editionSize)
|
|
3
|
-
* with "art" — both printed-only physical goods. Previously left as an empty stub,
|
|
4
|
-
* but sticker sheets fit the Beyblade theme naturally (see CLAUDE.md seed-data
|
|
5
|
-
* blandness sweep, 2026-08-20 session).
|
|
6
|
-
* WHAT: Exports 6 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
|
|
7
|
-
* material, and finish (including a holographic variant and a die-cut vinyl set).
|
|
8
|
-
*
|
|
9
|
-
* EXPORTS:
|
|
10
|
-
* productsStickersSeedData — Array of 6 Partial<ProductDocument> with listingType:"stickers"
|
|
11
|
-
*
|
|
12
|
-
* @tag domain:products,stickers
|
|
13
|
-
* @tag layer:seed
|
|
14
|
-
* @tag pattern:none
|
|
15
|
-
* @tag access:server-only
|
|
16
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
17
|
-
* @tag sideEffects:none
|
|
18
|
-
*/
|
|
19
|
-
import { PRODUCT_FIELDS } from "../constants/field-names.js";
|
|
20
|
-
import { buildSearchTxt } from "../utils/search-txt.js";
|
|
21
|
-
import { seedPhoto, seedGallery } from "./_helpers/media.js";
|
|
22
|
-
import { withFinalSale } from "./_helpers/final-sale-fixtures.js";
|
|
23
|
-
import { withDerivedCategoryNames } from "./_helpers/category-names.js";
|
|
24
|
-
const _rawProductsStickersSeedData = [
|
|
25
|
-
{
|
|
26
|
-
id: "sticker-beyblade-original-classic-sheet",
|
|
27
|
-
slug: "sticker-beyblade-original-classic-sheet",
|
|
28
|
-
title: "Beyblade Original Classic — Sticker Sheet",
|
|
29
|
-
description: "A 5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon in classic original-series art style.",
|
|
30
|
-
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
31
|
-
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
32
|
-
brandSlug: "brand-beyblade",
|
|
33
|
-
brand: "Beyblade",
|
|
34
|
-
price: 149,
|
|
35
|
-
currency: "INR",
|
|
36
|
-
stockQuantity: 100,
|
|
37
|
-
availableQuantity: 100,
|
|
38
|
-
isSold: false,
|
|
39
|
-
mainImage: seedPhoto("stickers-image-original-classic-1-20260817", 900, 900),
|
|
40
|
-
images: seedGallery(seedPhoto("stickers-image-original-classic-1-20260817", 900, 900)),
|
|
41
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
42
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
43
|
-
listingType: "stickers",
|
|
44
|
-
storeId: "store-beyblade-arena",
|
|
45
|
-
storeName: "Beyblade Arena",
|
|
46
|
-
printMeta: { size: "5x5 cm sheet", material: "Vinyl", finish: "Glossy" },
|
|
47
|
-
customFields: [],
|
|
48
|
-
customSections: [],
|
|
49
|
-
featured: false,
|
|
50
|
-
isPromoted: false,
|
|
51
|
-
isOnSale: false,
|
|
52
|
-
tags: ["stickers", "vintage-collectible"],
|
|
53
|
-
createdAt: new Date("2026-08-17"),
|
|
54
|
-
updatedAt: new Date("2026-08-17"),
|
|
55
|
-
searchTxt: buildSearchTxt([
|
|
56
|
-
"Beyblade Original Classic — Sticker Sheet",
|
|
57
|
-
"5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon.",
|
|
58
|
-
"Beyblade",
|
|
59
|
-
"brand-beyblade",
|
|
60
|
-
["Beyblade Original", "Spinning Tops"],
|
|
61
|
-
["stickers", "vintage-collectible"],
|
|
62
|
-
]),
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: "sticker-beyblade-x-holographic-pack",
|
|
66
|
-
slug: "sticker-beyblade-x-holographic-pack",
|
|
67
|
-
title: "Beyblade X Holographic Sticker Pack",
|
|
68
|
-
description: "A holographic-finish sticker pack featuring the current Beyblade X lineup — catches the light with a rainbow shimmer.",
|
|
69
|
-
categorySlugs: ["category-x-basic", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
70
|
-
categoryNames: ["Basic Line", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
71
|
-
brandSlug: "brand-takara-tomy",
|
|
72
|
-
brand: "Takara-Tomy",
|
|
73
|
-
price: 199,
|
|
74
|
-
currency: "INR",
|
|
75
|
-
stockQuantity: 80,
|
|
76
|
-
availableQuantity: 62,
|
|
77
|
-
isSold: false,
|
|
78
|
-
mainImage: seedPhoto("stickers-image-x-holo-1-20260818", 900, 900),
|
|
79
|
-
images: seedGallery(seedPhoto("stickers-image-x-holo-1-20260818", 900, 900), seedPhoto("stickers-image-x-holo-2-20260818", 900, 900)),
|
|
80
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
81
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
82
|
-
listingType: "stickers",
|
|
83
|
-
storeId: "store-beyblade-arena",
|
|
84
|
-
storeName: "Beyblade Arena",
|
|
85
|
-
printMeta: { size: "8x10 cm sheet", material: "Holographic vinyl", finish: "Holographic" },
|
|
86
|
-
customFields: [],
|
|
87
|
-
customSections: [],
|
|
88
|
-
featured: true,
|
|
89
|
-
isPromoted: false,
|
|
90
|
-
isOnSale: false,
|
|
91
|
-
tags: ["stickers"],
|
|
92
|
-
createdAt: new Date("2026-08-18"),
|
|
93
|
-
updatedAt: new Date("2026-08-19"),
|
|
94
|
-
searchTxt: buildSearchTxt([
|
|
95
|
-
"Beyblade X Holographic Sticker Pack",
|
|
96
|
-
"Holographic-finish sticker pack featuring the current Beyblade X lineup.",
|
|
97
|
-
"Takara-Tomy",
|
|
98
|
-
"brand-takara-tomy",
|
|
99
|
-
["Beyblade X", "Spinning Tops"],
|
|
100
|
-
["stickers"],
|
|
101
|
-
]),
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
id: "sticker-beyblade-burst-diecut-set",
|
|
105
|
-
slug: "sticker-beyblade-burst-diecut-set",
|
|
106
|
-
title: "Beyblade Burst Die-Cut Sticker Set (6-Pack)",
|
|
107
|
-
description: "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops — no background, clean edges, weatherproof.",
|
|
108
|
-
categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
|
|
109
|
-
categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
|
|
110
|
-
brandSlug: "brand-beyblade",
|
|
111
|
-
brand: "Beyblade",
|
|
112
|
-
price: 249,
|
|
113
|
-
currency: "INR",
|
|
114
|
-
stockQuantity: 60,
|
|
115
|
-
availableQuantity: 60,
|
|
116
|
-
isSold: false,
|
|
117
|
-
mainImage: seedPhoto("stickers-image-burst-diecut-1-20260819", 900, 900),
|
|
118
|
-
images: seedGallery(seedPhoto("stickers-image-burst-diecut-1-20260819", 900, 900)),
|
|
119
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
120
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
121
|
-
listingType: "stickers",
|
|
122
|
-
storeId: "store-beyblade-arena",
|
|
123
|
-
storeName: "Beyblade Arena",
|
|
124
|
-
printMeta: { size: "Individually die-cut, ~6x6 cm each", material: "Weatherproof vinyl", finish: "Matte" },
|
|
125
|
-
customFields: [{ key: "Pack Count", type: "number", value: "6" }],
|
|
126
|
-
customSections: [],
|
|
127
|
-
featured: false,
|
|
128
|
-
isPromoted: false,
|
|
129
|
-
isOnSale: false,
|
|
130
|
-
tags: ["stickers"],
|
|
131
|
-
createdAt: new Date("2026-08-19"),
|
|
132
|
-
updatedAt: new Date("2026-08-19"),
|
|
133
|
-
searchTxt: buildSearchTxt([
|
|
134
|
-
"Beyblade Burst Die-Cut Sticker Set (6-Pack)",
|
|
135
|
-
"Individually die-cut vinyl stickers of 6 fan-favorite Burst tops.",
|
|
136
|
-
"Beyblade",
|
|
137
|
-
"brand-beyblade",
|
|
138
|
-
["Beyblade Burst", "Spinning Tops"],
|
|
139
|
-
["stickers"],
|
|
140
|
-
]),
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
id: "sticker-beyblade-metal-retro-sheet",
|
|
144
|
-
slug: "sticker-beyblade-metal-retro-sheet",
|
|
145
|
-
title: "Metal Fight Retro Sticker Sheet — Limited /500",
|
|
146
|
-
description: "A limited-edition retro-styled sticker sheet celebrating Metal Fight favorites, numbered out of 500.",
|
|
147
|
-
categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
148
|
-
categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
149
|
-
brandSlug: "brand-takara-tomy",
|
|
150
|
-
brand: "Takara-Tomy",
|
|
151
|
-
price: 179,
|
|
152
|
-
currency: "INR",
|
|
153
|
-
stockQuantity: 500,
|
|
154
|
-
availableQuantity: 214,
|
|
155
|
-
isSold: false,
|
|
156
|
-
mainImage: seedPhoto("stickers-image-metal-retro-1-20260819", 900, 900),
|
|
157
|
-
images: seedGallery(seedPhoto("stickers-image-metal-retro-1-20260819", 900, 900)),
|
|
158
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
159
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
160
|
-
listingType: "stickers",
|
|
161
|
-
storeId: "store-beyblade-arena",
|
|
162
|
-
storeName: "Beyblade Arena",
|
|
163
|
-
printMeta: { size: "6x8 cm sheet", material: "Vinyl", finish: "Matte", editionSize: 500 },
|
|
164
|
-
customFields: [],
|
|
165
|
-
customSections: [],
|
|
166
|
-
featured: false,
|
|
167
|
-
isPromoted: false,
|
|
168
|
-
isOnSale: false,
|
|
169
|
-
tags: ["stickers", "vintage-collectible", "limited-run"],
|
|
170
|
-
createdAt: new Date("2026-08-19"),
|
|
171
|
-
updatedAt: new Date("2026-08-19"),
|
|
172
|
-
searchTxt: buildSearchTxt([
|
|
173
|
-
"Metal Fight Retro Sticker Sheet — Limited /500",
|
|
174
|
-
"Limited-edition retro-styled sticker sheet, numbered out of 500.",
|
|
175
|
-
"Takara-Tomy",
|
|
176
|
-
"brand-takara-tomy",
|
|
177
|
-
["Beyblade Metal Fight", "Spinning Tops"],
|
|
178
|
-
["stickers", "vintage-collectible", "limited-run"],
|
|
179
|
-
]),
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
id: "sticker-beyblade-x-glow-in-dark",
|
|
183
|
-
slug: "sticker-beyblade-x-glow-in-dark",
|
|
184
|
-
title: "Beyblade X Glow-in-the-Dark Sticker Pack",
|
|
185
|
-
description: "Charge these stickers under light and watch the Beyblade X logos glow in the dark. Great for stadium cases and water bottles.",
|
|
186
|
-
categorySlugs: ["category-x-basic", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
|
|
187
|
-
categoryNames: ["Basic Line", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
|
|
188
|
-
brandSlug: "brand-takara-tomy",
|
|
189
|
-
brand: "Takara-Tomy",
|
|
190
|
-
price: 229,
|
|
191
|
-
currency: "INR",
|
|
192
|
-
stockQuantity: 45,
|
|
193
|
-
availableQuantity: 45,
|
|
194
|
-
isSold: false,
|
|
195
|
-
mainImage: seedPhoto("stickers-image-x-glow-1-20260819", 900, 900),
|
|
196
|
-
images: seedGallery(seedPhoto("stickers-image-x-glow-1-20260819", 900, 900), seedPhoto("stickers-image-x-glow-2-20260819", 900, 900)),
|
|
197
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
198
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
199
|
-
listingType: "stickers",
|
|
200
|
-
storeId: "store-beyblade-arena",
|
|
201
|
-
storeName: "Beyblade Arena",
|
|
202
|
-
printMeta: { size: "7x9 cm sheet", material: "Glow-in-the-dark vinyl", finish: "Matte" },
|
|
203
|
-
customFields: [{ key: "Glow Duration", type: "text", value: "~3 hours after charging" }],
|
|
204
|
-
customSections: [],
|
|
205
|
-
featured: true,
|
|
206
|
-
isPromoted: true,
|
|
207
|
-
isOnSale: false,
|
|
208
|
-
tags: ["stickers"],
|
|
209
|
-
createdAt: new Date("2026-08-19"),
|
|
210
|
-
updatedAt: new Date("2026-08-19"),
|
|
211
|
-
searchTxt: buildSearchTxt([
|
|
212
|
-
"Beyblade X Glow-in-the-Dark Sticker Pack",
|
|
213
|
-
"Charge under light and watch the Beyblade X logos glow in the dark.",
|
|
214
|
-
"Takara-Tomy",
|
|
215
|
-
"brand-takara-tomy",
|
|
216
|
-
["Beyblade X", "Spinning Tops"],
|
|
217
|
-
["stickers"],
|
|
218
|
-
]),
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
// Sold-out fixture — see the art file's equivalent for the shape rationale.
|
|
222
|
-
id: "sticker-beyblade-metal-fight-sold-out",
|
|
223
|
-
slug: "sticker-beyblade-metal-fight-sold-out",
|
|
224
|
-
title: "Beyblade Metal Fight Sticker Sheet (Sold Out)",
|
|
225
|
-
description: "The original Metal Fight sticker sheet run, now fully sold out. Restock TBD.",
|
|
226
|
-
categorySlugs: ["category-metal-fury-4d", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
|
|
227
|
-
categoryNames: ["Metal Fury (4D)", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
|
|
228
|
-
brandSlug: "brand-beyblade",
|
|
229
|
-
brand: "Beyblade",
|
|
230
|
-
price: 199,
|
|
231
|
-
currency: "INR",
|
|
232
|
-
stockQuantity: 0,
|
|
233
|
-
availableQuantity: 0,
|
|
234
|
-
isSold: true,
|
|
235
|
-
mainImage: seedPhoto("sticker-image-metal-fight-sold-out-1-20260824", 900, 900),
|
|
236
|
-
images: seedGallery(seedPhoto("sticker-image-metal-fight-sold-out-1-20260824", 900, 900)),
|
|
237
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
238
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
239
|
-
listingType: "stickers",
|
|
240
|
-
storeId: "store-beyblade-arena",
|
|
241
|
-
storeName: "Beyblade Arena",
|
|
242
|
-
printMeta: { size: "10x15 cm sheet", material: "Matte vinyl", finish: "Matte" },
|
|
243
|
-
customFields: [],
|
|
244
|
-
customSections: [],
|
|
245
|
-
featured: false,
|
|
246
|
-
isPromoted: false,
|
|
247
|
-
isOnSale: false,
|
|
248
|
-
tags: ["stickers", "sold-out"],
|
|
249
|
-
createdAt: new Date("2026-08-24"),
|
|
250
|
-
updatedAt: new Date("2026-08-24"),
|
|
251
|
-
searchTxt: buildSearchTxt([
|
|
252
|
-
"Beyblade Metal Fight Sticker Sheet (Sold Out)",
|
|
253
|
-
"The original Metal Fight sticker sheet run, now fully sold out.",
|
|
254
|
-
"Beyblade",
|
|
255
|
-
"brand-beyblade",
|
|
256
|
-
["Beyblade Metal", "Spinning Tops"],
|
|
257
|
-
["stickers", "sold-out"],
|
|
258
|
-
]),
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
/*
|
|
262
|
-
* Part Two C — the one seeded `madeToOrder: true` fixture. Print-on-demand
|
|
263
|
-
* is the case that flag exists for: this sheet is printed when ordered
|
|
264
|
-
* rather than held in a finite run, so `stockQuantity`/`availableQuantity`
|
|
265
|
-
* are deliberately 0 and must NOT make the listing read as sold out.
|
|
266
|
-
*
|
|
267
|
-
* 🛑 Reuses an EXISTING uploaded cover (`stickers-image-x-glow-1`) rather
|
|
268
|
-
* than inventing a new slug — a slug with no row in
|
|
269
|
-
* `media-assets-seed-data.ts` 404s silently and reads as a broken image,
|
|
270
|
-
* not as a seed bug (the 2026-10-17 incident this project already paid
|
|
271
|
-
* for once).
|
|
272
|
-
*/
|
|
273
|
-
id: "sticker-beyblade-custom-print-on-demand",
|
|
274
|
-
slug: "sticker-beyblade-custom-print-on-demand",
|
|
275
|
-
title: "Custom Beyblade Sticker Sheet — Print on Demand",
|
|
276
|
-
description: "Pick any character art from our catalogue and we print your sheet when you order — nothing is held in stock, so it never sells out.",
|
|
277
|
-
categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
|
|
278
|
-
categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
|
|
279
|
-
brandSlug: "brand-beyblade",
|
|
280
|
-
brand: "Beyblade",
|
|
281
|
-
price: 179,
|
|
282
|
-
currency: "INR",
|
|
283
|
-
stockQuantity: 0,
|
|
284
|
-
availableQuantity: 0,
|
|
285
|
-
madeToOrder: true,
|
|
286
|
-
isSold: false,
|
|
287
|
-
mainImage: seedPhoto("stickers-image-x-glow-1-20260819", 900, 900),
|
|
288
|
-
images: seedGallery(seedPhoto("stickers-image-x-glow-1-20260819", 900, 900)),
|
|
289
|
-
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
290
|
-
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
291
|
-
listingType: "stickers",
|
|
292
|
-
storeId: "store-beyblade-arena",
|
|
293
|
-
storeName: "Beyblade Arena",
|
|
294
|
-
printMeta: { size: "5x5 cm sheet", material: "Vinyl", finish: "Glossy" },
|
|
295
|
-
customFields: [{ key: "Turnaround", type: "text", value: "Printed and shipped within 2 business days" }],
|
|
296
|
-
customSections: [],
|
|
297
|
-
featured: false,
|
|
298
|
-
isPromoted: false,
|
|
299
|
-
isOnSale: false,
|
|
300
|
-
tags: ["stickers", "made-to-order"],
|
|
301
|
-
createdAt: new Date("2026-10-19"),
|
|
302
|
-
updatedAt: new Date("2026-10-19"),
|
|
303
|
-
searchTxt: buildSearchTxt([
|
|
304
|
-
"Custom Beyblade Sticker Sheet — Print on Demand",
|
|
305
|
-
"Pick any character art from our catalogue and we print your sheet when you order.",
|
|
306
|
-
"Beyblade",
|
|
307
|
-
"brand-beyblade",
|
|
308
|
-
["Beyblade Original", "Spinning Tops"],
|
|
309
|
-
["stickers", "made-to-order"],
|
|
310
|
-
]),
|
|
311
|
-
},
|
|
312
|
-
];
|
|
313
|
-
/*
|
|
314
|
-
* This file had no export wrapper at all — every other product seed file maps
|
|
315
|
-
* its raw array through one, and these two were the exception. Adding it here
|
|
316
|
-
* so the final-sale opt-outs are applied the same way everywhere rather than
|
|
317
|
-
* being hand-written into two records that reviewers would have to find.
|
|
318
|
-
*/
|
|
319
|
-
export const productsStickersSeedData = _rawProductsStickersSeedData.map(withFinalSale).map(withDerivedCategoryNames);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const reviewsSeedData: import("../security/encrypted").Plaintext<import("..").ReviewDocument>[];
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Seeds product reviews from buyers across the Beyblade catalog on the marketplace.
|
|
3
|
-
* WHAT: Exports 65 reviews spread across the 14 real Beyblade products. Ratings 3–5 stars, mix
|
|
4
|
-
* of verified/unverified. Seller responses on ~16 reviews. Images (1-3, seedExtMedia
|
|
5
|
-
* picsum) on ~11 reviews; a video (raw external mp4 + seedExtMedia thumbnail) on 5 reviews.
|
|
6
|
-
*
|
|
7
|
-
* EXPORTS:
|
|
8
|
-
* reviewsSeedData — Array of 65 review documents
|
|
9
|
-
*
|
|
10
|
-
* @tag domain:reviews,products
|
|
11
|
-
* @tag layer:seed
|
|
12
|
-
* @tag pattern:none
|
|
13
|
-
* @tag access:server-only
|
|
14
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
15
|
-
* @tag sideEffects:none
|
|
16
|
-
*/
|
|
17
|
-
import { withReviewSearchTxt } from "./_helpers/search-txt-wrappers.js";
|
|
18
|
-
import { seedPhoto } from "./_helpers/media.js";
|
|
19
|
-
const NOW = new Date();
|
|
20
|
-
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
21
|
-
// Public, direct-playable sample MP4 — review.video.url renders through a raw
|
|
22
|
-
// <video src> element (ReviewDetailShell.tsx), NOT the /api/media/ext image
|
|
23
|
-
// proxy, so it must stay an unwrapped external URL (never seedExtMedia()).
|
|
24
|
-
// Local fixture, not a third-party URL. The Google sample-video bucket these all
|
|
25
|
-
// pointed at now returns 403 (measured 2026-09-05), so every seeded video was a
|
|
26
|
-
// dead link and any case testing playback failed for a reason that is not a bug
|
|
27
|
-
// here. Generated/committed by tester/scripts/make-media-fixtures.mjs.
|
|
28
|
-
// Stays raw and unwrapped: /api/media/ext is image-only (Root Cause #27).
|
|
29
|
-
const SAMPLE_VIDEO_URL = "/demo-media/sample-video.mp4";
|
|
30
|
-
const reviewTemplates = [
|
|
31
|
-
{ title: "Excellent quality and fast shipping!", comment: "Received exactly as described. Item is in perfect condition. Will buy again!", rating: 5 },
|
|
32
|
-
{ title: "Good condition, minor wear", comment: "Arrived safely but has slight edge wear. Still happy with the purchase overall.", rating: 4 },
|
|
33
|
-
{ title: "As advertised, great seller", comment: "Exactly matched the listing photos. Very professional packaging and communication.", rating: 5 },
|
|
34
|
-
{ title: "Took a while but worth it", comment: "Shipping took longer than expected but the item arrived perfectly packaged and in great condition.", rating: 4 },
|
|
35
|
-
{ title: "Authentic and graded perfectly", comment: "Certificate matches perfectly. Seller is trustworthy and professional. Highly recommend.", rating: 5 },
|
|
36
|
-
{ title: "Minor packaging issue", comment: "Item itself is fine but packaging could be better — arrived with a small dent in the box.", rating: 3 },
|
|
37
|
-
{ title: "Perfect for my collection!", comment: "Exactly what I needed. Perfect condition, well protected during shipping.", rating: 5 },
|
|
38
|
-
{ title: "Beautiful piece", comment: "Stunning quality. The details are incredible. Highly recommend this seller.", rating: 5 },
|
|
39
|
-
{ title: "Great value for money", comment: "Price was fair for the condition. Compared to other sellers, this was a great deal.", rating: 4 },
|
|
40
|
-
{ title: "Arrived damaged", comment: "Item has a scratch that wasn't in the photos. Seller offered partial refund which was fair.", rating: 3 },
|
|
41
|
-
{ title: "Best seller on the platform", comment: "This is my third purchase and every time the quality and service is outstanding.", rating: 5 },
|
|
42
|
-
{ title: "Solid purchase, no complaints", comment: "Everything as described. Shipped within 24 hours and arrived in 4 days to Mumbai.", rating: 4 },
|
|
43
|
-
{ title: "Amazing find!", comment: "I've been looking for this piece for months. So glad I found it here at a reasonable price.", rating: 5 },
|
|
44
|
-
{ title: "Good but overpriced", comment: "The item is genuine and in good condition, but I feel the price was a bit high for the grade.", rating: 3 },
|
|
45
|
-
{ title: "Fast delivery to Bangalore", comment: "Ordered on Monday, received on Wednesday. Impressive! Item exactly as pictured.", rating: 5 },
|
|
46
|
-
{ title: "Collector grade quality", comment: "This seller clearly knows their stuff. Grading is accurate, packaging is museum-quality.", rating: 5 },
|
|
47
|
-
{ title: "Happy with the purchase", comment: "Good condition, fair price, quick shipping. What more can you ask for?", rating: 4 },
|
|
48
|
-
{ title: "Would buy again", comment: "Smooth transaction from start to finish. Seller was responsive to my questions.", rating: 4 },
|
|
49
|
-
{ title: "Mint condition!", comment: "Card came in a hard top-loader inside a bubble mailer. Zero damage. Absolutely mint.", rating: 5 },
|
|
50
|
-
{ title: "Decent but could be better", comment: "The item is fine but the listing photos made it look better than it actually is.", rating: 3 },
|
|
51
|
-
];
|
|
52
|
-
const sellerReplies = [
|
|
53
|
-
"Thank you for your purchase! We appreciate your business.",
|
|
54
|
-
"Glad you love it! We take pride in careful packaging.",
|
|
55
|
-
"Thanks for the kind words! Come back anytime.",
|
|
56
|
-
"We appreciate your feedback and will improve our packaging.",
|
|
57
|
-
"Thank you! We're sorry about the delay — we've switched to a faster courier.",
|
|
58
|
-
"We're thrilled you're happy with your purchase!",
|
|
59
|
-
"Thank you for being a loyal customer! We value your support.",
|
|
60
|
-
"We appreciate the honest feedback. We'll look into the packaging issue.",
|
|
61
|
-
];
|
|
62
|
-
const products = [
|
|
63
|
-
{ id: "auction-beyblade-original-dragoon-storm", title: "Beyblade Original Dragoon Storm", store: "store-beyblade-arena" },
|
|
64
|
-
{ id: "auction-beyblade-metal-lightning-l-drago", title: "Beyblade Metal Lightning L-Drago", store: "store-beyblade-arena" },
|
|
65
|
-
{ id: "classified-beyblade-stadium-set", title: "Beyblade Stadium Set", store: "store-beyblade-arena" },
|
|
66
|
-
{ id: "digitalcode-beyblade-x-app-unlock", title: "Beyblade X App Unlock Code", store: "store-beyblade-arena" },
|
|
67
|
-
{ id: "preorder-beyblade-x-bx-08-wave", title: "Beyblade X BX-08 Wave", store: "store-beyblade-arena" },
|
|
68
|
-
{ id: "prizedraw-beyblade-mystery-box", title: "Beyblade Mystery Box", store: "store-letitrip-official" },
|
|
69
|
-
{ id: "product-beyblade-original-dranzer-s", title: "Beyblade Original Dranzer S", store: "store-beyblade-arena" },
|
|
70
|
-
{ id: "product-beyblade-original-driger-v", title: "Beyblade Original Driger V", store: "store-beyblade-arena" },
|
|
71
|
-
{ id: "product-beyblade-metal-storm-pegasus", title: "Beyblade Metal Storm Pegasus", store: "store-beyblade-arena" },
|
|
72
|
-
{ id: "product-beyblade-metal-flame-sagittario", title: "Beyblade Metal Flame Sagittario", store: "store-beyblade-arena" },
|
|
73
|
-
{ id: "product-beyblade-burst-valkyrie", title: "Beyblade Burst Valkyrie", store: "store-beyblade-arena" },
|
|
74
|
-
{ id: "product-beyblade-burst-regalia-genesis", title: "Beyblade Burst Regalia Genesis", store: "store-beyblade-arena" },
|
|
75
|
-
{ id: "product-beyblade-x-wizard-arrow", title: "Beyblade X Wizard Arrow", store: "store-beyblade-arena" },
|
|
76
|
-
{ id: "product-beyblade-x-knife-shinobi", title: "Beyblade X Knife Shinobi", store: "store-beyblade-arena" },
|
|
77
|
-
];
|
|
78
|
-
const buyers = [
|
|
79
|
-
{ id: "user-yugi-muto", name: "Mock User 3" },
|
|
80
|
-
{ id: "user-admin-letitrip", name: "Mock User 1" },
|
|
81
|
-
{ id: "user-seto-kaiba", name: "Mock User 2" },
|
|
82
|
-
{ id: "user-meera-bey", name: "Mock User 11" },
|
|
83
|
-
{ id: "user-rohit-collector", name: "Mock User 14" },
|
|
84
|
-
];
|
|
85
|
-
const _rawReviewsSeedData = [];
|
|
86
|
-
for (let i = 0; i < 65; i++) {
|
|
87
|
-
const template = reviewTemplates[i % reviewTemplates.length];
|
|
88
|
-
const product = products[i % products.length];
|
|
89
|
-
const buyer = buyers[i % buyers.length];
|
|
90
|
-
const daysAgoCreated = 90 - i;
|
|
91
|
-
const hasSellerReply = i % 4 === 0;
|
|
92
|
-
// ~17% of reviews ("detailed" ones) carry buyer-submitted photos.
|
|
93
|
-
const hasImage = i % 6 === 0;
|
|
94
|
-
const imageCount = (i % 3) + 1;
|
|
95
|
-
// A smaller handful (5 of 65) also carry an unboxing/battle-test video.
|
|
96
|
-
const hasVideo = i % 13 === 0;
|
|
97
|
-
_rawReviewsSeedData.push({
|
|
98
|
-
id: `review-${i + 1}`,
|
|
99
|
-
productId: product.id,
|
|
100
|
-
productTitle: product.title,
|
|
101
|
-
storeId: product.store,
|
|
102
|
-
userId: buyer.id,
|
|
103
|
-
userName: buyer.name,
|
|
104
|
-
rating: template.rating,
|
|
105
|
-
title: template.title,
|
|
106
|
-
comment: template.comment,
|
|
107
|
-
images: hasImage
|
|
108
|
-
? Array.from({ length: imageCount }, (_, n) => seedPhoto(`review-image-${product.id}-${i + 1}-${n + 1}`, 800, 800))
|
|
109
|
-
: [],
|
|
110
|
-
hasImages: hasImage,
|
|
111
|
-
video: hasVideo
|
|
112
|
-
? {
|
|
113
|
-
url: SAMPLE_VIDEO_URL,
|
|
114
|
-
thumbnailUrl: seedPhoto(`review-video-thumb-${product.id}-${i + 1}`, 800, 450),
|
|
115
|
-
duration: 18 + (i % 5) * 6,
|
|
116
|
-
}
|
|
117
|
-
: undefined,
|
|
118
|
-
verified: i % 3 !== 2,
|
|
119
|
-
status: "approved",
|
|
120
|
-
// Derived from the loop index, not Math.random(): a seed file is
|
|
121
|
-
// re-executed top-to-bottom on every CLI invocation, so a random value
|
|
122
|
-
// rewrites this field on every reseed and makes `appkit-seed status` diffs
|
|
123
|
-
// permanently noisy (Root Cause #25). The file's own header already claimed
|
|
124
|
-
// "no Math.random()" — this was the one place it wasn't true.
|
|
125
|
-
helpfulCount: (i * 7) % 20,
|
|
126
|
-
reportCount: 0,
|
|
127
|
-
sellerReply: hasSellerReply ? sellerReplies[Math.floor(i / 4) % sellerReplies.length] : undefined,
|
|
128
|
-
sellerRepliedAt: hasSellerReply ? daysAgo(daysAgoCreated - 2) : undefined,
|
|
129
|
-
createdAt: daysAgo(daysAgoCreated),
|
|
130
|
-
updatedAt: daysAgo(daysAgoCreated - 1),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* A deliberately deep review list on ONE product, so the paginated reviews tab is
|
|
135
|
-
* actually exercisable.
|
|
136
|
-
*
|
|
137
|
-
* The round-robin above spreads 65 reviews across 14 products — 4-5 each, which is
|
|
138
|
-
* below the 10-per-page detail-page size, so pagination could never appear on a product
|
|
139
|
-
* page and the tester checklist cases for it would be untestable. This block pushes
|
|
140
|
-
* "Beyblade Original Dranzer S" to 5 + 14 = 19 approved reviews (2 pages), and spreads
|
|
141
|
-
* ratings across all five stars so the rating filter and the average/distribution
|
|
142
|
-
* summary have something real to act on.
|
|
143
|
-
*
|
|
144
|
-
* Ids and every field are derived from the loop index — no Math.random(), no Date.now()
|
|
145
|
-
* in an id — so `appkit-seed load` stays idempotent (Recurrent Root Cause #25).
|
|
146
|
-
*/
|
|
147
|
-
const DEEP_REVIEW_PRODUCT = {
|
|
148
|
-
id: "product-beyblade-original-dranzer-s",
|
|
149
|
-
title: "Beyblade Original Dranzer S",
|
|
150
|
-
store: "store-beyblade-arena",
|
|
151
|
-
};
|
|
152
|
-
for (let i = 0; i < 14; i++) {
|
|
153
|
-
const template = reviewTemplates[i % reviewTemplates.length];
|
|
154
|
-
const buyer = buyers[i % buyers.length];
|
|
155
|
-
// 1..5, cycling — guarantees every star bucket is populated for the rating filter.
|
|
156
|
-
const rating = (i % 5) + 1;
|
|
157
|
-
// Distinct from the main loop's 90-i range so the two sets interleave predictably
|
|
158
|
-
// and "newest first" is verifiable by eye.
|
|
159
|
-
const daysAgoCreated = 28 - i;
|
|
160
|
-
const hasImage = i % 4 === 0;
|
|
161
|
-
_rawReviewsSeedData.push({
|
|
162
|
-
id: `review-dranzer-deep-${i + 1}`,
|
|
163
|
-
productId: DEEP_REVIEW_PRODUCT.id,
|
|
164
|
-
productTitle: DEEP_REVIEW_PRODUCT.title,
|
|
165
|
-
storeId: DEEP_REVIEW_PRODUCT.store,
|
|
166
|
-
userId: buyer.id,
|
|
167
|
-
userName: buyer.name,
|
|
168
|
-
rating,
|
|
169
|
-
title: `${template.title} (${rating}★)`,
|
|
170
|
-
comment: template.comment,
|
|
171
|
-
images: hasImage
|
|
172
|
-
? [
|
|
173
|
-
seedPhoto(`review-image-dranzer-deep-${i + 1}`, 800, 800),
|
|
174
|
-
]
|
|
175
|
-
: [],
|
|
176
|
-
hasImages: hasImage,
|
|
177
|
-
verified: i % 3 !== 2,
|
|
178
|
-
status: "approved",
|
|
179
|
-
helpfulCount: (i * 3) % 17,
|
|
180
|
-
reportCount: 0,
|
|
181
|
-
createdAt: daysAgo(daysAgoCreated),
|
|
182
|
-
updatedAt: daysAgo(daysAgoCreated),
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
export const reviewsSeedData = _rawReviewsSeedData.map(withReviewSearchTxt);
|
package/dist/seed/runner.d.ts
DELETED
package/dist/seed/runner.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { SeedAbortedError } from "./types.js";
|
|
2
|
-
import { encryptPiiFields } from "../security/pii-encrypt.js";
|
|
3
|
-
const BATCH_SIZE = 400; // Firestore max batch is 500
|
|
4
|
-
const DEFAULT_MAX_ATTEMPTS = 2;
|
|
5
|
-
/**
|
|
6
|
-
* P31-D: heuristic for retryable Firestore errors. firebase-admin doesn't
|
|
7
|
-
* surface a canonical "retryable" flag — we match the error message against
|
|
8
|
-
* known-transient patterns (DEADLINE_EXCEEDED, UNAVAILABLE, network resets).
|
|
9
|
-
*/
|
|
10
|
-
function isRetryableError(err) {
|
|
11
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
12
|
-
return (msg.includes("DEADLINE_EXCEEDED") ||
|
|
13
|
-
msg.includes("UNAVAILABLE") ||
|
|
14
|
-
msg.includes("ECONNRESET") ||
|
|
15
|
-
msg.includes("ETIMEDOUT") ||
|
|
16
|
-
msg.toLowerCase().includes("retry"));
|
|
17
|
-
}
|
|
18
|
-
export async function runSeed(config) {
|
|
19
|
-
const { getApp, getApps, initializeApp } = await import("firebase-admin/app");
|
|
20
|
-
const { getFirestore } = await import("firebase-admin/firestore");
|
|
21
|
-
const app = config.projectId
|
|
22
|
-
? (() => {
|
|
23
|
-
const appName = `seed-${config.projectId}`;
|
|
24
|
-
return getApps().some((candidate) => candidate.name === appName)
|
|
25
|
-
? getApp(appName)
|
|
26
|
-
: initializeApp({ projectId: config.projectId }, appName);
|
|
27
|
-
})()
|
|
28
|
-
: getApps()[0];
|
|
29
|
-
const db = app ? getFirestore(app) : getFirestore();
|
|
30
|
-
const start = Date.now();
|
|
31
|
-
const maxAttempts = config.maxBatchAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
32
|
-
let totalDocuments = 0;
|
|
33
|
-
let retriedBatches = 0;
|
|
34
|
-
const validationErrors = [];
|
|
35
|
-
const dryRunDiff = [];
|
|
36
|
-
for (const collection of config.collections) {
|
|
37
|
-
const { collection: name, data, idField = "id", merge = false, piiFields = [], validate, } = collection;
|
|
38
|
-
// P31-A: per-doc validation gate. Invalid docs are pulled out of the
|
|
39
|
-
// write set before we touch Firestore. Strict mode aborts on first error.
|
|
40
|
-
const validDocs = [];
|
|
41
|
-
const skipped = [];
|
|
42
|
-
for (const rawDoc of data) {
|
|
43
|
-
const record = rawDoc;
|
|
44
|
-
const docId = String(record[idField] ?? `auto-${data.indexOf(rawDoc)}`);
|
|
45
|
-
if (validate) {
|
|
46
|
-
const errors = validate(rawDoc);
|
|
47
|
-
if (errors.length > 0) {
|
|
48
|
-
validationErrors.push({ collection: name, docId, errors });
|
|
49
|
-
config.onValidationError?.(name, docId, errors);
|
|
50
|
-
if (config.strictValidation) {
|
|
51
|
-
throw new SeedAbortedError(name, docId, errors);
|
|
52
|
-
}
|
|
53
|
-
skipped.push(docId);
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
validDocs.push(rawDoc);
|
|
58
|
-
}
|
|
59
|
-
config.onProgress?.(name, 0, validDocs.length);
|
|
60
|
-
// P31-C: dry-run diff. Fetch existing docs in chunks of 30 (Firestore's
|
|
61
|
-
// `getAll` limit per RPC) and bucket each into create vs update.
|
|
62
|
-
if (config.dryRun) {
|
|
63
|
-
const toCreate = [];
|
|
64
|
-
const toUpdate = [];
|
|
65
|
-
const ids = validDocs.map((doc, i) => String(doc[idField] ?? `auto-${i}`));
|
|
66
|
-
const GETALL_CHUNK = 30;
|
|
67
|
-
for (let i = 0; i < ids.length; i += GETALL_CHUNK) {
|
|
68
|
-
const chunk = ids.slice(i, i + GETALL_CHUNK);
|
|
69
|
-
const refs = chunk.map((id) => db.collection(name).doc(id));
|
|
70
|
-
const snaps = await db.getAll(...refs);
|
|
71
|
-
snaps.forEach((snap, j) => {
|
|
72
|
-
if (snap.exists)
|
|
73
|
-
toUpdate.push(chunk[j]);
|
|
74
|
-
else
|
|
75
|
-
toCreate.push(chunk[j]);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
dryRunDiff.push({ collection: name, toCreate, toUpdate, toSkip: skipped });
|
|
79
|
-
totalDocuments += validDocs.length;
|
|
80
|
-
config.onProgress?.(name, validDocs.length, validDocs.length);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
let written = 0;
|
|
84
|
-
while (written < validDocs.length) {
|
|
85
|
-
const slice = validDocs.slice(written, written + BATCH_SIZE);
|
|
86
|
-
const batch = db.batch();
|
|
87
|
-
for (const rawDoc of slice) {
|
|
88
|
-
const doc = piiFields.length
|
|
89
|
-
? encryptPiiFields(rawDoc, piiFields)
|
|
90
|
-
: rawDoc;
|
|
91
|
-
const id = String(rawDoc[idField] ??
|
|
92
|
-
`auto-${written + slice.indexOf(rawDoc)}`);
|
|
93
|
-
const ref = db.collection(name).doc(id);
|
|
94
|
-
batch.set(ref, doc, { merge });
|
|
95
|
-
}
|
|
96
|
-
// P31-D: bounded retry on transient errors. We don't loop forever — a
|
|
97
|
-
// genuinely broken collection should fail fast rather than thrash.
|
|
98
|
-
let attempt = 0;
|
|
99
|
-
while (true) {
|
|
100
|
-
attempt += 1;
|
|
101
|
-
try {
|
|
102
|
-
await batch.commit();
|
|
103
|
-
if (attempt > 1)
|
|
104
|
-
retriedBatches += 1;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
catch (err) {
|
|
108
|
-
if (attempt >= maxAttempts || !isRetryableError(err))
|
|
109
|
-
throw err;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
written += slice.length;
|
|
113
|
-
totalDocuments += slice.length;
|
|
114
|
-
config.onProgress?.(name, written, validDocs.length);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return {
|
|
118
|
-
collections: config.collections.map((c) => c.collection),
|
|
119
|
-
totalDocuments,
|
|
120
|
-
durationMs: Date.now() - start,
|
|
121
|
-
validationErrors,
|
|
122
|
-
retriedBatches,
|
|
123
|
-
...(config.dryRun ? { dryRunDiff } : {}),
|
|
124
|
-
};
|
|
125
|
-
}
|