@mohasinac/appkit 4.3.2 → 4.4.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/maintenance/views/AnalysisRunnerView.js +1 -1
- package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +1 -1
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +1 -1
- package/dist/_internal/client/features/maintenance/views/ServerErrorDetailView.js +1 -1
- package/dist/_internal/client/features/maintenance/views/ServerErrorsListView.js +1 -1
- package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +14 -3
- package/dist/_internal/server/jobs/core/assignSpinPrize.js +95 -56
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +8 -2
- package/dist/_internal/shared/actions/action-registry.js +15 -0
- package/dist/_internal/shared/features/brands/schema.d.ts +4 -4
- package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +4 -4
- package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
- package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
- package/dist/client.d.ts +36 -0
- package/dist/client.js +30 -0
- package/dist/constants/api-endpoints.d.ts +6 -0
- package/dist/constants/api-endpoints.js +2 -0
- package/dist/constants/field-names.d.ts +3 -0
- package/dist/constants/field-names.js +4 -0
- package/dist/features/about/components/DeveloperView.d.ts +16 -0
- package/dist/features/about/components/DeveloperView.js +29 -0
- package/dist/features/about/index.d.ts +2 -0
- package/dist/features/about/index.js +1 -0
- package/dist/features/account/schemas/index.d.ts +16 -16
- package/dist/features/addresses/schemas/index.d.ts +8 -8
- package/dist/features/admin/components/AdminAddressesView.js +1 -1
- package/dist/features/admin/components/AdminAllEventEntriesView.js +2 -2
- package/dist/features/admin/components/AdminArtView.js +1 -1
- package/dist/features/admin/components/AdminBidsView.js +2 -2
- package/dist/features/admin/components/AdminBlogView.js +2 -2
- package/dist/features/admin/components/AdminBrandsView.js +2 -2
- package/dist/features/admin/components/AdminBundlesView.js +2 -2
- package/dist/features/admin/components/AdminCartsView.js +2 -2
- package/dist/features/admin/components/AdminCategoriesView.js +2 -2
- package/dist/features/admin/components/AdminClassifiedView.js +1 -1
- package/dist/features/admin/components/AdminContactView.js +2 -2
- package/dist/features/admin/components/AdminCouponsView.js +2 -2
- package/dist/features/admin/components/AdminDigitalCodesView.js +1 -1
- package/dist/features/admin/components/AdminFaqsView.js +2 -2
- package/dist/features/admin/components/AdminFeaturesView.js +1 -1
- package/dist/features/admin/components/AdminGroupedListingsView.js +1 -1
- package/dist/features/admin/components/AdminHistoryView.js +1 -1
- package/dist/features/admin/components/AdminLiveView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +2 -2
- package/dist/features/admin/components/AdminNotificationsView.js +2 -2
- package/dist/features/admin/components/AdminOrdersView.js +2 -2
- package/dist/features/admin/components/AdminPaymentMethodsView.js +1 -1
- package/dist/features/admin/components/AdminPayoutsView.js +2 -2
- package/dist/features/admin/components/AdminPrizeDrawsView.js +2 -2
- package/dist/features/admin/components/AdminProductsView.js +2 -2
- package/dist/features/admin/components/AdminReturnRequestsView.js +1 -1
- package/dist/features/admin/components/AdminReviewsView.js +2 -2
- package/dist/features/admin/components/AdminScammersView.js +2 -2
- package/dist/features/admin/components/AdminSessionsView.js +2 -2
- package/dist/features/admin/components/AdminStickersView.js +1 -1
- package/dist/features/admin/components/AdminStoreAddressesView.js +1 -1
- package/dist/features/admin/components/AdminStoresView.js +2 -2
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +1 -1
- package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
- package/dist/features/admin/components/AdminTeamView.js +2 -2
- package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +2 -2
- package/dist/features/admin/components/AdminWishlistsView.js +1 -1
- package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
- package/dist/features/auth/hooks/useAuth.d.ts +1 -1
- package/dist/features/blog/actions/blog-actions.d.ts +14 -14
- package/dist/features/blog/schemas/index.d.ts +14 -14
- package/dist/features/cart/hooks/useAddToCart.d.ts +6 -2
- package/dist/features/cart/hooks/useAddToCart.js +20 -3
- package/dist/features/cart/schemas/index.d.ts +3 -3
- package/dist/features/cart/utils/pending-ops.d.ts +20 -0
- package/dist/features/cart/utils/pending-ops.js +22 -0
- package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
- package/dist/features/categories/components/CategoryBundlesListing.js +1 -1
- package/dist/features/categories/components/CategoryFilters.js +1 -1
- package/dist/features/categories/components/CategoryTree.js +1 -1
- package/dist/features/categories/schemas/index.d.ts +16 -16
- package/dist/features/events/actions/event-actions.d.ts +21 -1
- package/dist/features/events/actions/event-actions.js +85 -3
- package/dist/features/events/components/AdminEventEditorView.js +11 -2
- package/dist/features/events/components/AdminEventEntriesView.js +37 -4
- package/dist/features/events/components/AdminEventsView.js +2 -2
- package/dist/features/events/components/EventLeaderboard.d.ts +12 -2
- package/dist/features/events/components/EventLeaderboard.js +4 -1
- package/dist/features/events/components/EventRafflesSection.js +2 -2
- package/dist/features/events/repository/event-entry.repository.d.ts +39 -0
- package/dist/features/events/repository/event-entry.repository.js +153 -0
- package/dist/features/events/schemas/firestore.d.ts +28 -1
- package/dist/features/events/schemas/firestore.js +9 -0
- package/dist/features/events/schemas/index.d.ts +13 -13
- package/dist/features/events/types/index.d.ts +26 -0
- package/dist/features/faq/actions/faq-actions.d.ts +8 -8
- package/dist/features/faq/schemas/index.d.ts +22 -22
- package/dist/features/grouped/schemas/index.d.ts +2 -2
- package/dist/features/homepage/components/AnnouncementBar.d.ts +9 -1
- package/dist/features/homepage/components/AnnouncementBar.js +6 -3
- package/dist/features/homepage/components/MarketplaceHomepageView.js +2 -2
- package/dist/features/homepage/components/SectionCarousel.js +5 -1
- package/dist/features/homepage/components/WelcomeSection.js +2 -2
- package/dist/features/homepage/schemas/index.d.ts +2 -2
- package/dist/features/layout/BottomNavbar.js +8 -6
- package/dist/features/lottery/schemas/zod.d.ts +10 -10
- package/dist/features/media/MediaVideo.js +11 -3
- package/dist/features/orders/schemas/index.d.ts +52 -52
- package/dist/features/products/components/CompareOverlay.d.ts +9 -0
- package/dist/features/products/components/CompareOverlay.js +28 -3
- package/dist/features/products/components/InteractiveProductCard.js +9 -3
- package/dist/features/products/components/MakeOfferForm.js +1 -1
- package/dist/features/products/components/PlaceBidForm.js +1 -1
- package/dist/features/products/components/PrizeDrawCollage.js +1 -1
- package/dist/features/products/components/PrizeDrawsSection.js +2 -2
- package/dist/features/products/components/ProductDetailActions.js +3 -1
- package/dist/features/products/components/ProductGrid.js +1 -1
- package/dist/features/products/components/ProductInfo.js +1 -1
- package/dist/features/products/components/ProductsIndexListing.js +12 -2
- package/dist/features/products/hooks/useRelatedProducts.js +1 -1
- package/dist/features/products/schemas/index.d.ts +10 -10
- package/dist/features/promotions/schemas/index.d.ts +8 -8
- package/dist/features/reviews/schemas/index.d.ts +12 -12
- package/dist/features/scams/schemas/index.d.ts +6 -6
- package/dist/features/seller/components/CouponInlineSelect.js +1 -1
- package/dist/features/seller/components/SellerArtView.js +2 -2
- package/dist/features/seller/components/SellerAuctionsView.js +2 -2
- package/dist/features/seller/components/SellerBidsView.js +2 -2
- package/dist/features/seller/components/SellerBundlesView.js +1 -1
- package/dist/features/seller/components/SellerClassifiedView.js +2 -2
- package/dist/features/seller/components/SellerCouponsView.js +2 -2
- package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
- package/dist/features/seller/components/SellerGroupedListingsView.js +1 -1
- package/dist/features/seller/components/SellerLiveView.js +2 -2
- package/dist/features/seller/components/SellerOffersView.js +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +2 -2
- package/dist/features/seller/components/SellerPayoutMethodsView.js +2 -2
- package/dist/features/seller/components/SellerPayoutsView.js +2 -2
- package/dist/features/seller/components/SellerPreOrdersView.js +2 -2
- package/dist/features/seller/components/SellerPrizeDrawsView.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +2 -2
- package/dist/features/seller/components/SellerShippingConfigsView.js +2 -2
- package/dist/features/seller/components/SellerStickersView.js +2 -2
- package/dist/features/seller/components/SellerStoreCategoriesView.js +1 -1
- package/dist/features/seller/components/SublistingInlineSelect.js +1 -1
- package/dist/features/seller/hooks/useSellerListingData.d.ts +1 -1
- package/dist/features/seller/schemas/index.d.ts +16 -16
- package/dist/features/server-errors/schemas/index.d.ts +4 -4
- package/dist/features/shell/StepForm.d.ts +1 -1
- package/dist/features/shipments/components/AdminShipmentsView.js +2 -2
- package/dist/features/stores/components/StoreProductsView.js +1 -1
- package/dist/features/stores/components/StoresIndexListing.js +1 -1
- package/dist/features/stores/schemas/index.d.ts +30 -30
- package/dist/features/support/schemas/index.d.ts +2 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +68 -1
- package/dist/features/whatsapp-bot/helpers/payment-proof-message.d.ts +14 -0
- package/dist/features/whatsapp-bot/helpers/payment-proof-message.js +17 -0
- package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +2 -8
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +4 -11
- package/dist/features/wishlist/repository/user-wishlist.repository.d.ts +11 -0
- package/dist/features/wishlist/repository/user-wishlist.repository.js +33 -0
- package/dist/index.d.ts +7 -12
- package/dist/index.js +16 -28
- package/dist/next/components/ErrorView.js +1 -1
- package/dist/next/components/NotFoundView.js +1 -1
- package/dist/next/components/UnauthorizedView.js +1 -1
- package/dist/next/routing/route-map.d.ts +4 -0
- package/dist/next/routing/route-map.js +2 -0
- package/dist/react/contexts/SessionContext.d.ts +1 -1
- package/dist/react/hooks/use-action-dispatch.d.ts +1 -1
- package/dist/react/hooks/useFormStatePreservation.d.ts +1 -1
- package/dist/schemas/registry.d.ts +236 -236
- package/dist/schemas/webhooks/razorpay.d.ts +100 -100
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/rate-limit.d.ts +10 -0
- package/dist/security/rate-limit.js +13 -1
- package/dist/seed/events-seed-data.js +52 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.js +8 -0
- package/dist/styles.css +25 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/HorizontalScroller.d.ts +7 -1
- package/dist/ui/components/HorizontalScroller.js +2 -2
- package/dist/ui/components/HorizontalScroller.style.css +24 -0
- package/dist/validation/schemas.d.ts +12 -12
- package/package.json +1 -1
package/dist/security/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { generateNonce, buildCSP } from "./csp";
|
|
2
|
-
export { rateLimit, applyRateLimit, rateLimitByIdentifier, RateLimitPresets, clearRateLimitStore, } from "./rate-limit";
|
|
2
|
+
export { rateLimit, applyRateLimit, rateLimitByIdentifier, RateLimitPresets, clearRateLimitStore, getClientIP, hashGuestIdentity, } from "./rate-limit";
|
|
3
3
|
export type { RateLimitConfig, RateLimitResult } from "./rate-limit";
|
|
4
4
|
export { requireAuth, requireRole, requireOwnership, requireEmailVerified, requireActiveAccount, canChangeRole, getRoleLevel, } from "./authorization";
|
|
5
5
|
export type { UserRole } from "./authorization";
|
package/dist/security/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { generateNonce, buildCSP } from "./csp";
|
|
2
|
-
export { rateLimit, applyRateLimit, rateLimitByIdentifier, RateLimitPresets, clearRateLimitStore, } from "./rate-limit";
|
|
2
|
+
export { rateLimit, applyRateLimit, rateLimitByIdentifier, RateLimitPresets, clearRateLimitStore, getClientIP, hashGuestIdentity, } from "./rate-limit";
|
|
3
3
|
export { requireAuth, requireRole, requireOwnership, requireEmailVerified, requireActiveAccount, canChangeRole, getRoleLevel, } from "./authorization";
|
|
4
4
|
export { redactPii, safeDisplayName, safeDisplayEmail, maskIp } from "./pii-redact";
|
|
5
5
|
export { encryptValue, decryptValue, hmacBlindIndex, encryptPiiFields, decryptPiiFields, encryptPii, decryptPii, piiBlindIndex, addPiiIndices, getPiiConfigError, encryptShippingAddress, decryptShippingAddress, encryptPayoutDetails, decryptPayoutDetails, encryptShippingConfig, decryptShippingConfig, encryptPayoutBankAccount, decryptPayoutBankAccount, } from "./pii-encrypt";
|
|
@@ -27,6 +27,16 @@ export interface RateLimitResult {
|
|
|
27
27
|
reset: number;
|
|
28
28
|
error?: string;
|
|
29
29
|
}
|
|
30
|
+
export declare function getClientIP(request: NextRequest | Request): string;
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic, non-reversible identity hash for an unauthenticated
|
|
33
|
+
* ("guest") caller, scoped to an entity (e.g. an event id) so the same
|
|
34
|
+
* physical visitor can't be correlated across unrelated entities from the
|
|
35
|
+
* hash alone. Reuses the same HMAC-SHA256 blind-index primitive already
|
|
36
|
+
* used for PII lookups (`emailIndex`/`phoneIndex`) — the raw IP is never
|
|
37
|
+
* persisted, only this hash.
|
|
38
|
+
*/
|
|
39
|
+
export declare function hashGuestIdentity(scope: string, request: NextRequest | Request): string;
|
|
30
40
|
/**
|
|
31
41
|
* Rate limit by request. Uses Upstash Redis when configured, in-memory otherwise.
|
|
32
42
|
*/
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
* UPSTASH_REDIS_REST_URL
|
|
12
12
|
* UPSTASH_REDIS_REST_TOKEN
|
|
13
13
|
*/
|
|
14
|
+
import { hmacBlindIndex } from "./pii-encrypt";
|
|
14
15
|
// --- IP extraction ------------------------------------------------------------
|
|
15
|
-
function getClientIP(request) {
|
|
16
|
+
export function getClientIP(request) {
|
|
16
17
|
const forwarded = request.headers.get("x-forwarded-for");
|
|
17
18
|
if (forwarded)
|
|
18
19
|
return forwarded.split(",")[0].trim();
|
|
@@ -21,6 +22,17 @@ function getClientIP(request) {
|
|
|
21
22
|
return realIP;
|
|
22
23
|
return "unknown";
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Deterministic, non-reversible identity hash for an unauthenticated
|
|
27
|
+
* ("guest") caller, scoped to an entity (e.g. an event id) so the same
|
|
28
|
+
* physical visitor can't be correlated across unrelated entities from the
|
|
29
|
+
* hash alone. Reuses the same HMAC-SHA256 blind-index primitive already
|
|
30
|
+
* used for PII lookups (`emailIndex`/`phoneIndex`) — the raw IP is never
|
|
31
|
+
* persisted, only this hash.
|
|
32
|
+
*/
|
|
33
|
+
export function hashGuestIdentity(scope, request) {
|
|
34
|
+
return hmacBlindIndex(`${scope}:${getClientIP(request)}`);
|
|
35
|
+
}
|
|
24
36
|
// --- Upstash-backed limiter ---------------------------------------------------
|
|
25
37
|
let upstashLimiter = null;
|
|
26
38
|
async function getUpstashLimiter() {
|
|
@@ -31,6 +31,9 @@ export const eventsSeedData = [
|
|
|
31
31
|
endsAt: daysAhead(10),
|
|
32
32
|
coverImage: { type: "image", url: seedExtMedia("https://picsum.photos/seed/event-cover-favourite-blader-poll-20260101/1200/600"), alt: "Original series Beyblade lineup" },
|
|
33
33
|
tags: ["poll", "original-series", "season-1"],
|
|
34
|
+
// Demo fixture for the guest-participation toggle (2026-08-20) — polls
|
|
35
|
+
// are otherwise login-gated, so this event demonstrates the override.
|
|
36
|
+
allowGuestParticipation: true,
|
|
34
37
|
pollConfig: {
|
|
35
38
|
options: [
|
|
36
39
|
{ id: "tyson", label: "Mock User 6" },
|
|
@@ -138,7 +141,11 @@ export const eventsSeedData = [
|
|
|
138
141
|
{ id: "spin-grip", label: "Free Launcher Grip Tape", weight: 10, isActive: true },
|
|
139
142
|
{ id: "spin-try-again", label: "Try Again Tomorrow!", weight: 50, isActive: true },
|
|
140
143
|
],
|
|
141
|
-
spinMaxPerUser: 1
|
|
144
|
+
// spinMaxPerUser: 2 (not the default 1) so the per-identity spin-count
|
|
145
|
+
// enforcement added 2026-08-20 has a real demo case, and
|
|
146
|
+
// allowGuestParticipation lets a signed-out visitor spin too.
|
|
147
|
+
spinMaxPerUser: 2,
|
|
148
|
+
allowGuestParticipation: true,
|
|
142
149
|
spinWindowStart: daysAgo(7),
|
|
143
150
|
spinWindowEnd: daysAhead(23),
|
|
144
151
|
stats: { totalEntries: 534, approvedEntries: 534, flaggedEntries: 0 },
|
|
@@ -359,6 +366,7 @@ export const eventEntriesSeedData = [
|
|
|
359
366
|
userDisplayName: "Mock User 2",
|
|
360
367
|
userEmail: "vivaan.kapoor@gmail.com",
|
|
361
368
|
spinUsed: true,
|
|
369
|
+
spinCount: 1,
|
|
362
370
|
spinPrizeId: "spin-10pct",
|
|
363
371
|
spinPrizeCouponCode: "REHAN10",
|
|
364
372
|
spinWonAt: daysAgo(1),
|
|
@@ -366,4 +374,47 @@ export const eventEntriesSeedData = [
|
|
|
366
374
|
submittedAt: daysAgo(1),
|
|
367
375
|
createdAt: daysAgo(1),
|
|
368
376
|
},
|
|
377
|
+
// Rehan spun the wheel twice (spinMaxPerUser: 2 on this event) — demo
|
|
378
|
+
// fixture for the per-identity spin-count enforcement added 2026-08-20.
|
|
379
|
+
{
|
|
380
|
+
id: "entry-spin-yugi-001",
|
|
381
|
+
eventId: "event-daily-beyblade-pull-wheel",
|
|
382
|
+
userId: "user-yugi-muto",
|
|
383
|
+
userDisplayName: "Mock User 3",
|
|
384
|
+
userEmail: "rehan.sheikh@gmail.com",
|
|
385
|
+
spinUsed: true,
|
|
386
|
+
spinCount: 2,
|
|
387
|
+
spinPrizeId: "spin-grip",
|
|
388
|
+
spinWonAt: daysAgo(1),
|
|
389
|
+
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
390
|
+
submittedAt: daysAgo(2),
|
|
391
|
+
createdAt: daysAgo(2),
|
|
392
|
+
},
|
|
393
|
+
// A guest (not logged in) spun the wheel — demo fixture for the
|
|
394
|
+
// guest-participation toggle added 2026-08-20. This event's
|
|
395
|
+
// allowGuestParticipation is true, so no userId is set; guestIpHash is a
|
|
396
|
+
// deterministic-looking placeholder (real values are HMAC-SHA256 hex).
|
|
397
|
+
{
|
|
398
|
+
id: "entry-spin-guest-001",
|
|
399
|
+
eventId: "event-daily-beyblade-pull-wheel",
|
|
400
|
+
guestIpHash: "hmac-sha256:seed-placeholder-guest-spin-001",
|
|
401
|
+
spinUsed: true,
|
|
402
|
+
spinCount: 1,
|
|
403
|
+
spinPrizeId: "spin-5pct",
|
|
404
|
+
spinWonAt: daysAgo(3),
|
|
405
|
+
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
406
|
+
submittedAt: daysAgo(3),
|
|
407
|
+
createdAt: daysAgo(3),
|
|
408
|
+
},
|
|
409
|
+
// A guest voted in the poll — demo fixture for allowGuestParticipation on
|
|
410
|
+
// a non-spin event type (poll).
|
|
411
|
+
{
|
|
412
|
+
id: "entry-poll-guest-001",
|
|
413
|
+
eventId: "event-favourite-blader-poll",
|
|
414
|
+
guestIpHash: "hmac-sha256:seed-placeholder-guest-poll-001",
|
|
415
|
+
pollVotes: ["max"],
|
|
416
|
+
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
417
|
+
submittedAt: daysAgo(2),
|
|
418
|
+
createdAt: daysAgo(2),
|
|
419
|
+
},
|
|
369
420
|
];
|
package/dist/server.d.ts
CHANGED
|
@@ -247,6 +247,8 @@ export { listCategories } from "./features/categories/server";
|
|
|
247
247
|
export { listTopLevelCategories } from "./features/categories/server";
|
|
248
248
|
export { updateCategory } from "./features/categories/server";
|
|
249
249
|
export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server";
|
|
250
|
+
export { FailedCheckoutRepository, failedCheckoutRepository } from "./features/checkout/server";
|
|
251
|
+
export type { FailedCheckoutMeta, FailedPaymentMeta } from "./features/checkout/server";
|
|
250
252
|
export { EmailButton, EmailColumn, EmailContainer, EmailDivider, EmailDoc, EmailFooter, EmailHeader, EmailImage, EmailLink, EmailRow, } from "./features/email";
|
|
251
253
|
export type { EmailButtonProps, EmailColumnProps, EmailContainerProps, EmailDividerProps, EmailDocProps, EmailFooterProps, EmailHeaderProps, EmailImageProps, EmailLinkProps, EmailRowProps, EmailTone, } from "./features/email";
|
|
252
254
|
export { sendContactEmail } from "./features/contact/server";
|
|
@@ -255,6 +257,7 @@ export { sendOrderConfirmationEmail } from "./features/contact/server";
|
|
|
255
257
|
export { sendPasswordResetEmailWithLink } from "./features/contact/server";
|
|
256
258
|
export { sendSiteSettingsChangedEmail } from "./features/contact/server";
|
|
257
259
|
export { sendVerificationEmailWithLink } from "./features/contact/server";
|
|
260
|
+
export type { OrderConfirmationEmailParams } from "./features/contact/server";
|
|
258
261
|
export { adminGetEventById } from "./features/events/server";
|
|
259
262
|
export { adminGetEventEntries } from "./features/events/server";
|
|
260
263
|
export { adminGetEventStats } from "./features/events/server";
|
|
@@ -267,6 +270,7 @@ export { enterEvent } from "./features/events/server";
|
|
|
267
270
|
export { eventIdGET } from "./features/events/server";
|
|
268
271
|
export { eventsGET } from "./features/events/server";
|
|
269
272
|
export { getEventLeaderboard } from "./features/events/server";
|
|
273
|
+
export { getEventPollResults } from "./features/events/server";
|
|
270
274
|
export { getBugHunterLeaderboard } from "./features/tester/server";
|
|
271
275
|
export { getPublicEventById } from "./features/events/server";
|
|
272
276
|
export { listPublicEvents } from "./features/events/server";
|
|
@@ -439,6 +443,8 @@ export { safeFireAndForget } from "./utils/safe-fire-forget";
|
|
|
439
443
|
export { applyRateLimit } from "./security/index";
|
|
440
444
|
export { rateLimitByIdentifier } from "./security/index";
|
|
441
445
|
export { RateLimitPresets } from "./security/index";
|
|
446
|
+
export { getClientIP } from "./security/index";
|
|
447
|
+
export { hashGuestIdentity } from "./security/index";
|
|
442
448
|
export { maskPublicEventEntry } from "./security/index";
|
|
443
449
|
export { encryptValue } from "./security/index";
|
|
444
450
|
export { decryptValue } from "./security/index";
|
package/dist/server.js
CHANGED
|
@@ -714,6 +714,7 @@ export { listTopLevelCategories } from "./features/categories/server";
|
|
|
714
714
|
export { updateCategory } from "./features/categories/server";
|
|
715
715
|
// [SERVER-ONLY] Tier PP — high-value checkout OTP gate.
|
|
716
716
|
export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server";
|
|
717
|
+
export { FailedCheckoutRepository, failedCheckoutRepository } from "./features/checkout/server";
|
|
717
718
|
// [SERVER-ONLY] Email primitives — table-based, inline-styled components
|
|
718
719
|
// that render email-client-compatible HTML via renderToStaticMarkup. Use
|
|
719
720
|
// these instead of authoring raw <table>/<tr>/<td> in email templates.
|
|
@@ -773,6 +774,9 @@ export { eventsGET } from "./features/events/server";
|
|
|
773
774
|
// getEventLeaderboard - Helper for get event leaderboard.
|
|
774
775
|
export { getEventLeaderboard } from "./features/events/server";
|
|
775
776
|
// [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
|
|
777
|
+
// getEventPollResults - Helper for get event poll results (per-option vote tally).
|
|
778
|
+
export { getEventPollResults } from "./features/events/server";
|
|
779
|
+
// [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
|
|
776
780
|
// getBugHunterLeaderboard - Ranks testers by confirmed-bug count.
|
|
777
781
|
export { getBugHunterLeaderboard } from "./features/tester/server";
|
|
778
782
|
// [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
|
|
@@ -1265,6 +1269,10 @@ export { applyRateLimit } from "./security/index";
|
|
|
1265
1269
|
export { rateLimitByIdentifier } from "./security/index";
|
|
1266
1270
|
// RateLimitPresets - Preset configurations for common rate-limit scenarios.
|
|
1267
1271
|
export { RateLimitPresets } from "./security/index";
|
|
1272
|
+
// getClientIP - Extract the caller's IP from x-forwarded-for/x-real-ip.
|
|
1273
|
+
export { getClientIP } from "./security/index";
|
|
1274
|
+
// hashGuestIdentity - Deterministic, non-reversible hash of a guest caller's IP scoped to an entity (never persists the raw IP).
|
|
1275
|
+
export { hashGuestIdentity } from "./security/index";
|
|
1268
1276
|
// maskPublicEventEntry - Redact PII from event entries before public exposure.
|
|
1269
1277
|
export { maskPublicEventEntry } from "./security/index";
|
|
1270
1278
|
// PII encryption/masking (server-only -- crypto module via node:module, must never leak into a client bundle; see appkit Export Rules in CLAUDE.md)
|