@mohasinac/appkit 3.6.5 → 3.7.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/_internal/client/features/layout/DashboardLayoutClient.d.ts +17 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +7 -2
- package/dist/_internal/client/features/tour/TourProvider.d.ts +5 -2
- package/dist/_internal/client/features/tour/TourProvider.js +125 -12
- package/dist/_internal/client/theme/ThemeProvider.js +1 -1
- package/dist/_internal/server/features/faqs/og.js +5 -1
- package/dist/_internal/server/features/reviews/og.js +5 -1
- package/dist/_internal/server/features/seo/manifest.js +2 -1
- package/dist/_internal/server/features/seo/og.js +7 -1
- package/dist/_internal/server/features/tester/visibility.d.ts +13 -0
- package/dist/_internal/server/features/tester/visibility.js +28 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +9 -1
- package/dist/_internal/server/jobs/core/jobRunners.js +5 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.d.ts +17 -0
- package/dist/_internal/server/jobs/core/resetOtpVerification.js +88 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +6 -0
- package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +35 -0
- package/dist/_internal/server/jobs/handlers/_helpers.d.ts +6 -0
- package/dist/_internal/server/jobs/handlers/_helpers.js +12 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +2 -0
- package/dist/_internal/server/jobs/handlers/messages.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/messages.js +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +48 -0
- package/dist/_internal/shared/tokens/index.d.ts +12 -12
- package/dist/client.d.ts +15 -3
- package/dist/client.js +10 -2
- package/dist/constants/api-endpoints.d.ts +36 -12
- package/dist/constants/api-endpoints.js +16 -8
- package/dist/constants/field-names.d.ts +9 -0
- package/dist/constants/field-names.js +12 -0
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/features/account/components/LinkedAccountsSection.d.ts +11 -0
- package/dist/features/account/components/LinkedAccountsSection.js +11 -0
- package/dist/features/account/components/UserSidebar.d.ts +3 -1
- package/dist/features/account/components/UserSidebar.js +9 -13
- package/dist/features/account/hooks/useCollapsedSections.d.ts +20 -0
- package/dist/features/account/hooks/useCollapsedSections.js +63 -0
- package/dist/features/account/hooks/useProfile.d.ts +8 -0
- package/dist/features/account/index.d.ts +1 -0
- package/dist/features/account/index.js +1 -0
- package/dist/features/admin/components/AdminAddressEditorView.js +2 -2
- package/dist/features/admin/components/AdminCarouselView.js +2 -2
- package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
- package/dist/features/admin/components/AdminProductEditorView.js +5 -2
- package/dist/features/admin/components/AdminSectionsView.js +3 -18
- package/dist/features/admin/components/AdminSidebar.js +8 -6
- package/dist/features/admin/components/AdminSiteSettingsView.js +133 -127
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.d.ts +9 -0
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +129 -0
- package/dist/features/admin/components/AdminTesterChecklistView.d.ts +6 -0
- package/dist/features/admin/components/AdminTesterChecklistView.js +93 -0
- package/dist/features/admin/components/AdminUserEditorView.d.ts +3 -1
- package/dist/features/admin/components/AdminUserEditorView.js +7 -1
- package/dist/features/admin/components/AdminUsersView.js +1 -1
- package/dist/features/admin/components/DataListingView.js +2 -2
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +8 -0
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +41 -0
- package/dist/features/admin/components/index.d.ts +6 -0
- package/dist/features/admin/components/index.js +3 -0
- package/dist/features/admin/schemas/firestore.d.ts +0 -7
- package/dist/features/admin/schemas/firestore.js +6 -6
- package/dist/features/analytics/components/PageViewTracker.d.ts +12 -0
- package/dist/features/analytics/components/PageViewTracker.js +22 -0
- package/dist/features/analytics/repository/page-views.repository.d.ts +32 -0
- package/dist/features/analytics/repository/page-views.repository.js +43 -0
- package/dist/features/analytics/types.d.ts +6 -0
- package/dist/features/analytics/types.js +13 -0
- package/dist/features/auth/components/SocialAuthButtons.js +1 -1
- package/dist/features/auth/hooks/useAuth.d.ts +12 -0
- package/dist/features/auth/hooks/useAuth.js +109 -0
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/schemas/firestore.d.ts +17 -1
- package/dist/features/auth/schemas/firestore.js +2 -0
- package/dist/features/blog/components/BlogIndexListing.js +2 -2
- package/dist/features/blog/schemas/firestore.d.ts +4 -0
- package/dist/features/cart/actions/cart-actions.js +20 -2
- package/dist/features/categories/components/CategoriesIndexListing.js +2 -2
- package/dist/features/categories/components/CategoryBundlesListing.js +2 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +3 -1
- package/dist/features/categories/components/CategoryProductsListing.js +2 -2
- package/dist/features/categories/schemas/firestore.d.ts +4 -0
- package/dist/features/classified/components/ClassifiedIndexListing.js +2 -2
- package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -2
- package/dist/features/email/primitives.d.ts +2 -2
- package/dist/features/email/primitives.js +2 -2
- package/dist/features/events/components/EventsIndexListing.js +2 -2
- package/dist/features/events/schemas/firestore.d.ts +4 -0
- package/dist/features/layout/BackToTop.d.ts +6 -1
- package/dist/features/layout/BackToTop.js +31 -6
- package/dist/features/live/components/LiveItemsIndexListing.js +2 -2
- package/dist/features/media/MediaVideo.js +5 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -2
- package/dist/features/products/components/AuctionsIndexListing.js +2 -2
- package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -2
- package/dist/features/products/components/ProductsIndexListing.js +2 -2
- package/dist/features/products/constants/action-defs.d.ts +2 -0
- package/dist/features/products/constants/action-defs.js +2 -0
- package/dist/features/products/schemas/firestore.d.ts +4 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +2 -2
- package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
- package/dist/features/seller/actions/seller-actions.js +11 -6
- package/dist/features/seller/components/SellerAddressesView.js +2 -2
- package/dist/features/seller/components/SellerBidsView.js +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +2 -2
- package/dist/features/seller/components/SellerSidebar.d.ts +3 -1
- package/dist/features/seller/components/SellerSidebar.js +9 -8
- package/dist/features/seller/components/SellerStoreCategoriesView.js +2 -2
- package/dist/features/seller/components/SellerTemplatesView.js +2 -2
- package/dist/features/shell/StepForm.js +4 -4
- package/dist/features/stores/actions/store-query-actions.d.ts +5 -4
- package/dist/features/stores/actions/store-query-actions.js +11 -8
- package/dist/features/stores/components/StoreAuctionsListing.js +2 -2
- package/dist/features/stores/components/StoreClassifiedsListing.js +2 -2
- package/dist/features/stores/components/StoreDigitalCodesListing.js +2 -2
- package/dist/features/stores/components/StoreLiveItemsListing.js +2 -2
- package/dist/features/stores/components/StorePreOrdersListing.js +2 -2
- package/dist/features/stores/components/StoreProductsListing.js +2 -2
- package/dist/features/stores/components/StoreReviewsListing.js +2 -2
- package/dist/features/stores/components/StoresIndexListing.js +2 -2
- package/dist/features/stores/schemas/firestore.d.ts +4 -0
- package/dist/features/tester/actions/checklist-item-actions.d.ts +69 -0
- package/dist/features/tester/actions/checklist-item-actions.js +42 -0
- package/dist/features/tester/actions/index.d.ts +1 -0
- package/dist/features/tester/actions/index.js +1 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +22 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.d.ts +3 -0
- package/dist/features/tester/components/AdminTesterFeedbackListView.js +100 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackReportView.js +30 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.d.ts +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackView.js +9 -0
- package/dist/features/tester/components/TesterChecklistStepRow.d.ts +18 -0
- package/dist/features/tester/components/TesterChecklistStepRow.js +29 -0
- package/dist/features/tester/components/TesterFeedbackChart.d.ts +14 -0
- package/dist/features/tester/components/TesterFeedbackChart.js +18 -0
- package/dist/features/tester/components/TesterHubView.d.ts +5 -0
- package/dist/features/tester/components/TesterHubView.js +71 -0
- package/dist/features/tester/components/index.d.ts +11 -0
- package/dist/features/tester/components/index.js +7 -0
- package/dist/features/tester/index.d.ts +2 -0
- package/dist/features/tester/index.js +2 -0
- package/dist/features/tester/repository/index.d.ts +2 -0
- package/dist/features/tester/repository/index.js +2 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +13 -0
- package/dist/features/tester/repository/tester-checklist-item.repository.js +55 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +42 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.js +98 -0
- package/dist/features/tester/schemas/firestore.d.ts +85 -0
- package/dist/features/tester/schemas/firestore.js +93 -0
- package/dist/features/tester/schemas/index.d.ts +1 -0
- package/dist/features/tester/schemas/index.js +1 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +177 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/events-tester-seed-data.js +50 -0
- package/dist/features/tester/seed-data/index.d.ts +6 -0
- package/dist/features/tester/seed-data/index.js +6 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/products-tester-seed-data.js +151 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +40 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +2 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +248 -0
- package/dist/features/tester/seed-data/tester-ttl.d.ts +4 -0
- package/dist/features/tester/seed-data/tester-ttl.js +6 -0
- package/dist/features/tester/server.d.ts +9 -0
- package/dist/features/tester/server.js +8 -0
- package/dist/index.d.ts +28 -2
- package/dist/index.js +51 -1
- package/dist/next/api/api-response.js +5 -1
- package/dist/next/api/routeHandler.js +10 -1
- package/dist/next/middleware/chain.js +1 -1
- package/dist/next/routing/route-map.d.ts +6 -7
- package/dist/next/routing/route-map.js +3 -7
- package/dist/providers/payment-manual/index.d.ts +2 -2
- package/dist/providers/payment-manual/index.js +2 -2
- package/dist/react/contexts/SessionContext.d.ts +4 -0
- package/dist/react/contexts/SessionContext.js +4 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.js +3 -0
- package/dist/security/pii-encrypt.js +12 -2
- package/dist/seed/addresses-seed-data.js +1 -1
- package/dist/seed/bids-seed-data.js +1 -1
- package/dist/seed/blog-posts-seed-data.js +1 -1
- package/dist/seed/carousel-slides-seed-data.js +22 -16
- package/dist/seed/carousels-seed-data.js +1 -1
- package/dist/seed/cart-seed-data.js +1 -1
- package/dist/seed/categories-seed-data.js +1 -1
- package/dist/seed/claimed-coupons-seed-data.js +1 -1
- package/dist/seed/conversations-seed-data.js +1 -1
- package/dist/seed/coupon-usage-seed-data.js +1 -1
- package/dist/seed/coupons-seed-data.js +1 -1
- package/dist/seed/events-seed-data.js +1 -1
- package/dist/seed/faq-seed-data.js +119 -3
- package/dist/seed/grouped-listings-seed-data.d.ts +2 -0
- package/dist/seed/grouped-listings-seed-data.js +1 -1
- package/dist/seed/history-seed-data.js +1 -1
- package/dist/seed/homepage-sections-seed-data.js +1 -1
- package/dist/seed/index.d.ts +2 -2
- package/dist/seed/index.js +7 -3
- package/dist/seed/lottery-entries-seed-data.js +1 -1
- package/dist/seed/manifest.d.ts +4 -3
- package/dist/seed/manifest.js +13 -6
- package/dist/seed/notifications-seed-data.js +1 -1
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.js +1 -1
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +1 -1
- package/dist/seed/products-auctions-seed-data.js +1 -1
- package/dist/seed/products-classifieds-seed-data.js +1 -1
- package/dist/seed/products-digital-codes-seed-data.js +1 -1
- package/dist/seed/products-live-items-seed-data.js +1 -1
- package/dist/seed/products-preorders-seed-data.d.ts +2 -0
- package/dist/seed/products-preorders-seed-data.js +1 -1
- package/dist/seed/products-prize-draws-seed-data.js +1 -1
- package/dist/seed/products-standard-seed-data.js +1 -1
- package/dist/seed/products-stickers-seed-data.js +1 -1
- package/dist/seed/reviews-seed-data.js +1 -1
- package/dist/seed/scammers-seed-data.js +1 -1
- package/dist/seed/sessions-seed-data.js +1 -1
- package/dist/seed/site-settings-seed-data.js +22 -16
- package/dist/seed/store-addresses-seed-data.js +1 -1
- package/dist/seed/store-extensions-seed-data.js +1 -1
- package/dist/seed/stores-seed-data.js +1 -1
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/tester-checklist-seed-data.d.ts +2 -0
- package/dist/seed/tester-checklist-seed-data.js +248 -0
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seed/wishlists-seed-data.js +1 -1
- package/dist/server.d.ts +7 -2
- package/dist/server.js +19 -12
- package/dist/styles.css +163 -147
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/color-pairs.d.ts +46 -0
- package/dist/tokens/color-pairs.js +93 -0
- package/dist/tokens/index.d.ts +60 -60
- package/dist/tokens/index.js +30 -30
- package/dist/tokens/themes/cobalt-night.d.ts +3 -2
- package/dist/tokens/themes/cobalt-night.js +3 -2
- package/dist/tokens/themes/default-dark.d.ts +4 -1
- package/dist/tokens/themes/default-dark.js +44 -41
- package/dist/tokens/themes/default-light.d.ts +5 -1
- package/dist/tokens/themes/default-light.js +39 -35
- package/dist/tokens/themes/sunset.js +4 -4
- package/dist/tokens/tokens.css +110 -104
- package/dist/ui/components/CollapsibleSection.d.ts +15 -0
- package/dist/ui/components/CollapsibleSection.js +13 -0
- package/dist/ui/components/ListingToolbar.js +2 -1
- package/dist/ui/components/Semantic.style.css +3 -3
- package/dist/ui/components/SideDrawer.style.css +19 -19
- package/dist/ui/components/Slider.js +1 -1
- package/dist/ui/components/StickyToolbar.d.ts +36 -7
- package/dist/ui/components/StickyToolbar.js +63 -5
- package/dist/ui/components/Tabs.js +17 -1
- package/dist/ui/components/Tabs.style.css +10 -0
- package/dist/ui/components/Typography.js +7 -0
- package/dist/ui/components/surface-tokens.d.ts +0 -7
- package/dist/ui/components/surface-tokens.js +7 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/rich-text/RichText.style.css +20 -20
- package/dist/utils/id-generators.d.ts +13 -0
- package/dist/utils/id-generators.js +17 -0
- package/package.json +1 -1
- package/scripts/seed-cli-loader.mjs +15 -0
- package/scripts/seed-cli.mjs +71 -17
|
@@ -27,6 +27,10 @@ export interface SessionUser {
|
|
|
27
27
|
sessionId?: string;
|
|
28
28
|
phoneVerified?: boolean;
|
|
29
29
|
avatarMetadata?: AvatarMetadataShape | null;
|
|
30
|
+
/** Set when this account owns a store — drives the admin sidebar's "Go to my Store" cross-nav link. */
|
|
31
|
+
storeId?: string;
|
|
32
|
+
/** Tester program flag — orthogonal to `role`. Unlocks the Tester Hub nav item/page. */
|
|
33
|
+
isTester?: boolean;
|
|
30
34
|
publicProfile?: FirestoreDocument;
|
|
31
35
|
stats?: FirestoreDocument;
|
|
32
36
|
metadata?: FirestoreDocument;
|
|
@@ -62,6 +62,8 @@ function buildSessionUser(authUser, serverData) {
|
|
|
62
62
|
: undefined,
|
|
63
63
|
sessionId: currentSessionId || undefined,
|
|
64
64
|
phoneVerified: serverData.phoneVerified,
|
|
65
|
+
storeId: serverData.storeId,
|
|
66
|
+
isTester: serverData.isTester,
|
|
65
67
|
avatarMetadata: serverData.avatarMetadata?.url
|
|
66
68
|
? {
|
|
67
69
|
url: serverData.avatarMetadata.url,
|
|
@@ -130,6 +132,8 @@ export function SessionProvider({ children, initialUser, endpoints: endpointOver
|
|
|
130
132
|
updatedAt: data.updatedAt ? new Date(data.updatedAt) : undefined,
|
|
131
133
|
sessionId: currentSessionId || undefined,
|
|
132
134
|
phoneVerified: data.phoneVerified,
|
|
135
|
+
storeId: data.storeId,
|
|
136
|
+
isTester: data.isTester,
|
|
133
137
|
avatarMetadata: data.avatarMetadata?.url
|
|
134
138
|
? {
|
|
135
139
|
url: data.avatarMetadata.url,
|
|
@@ -27,6 +27,8 @@ export { couponsRepository } from "../features/promotions/repository/coupons.rep
|
|
|
27
27
|
export { ClaimedCouponsRepository, claimedCouponsRepository, } from "../features/promotions/repository/claimed-coupons.repository";
|
|
28
28
|
export type { ClaimedCouponCreateInput } from "../features/promotions/repository/claimed-coupons.repository";
|
|
29
29
|
export { FAQsRepository, FirebaseFAQsRepository, faqsRepository, } from "../features/faq/repository/faqs.repository";
|
|
30
|
+
export { TesterChecklistItemRepository, testerChecklistItemRepository, } from "../features/tester/repository/tester-checklist-item.repository";
|
|
31
|
+
export { TesterChecklistResponseRepository, testerChecklistResponseRepository, } from "../features/tester/repository/tester-checklist-response.repository";
|
|
30
32
|
export { BlogRepository, blogRepository, } from "../features/blog/repository/blog.repository";
|
|
31
33
|
export { payoutRepository } from "../features/payments/repository/payout.repository";
|
|
32
34
|
export { jobsRepository, JobsRepository } from "../features/jobs/repository/jobs.repository";
|
|
@@ -58,3 +60,5 @@ export { loadProductFeaturesForStore } from "../features/products/repository/loa
|
|
|
58
60
|
export { LotteryEntryRepository, lotteryEntryRepository, } from "../features/lottery/repository/lottery-entry.repository";
|
|
59
61
|
export { MediaAssetsRepository, mediaAssetsRepository, } from "../features/media/repository/media-assets.repository";
|
|
60
62
|
export type { MediaAssetDocument, MediaAssetCreateInput, } from "../features/media/repository/media-assets.repository";
|
|
63
|
+
export { PageViewsRepository, pageViewsRepository, PAGE_VIEW_ENTITY_TYPES, } from "../features/analytics/repository/page-views.repository";
|
|
64
|
+
export type { PageViewDocument, PageViewEntityType, RecordPageViewInput, } from "../features/analytics/repository/page-views.repository";
|
|
@@ -33,6 +33,8 @@ export { CategoriesRepository, categoriesRepository, } from "../features/categor
|
|
|
33
33
|
export { couponsRepository } from "../features/promotions/repository/coupons.repository";
|
|
34
34
|
export { ClaimedCouponsRepository, claimedCouponsRepository, } from "../features/promotions/repository/claimed-coupons.repository";
|
|
35
35
|
export { FAQsRepository, FirebaseFAQsRepository, faqsRepository, } from "../features/faq/repository/faqs.repository";
|
|
36
|
+
export { TesterChecklistItemRepository, testerChecklistItemRepository, } from "../features/tester/repository/tester-checklist-item.repository";
|
|
37
|
+
export { TesterChecklistResponseRepository, testerChecklistResponseRepository, } from "../features/tester/repository/tester-checklist-response.repository";
|
|
36
38
|
export { BlogRepository, blogRepository, } from "../features/blog/repository/blog.repository";
|
|
37
39
|
export { payoutRepository } from "../features/payments/repository/payout.repository";
|
|
38
40
|
export { jobsRepository, JobsRepository } from "../features/jobs/repository/jobs.repository";
|
|
@@ -69,3 +71,4 @@ export { loadProductFeaturesForStore } from "../features/products/repository/loa
|
|
|
69
71
|
export { LotteryEntryRepository, lotteryEntryRepository, } from "../features/lottery/repository/lottery-entry.repository";
|
|
70
72
|
// Media assets — short ID → storagePath mapping for SEO-friendly /media/{id} URLs
|
|
71
73
|
export { MediaAssetsRepository, mediaAssetsRepository, } from "../features/media/repository/media-assets.repository";
|
|
74
|
+
export { PageViewsRepository, pageViewsRepository, PAGE_VIEW_ENTITY_TYPES, } from "../features/analytics/repository/page-views.repository";
|
|
@@ -9,9 +9,19 @@
|
|
|
9
9
|
* Ciphertext format: "enc:v1:<iv_b64>:<ciphertext_b64>:<authtag_b64>"
|
|
10
10
|
* Blind index format: "hmac-sha256:<sha256_hex>"
|
|
11
11
|
*/
|
|
12
|
+
import { createRequire } from "node:module";
|
|
12
13
|
// crypto is a Node.js built-in. Use require() to keep it out of the static
|
|
13
|
-
// import graph so Next.js Edge bundler does not warn about this file.
|
|
14
|
-
|
|
14
|
+
// import graph so Next.js Edge bundler does not warn about this file. A bare
|
|
15
|
+
// top-level `require(...)` call only works when the compiled dist output is
|
|
16
|
+
// loaded via CommonJS (or a bundler that polyfills `require`) — under a
|
|
17
|
+
// plain Node ESM `import()` (e.g. appkit/scripts/seed-cli.mjs and any other
|
|
18
|
+
// standalone script importing @mohasinac/appkit directly), there is no
|
|
19
|
+
// ambient `require` global, so that call threw `ReferenceError: require is
|
|
20
|
+
// not defined`. createRequire(import.meta.url) works in both: it's still a
|
|
21
|
+
// runtime function call a bundler's static analysis won't follow into the
|
|
22
|
+
// client graph, but it resolves correctly under Node's own ESM loader too.
|
|
23
|
+
const nodeRequire = createRequire(import.meta.url);
|
|
24
|
+
function nodeCrypto() { return nodeRequire("crypto"); }
|
|
15
25
|
const ALGO = "aes-256-gcm";
|
|
16
26
|
export const ENC_PREFIX = "enc:v1:";
|
|
17
27
|
export const HMAC_PREFIX = "hmac-sha256:";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @tag layer:seed
|
|
11
11
|
* @tag pattern:none
|
|
12
12
|
* @tag access:server-only
|
|
13
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
14
14
|
* @tag sideEffects:none
|
|
15
15
|
*/
|
|
16
16
|
import { seedExtMedia } from "./_helpers/media";
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds 6 carousel slides for
|
|
3
|
-
* WHAT: 5 active + 1 inactive.
|
|
2
|
+
* WHY: Seeds 6 carousel slides for the marketplace homepage hero carousel.
|
|
3
|
+
* WHAT: 5 active + 1 inactive. Picsum.photos placeholder backgrounds (deterministic,
|
|
4
|
+
* free, no API key) with dim overlay, CTAs for shop/auctions/bundles/pre-orders/graded.
|
|
5
|
+
* One slide (slide-blue-eyes-auction) uses background.type:"video" with a direct,
|
|
6
|
+
* Creative-Commons-licensed MP4 URL — HeroCarousel renders video backgrounds via a
|
|
7
|
+
* native <video> element (MediaVideo), not a YouTube iframe embed, so this needs a
|
|
8
|
+
* playable video file URL rather than a YouTube video ID.
|
|
4
9
|
*
|
|
5
10
|
* EXPORTS:
|
|
6
11
|
* carouselSlidesSeedData — Array of Partial<CarouselSlideDocument> for seed runner
|
|
@@ -9,7 +14,7 @@
|
|
|
9
14
|
* @tag layer:seed
|
|
10
15
|
* @tag pattern:none
|
|
11
16
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
17
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
18
|
* @tag sideEffects:none
|
|
14
19
|
*/
|
|
15
20
|
import { seedExtMedia } from "./_helpers/media";
|
|
@@ -19,12 +24,12 @@ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
|
19
24
|
const _rawSlides = [
|
|
20
25
|
{
|
|
21
26
|
id: "slide-hero-homepage",
|
|
22
|
-
title: "India's
|
|
27
|
+
title: "India's Largest Collectibles Marketplace",
|
|
23
28
|
order: 1,
|
|
24
29
|
active: true,
|
|
25
30
|
background: {
|
|
26
31
|
type: "image",
|
|
27
|
-
url: seedExtMedia("https://
|
|
32
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-hero-homepage-20260101/1600/700"),
|
|
28
33
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
29
34
|
},
|
|
30
35
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
@@ -34,12 +39,13 @@ const _rawSlides = [
|
|
|
34
39
|
},
|
|
35
40
|
{
|
|
36
41
|
id: "slide-blue-eyes-auction",
|
|
37
|
-
title: "
|
|
42
|
+
title: "Rare Auctions Live Now",
|
|
38
43
|
order: 2,
|
|
39
44
|
active: true,
|
|
40
45
|
background: {
|
|
41
|
-
type: "
|
|
42
|
-
url: seedExtMedia("https://
|
|
46
|
+
type: "video",
|
|
47
|
+
url: seedExtMedia("https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"),
|
|
48
|
+
thumbnail: seedExtMedia("https://picsum.photos/seed/carousel-auctions-live-20260101/1600/700"),
|
|
43
49
|
dimOverlay: { enabled: true, opacity: 0.4 },
|
|
44
50
|
},
|
|
45
51
|
link: { url: String(ROUTES.PUBLIC.AUCTIONS), openInNewTab: false },
|
|
@@ -50,15 +56,15 @@ const _rawSlides = [
|
|
|
50
56
|
},
|
|
51
57
|
{
|
|
52
58
|
id: "slide-exodia-hunt",
|
|
53
|
-
title: "Complete Your
|
|
59
|
+
title: "Complete Your Collection",
|
|
54
60
|
order: 3,
|
|
55
61
|
active: true,
|
|
56
62
|
background: {
|
|
57
63
|
type: "image",
|
|
58
|
-
url: seedExtMedia("https://
|
|
64
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-complete-collection-20260101/1600/700"),
|
|
59
65
|
dimOverlay: { enabled: true, opacity: 0.45 },
|
|
60
66
|
},
|
|
61
|
-
link: { url:
|
|
67
|
+
link: { url: String(ROUTES.PUBLIC.PRODUCTS), openInNewTab: false },
|
|
62
68
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
63
69
|
createdBy: "user-admin-letitrip",
|
|
64
70
|
createdAt: daysAgo(50),
|
|
@@ -66,12 +72,12 @@ const _rawSlides = [
|
|
|
66
72
|
},
|
|
67
73
|
{
|
|
68
74
|
id: "slide-gx-era",
|
|
69
|
-
title: "
|
|
75
|
+
title: "Pre-Orders Now Open",
|
|
70
76
|
order: 4,
|
|
71
77
|
active: true,
|
|
72
78
|
background: {
|
|
73
79
|
type: "image",
|
|
74
|
-
url: seedExtMedia("https://
|
|
80
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-preorders-open-20260101/1600/700"),
|
|
75
81
|
dimOverlay: { enabled: true, opacity: 0.4 },
|
|
76
82
|
},
|
|
77
83
|
link: { url: "/pre-orders", openInNewTab: false },
|
|
@@ -82,12 +88,12 @@ const _rawSlides = [
|
|
|
82
88
|
},
|
|
83
89
|
{
|
|
84
90
|
id: "slide-psa-graded",
|
|
85
|
-
title: "
|
|
91
|
+
title: "Graded Slabs — Authenticated Collectibles",
|
|
86
92
|
order: 5,
|
|
87
93
|
active: true,
|
|
88
94
|
background: {
|
|
89
95
|
type: "image",
|
|
90
|
-
url: seedExtMedia("https://
|
|
96
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-graded-slabs-20260101/1600/700"),
|
|
91
97
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
92
98
|
},
|
|
93
99
|
link: { url: "/categories/category-graded-cards", openInNewTab: false },
|
|
@@ -103,7 +109,7 @@ const _rawSlides = [
|
|
|
103
109
|
active: false,
|
|
104
110
|
background: {
|
|
105
111
|
type: "image",
|
|
106
|
-
url: seedExtMedia("https://
|
|
112
|
+
url: seedExtMedia("https://picsum.photos/seed/carousel-tournament-promo-20260101/1600/700"),
|
|
107
113
|
dimOverlay: { enabled: true, opacity: 0.5 },
|
|
108
114
|
},
|
|
109
115
|
settings: { autoplayDelayMs: 5000, height: "tall" },
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { getDefaultCurrency } from "./seed-market-config";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { createClaimedCouponId } from "../features/promotions/schemas";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { COUPON_FIELDS } from "../constants/field-names";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @tag layer:seed
|
|
11
11
|
* @tag pattern:none
|
|
12
12
|
* @tag access:server-only
|
|
13
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
14
14
|
* @tag sideEffects:none
|
|
15
15
|
*/
|
|
16
16
|
import { EVENT_FIELDS, EVENT_ENTRY_FIELDS } from "../features/events/schemas";
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds
|
|
2
|
+
* WHY: Seeds 61 FAQs for LetItRip collectibles marketplace — covers general platform, shipping,
|
|
3
3
|
* returns, payments, auctions, pre-orders, product info, account/security, scam awareness.
|
|
4
4
|
* WHAT: Mix of broad collectibles marketplace FAQs + category-specific FAQs (trading cards, action figures,
|
|
5
|
-
* diecast, Beyblade, model kits, grading, authenticity, bundles, prize draws)
|
|
5
|
+
* diecast, Beyblade, model kits, grading, authenticity, bundles, prize draws), plus (Phase 17,
|
|
6
|
+
* 2026-08-17) the verified-badge trust system, classifieds, digital codes, live items, personal
|
|
7
|
+
* catalogue, and seller procurement shipments — features shipped since the FAQs were last written.
|
|
6
8
|
*
|
|
7
9
|
* EXPORTS:
|
|
8
10
|
* faqSeedData — Array of Partial<FAQDocument> for seed runner
|
|
@@ -11,7 +13,7 @@
|
|
|
11
13
|
* @tag layer:seed
|
|
12
14
|
* @tag pattern:none
|
|
13
15
|
* @tag access:server-only
|
|
14
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
16
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
15
17
|
* @tag sideEffects:none
|
|
16
18
|
*/
|
|
17
19
|
const NOW = new Date();
|
|
@@ -1094,4 +1096,118 @@ export const faqSeedData = [
|
|
|
1094
1096
|
createdAt: daysAgo(40),
|
|
1095
1097
|
updatedAt: daysAgo(6),
|
|
1096
1098
|
},
|
|
1099
|
+
{
|
|
1100
|
+
id: "faq-what-is-verified-badge",
|
|
1101
|
+
question: "What does the verified seller badge mean?",
|
|
1102
|
+
answer: html(`<p>A verified badge means LetItRip has manually confirmed the seller's identity and store details before they were allowed to list. Verified sellers have passed our onboarding review — it doesn't guarantee every listing is accurate, but it does mean the seller is a real, accountable business we can act on if something goes wrong. Look for the badge on the store page next to the seller's name.</p>`),
|
|
1103
|
+
category: "account_security",
|
|
1104
|
+
showOnHomepage: false,
|
|
1105
|
+
showInFooter: false,
|
|
1106
|
+
isPinned: false,
|
|
1107
|
+
order: 56,
|
|
1108
|
+
priority: 6,
|
|
1109
|
+
tags: ["verified", "badge", "trust", "seller"],
|
|
1110
|
+
relatedFAQs: ["faq-spot-a-scam-listing", "faq-report-a-scammer"],
|
|
1111
|
+
stats: makeStats(900, 45),
|
|
1112
|
+
seo: { slug: "faq-what-is-verified-badge", metaTitle: "What Is the Verified Seller Badge?", metaDescription: "How LetItRip's seller verification works and what the badge means." },
|
|
1113
|
+
isActive: true,
|
|
1114
|
+
createdBy: "user-admin-letitrip",
|
|
1115
|
+
createdAt: daysAgo(20),
|
|
1116
|
+
updatedAt: daysAgo(2),
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
id: "faq-what-are-classifieds",
|
|
1120
|
+
question: "What are Classified listings?",
|
|
1121
|
+
answer: html(`<p>Classifieds are listings for items that don't ship — local meetups, trades, or collections too large/fragile to post. A classified listing shows the seller's general area (not their exact address) and lets buyers message to arrange an in-person exchange or local pickup. LetItRip's escrow payment protection does not apply to classifieds — agree on payment terms directly with the seller and meet in a safe, public location.</p>`),
|
|
1122
|
+
category: "product_information",
|
|
1123
|
+
showOnHomepage: false,
|
|
1124
|
+
showInFooter: false,
|
|
1125
|
+
isPinned: false,
|
|
1126
|
+
order: 57,
|
|
1127
|
+
priority: 5,
|
|
1128
|
+
tags: ["classifieds", "local", "meetup", "listing-type"],
|
|
1129
|
+
relatedFAQs: ["faq-off-platform-payment-warning"],
|
|
1130
|
+
stats: makeStats(650, 30),
|
|
1131
|
+
seo: { slug: "faq-what-are-classifieds", metaTitle: "What Are Classified Listings?", metaDescription: "How local, no-shipping classified listings work on LetItRip." },
|
|
1132
|
+
isActive: true,
|
|
1133
|
+
createdBy: "user-admin-letitrip",
|
|
1134
|
+
createdAt: daysAgo(18),
|
|
1135
|
+
updatedAt: daysAgo(2),
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
id: "faq-what-are-digital-codes",
|
|
1139
|
+
question: "How do digital code listings work?",
|
|
1140
|
+
answer: html(`<p>Digital code listings sell redeemable codes — game keys, gift cards, DLC unlocks — with no physical shipping. After payment, the code is revealed to you directly in your order. Because codes can't be "returned" once revealed, digital code purchases are final once you've viewed the code; make sure you're buying from a seller with a strong review history.</p>`),
|
|
1141
|
+
category: "product_information",
|
|
1142
|
+
showOnHomepage: false,
|
|
1143
|
+
showInFooter: false,
|
|
1144
|
+
isPinned: false,
|
|
1145
|
+
order: 58,
|
|
1146
|
+
priority: 5,
|
|
1147
|
+
tags: ["digital-codes", "game-keys", "listing-type"],
|
|
1148
|
+
relatedFAQs: ["faq-what-are-classifieds"],
|
|
1149
|
+
stats: makeStats(700, 35),
|
|
1150
|
+
seo: { slug: "faq-what-are-digital-codes", metaTitle: "How Digital Code Listings Work", metaDescription: "Buying and redeeming digital code listings on LetItRip." },
|
|
1151
|
+
isActive: true,
|
|
1152
|
+
createdBy: "user-admin-letitrip",
|
|
1153
|
+
createdAt: daysAgo(18),
|
|
1154
|
+
updatedAt: daysAgo(2),
|
|
1155
|
+
},
|
|
1156
|
+
{
|
|
1157
|
+
id: "faq-what-are-live-items",
|
|
1158
|
+
question: "What are Live listings?",
|
|
1159
|
+
answer: html(`<p>Live listings are for living animals sold by verified exotic-pet and breeder sellers — axolotls, reptiles, and similar. Every live listing requires the seller to specify safe-handling and shipping/pickup instructions, and buyers should confirm care requirements before purchasing. Live-animal sales follow the same escrow protection as physical goods, but delivery timing is coordinated directly with the seller due to live-animal shipping constraints.</p>`),
|
|
1160
|
+
category: "product_information",
|
|
1161
|
+
showOnHomepage: false,
|
|
1162
|
+
showInFooter: false,
|
|
1163
|
+
isPinned: false,
|
|
1164
|
+
order: 59,
|
|
1165
|
+
priority: 4,
|
|
1166
|
+
tags: ["live-items", "live-animals", "listing-type"],
|
|
1167
|
+
relatedFAQs: [],
|
|
1168
|
+
stats: makeStats(420, 20),
|
|
1169
|
+
seo: { slug: "faq-what-are-live-items", metaTitle: "What Are Live Listings?", metaDescription: "Buying live-animal listings safely on LetItRip." },
|
|
1170
|
+
isActive: true,
|
|
1171
|
+
createdBy: "user-admin-letitrip",
|
|
1172
|
+
createdAt: daysAgo(15),
|
|
1173
|
+
updatedAt: daysAgo(2),
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
id: "faq-what-is-personal-catalogue",
|
|
1177
|
+
question: "What is My Catalogue?",
|
|
1178
|
+
answer: html(`<p>My Catalogue is a private space to track your own collection — items you own, whether or not they're for sale. Add items with photos and notes, and optionally submit any of them for review to convert into a real listing without re-entering the details. It's a personal inventory tool first, a fast path to listing second.</p>`),
|
|
1179
|
+
category: "product_information",
|
|
1180
|
+
showOnHomepage: false,
|
|
1181
|
+
showInFooter: false,
|
|
1182
|
+
isPinned: false,
|
|
1183
|
+
order: 60,
|
|
1184
|
+
priority: 4,
|
|
1185
|
+
tags: ["catalogue", "collection", "personal", "inventory"],
|
|
1186
|
+
relatedFAQs: [],
|
|
1187
|
+
stats: makeStats(380, 18),
|
|
1188
|
+
seo: { slug: "faq-what-is-personal-catalogue", metaTitle: "What Is My Catalogue?", metaDescription: "Track your personal collectibles collection with My Catalogue on LetItRip." },
|
|
1189
|
+
isActive: true,
|
|
1190
|
+
createdBy: "user-admin-letitrip",
|
|
1191
|
+
createdAt: daysAgo(12),
|
|
1192
|
+
updatedAt: daysAgo(1),
|
|
1193
|
+
},
|
|
1194
|
+
{
|
|
1195
|
+
id: "faq-what-are-procurement-shipments",
|
|
1196
|
+
question: "What is the Procurement / Shipments tool for sellers?",
|
|
1197
|
+
answer: html(`<p>Procurement Shipments is a seller-side tool for bulk-buying and processing inventory lots. Log a shipment (what you bought, the labor hours spent sorting/categorizing/listing it), and LetItRip computes the labor cost and estimated processing time automatically from your Payout Settings' hourly rate. It's for sellers who buy collections in bulk and turn them into individual listings, not a buyer-facing feature.</p>`),
|
|
1198
|
+
category: "general",
|
|
1199
|
+
showOnHomepage: false,
|
|
1200
|
+
showInFooter: false,
|
|
1201
|
+
isPinned: false,
|
|
1202
|
+
order: 61,
|
|
1203
|
+
priority: 3,
|
|
1204
|
+
tags: ["procurement", "shipments", "seller", "bulk"],
|
|
1205
|
+
relatedFAQs: [],
|
|
1206
|
+
stats: makeStats(210, 10),
|
|
1207
|
+
seo: { slug: "faq-what-are-procurement-shipments", metaTitle: "Procurement Shipments for Sellers", metaDescription: "How LetItRip's seller procurement shipment tracking tool works." },
|
|
1208
|
+
isActive: true,
|
|
1209
|
+
createdBy: "user-admin-letitrip",
|
|
1210
|
+
createdAt: daysAgo(10),
|
|
1211
|
+
updatedAt: daysAgo(1),
|
|
1212
|
+
},
|
|
1097
1213
|
];
|
|
@@ -3,6 +3,8 @@ export declare const groupedListingsSeedData: {
|
|
|
3
3
|
title?: string | undefined;
|
|
4
4
|
description?: string | undefined;
|
|
5
5
|
slug?: string | undefined;
|
|
6
|
+
isTestData?: boolean | undefined;
|
|
7
|
+
testDataExpiresAt?: Date | undefined;
|
|
6
8
|
seoTitle?: string | undefined;
|
|
7
9
|
seoDescription?: string | undefined;
|
|
8
10
|
seoKeywords?: string[] | undefined;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { PRODUCT_FIELDS } from "../constants/field-names";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @tag layer:seed
|
|
10
10
|
* @tag pattern:none
|
|
11
11
|
* @tag access:server-only
|
|
12
|
-
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
12
|
+
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
13
13
|
* @tag sideEffects:none
|
|
14
14
|
*/
|
|
15
15
|
import { seedExtMedia } from "./_helpers/media";
|
package/dist/seed/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export type { SeedCollection, SeedConfig, SeedResult } from "./types";
|
|
2
2
|
export type { SeedLocaleData } from "./seed-market-config";
|
|
3
3
|
export { registerSeedLocale, getSeedLocale, formatSeedPrice, makeSeedPhone, } from "./seed-market-config";
|
|
4
|
-
export type { SeedCollectionName, SeedOperationResult, } from "./actions/demo-seed-actions";
|
|
5
4
|
export type { SeedBaseUserDocument } from "./factories/user.factory";
|
|
6
5
|
export { makeUser, makeFullUser, USER_FIXTURES, } from "./factories/user.factory";
|
|
7
6
|
export type { SeedBaseProductDocument } from "./factories/product.factory";
|
|
@@ -80,10 +79,11 @@ export { conversationsSeedData } from "./conversations-seed-data";
|
|
|
80
79
|
export { groupedListingsSeedData } from "./grouped-listings-seed-data";
|
|
81
80
|
export { scammersSeedData } from "./scammers-seed-data";
|
|
82
81
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
|
82
|
+
export { testerChecklistSeedData, storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData, blogTesterSeedData, eventsTesterSeedData, } from "../features/tester/seed-data";
|
|
83
83
|
export { productFeaturesSeedData } from "./product-features-seed-data";
|
|
84
84
|
export { offersSeedData } from "./offers-seed-data";
|
|
85
85
|
export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
86
|
-
export type { SeedManifest, SeedManifestEntry } from "./manifest";
|
|
86
|
+
export type { SeedManifest, SeedManifestEntry, SeedCollectionName } from "./manifest";
|
|
87
87
|
export { SEED_MANIFEST } from "./manifest";
|
|
88
88
|
export type { FirestoreIndexConfig } from "./firestore-indexes";
|
|
89
89
|
export { mergeFirestoreIndices, generateMergedFirestoreIndexFile, } from "./firestore-indexes";
|
package/dist/seed/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// appkit/src/seed/index.ts
|
|
2
2
|
//
|
|
3
|
-
// Pure fixture data + factories
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// Pure fixture data + factories, consumed by appkit/scripts/seed-cli.mjs
|
|
4
|
+
// (direct-to-Firestore CLI seeding, no web route). The admin seed-panel web
|
|
5
|
+
// UI + its API route were removed — see CLAUDE.md Phase 4 (demo seed panel
|
|
6
|
+
// removal).
|
|
6
7
|
export { registerSeedLocale, getSeedLocale, formatSeedPrice, makeSeedPhone, } from "./seed-market-config";
|
|
7
8
|
export { makeUser, makeFullUser, USER_FIXTURES, } from "./factories/user.factory";
|
|
8
9
|
export { makeProduct, makeFullProduct, PRODUCT_FIXTURES, } from "./factories/product.factory";
|
|
@@ -67,6 +68,9 @@ export { conversationsSeedData } from "./conversations-seed-data";
|
|
|
67
68
|
export { groupedListingsSeedData } from "./grouped-listings-seed-data";
|
|
68
69
|
export { scammersSeedData } from "./scammers-seed-data";
|
|
69
70
|
export { supportTicketsSeedData } from "./support-tickets-seed-data";
|
|
71
|
+
// Tester sandbox seed fixtures live in ../features/tester/seed-data (isolated from this
|
|
72
|
+
// folder on purpose) — re-exported here so every other seed consumer keeps one import surface.
|
|
73
|
+
export { testerChecklistSeedData, storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData, blogTesterSeedData, eventsTesterSeedData, } from "../features/tester/seed-data";
|
|
70
74
|
export { productFeaturesSeedData } from "./product-features-seed-data";
|
|
71
75
|
export { offersSeedData } from "./offers-seed-data";
|
|
72
76
|
// S-STORE Extensions (Tier S-STORE) — 11 new collections
|
package/dist/seed/manifest.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Seed Manifest
|
|
3
3
|
*
|
|
4
|
-
* Lightweight index of every seeded document across all collections
|
|
5
|
-
*
|
|
4
|
+
* Lightweight index of every seeded document across all collections —
|
|
5
|
+
* name/id pairs without loading the full seed data payload.
|
|
6
6
|
* Auto-derived from the live seed data files — stays in sync automatically.
|
|
7
7
|
*/
|
|
8
|
-
import type { SeedCollectionName } from "./actions/demo-seed-actions";
|
|
9
8
|
export interface SeedManifestEntry {
|
|
10
9
|
id: string;
|
|
11
10
|
name: string;
|
|
12
11
|
type?: string;
|
|
13
12
|
}
|
|
13
|
+
/** Every collection name the CLI seeder (appkit/scripts/seed-cli.mjs) and this manifest cover. */
|
|
14
|
+
export type SeedCollectionName = "users" | "addresses" | "categories" | "stores" | "products" | "orders" | "reviews" | "bids" | "coupons" | "carousels" | "carouselSlides" | "homepageSections" | "siteSettings" | "faqs" | "notifications" | "payouts" | "blogPosts" | "events" | "eventEntries" | "sessions" | "carts" | "wishlists" | "history" | "conversations" | "groupedListings" | "scammerProfiles" | "supportTickets" | "productFeatures" | "offers" | "couponUsage" | "claimedCoupons" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "storeWhatsAppConfig" | "storeGoogleConfig" | "roleOverrides" | "customRoles" | "adminNotifications" | "lotteryEntries" | "shipments" | "shipmentLots" | "shipmentItems" | "catalogueItems" | "testerChecklistItems";
|
|
14
15
|
export type SeedManifest = Record<SeedCollectionName, SeedManifestEntry[]>;
|
|
15
16
|
export declare const SEED_MANIFEST: SeedManifest;
|
package/dist/seed/manifest.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Seed Manifest
|
|
3
3
|
*
|
|
4
|
-
* Lightweight index of every seeded document across all collections
|
|
5
|
-
*
|
|
4
|
+
* Lightweight index of every seeded document across all collections —
|
|
5
|
+
* name/id pairs without loading the full seed data payload.
|
|
6
6
|
* Auto-derived from the live seed data files — stays in sync automatically.
|
|
7
7
|
*/
|
|
8
8
|
import { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
|
|
@@ -50,6 +50,8 @@ import { productFeaturesSeedData } from "./product-features-seed-data";
|
|
|
50
50
|
import { offersSeedData } from "./offers-seed-data";
|
|
51
51
|
import { couponUsageSeedData } from "./coupon-usage-seed-data";
|
|
52
52
|
import { claimedCouponsSeedData } from "./claimed-coupons-seed-data";
|
|
53
|
+
// Tester sandbox seed fixtures live in ../features/tester/seed-data (isolated on purpose).
|
|
54
|
+
import { testerChecklistSeedData, storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData, blogTesterSeedData, eventsTesterSeedData, } from "../features/tester/seed-data";
|
|
53
55
|
function asArr(items) {
|
|
54
56
|
return items ?? [];
|
|
55
57
|
}
|
|
@@ -76,12 +78,12 @@ const LISTING_TYPE_TO_MANIFEST_TAG = {
|
|
|
76
78
|
stickers: "stickers",
|
|
77
79
|
};
|
|
78
80
|
export const SEED_MANIFEST = {
|
|
79
|
-
categories: pick(asArr(categoriesSeedData)),
|
|
81
|
+
categories: pick([...asArr(categoriesSeedData), ...asArr(categoriesTesterSeedData)]),
|
|
80
82
|
users: pick(asArr(usersSeedData).map((u) => ({
|
|
81
83
|
...u,
|
|
82
84
|
name: u.displayName ?? u.email ?? u.uid,
|
|
83
85
|
}))),
|
|
84
|
-
stores: pick(asArr(storesSeedData).map((s) => ({
|
|
86
|
+
stores: pick([...asArr(storesSeedData), ...asArr(storesTesterSeedData)].map((s) => ({
|
|
85
87
|
...s,
|
|
86
88
|
name: s.storeName ?? s.id,
|
|
87
89
|
}))),
|
|
@@ -95,6 +97,7 @@ export const SEED_MANIFEST = {
|
|
|
95
97
|
...asArr(productsLiveItemsSeedData),
|
|
96
98
|
...asArr(productsArtSeedData),
|
|
97
99
|
...asArr(productsStickersSeedData),
|
|
100
|
+
...asArr(productsTesterSeedData),
|
|
98
101
|
].map((p) => ({
|
|
99
102
|
...p,
|
|
100
103
|
type: p.listingType === "bundle"
|
|
@@ -134,11 +137,11 @@ export const SEED_MANIFEST = {
|
|
|
134
137
|
shipmentLots: pick(asArr(shipmentLotsSeedData), "lotName"),
|
|
135
138
|
shipmentItems: pick(asArr(shipmentItemsSeedData), "title"),
|
|
136
139
|
catalogueItems: pick(asArr(catalogueSeedData), "title"),
|
|
137
|
-
blogPosts: pick(asArr(blogPostsSeedData).map((p) => ({
|
|
140
|
+
blogPosts: pick([...asArr(blogPostsSeedData), ...asArr(blogTesterSeedData)].map((p) => ({
|
|
138
141
|
...p,
|
|
139
142
|
name: p.title ?? p.id,
|
|
140
143
|
}))),
|
|
141
|
-
events: pick(asArr(eventsSeedData).map((e) => ({
|
|
144
|
+
events: pick([...asArr(eventsSeedData), ...asArr(eventsTesterSeedData)].map((e) => ({
|
|
142
145
|
...e,
|
|
143
146
|
name: e.title ?? e.id,
|
|
144
147
|
}))),
|
|
@@ -224,4 +227,8 @@ export const SEED_MANIFEST = {
|
|
|
224
227
|
roleOverrides: [],
|
|
225
228
|
customRoles: [],
|
|
226
229
|
adminNotifications: [],
|
|
230
|
+
testerChecklistItems: pick(asArr(testerChecklistSeedData).map((c) => ({
|
|
231
|
+
...c,
|
|
232
|
+
name: c.label ?? c.id,
|
|
233
|
+
}))),
|
|
227
234
|
};
|