@mohasinac/appkit 3.6.5 → 3.8.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/categories/data.js +2 -2
- 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 +56 -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 +39 -12
- package/dist/constants/api-endpoints.js +17 -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/AdminBidsView.js +6 -6
- package/dist/features/admin/components/AdminBrandsView.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/AdminPrizeDrawsView.js +3 -3
- package/dist/features/admin/components/AdminProductEditorView.js +5 -2
- package/dist/features/admin/components/AdminReviewsView.js +5 -5
- 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/AdminSublistingCategoriesView.js +1 -1
- 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/repository/session.repository.d.ts +2 -0
- package/dist/features/auth/repository/session.repository.js +4 -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/api/route.js +2 -2
- package/dist/features/categories/components/CategoriesIndexListing.js +3 -3
- 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/repository/event-entry.repository.js +1 -0
- package/dist/features/events/schemas/firestore.d.ts +7 -1
- package/dist/features/events/schemas/firestore.js +1 -0
- package/dist/features/layout/BackToTop.d.ts +6 -1
- package/dist/features/layout/BackToTop.js +31 -6
- package/dist/features/layout/BottomNavbar.js +1 -1
- package/dist/features/layout/NavItem.js +1 -1
- package/dist/features/layout/NavbarLayout.js +2 -2
- 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/constants/sieve.d.ts +0 -6
- package/dist/features/products/constants/sieve.js +4 -2
- package/dist/features/products/repository/products.repository.d.ts +20 -0
- package/dist/features/products/repository/products.repository.js +5 -0
- package/dist/features/products/schemas/firestore.d.ts +4 -0
- package/dist/features/promotions/components/CouponsIndexListing.js +18 -5
- package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
- package/dist/features/search/hooks/useNavSuggestions.js +20 -1
- 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/SellerCouponsView.js +1 -1
- 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/StoreDetailLayoutView.js +1 -1
- 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/repository/store.repository.js +3 -0
- 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 +29 -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 +50 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.js +196 -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 +64 -185
- 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 +181 -165
- 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 +53 -50
- package/dist/tokens/themes/default-light.d.ts +5 -1
- package/dist/tokens/themes/default-light.js +48 -44
- package/dist/tokens/themes/sunset.js +4 -4
- package/dist/tokens/tokens.css +128 -122
- package/dist/ui/components/CollapsibleSection.d.ts +15 -0
- package/dist/ui/components/CollapsibleSection.js +13 -0
- package/dist/ui/components/ListingToolbar.js +3 -2
- 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
package/scripts/seed-cli.mjs
CHANGED
|
@@ -167,6 +167,9 @@ const {
|
|
|
167
167
|
wishlistsSeedData, historySeedData, conversationsSeedData,
|
|
168
168
|
groupedListingsSeedData,
|
|
169
169
|
scammersSeedData, productFeaturesSeedData,
|
|
170
|
+
testerChecklistSeedData,
|
|
171
|
+
storesTesterSeedData, categoriesTesterSeedData, productsTesterSeedData,
|
|
172
|
+
blogTesterSeedData, eventsTesterSeedData,
|
|
170
173
|
// collection constants
|
|
171
174
|
USER_COLLECTION, ADDRESS_SUBCOLLECTION, STORE_ADDRESS_SUBCOLLECTION,
|
|
172
175
|
BRANDS_COLLECTION, CATEGORIES_COLLECTION, STORE_COLLECTION,
|
|
@@ -178,6 +181,7 @@ const {
|
|
|
178
181
|
CART_COLLECTION, CONVERSATIONS_COLLECTION,
|
|
179
182
|
GROUPED_LISTINGS_COLLECTION, SCAMMER_COLLECTION,
|
|
180
183
|
WISHLIST_COLLECTION, HISTORY_COLLECTION, PRODUCT_FEATURES_COLLECTION,
|
|
184
|
+
TESTER_CHECKLIST_ITEM_COLLECTION,
|
|
181
185
|
// PII helpers
|
|
182
186
|
encryptPiiFields, addPiiIndices,
|
|
183
187
|
encryptPayoutDetails, encryptPayoutBankAccount, encryptShippingConfig,
|
|
@@ -222,6 +226,7 @@ const COLLECTION_MAP = {
|
|
|
222
226
|
groupedListings: GROUPED_LISTINGS_COLLECTION,
|
|
223
227
|
scammerProfiles: SCAMMER_COLLECTION,
|
|
224
228
|
productFeatures: PRODUCT_FEATURES_COLLECTION,
|
|
229
|
+
testerChecklistItems: TESTER_CHECKLIST_ITEM_COLLECTION,
|
|
225
230
|
};
|
|
226
231
|
|
|
227
232
|
const SEED_DATA_MAP = {
|
|
@@ -229,9 +234,9 @@ const SEED_DATA_MAP = {
|
|
|
229
234
|
addresses: addressesSeedData,
|
|
230
235
|
storeAddresses: storeAddressesSeedData,
|
|
231
236
|
brands: brandsSeedData,
|
|
232
|
-
categories: categoriesSeedData,
|
|
233
|
-
stores: storesSeedData,
|
|
234
|
-
products: [...(productsStandardSeedData || []), ...(productsAuctionsSeedData || []), ...(productsPreordersSeedData || [])],
|
|
237
|
+
categories: [...(categoriesSeedData || []), ...(categoriesTesterSeedData || [])],
|
|
238
|
+
stores: [...(storesSeedData || []), ...(storesTesterSeedData || [])],
|
|
239
|
+
products: [...(productsStandardSeedData || []), ...(productsAuctionsSeedData || []), ...(productsPreordersSeedData || []), ...(productsTesterSeedData || [])],
|
|
235
240
|
orders: ordersSeedData,
|
|
236
241
|
reviews: reviewsSeedData,
|
|
237
242
|
bids: bidsSeedData,
|
|
@@ -244,8 +249,8 @@ const SEED_DATA_MAP = {
|
|
|
244
249
|
faqs: faqSeedData,
|
|
245
250
|
notifications: notificationsSeedData,
|
|
246
251
|
payouts: payoutsSeedData,
|
|
247
|
-
blogPosts: blogPostsSeedData,
|
|
248
|
-
events: eventsSeedData,
|
|
252
|
+
blogPosts: [...(blogPostsSeedData || []), ...(blogTesterSeedData || [])],
|
|
253
|
+
events: [...(eventsSeedData || []), ...(eventsTesterSeedData || [])],
|
|
249
254
|
eventEntries: eventEntriesSeedData,
|
|
250
255
|
sessions: sessionsSeedData,
|
|
251
256
|
carts: cartsSeedData,
|
|
@@ -255,6 +260,7 @@ const SEED_DATA_MAP = {
|
|
|
255
260
|
groupedListings: groupedListingsSeedData,
|
|
256
261
|
scammerProfiles: scammersSeedData,
|
|
257
262
|
productFeatures: productFeaturesSeedData,
|
|
263
|
+
testerChecklistItems: testerChecklistSeedData,
|
|
258
264
|
};
|
|
259
265
|
|
|
260
266
|
const ALL_COLLECTIONS = Object.keys(COLLECTION_MAP);
|
|
@@ -323,15 +329,15 @@ async function countExisting(colName) {
|
|
|
323
329
|
if (seed.length === 0) return 0;
|
|
324
330
|
|
|
325
331
|
if (colName === "addresses") {
|
|
326
|
-
|
|
327
|
-
|
|
332
|
+
// SB-UNI-A: top-level `addresses` collection, not users/{uid}/addresses.
|
|
333
|
+
const refs = seed.filter((d) => d.id).map((d) => db.collection("addresses").doc(d.id));
|
|
328
334
|
if (refs.length === 0) return 0;
|
|
329
335
|
const snaps = await db.getAll(...refs);
|
|
330
336
|
return snaps.filter((s) => s.exists).length;
|
|
331
337
|
}
|
|
332
338
|
if (colName === "storeAddresses") {
|
|
333
|
-
|
|
334
|
-
|
|
339
|
+
// Also lands in the top-level `addresses` collection (see loadStoreAddresses).
|
|
340
|
+
const refs = seed.filter((d) => d.id).map((d) => db.collection("addresses").doc(d.id));
|
|
335
341
|
if (refs.length === 0) return 0;
|
|
336
342
|
const snaps = await db.getAll(...refs);
|
|
337
343
|
return snaps.filter((s) => s.exists).length;
|
|
@@ -360,15 +366,18 @@ async function countExisting(colName) {
|
|
|
360
366
|
return snaps.filter((s) => s.exists).length;
|
|
361
367
|
}
|
|
362
368
|
if (colName === "faqs") {
|
|
369
|
+
// Mirrors loadGeneric: prefer the explicit id (every current faq record has
|
|
370
|
+
// one), only derive via generateFAQId for a record that genuinely lacks one.
|
|
363
371
|
const refs = seed.map((faq) => {
|
|
364
|
-
const id = generateFAQId({ category: faq.category, question: faq.question });
|
|
372
|
+
const id = faq.id ?? generateFAQId({ category: faq.category, question: faq.question });
|
|
365
373
|
return db.collection(COLLECTION_MAP[colName]).doc(id);
|
|
366
374
|
});
|
|
367
375
|
if (refs.length === 0) return 0;
|
|
368
376
|
const snaps = await db.getAll(...refs);
|
|
369
377
|
return snaps.filter((s) => s.exists).length;
|
|
370
378
|
}
|
|
371
|
-
|
|
379
|
+
// Mirrors loadGeneric's docId = id ?? slug resolution.
|
|
380
|
+
const refs = seed.filter((d) => d.id ?? d.slug).map((d) => db.collection(COLLECTION_MAP[colName]).doc(d.id ?? d.slug));
|
|
372
381
|
if (refs.length === 0) return 0;
|
|
373
382
|
const snaps = await db.getAll(...refs);
|
|
374
383
|
return snaps.filter((s) => s.exists).length;
|
|
@@ -430,7 +439,18 @@ async function loadUsers(seed, stats) {
|
|
|
430
439
|
const authUserData = { displayName, emailVerified, disabled };
|
|
431
440
|
if (email && typeof email === "string") authUserData.email = email;
|
|
432
441
|
if (phoneNumber && typeof phoneNumber === "string") authUserData.phoneNumber = phoneNumber;
|
|
433
|
-
|
|
442
|
+
// Firebase Auth's photoURL field requires an absolute URL. Seed data's
|
|
443
|
+
// photoURL is wrapped by seedExtMedia() into a relative /media/ext?url=...
|
|
444
|
+
// app-proxy path — valid for Firestore + the app's own avatar rendering,
|
|
445
|
+
// but auth.createUser()/updateUser() reject it with "must be a valid URL"
|
|
446
|
+
// and abort the WHOLE user record (Auth + Firestore both skipped) before
|
|
447
|
+
// ever reaching the Firestore write below. The app never reads Auth's own
|
|
448
|
+
// photoURL copy anyway — it always resolves avatars via the Firestore
|
|
449
|
+
// users doc — so just skip setting it on the Auth record for relative
|
|
450
|
+
// paths instead of failing the entire seed row.
|
|
451
|
+
if (photoURL && typeof photoURL === "string" && /^https?:\/\//.test(photoURL)) {
|
|
452
|
+
authUserData.photoURL = photoURL;
|
|
453
|
+
}
|
|
434
454
|
|
|
435
455
|
if (!userExists) {
|
|
436
456
|
await resolveAuthConflicts(uid, authUserData);
|
|
@@ -496,9 +516,14 @@ async function loadGeneric(colName, seed, firestoreCollection, stats) {
|
|
|
496
516
|
id = generateFAQId({ category: docData.category, question: docData.question });
|
|
497
517
|
if (!id) { stats.errors++; continue; }
|
|
498
518
|
} else if (!id) { stats.errors++; continue; }
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
519
|
+
// `id` already carries the project's mandatory slug prefix (blog-, event-,
|
|
520
|
+
// faq-, etc. — see CLAUDE.md's Slug Prefix System). Preferring the bare
|
|
521
|
+
// `slug` field here (as this used to) wrote every blogPosts/events doc
|
|
522
|
+
// under its unprefixed slug instead, e.g. "auction-feature-launch"
|
|
523
|
+
// instead of "blog-auction-feature-launch" — found 2026-08-17 auditing
|
|
524
|
+
// real Firestore doc IDs after a full reseed.
|
|
525
|
+
const docId = id ?? docData.slug;
|
|
526
|
+
if (!data.slug) data.slug = docData.slug ?? docId;
|
|
502
527
|
items.push({
|
|
503
528
|
ref: db.collection(firestoreCollection).doc(docId),
|
|
504
529
|
data: encryptSeedPii(colName, stripUndefined(data)),
|
|
@@ -530,9 +555,38 @@ async function cmdLoad() {
|
|
|
530
555
|
if (colName === "users") {
|
|
531
556
|
await loadUsers(seed, stats);
|
|
532
557
|
} else if (colName === "addresses") {
|
|
533
|
-
|
|
558
|
+
// SB-UNI-A (2026-05-13) unified addresses into one top-level collection
|
|
559
|
+
// with an ownerType/ownerId discriminator, replacing the two prior
|
|
560
|
+
// subcollections (users/{uid}/addresses, stores/{slug}/addresses) this
|
|
561
|
+
// loader used to write to. addressesSeedData already carries
|
|
562
|
+
// ownerType/ownerId directly — write it straight to the top-level
|
|
563
|
+
// collection instead of nesting under USER_COLLECTION's old subcollection.
|
|
564
|
+
for (const d of seed) {
|
|
565
|
+
try {
|
|
566
|
+
const { id, ownerType, ownerId, ...data } = d;
|
|
567
|
+
if (!id || !ownerType || !ownerId) { stats.errors++; continue; }
|
|
568
|
+
const payload = encryptPiiFields(stripUndefined({ ownerType, ownerId, ...data }), [...ADDRESS_PII_FIELDS]);
|
|
569
|
+
await db.collection("addresses").doc(id).set(payload, { merge: true });
|
|
570
|
+
stats.created++;
|
|
571
|
+
} catch (err) { console.error(` ✗ ${err.message}`); stats.errors++; }
|
|
572
|
+
}
|
|
534
573
|
} else if (colName === "storeAddresses") {
|
|
535
|
-
|
|
574
|
+
// storeAddressesSeedData predates the SB-UNI-A unification and still
|
|
575
|
+
// carries the old storeSlug field instead of ownerType/ownerId — derive
|
|
576
|
+
// the unified shape at load time rather than writing to the deleted
|
|
577
|
+
// stores/{slug}/addresses subcollection.
|
|
578
|
+
for (const d of seed) {
|
|
579
|
+
try {
|
|
580
|
+
const { id, storeSlug, ...data } = d;
|
|
581
|
+
if (!id || !storeSlug) { stats.errors++; continue; }
|
|
582
|
+
const payload = encryptPiiFields(
|
|
583
|
+
stripUndefined({ ownerType: "store", ownerId: storeSlug, ...data }),
|
|
584
|
+
[...ADDRESS_PII_FIELDS],
|
|
585
|
+
);
|
|
586
|
+
await db.collection("addresses").doc(id).set(payload, { merge: true });
|
|
587
|
+
stats.created++;
|
|
588
|
+
} catch (err) { console.error(` ✗ ${err.message}`); stats.errors++; }
|
|
589
|
+
}
|
|
536
590
|
} else if (colName === "couponUsage") {
|
|
537
591
|
// shape: { userId, couponId, ... } — no PII
|
|
538
592
|
for (const d of seed) {
|