@mohasinac/appkit 2.7.32 → 2.7.33
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/server/features/faqs/index.d.ts +1 -0
- package/dist/_internal/server/features/faqs/index.js +1 -0
- package/dist/_internal/server/features/faqs/og.d.ts +9 -0
- package/dist/_internal/server/features/faqs/og.js +50 -0
- package/dist/_internal/server/features/reviews/index.d.ts +2 -0
- package/dist/_internal/server/features/reviews/index.js +2 -0
- package/dist/_internal/server/features/reviews/og-data.d.ts +1 -0
- package/dist/_internal/server/features/reviews/og-data.js +7 -0
- package/dist/_internal/server/features/reviews/og.d.ts +19 -0
- package/dist/_internal/server/features/reviews/og.js +70 -0
- package/dist/_internal/server/features/scams/index.d.ts +1 -0
- package/dist/_internal/server/features/scams/index.js +1 -0
- package/dist/_internal/server/features/scams/og.d.ts +18 -0
- package/dist/_internal/server/features/scams/og.js +59 -0
- package/dist/seed/conversations-seed-data.js +52 -0
- package/dist/seed/notifications-seed-data.js +10 -0
- package/dist/seed/sessions-seed-data.js +35 -1
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seed/wishlists-seed-data.js +5 -1
- package/dist/server-entry.d.ts +3 -1
- package/dist/server-entry.js +3 -1
- package/dist/server.d.ts +4 -0
- package/dist/server.js +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { renderFaqOg, renderFaqOgImage, type FaqOgData } from "./og";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { renderFaqOg, renderFaqOgImage } from "./og";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
export interface FaqOgData {
|
|
3
|
+
categoryLabel: string;
|
|
4
|
+
siteName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function renderFaqOg(category: string, opts: {
|
|
7
|
+
siteName: string;
|
|
8
|
+
}): ReactElement;
|
|
9
|
+
export declare function renderFaqOgImage(data: FaqOgData): ReactElement;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function renderFaqOg(category, opts) {
|
|
3
|
+
const label = category
|
|
4
|
+
.replace(/-/g, " ")
|
|
5
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
6
|
+
return renderFaqOgImage({ categoryLabel: label, siteName: opts.siteName });
|
|
7
|
+
}
|
|
8
|
+
export function renderFaqOgImage(data) {
|
|
9
|
+
const { categoryLabel, siteName } = data;
|
|
10
|
+
return (_jsxs("div", { style: {
|
|
11
|
+
display: "flex",
|
|
12
|
+
width: "100%",
|
|
13
|
+
height: "100%",
|
|
14
|
+
background: "linear-gradient(135deg, #3570fc 0%, #1343de 100%)",
|
|
15
|
+
fontFamily: "sans-serif",
|
|
16
|
+
alignItems: "center",
|
|
17
|
+
justifyContent: "center",
|
|
18
|
+
padding: "80px",
|
|
19
|
+
position: "relative",
|
|
20
|
+
overflow: "hidden",
|
|
21
|
+
}, children: [_jsx("div", { style: {
|
|
22
|
+
position: "absolute",
|
|
23
|
+
inset: 0,
|
|
24
|
+
opacity: 0.06,
|
|
25
|
+
backgroundImage: "radial-gradient(circle at 25% 25%, white 1px, transparent 0), radial-gradient(circle at 75% 75%, white 1px, transparent 0)",
|
|
26
|
+
backgroundSize: "64px 64px",
|
|
27
|
+
} }), _jsxs("div", { style: {
|
|
28
|
+
position: "relative",
|
|
29
|
+
display: "flex",
|
|
30
|
+
flexDirection: "column",
|
|
31
|
+
alignItems: "center",
|
|
32
|
+
gap: 24,
|
|
33
|
+
textAlign: "center",
|
|
34
|
+
}, children: [_jsxs("div", { style: {
|
|
35
|
+
fontSize: 20,
|
|
36
|
+
color: "rgba(255,255,255,0.7)",
|
|
37
|
+
letterSpacing: 3,
|
|
38
|
+
textTransform: "uppercase",
|
|
39
|
+
}, children: [siteName, " \u00B7 Help Centre"] }), _jsx("div", { style: {
|
|
40
|
+
fontSize: 72,
|
|
41
|
+
fontWeight: 800,
|
|
42
|
+
color: "white",
|
|
43
|
+
lineHeight: 1.1,
|
|
44
|
+
letterSpacing: "-1px",
|
|
45
|
+
}, children: categoryLabel }), _jsx("div", { style: {
|
|
46
|
+
fontSize: 32,
|
|
47
|
+
color: "rgba(255,255,255,0.8)",
|
|
48
|
+
fontWeight: 400,
|
|
49
|
+
}, children: "Frequently Asked Questions" })] })] }));
|
|
50
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct } from "./data";
|
|
2
|
+
export { getReviewById } from "./og-data";
|
|
3
|
+
export { renderReviewOg, renderReviewOgImage, type ReviewOgData } from "./og";
|
|
2
4
|
export { createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./actions";
|
|
3
5
|
export { REVIEWS_PAGE_SIZE, REVIEW_MAX_RATING, REVIEW_MIN_RATING, REVIEW_IMAGES_MAX } from "../../../shared/features/reviews/config";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct } from "./data";
|
|
2
|
+
export { getReviewById } from "./og-data";
|
|
3
|
+
export { renderReviewOg, renderReviewOgImage } from "./og";
|
|
2
4
|
export { createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./actions";
|
|
3
5
|
export { REVIEWS_PAGE_SIZE, REVIEW_MAX_RATING, REVIEW_MIN_RATING, REVIEW_IMAGES_MAX } from "../../../shared/features/reviews/config";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getReviewById: (id: string) => Promise<import("../../../..").ReviewDocument | null>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
export interface ReviewOgData {
|
|
3
|
+
productTitle: string;
|
|
4
|
+
rating: number;
|
|
5
|
+
reviewerInitial: string;
|
|
6
|
+
reviewExcerpt?: string | null;
|
|
7
|
+
}
|
|
8
|
+
interface ReviewDocLike {
|
|
9
|
+
title?: string | null;
|
|
10
|
+
productName?: string | null;
|
|
11
|
+
rating?: number | null;
|
|
12
|
+
userName?: string | null;
|
|
13
|
+
body?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function renderReviewOg(doc: ReviewDocLike | null | undefined, opts: {
|
|
16
|
+
siteName: string;
|
|
17
|
+
}): ReactElement;
|
|
18
|
+
export declare function renderReviewOgImage(data: ReviewOgData, siteName: string): ReactElement;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
function stars(n) {
|
|
3
|
+
return "★".repeat(Math.min(5, Math.max(1, Math.round(n))));
|
|
4
|
+
}
|
|
5
|
+
export function renderReviewOg(doc, opts) {
|
|
6
|
+
return renderReviewOgImage({
|
|
7
|
+
productTitle: doc?.productName ?? doc?.title ?? "Collectible",
|
|
8
|
+
rating: doc?.rating ?? 5,
|
|
9
|
+
reviewerInitial: (doc?.userName?.[0] ?? "?").toUpperCase(),
|
|
10
|
+
reviewExcerpt: doc?.body ? doc.body.slice(0, 120) : null,
|
|
11
|
+
}, opts.siteName);
|
|
12
|
+
}
|
|
13
|
+
export function renderReviewOgImage(data, siteName) {
|
|
14
|
+
const { productTitle, rating, reviewerInitial, reviewExcerpt } = data;
|
|
15
|
+
return (_jsxs("div", { style: {
|
|
16
|
+
display: "flex",
|
|
17
|
+
width: "100%",
|
|
18
|
+
height: "100%",
|
|
19
|
+
background: "#0f172a",
|
|
20
|
+
fontFamily: "sans-serif",
|
|
21
|
+
alignItems: "center",
|
|
22
|
+
justifyContent: "center",
|
|
23
|
+
padding: "60px",
|
|
24
|
+
position: "relative",
|
|
25
|
+
}, children: [_jsx("div", { style: {
|
|
26
|
+
position: "absolute",
|
|
27
|
+
inset: 0,
|
|
28
|
+
background: "linear-gradient(135deg, #0f172a 0%, #1e293b 100%)",
|
|
29
|
+
} }), _jsxs("div", { style: {
|
|
30
|
+
position: "relative",
|
|
31
|
+
display: "flex",
|
|
32
|
+
flexDirection: "column",
|
|
33
|
+
width: "100%",
|
|
34
|
+
maxWidth: 1080,
|
|
35
|
+
gap: 32,
|
|
36
|
+
}, children: [_jsxs("div", { style: { fontSize: 18, color: "#94a3b8", letterSpacing: 2, textTransform: "uppercase" }, children: [siteName, " \u00B7 Customer Review"] }), _jsxs("div", { style: {
|
|
37
|
+
display: "flex",
|
|
38
|
+
alignItems: "center",
|
|
39
|
+
gap: 24,
|
|
40
|
+
}, children: [_jsx("div", { style: {
|
|
41
|
+
width: 80,
|
|
42
|
+
height: 80,
|
|
43
|
+
borderRadius: 40,
|
|
44
|
+
background: "linear-gradient(135deg, #3570fc, #e91e8c)",
|
|
45
|
+
display: "flex",
|
|
46
|
+
alignItems: "center",
|
|
47
|
+
justifyContent: "center",
|
|
48
|
+
fontSize: 36,
|
|
49
|
+
fontWeight: 700,
|
|
50
|
+
color: "white",
|
|
51
|
+
flexShrink: 0,
|
|
52
|
+
}, children: reviewerInitial }), _jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 4 }, children: [_jsx("div", { style: { fontSize: 32, color: "#f59e0b", letterSpacing: 2 }, children: stars(rating) }), _jsxs("div", { style: { fontSize: 20, color: "#64748b" }, children: [rating, "/5"] })] })] }), _jsx("div", { style: {
|
|
53
|
+
fontSize: 48,
|
|
54
|
+
fontWeight: 700,
|
|
55
|
+
color: "#f1f5f9",
|
|
56
|
+
lineHeight: 1.2,
|
|
57
|
+
display: "-webkit-box",
|
|
58
|
+
WebkitLineClamp: 2,
|
|
59
|
+
WebkitBoxOrient: "vertical",
|
|
60
|
+
overflow: "hidden",
|
|
61
|
+
}, children: productTitle }), reviewExcerpt && (_jsxs("div", { style: {
|
|
62
|
+
fontSize: 24,
|
|
63
|
+
color: "#94a3b8",
|
|
64
|
+
lineHeight: 1.5,
|
|
65
|
+
display: "-webkit-box",
|
|
66
|
+
WebkitLineClamp: 2,
|
|
67
|
+
WebkitBoxOrient: "vertical",
|
|
68
|
+
overflow: "hidden",
|
|
69
|
+
}, children: ["\u201C", reviewExcerpt, "\u201D"] }))] })] }));
|
|
70
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
export interface ScamOgData {
|
|
3
|
+
displayName: string;
|
|
4
|
+
scamTypeLabel: string;
|
|
5
|
+
reportCount: number;
|
|
6
|
+
}
|
|
7
|
+
interface ScammerDocLike {
|
|
8
|
+
displayNames?: string[];
|
|
9
|
+
scamType?: string;
|
|
10
|
+
incidents?: unknown[];
|
|
11
|
+
totalReports?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function renderScamOg(doc: ScammerDocLike | null | undefined, opts: {
|
|
14
|
+
siteName: string;
|
|
15
|
+
scamTypeLabel?: string;
|
|
16
|
+
}): ReactElement;
|
|
17
|
+
export declare function renderScamOgImage(data: ScamOgData, siteName: string): ReactElement;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function renderScamOg(doc, opts) {
|
|
3
|
+
return renderScamOgImage({
|
|
4
|
+
displayName: doc?.displayNames?.[0] ?? "Unknown",
|
|
5
|
+
scamTypeLabel: opts.scamTypeLabel ?? doc?.scamType ?? "Scammer",
|
|
6
|
+
reportCount: doc?.totalReports ?? 0,
|
|
7
|
+
}, opts.siteName);
|
|
8
|
+
}
|
|
9
|
+
export function renderScamOgImage(data, siteName) {
|
|
10
|
+
const { displayName, scamTypeLabel, reportCount } = data;
|
|
11
|
+
return (_jsxs("div", { style: {
|
|
12
|
+
display: "flex",
|
|
13
|
+
width: "100%",
|
|
14
|
+
height: "100%",
|
|
15
|
+
background: "#0f172a",
|
|
16
|
+
fontFamily: "sans-serif",
|
|
17
|
+
alignItems: "center",
|
|
18
|
+
padding: "60px 80px",
|
|
19
|
+
position: "relative",
|
|
20
|
+
overflow: "hidden",
|
|
21
|
+
}, children: [_jsx("div", { style: {
|
|
22
|
+
position: "absolute",
|
|
23
|
+
inset: 0,
|
|
24
|
+
background: "linear-gradient(135deg, #1e0505 0%, #0f172a 60%)",
|
|
25
|
+
} }), _jsxs("div", { style: {
|
|
26
|
+
position: "relative",
|
|
27
|
+
display: "flex",
|
|
28
|
+
flexDirection: "column",
|
|
29
|
+
gap: 28,
|
|
30
|
+
width: "100%",
|
|
31
|
+
}, children: [_jsxs("div", { style: {
|
|
32
|
+
display: "flex",
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
gap: 12,
|
|
35
|
+
}, children: [_jsx("div", { style: {
|
|
36
|
+
background: "#dc2626",
|
|
37
|
+
color: "white",
|
|
38
|
+
padding: "6px 18px",
|
|
39
|
+
borderRadius: 6,
|
|
40
|
+
fontSize: 16,
|
|
41
|
+
fontWeight: 700,
|
|
42
|
+
letterSpacing: 2,
|
|
43
|
+
textTransform: "uppercase",
|
|
44
|
+
}, children: "\u26A0 Verified Scammer" }), _jsxs("div", { style: { fontSize: 18, color: "#94a3b8", letterSpacing: 1 }, children: [siteName, " \u00B7 Scam Registry"] })] }), _jsx("div", { style: {
|
|
45
|
+
fontSize: 72,
|
|
46
|
+
fontWeight: 800,
|
|
47
|
+
color: "#f1f5f9",
|
|
48
|
+
lineHeight: 1.1,
|
|
49
|
+
letterSpacing: "-1px",
|
|
50
|
+
}, children: displayName }), _jsxs("div", { style: { display: "flex", gap: 24, alignItems: "center" }, children: [_jsx("div", { style: {
|
|
51
|
+
background: "#1e293b",
|
|
52
|
+
border: "1px solid #334155",
|
|
53
|
+
borderRadius: 8,
|
|
54
|
+
padding: "10px 20px",
|
|
55
|
+
fontSize: 22,
|
|
56
|
+
color: "#f87171",
|
|
57
|
+
fontWeight: 600,
|
|
58
|
+
}, children: scamTypeLabel }), reportCount > 0 && (_jsxs("div", { style: { fontSize: 22, color: "#64748b" }, children: [reportCount, " ", reportCount === 1 ? "report" : "reports"] }))] }), _jsx("div", { style: { fontSize: 20, color: "#64748b", marginTop: 8 }, children: "Do not transact with this individual. Verified by the LetItRip community." })] })] }));
|
|
59
|
+
}
|
|
@@ -385,4 +385,56 @@ export const conversationsSeedData = [
|
|
|
385
385
|
createdAt: minsAgo(240),
|
|
386
386
|
updatedAt: minsAgo(200),
|
|
387
387
|
},
|
|
388
|
+
// â"€â"€ 9. Admin as buyer â€" MAFEX Miles Morales post-purchase tracking query â"€â"€
|
|
389
|
+
{
|
|
390
|
+
id: "conv-mafex-admin-priya-009",
|
|
391
|
+
buyerId: "user-admin-letitrip",
|
|
392
|
+
buyerDisplayName: "LetItRip Admin",
|
|
393
|
+
sellerDisplayName: "Priya Anand",
|
|
394
|
+
storeId: "store-tokyo-toys-india",
|
|
395
|
+
storeName: "Tokyo Toys India",
|
|
396
|
+
productId: "product-mafex-miles-morales-spiderman",
|
|
397
|
+
productTitle: "MAFEX No.240: Miles Morales Spider-Man (Across the Spider-Verse)",
|
|
398
|
+
messages: [
|
|
399
|
+
{
|
|
400
|
+
id: "msg-009-1",
|
|
401
|
+
senderId: "user-admin-letitrip",
|
|
402
|
+
senderRole: "buyer",
|
|
403
|
+
body: "Hi! My order for MAFEX Miles Morales shipped 2 days ago - tracking shows it left your city but has not updated since. Can you check with Shiprocket?",
|
|
404
|
+
isRead: true,
|
|
405
|
+
sentAt: daysAgo(3),
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
id: "msg-009-2",
|
|
409
|
+
senderId: "user-priya-anand",
|
|
410
|
+
senderRole: "seller",
|
|
411
|
+
body: "Hi! Yes, I raised a ticket with Shiprocket about that. They confirmed it is in transit at the Mumbai sorting facility - tracking updates can lag by 24-48 hours. Should arrive tomorrow or day after. Apologies for the delay in the scan!",
|
|
412
|
+
isRead: true,
|
|
413
|
+
sentAt: daysAgo(3),
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
id: "msg-009-3",
|
|
417
|
+
senderId: "user-admin-letitrip",
|
|
418
|
+
senderRole: "buyer",
|
|
419
|
+
body: "Thanks for following up. Will keep an eye on it. The figure is for a platform demo so I do need it by Friday - hope it clears in time.",
|
|
420
|
+
isRead: true,
|
|
421
|
+
sentAt: daysAgo(2),
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
id: "msg-009-4",
|
|
425
|
+
senderId: "user-priya-anand",
|
|
426
|
+
senderRole: "seller",
|
|
427
|
+
body: "Completely understand. I have asked Shiprocket to flag it for priority delivery. If it does not arrive by Thursday let me know and I will arrange a direct courier at no extra charge.",
|
|
428
|
+
isRead: false,
|
|
429
|
+
sentAt: daysAgo(2),
|
|
430
|
+
},
|
|
431
|
+
],
|
|
432
|
+
lastMessage: "Completely understand. I have asked Shiprocket to flag it for priority delivery. If it does not arrive by Thursday let me know and I will arrange a direct courier at no extra charge.",
|
|
433
|
+
lastMessageAt: daysAgo(2),
|
|
434
|
+
unreadBuyer: 1,
|
|
435
|
+
unreadSeller: 0,
|
|
436
|
+
status: "active",
|
|
437
|
+
createdAt: daysAgo(3),
|
|
438
|
+
updatedAt: daysAgo(2),
|
|
439
|
+
},
|
|
388
440
|
];
|
|
@@ -204,6 +204,16 @@ export const notificationsSeedData = [
|
|
|
204
204
|
{ user: "user-anjali-verma", type: "WELCOME", title: "Welcome, Anjali!", message: "Use NEWUSER5 for ₹50 off your first order.", read: false, hours: 4 },
|
|
205
205
|
{ user: "user-pooja-sharma", type: "PROMOTION", title: "Wishlist sale — items in your wishlist are 15% off", message: "3 items in your wishlist are now on sale. Tap to view.", read: false, hours: 9 },
|
|
206
206
|
]),
|
|
207
|
+
// ── Admin role — system + operational notifications ─────────────────────
|
|
208
|
+
...buildNotificationBatch([
|
|
209
|
+
{ user: "user-admin-letitrip", type: "SYSTEM", title: "New seller registration: Gunpla Hub India", message: "Arjun Mehta has applied to open store Gunpla Hub India. Review their profile and approve or reject via the admin panel.", read: false, hours: 2 },
|
|
210
|
+
{ user: "user-admin-letitrip", type: "SYSTEM", title: "Flagged listing: possible counterfeit Funko Pop", message: "Listing product-funko-pop-gojo-satoru was reported by 3 users for suspected counterfeit. Please review before the next buy cycle.", read: false, hours: 6 },
|
|
211
|
+
{ user: "user-admin-letitrip", type: "SYSTEM", title: "Payout batch #12 processed — 6 stores, Rs 1.24L", message: "Payout batch for May Week 2 completed. 6 stores paid, 1 failed (IFSC mismatch — store-vintage-vault). Manual retry required.", read: true, hours: 24 },
|
|
212
|
+
{ user: "user-admin-letitrip", type: "SYSTEM", title: "Support ticket escalated: order missing (high)", message: "Ticket ticket-rahul-order-001 was escalated from Simran Kaur. Buyer Rahul Sharma claims delivery was empty — courier claim filed. Needs admin review.", read: true, hours: 48 },
|
|
213
|
+
{ user: "user-admin-letitrip", type: "SYSTEM", title: "Platform summary: week of May 12", message: "Week of May 12: 47 new orders (Rs 3.8L GMV), 12 new users, 2 new seller registrations, 0 chargebacks, 99.8% uptime. Full report in admin dashboard.", read: true, hours: 96 },
|
|
214
|
+
{ user: "user-admin-letitrip", type: "REVIEW_APPROVED", title: "New 5-star review on LetItRip Official", message: "Naman Gupta left a 5-star review on figma Link (TotK): Best figma I own. Perfect packaging, zero damage.", read: true, hours: 36 },
|
|
215
|
+
{ user: "user-admin-letitrip", type: "ORDER_SHIPPED", title: "Your Mew PSA 10 order has shipped", message: "Vintage Vault has dispatched your Mew 1st Edition PSA 10. Tracking: DTDC112233445. Estimated delivery in 3 business days.", read: true, hours: 240 },
|
|
216
|
+
]),
|
|
207
217
|
];
|
|
208
218
|
/**
|
|
209
219
|
* Compact constructor for the P29 expansion. Keeps each row a single line of
|
|
@@ -24,7 +24,7 @@ export const sessionsSeedData = [
|
|
|
24
24
|
// -- Active: Admin — Chrome Desktop (Windows) ----------------------------
|
|
25
25
|
{
|
|
26
26
|
id: "session-admin-chrome-desktop-001",
|
|
27
|
-
userId: "user-admin-
|
|
27
|
+
userId: "user-admin-letitrip",
|
|
28
28
|
deviceInfo: {
|
|
29
29
|
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
|
|
30
30
|
browser: "Chrome 122",
|
|
@@ -351,4 +351,38 @@ export const sessionsSeedData = [
|
|
|
351
351
|
expiresAt: daysAhead(19),
|
|
352
352
|
isActive: true,
|
|
353
353
|
},
|
|
354
|
+
// -- Active: Admin — Chrome Android (admin monitors on mobile) -----------
|
|
355
|
+
{
|
|
356
|
+
id: "session-admin-chrome-android-001",
|
|
357
|
+
userId: "user-admin-letitrip",
|
|
358
|
+
deviceInfo: {
|
|
359
|
+
userAgent: "Mozilla/5.0 (Linux; Android 14; Samsung Galaxy S24 Ultra) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36",
|
|
360
|
+
browser: "Chrome 122",
|
|
361
|
+
os: "Android 14",
|
|
362
|
+
device: "Mobile",
|
|
363
|
+
ip: "203.0.113.2",
|
|
364
|
+
},
|
|
365
|
+
location: { country: _locale.countryName, city: "Mumbai" },
|
|
366
|
+
createdAt: daysAgo(3),
|
|
367
|
+
lastActivity: daysAgo(1),
|
|
368
|
+
expiresAt: daysAhead(26),
|
|
369
|
+
isActive: true,
|
|
370
|
+
},
|
|
371
|
+
// -- Active: Admin — Safari macOS (secondary workstation) ----------------
|
|
372
|
+
{
|
|
373
|
+
id: "session-admin-safari-macos-001",
|
|
374
|
+
userId: "user-admin-letitrip",
|
|
375
|
+
deviceInfo: {
|
|
376
|
+
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
|
|
377
|
+
browser: "Safari 17",
|
|
378
|
+
os: "macOS 14",
|
|
379
|
+
device: "Desktop",
|
|
380
|
+
ip: "203.0.113.3",
|
|
381
|
+
},
|
|
382
|
+
location: { country: _locale.countryName, city: "Mumbai" },
|
|
383
|
+
createdAt: daysAgo(1),
|
|
384
|
+
lastActivity: daysAgo(0),
|
|
385
|
+
expiresAt: daysAhead(29),
|
|
386
|
+
isActive: true,
|
|
387
|
+
},
|
|
354
388
|
];
|
|
@@ -32,7 +32,7 @@ export const usersSeedData = [
|
|
|
32
32
|
showWishlist: false,
|
|
33
33
|
bio: "LetItRip platform administrator.",
|
|
34
34
|
},
|
|
35
|
-
stats: { totalOrders:
|
|
35
|
+
stats: { totalOrders: 7, auctionsWon: 1, itemsSold: 142, reviewsCount: 0 },
|
|
36
36
|
metadata: {
|
|
37
37
|
lastSignInTime: daysAgo(1),
|
|
38
38
|
creationTime: daysAgo(400).toISOString(),
|
|
@@ -56,11 +56,15 @@ export const wishlistsSeedData = [
|
|
|
56
56
|
{ productId: "preorder-beyblade-x-bx10-booster", productType: "preorder", addedAt: daysAgo(3) },
|
|
57
57
|
{ productId: "preorder-shf-broly-super-hero", productType: "preorder", addedAt: daysAgo(1) },
|
|
58
58
|
]),
|
|
59
|
-
// Admin's personal wishlist —
|
|
59
|
+
// Admin's personal wishlist — mix of listing types to test all flows
|
|
60
60
|
makeDoc("user-admin-letitrip", [
|
|
61
61
|
{ productId: "product-mafex-miles-morales-spiderman", productType: "product", addedAt: daysAgo(60) },
|
|
62
62
|
{ productId: "product-figma-link-totk", productType: "product", addedAt: daysAgo(45) },
|
|
63
63
|
{ productId: "auction-pokemon-mew-1st-edition-psa10", productType: "auction", addedAt: daysAgo(20) },
|
|
64
64
|
{ productId: "product-alter-rem-wedding-scale", productType: "product", addedAt: daysAgo(8) },
|
|
65
|
+
{ productId: "prize-pokemon-mystery-box-june", productType: "product", addedAt: daysAgo(5) },
|
|
66
|
+
{ productId: "prize-hot-wheels-treasure-hunt", productType: "product", addedAt: daysAgo(4) },
|
|
67
|
+
{ productId: "preorder-gundam-pg-unicorn-ver15", productType: "preorder", addedAt: daysAgo(3) },
|
|
68
|
+
{ productId: "auction-pokemon-charizard-base1-psa9", productType: "auction", addedAt: daysAgo(2) },
|
|
65
69
|
]),
|
|
66
70
|
];
|
package/dist/server-entry.d.ts
CHANGED
|
@@ -55,7 +55,9 @@ export { getCouponByCode, applyCouponAction, createCouponAction, updateCouponAct
|
|
|
55
55
|
export { getWishlistForUser, isProductInWishlist, addToWishlistAction, removeFromWishlistAction, mergeGuestWishlistAction, WISHLIST_MAX, WISHLIST_GUEST_STORAGE_KEY, WishlistCapError, } from "./_internal/server/features/wishlist/index";
|
|
56
56
|
export { getHistoryForUser, trackProductViewAction, mergeGuestHistoryAction, HISTORY_MAX, HISTORY_GUEST_STORAGE_KEY, } from "./_internal/server/features/history/index";
|
|
57
57
|
export { getHomepageInitial, getHomepageSections, getHeroCarouselSlides, } from "./_internal/server/features/homepage/index";
|
|
58
|
-
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
|
|
58
|
+
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, getReviewById, renderReviewOg, renderReviewOgImage, type ReviewOgData, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
|
|
59
|
+
export { renderFaqOg, renderFaqOgImage, type FaqOgData, } from "./_internal/server/features/faqs/index";
|
|
60
|
+
export { renderScamOg, renderScamOgImage, type ScamOgData, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
|
|
59
61
|
export { getSearchResults, searchAction, type SearchQuery, } from "./_internal/server/features/search/index";
|
|
60
62
|
export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
|
|
61
63
|
export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
|
package/dist/server-entry.js
CHANGED
|
@@ -76,7 +76,9 @@ export { getHistoryForUser, trackProductViewAction, mergeGuestHistoryAction, HIS
|
|
|
76
76
|
// S5: homepage data layer
|
|
77
77
|
export { getHomepageInitial, getHomepageSections, getHeroCarouselSlides, } from "./_internal/server/features/homepage/index";
|
|
78
78
|
// S5: reviews data layer + actions
|
|
79
|
-
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
|
|
79
|
+
export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, getReviewById, renderReviewOg, renderReviewOgImage, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
|
|
80
|
+
export { renderFaqOg, renderFaqOgImage, } from "./_internal/server/features/faqs/index";
|
|
81
|
+
export { renderScamOg, renderScamOgImage, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
|
|
80
82
|
// S5: search data layer + action
|
|
81
83
|
export { getSearchResults, searchAction, } from "./_internal/server/features/search/index";
|
|
82
84
|
// S3: categories data layer
|
package/dist/server.d.ts
CHANGED
|
@@ -470,6 +470,10 @@ export { renderBlogOg, renderBlogOgImage, type BlogOgData } from "./_internal/se
|
|
|
470
470
|
export { renderEventOg, renderEventOgImage, type EventOgData } from "./_internal/server/features/events/og";
|
|
471
471
|
export { renderSublistingCategoryOg, renderSublistingCategoryOgImage, type SublistingCategoryOgData } from "./_internal/server/features/sublisting-categories/og";
|
|
472
472
|
export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage, type UserProfileOgData } from "./_internal/server/features/profile/og";
|
|
473
|
+
export { renderReviewOg, renderReviewOgImage, type ReviewOgData } from "./_internal/server/features/reviews/og";
|
|
474
|
+
export { renderFaqOg, renderFaqOgImage, type FaqOgData } from "./_internal/server/features/faqs/og";
|
|
475
|
+
export { renderScamOg, renderScamOgImage, type ScamOgData } from "./_internal/server/features/scams/og";
|
|
476
|
+
export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached } from "./_internal/server/features/scams/data";
|
|
473
477
|
export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
|
|
474
478
|
export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
|
|
475
479
|
export type { ListingTypeCapability } from "./_internal/shared/listing-types/capabilities";
|
package/dist/server.js
CHANGED
|
@@ -1345,6 +1345,10 @@ export { renderBlogOg, renderBlogOgImage } from "./_internal/server/features/blo
|
|
|
1345
1345
|
export { renderEventOg, renderEventOgImage } from "./_internal/server/features/events/og";
|
|
1346
1346
|
export { renderSublistingCategoryOg, renderSublistingCategoryOgImage } from "./_internal/server/features/sublisting-categories/og";
|
|
1347
1347
|
export { renderProfileOg, renderPrivateProfileOgImage, renderUserProfileOgImage } from "./_internal/server/features/profile/og";
|
|
1348
|
+
export { renderReviewOg, renderReviewOgImage } from "./_internal/server/features/reviews/og";
|
|
1349
|
+
export { renderFaqOg, renderFaqOgImage } from "./_internal/server/features/faqs/og";
|
|
1350
|
+
export { renderScamOg, renderScamOgImage } from "./_internal/server/features/scams/og";
|
|
1351
|
+
export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached } from "./_internal/server/features/scams/data";
|
|
1348
1352
|
// Adapters
|
|
1349
1353
|
export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
|
|
1350
1354
|
// Listing-type capability registry — SB-UNI X1.
|