@bash-app/bash-common 30.260.1 → 30.262.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.
Files changed (79) hide show
  1. package/dist/__tests__/ticketBnplPaymentMethods.cashapp.test.d.ts +2 -0
  2. package/dist/__tests__/ticketBnplPaymentMethods.cashapp.test.d.ts.map +1 -0
  3. package/dist/__tests__/ticketBnplPaymentMethods.cashapp.test.js +33 -0
  4. package/dist/__tests__/ticketBnplPaymentMethods.cashapp.test.js.map +1 -0
  5. package/dist/__tests__/ticketBnplPaymentMethods.test.d.ts +2 -0
  6. package/dist/__tests__/ticketBnplPaymentMethods.test.d.ts.map +1 -0
  7. package/dist/__tests__/ticketBnplPaymentMethods.test.js +46 -0
  8. package/dist/__tests__/ticketBnplPaymentMethods.test.js.map +1 -0
  9. package/dist/definitions.d.ts +6 -1
  10. package/dist/definitions.d.ts.map +1 -1
  11. package/dist/definitions.js.map +1 -1
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +6 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/ticketBnplPaymentMethods.d.ts +32 -0
  17. package/dist/ticketBnplPaymentMethods.d.ts.map +1 -0
  18. package/dist/ticketBnplPaymentMethods.js +42 -0
  19. package/dist/ticketBnplPaymentMethods.js.map +1 -0
  20. package/dist/utils/__tests__/featuredDiscoveryGeo.test.d.ts +2 -0
  21. package/dist/utils/__tests__/featuredDiscoveryGeo.test.d.ts.map +1 -0
  22. package/dist/utils/__tests__/featuredDiscoveryGeo.test.js +98 -0
  23. package/dist/utils/__tests__/featuredDiscoveryGeo.test.js.map +1 -0
  24. package/dist/utils/__tests__/flyerUtils.test.js +7 -1
  25. package/dist/utils/__tests__/flyerUtils.test.js.map +1 -1
  26. package/dist/utils/__tests__/guestSurface.test.d.ts +2 -0
  27. package/dist/utils/__tests__/guestSurface.test.d.ts.map +1 -0
  28. package/dist/utils/__tests__/guestSurface.test.js +94 -0
  29. package/dist/utils/__tests__/guestSurface.test.js.map +1 -0
  30. package/dist/utils/__tests__/ticketTierSchedule.test.d.ts +2 -0
  31. package/dist/utils/__tests__/ticketTierSchedule.test.d.ts.map +1 -0
  32. package/dist/utils/__tests__/ticketTierSchedule.test.js +84 -0
  33. package/dist/utils/__tests__/ticketTierSchedule.test.js.map +1 -0
  34. package/dist/utils/featuredDiscoveryGeo.d.ts +30 -0
  35. package/dist/utils/featuredDiscoveryGeo.d.ts.map +1 -0
  36. package/dist/utils/featuredDiscoveryGeo.js +47 -0
  37. package/dist/utils/featuredDiscoveryGeo.js.map +1 -0
  38. package/dist/utils/flyerUtils.d.ts +5 -0
  39. package/dist/utils/flyerUtils.d.ts.map +1 -1
  40. package/dist/utils/flyerUtils.js +24 -0
  41. package/dist/utils/flyerUtils.js.map +1 -1
  42. package/dist/utils/guestSurface.d.ts +114 -0
  43. package/dist/utils/guestSurface.d.ts.map +1 -0
  44. package/dist/utils/guestSurface.js +164 -0
  45. package/dist/utils/guestSurface.js.map +1 -0
  46. package/dist/utils/promotionBlastUtils.d.ts +38 -0
  47. package/dist/utils/promotionBlastUtils.d.ts.map +1 -0
  48. package/dist/utils/promotionBlastUtils.js +88 -0
  49. package/dist/utils/promotionBlastUtils.js.map +1 -0
  50. package/dist/utils/service/__tests__/defaultOfferAmountUtils.test.d.ts +2 -0
  51. package/dist/utils/service/__tests__/defaultOfferAmountUtils.test.d.ts.map +1 -0
  52. package/dist/utils/service/__tests__/defaultOfferAmountUtils.test.js +65 -0
  53. package/dist/utils/service/__tests__/defaultOfferAmountUtils.test.js.map +1 -0
  54. package/dist/utils/service/defaultOfferAmountUtils.d.ts +32 -0
  55. package/dist/utils/service/defaultOfferAmountUtils.d.ts.map +1 -0
  56. package/dist/utils/service/defaultOfferAmountUtils.js +115 -0
  57. package/dist/utils/service/defaultOfferAmountUtils.js.map +1 -0
  58. package/dist/utils/ticketTierSchedule.d.ts +58 -0
  59. package/dist/utils/ticketTierSchedule.d.ts.map +1 -0
  60. package/dist/utils/ticketTierSchedule.js +279 -0
  61. package/dist/utils/ticketTierSchedule.js.map +1 -0
  62. package/package.json +5 -2
  63. package/prisma/schema.prisma +332 -1
  64. package/src/__tests__/ticketBnplPaymentMethods.cashapp.test.ts +45 -0
  65. package/src/__tests__/ticketBnplPaymentMethods.test.ts +66 -0
  66. package/src/definitions.ts +6 -1
  67. package/src/index.ts +6 -0
  68. package/src/ticketBnplPaymentMethods.ts +79 -0
  69. package/src/utils/__tests__/featuredDiscoveryGeo.test.ts +120 -0
  70. package/src/utils/__tests__/flyerUtils.test.ts +10 -0
  71. package/src/utils/__tests__/guestSurface.test.ts +128 -0
  72. package/src/utils/__tests__/ticketTierSchedule.test.ts +131 -0
  73. package/src/utils/featuredDiscoveryGeo.ts +75 -0
  74. package/src/utils/flyerUtils.ts +33 -0
  75. package/src/utils/guestSurface.ts +315 -0
  76. package/src/utils/promotionBlastUtils.ts +127 -0
  77. package/src/utils/service/__tests__/defaultOfferAmountUtils.test.ts +102 -0
  78. package/src/utils/service/defaultOfferAmountUtils.ts +170 -0
  79. package/src/utils/ticketTierSchedule.ts +387 -0
@@ -0,0 +1,98 @@
1
+ import { haversineMiles, effectiveFeaturedForGeoScope, sortPublicEventsForFeaturedDiscovery, } from "../featuredDiscoveryGeo.js";
2
+ describe("haversineMiles", () => {
3
+ it("returns zero for identical coordinates", () => {
4
+ expect(haversineMiles(40.7128, -74.006, 40.7128, -74.006)).toBeCloseTo(0, 5);
5
+ });
6
+ it("computes a plausible distance between NYC and Philadelphia", () => {
7
+ const miles = haversineMiles(40.7128, -74.006, 39.9526, -75.1652);
8
+ expect(miles).toBeGreaterThan(75);
9
+ expect(miles).toBeLessThan(100);
10
+ });
11
+ });
12
+ describe("effectiveFeaturedForGeoScope", () => {
13
+ const viewer = { lat: 40.7128, lng: -74.006, radiusMiles: 10 };
14
+ it("returns false when event is not featured", () => {
15
+ expect(effectiveFeaturedForGeoScope(false, [{ lat: 40.71, lng: -74.0 }], viewer)).toBe(false);
16
+ });
17
+ it("returns true for featured events when no viewer geo is provided", () => {
18
+ expect(effectiveFeaturedForGeoScope(true, [{ lat: 40.71, lng: -74.0 }], undefined)).toBe(true);
19
+ });
20
+ it("returns false when featured event has no coordinates", () => {
21
+ expect(effectiveFeaturedForGeoScope(true, [{ lat: null, lng: null }], viewer)).toBe(false);
22
+ expect(effectiveFeaturedForGeoScope(true, [], viewer)).toBe(false);
23
+ });
24
+ it("returns true when featured event is within viewer radius", () => {
25
+ expect(effectiveFeaturedForGeoScope(true, [{ lat: 40.72, lng: -74.01 }], viewer)).toBe(true);
26
+ });
27
+ it("returns false when featured event is outside viewer radius", () => {
28
+ expect(effectiveFeaturedForGeoScope(true, [{ lat: 34.0522, lng: -118.2437 }], viewer)).toBe(false);
29
+ });
30
+ });
31
+ describe("sortPublicEventsForFeaturedDiscovery", () => {
32
+ const viewer = { lat: 40.7128, lng: -74.006, radiusMiles: 10 };
33
+ it("sorts effective featured events before non-featured", () => {
34
+ const events = [
35
+ {
36
+ id: "b",
37
+ isFeatured: false,
38
+ featuredUntil: null,
39
+ startDateTime: "2026-06-02T00:00:00Z",
40
+ coordinates: [{ lat: 40.72, lng: -74.01 }],
41
+ },
42
+ {
43
+ id: "a",
44
+ isFeatured: true,
45
+ featuredUntil: null,
46
+ startDateTime: "2026-06-01T00:00:00Z",
47
+ coordinates: [{ lat: 40.72, lng: -74.01 }],
48
+ },
49
+ ];
50
+ const sorted = sortPublicEventsForFeaturedDiscovery(events, viewer);
51
+ expect(sorted.map((e) => e.id)).toEqual(["a", "b"]);
52
+ });
53
+ it("sorts by startDateTime within the same featured bucket", () => {
54
+ const events = [
55
+ {
56
+ id: "late",
57
+ isFeatured: true,
58
+ featuredUntil: null,
59
+ startDateTime: "2026-06-03T00:00:00Z",
60
+ coordinates: [{ lat: 40.72, lng: -74.01 }],
61
+ },
62
+ {
63
+ id: "early",
64
+ isFeatured: true,
65
+ featuredUntil: null,
66
+ startDateTime: "2026-06-01T00:00:00Z",
67
+ coordinates: [{ lat: 40.72, lng: -74.01 }],
68
+ },
69
+ ];
70
+ expect(sortPublicEventsForFeaturedDiscovery(events, viewer).map((e) => e.id)).toEqual([
71
+ "early",
72
+ "late",
73
+ ]);
74
+ });
75
+ it("treats out-of-scope featured events as non-featured for ordering", () => {
76
+ const events = [
77
+ {
78
+ id: "far-featured",
79
+ isFeatured: true,
80
+ featuredUntil: null,
81
+ startDateTime: "2026-06-01T00:00:00Z",
82
+ coordinates: [{ lat: 34.05, lng: -118.24 }],
83
+ },
84
+ {
85
+ id: "local-regular",
86
+ isFeatured: false,
87
+ featuredUntil: null,
88
+ startDateTime: "2026-06-02T00:00:00Z",
89
+ coordinates: [{ lat: 40.72, lng: -74.01 }],
90
+ },
91
+ ];
92
+ expect(sortPublicEventsForFeaturedDiscovery(events, viewer).map((e) => e.id)).toEqual([
93
+ "far-featured",
94
+ "local-regular",
95
+ ]);
96
+ });
97
+ });
98
+ //# sourceMappingURL=featuredDiscoveryGeo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featuredDiscoveryGeo.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/featuredDiscoveryGeo.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "@jest/globals";
2
- import { isEddmFlatSizeCompliant, quoteFlyerTierForHouseholds, computeHostTotalAfterSponsors, FLYER_PRICING_TIERS, USPS_EDDM_RETAIL_MIN_MAILPIECES, flyerQrScanPath, flyerSponsorQrScanPath, generateFlyerCampaignSlug, distanceMiles, FLYER_SPONSOR_DEFAULT_FEATURED_CENTS, FLYER_SPONSOR_DEFAULT_SUPPORTING_CENTS, FLYER_SPONSOR_ALLOWED_LOGO_MIME_TYPES, FLYER_SPONSOR_BUSINESS_NAME_MAX_LENGTH, FLYER_SPONSOR_CATEGORY_MAX_LENGTH, FLYER_SPONSOR_CTA_MAX_LENGTH, FLYER_SPONSOR_LOGO_ALT_MAX_LENGTH, FLYER_SPONSOR_LOGO_MAX_BYTES, validateFlyerSponsorCreative, } from "../flyerUtils.js";
2
+ import { isEddmFlatSizeCompliant, quoteFlyerTierForHouseholds, computeHostTotalAfterSponsors, FLYER_PRICING_TIERS, USPS_EDDM_RETAIL_MIN_MAILPIECES, flyerQrScanPath, flyerSponsorQrScanPath, generateFlyerCampaignSlug, distanceMiles, FLYER_SPONSOR_DEFAULT_FEATURED_CENTS, FLYER_SPONSOR_DEFAULT_SUPPORTING_CENTS, FLYER_SPONSOR_ALLOWED_LOGO_MIME_TYPES, FLYER_SPONSOR_BUSINESS_NAME_MAX_LENGTH, FLYER_SPONSOR_CATEGORY_MAX_LENGTH, FLYER_SPONSOR_CTA_MAX_LENGTH, FLYER_SPONSOR_LOGO_ALT_MAX_LENGTH, FLYER_SPONSOR_LOGO_MAX_BYTES, validateFlyerSponsorCreative, flyerSponsorSlotPriceCents, flyerSponsorSlotHostPct, flyerSponsorSlotLabel, } from "../flyerUtils.js";
3
3
  describe("flyerUtils", () => {
4
4
  it("isEddmFlatSizeCompliant accepts 6.25 x 11", () => {
5
5
  expect(isEddmFlatSizeCompliant(6.25, 11)).toBe(true);
@@ -50,6 +50,12 @@ describe("flyerUtils", () => {
50
50
  "image/svg+xml",
51
51
  ]);
52
52
  });
53
+ it("flyerSponsorSlotPriceCents and host pct follow slot type", () => {
54
+ expect(flyerSponsorSlotPriceCents("FEATURED")).toBe(10000);
55
+ expect(flyerSponsorSlotPriceCents("SUPPORTING_1")).toBe(5000);
56
+ expect(flyerSponsorSlotHostPct("FEATURED")).toBe(0.6);
57
+ expect(flyerSponsorSlotLabel("FEATURED")).toBe("Featured");
58
+ });
53
59
  it("validates sponsor creative text limits and trims fields before checking", () => {
54
60
  expect(validateFlyerSponsorCreative({
55
61
  businessName: ` ${"B".repeat(FLYER_SPONSOR_BUSINESS_NAME_MAX_LENGTH)} `,
@@ -1 +1 @@
1
- {"version":3,"file":"flyerUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/flyerUtils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flyerUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/flyerUtils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guestSurface.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestSurface.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/guestSurface.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import { capRosterDepthForEventMode, filterHiddenVisibilityUserIds, orderPreviewAttendeeIds, resolveEffectiveEventMode, resolveGuestSurfacePolicy, viewerMayFetchFullRoster, maxGuestListDepth, } from "../guestSurface.js";
2
+ describe("resolveEffectiveEventMode", () => {
3
+ it("maps legacy showAttendees false to Hidden", () => {
4
+ expect(resolveEffectiveEventMode({ showAttendees: false })).toBe("Hidden");
5
+ });
6
+ it("honours CountOnly", () => {
7
+ expect(resolveEffectiveEventMode({ attendeeDisplayMode: "CountOnly" })).toBe("CountOnly");
8
+ });
9
+ });
10
+ describe("resolveGuestSurfacePolicy", () => {
11
+ it("Hidden mode hides everything for public viewers", () => {
12
+ const policy = resolveGuestSurfacePolicy({
13
+ eventMode: "Hidden",
14
+ isHost: false,
15
+ isAuthenticated: true,
16
+ viewerRosterDepth: "Full",
17
+ });
18
+ expect(policy.showCount).toBe(false);
19
+ expect(policy.showPreviewAvatars).toBe(false);
20
+ });
21
+ it("CountOnly shows count but not avatars", () => {
22
+ const policy = resolveGuestSurfacePolicy({
23
+ eventMode: "CountOnly",
24
+ isHost: false,
25
+ isAuthenticated: false,
26
+ viewerRosterDepth: "None",
27
+ });
28
+ expect(policy.showCount).toBe(true);
29
+ expect(policy.showPreviewAvatars).toBe(false);
30
+ });
31
+ it("All mode shows curated preview", () => {
32
+ const policy = resolveGuestSurfacePolicy({
33
+ eventMode: "All",
34
+ isHost: false,
35
+ isAuthenticated: true,
36
+ viewerRosterDepth: "None",
37
+ });
38
+ expect(policy.showPreviewAvatars).toBe(true);
39
+ expect(policy.showNetworkSlice).toBe(true);
40
+ });
41
+ });
42
+ describe("viewerMayFetchFullRoster", () => {
43
+ it("denies non-host with None depth", () => {
44
+ expect(viewerMayFetchFullRoster({ isHost: false, viewerRosterDepth: "None" })).toBe(false);
45
+ });
46
+ it("allows host", () => {
47
+ expect(viewerMayFetchFullRoster({ isHost: true, viewerRosterDepth: "None" })).toBe(true);
48
+ });
49
+ it("allows VIP Partial depth", () => {
50
+ expect(viewerMayFetchFullRoster({ isHost: false, viewerRosterDepth: "Partial" })).toBe(true);
51
+ });
52
+ });
53
+ describe("orderPreviewAttendeeIds", () => {
54
+ it("puts featured first then by recency", () => {
55
+ const ids = orderPreviewAttendeeIds([
56
+ { userId: "a", paidOn: "2026-01-01" },
57
+ { userId: "b", paidOn: "2026-06-01" },
58
+ { userId: "c", paidOn: "2026-03-01" },
59
+ ], ["a"], 10);
60
+ expect(ids[0]).toBe("a");
61
+ expect(ids[1]).toBe("b");
62
+ });
63
+ });
64
+ describe("maxGuestListDepth", () => {
65
+ it("picks highest depth", () => {
66
+ expect(maxGuestListDepth("None", "Partial", "Full")).toBe("Full");
67
+ });
68
+ });
69
+ describe("capRosterDepthForEventMode", () => {
70
+ it("caps VIP to None when event is NetworkOnly", () => {
71
+ expect(capRosterDepthForEventMode("Full", "NetworkOnly", false)).toBe("None");
72
+ });
73
+ });
74
+ describe("filterHiddenVisibilityUserIds", () => {
75
+ it("hides FeaturedInvited from public preview", () => {
76
+ const map = new Map([
77
+ ["a", "Visible"],
78
+ ["b", "FeaturedInvited"],
79
+ ["c", "FeaturedPending"],
80
+ ]);
81
+ expect(filterHiddenVisibilityUserIds(["a", "b", "c"], map, false)).toEqual([
82
+ "a",
83
+ "c",
84
+ ]);
85
+ });
86
+ it("shows all ids to host including FeaturedInvited", () => {
87
+ const map = new Map([["b", "FeaturedInvited"]]);
88
+ expect(filterHiddenVisibilityUserIds(["a", "b"], map, true)).toEqual([
89
+ "a",
90
+ "b",
91
+ ]);
92
+ });
93
+ });
94
+ //# sourceMappingURL=guestSurface.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guestSurface.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/guestSurface.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ticketTierSchedule.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticketTierSchedule.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/ticketTierSchedule.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { isTicketTierGuestListVisible, resolveTicketTierScheduleState, scheduleValidationHasErrors, validateTicketTierScheduleInput, } from "../ticketTierSchedule.js";
2
+ describe("resolveTicketTierScheduleState", () => {
3
+ const future = new Date("2030-06-01T18:00:00.000Z");
4
+ const past = new Date("2020-01-01T12:00:00.000Z");
5
+ const now = new Date("2030-05-01T12:00:00.000Z");
6
+ it("returns Live for immediate tier with inventory", () => {
7
+ const state = resolveTicketTierScheduleState({ availabilityType: "Immediate" }, { now, availableInventory: 10 });
8
+ expect(state.phase).toBe("Live");
9
+ expect(state.canPurchase).toBe(true);
10
+ });
11
+ it("does not treat missing inventory as sold out", () => {
12
+ const state = resolveTicketTierScheduleState({ availabilityType: "Immediate" }, { now });
13
+ expect(state.phase).toBe("Live");
14
+ expect(state.soldOut).toBe(false);
15
+ expect(state.hostPreviewLabel).toBe("Live");
16
+ });
17
+ it("returns TeasePreRelease before OnDate", () => {
18
+ const state = resolveTicketTierScheduleState({
19
+ availabilityType: "OnDate",
20
+ availableAt: future,
21
+ preReleaseDisplay: "Tease",
22
+ }, { now, availableInventory: 10 });
23
+ expect(state.phase).toBe("TeasePreRelease");
24
+ expect(state.canPurchase).toBe(false);
25
+ expect(state.availability.reason).toBe("OnDate");
26
+ expect(isTicketTierGuestListVisible(state)).toBe(true);
27
+ });
28
+ it("returns HiddenPreRelease when preReleaseDisplay is Hidden", () => {
29
+ const state = resolveTicketTierScheduleState({
30
+ availabilityType: "OnDate",
31
+ availableAt: future,
32
+ preReleaseDisplay: "Hidden",
33
+ }, { now, availableInventory: 10 });
34
+ expect(state.phase).toBe("HiddenPreRelease");
35
+ expect(isTicketTierGuestListVisible(state)).toBe(false);
36
+ });
37
+ it("returns Expired after expiresAt", () => {
38
+ const state = resolveTicketTierScheduleState({ expiresAt: past }, { now, availableInventory: 10 });
39
+ expect(state.phase).toBe("Expired");
40
+ expect(state.canPurchase).toBe(false);
41
+ });
42
+ it("returns SoldOut when manually sold out", () => {
43
+ const state = resolveTicketTierScheduleState({ isManuallySoldOut: true }, { now, availableInventory: 50 });
44
+ expect(state.phase).toBe("SoldOut");
45
+ expect(state.showWaitlistCta).toBe(false);
46
+ });
47
+ it("shows waitlist CTA when sold out and waitlist tier", () => {
48
+ const state = resolveTicketTierScheduleState({ isWaitlistTier: true }, { now, availableInventory: 0 });
49
+ expect(state.phase).toBe("SoldOut");
50
+ expect(state.showWaitlistCta).toBe(true);
51
+ });
52
+ it("blocks EngagedUsersOnly when viewer not engaged", () => {
53
+ const state = resolveTicketTierScheduleState({ availabilityType: "EngagedUsersOnly" }, { now, availableInventory: 5, isViewerEngaged: false });
54
+ expect(state.canPurchase).toBe(false);
55
+ expect(state.availability.reason).toBe("EngagedUsersOnly");
56
+ });
57
+ it("UnlockWhenTicketsSold unlocks at threshold", () => {
58
+ const locked = resolveTicketTierScheduleState({
59
+ availabilityType: "UnlockWhenTicketsSold",
60
+ unlockWhenTicketsSold: 50,
61
+ }, { now, availableInventory: 10, ticketsSoldCount: 10 });
62
+ expect(locked.canPurchase).toBe(false);
63
+ const open = resolveTicketTierScheduleState({
64
+ availabilityType: "UnlockWhenTicketsSold",
65
+ unlockWhenTicketsSold: 50,
66
+ }, { now, availableInventory: 10, ticketsSoldCount: 50 });
67
+ expect(open.canPurchase).toBe(true);
68
+ });
69
+ });
70
+ describe("validateTicketTierScheduleInput", () => {
71
+ it("requires availableAt for OnDate", () => {
72
+ const issues = validateTicketTierScheduleInput({ availabilityType: "OnDate" });
73
+ expect(scheduleValidationHasErrors(issues)).toBe(true);
74
+ });
75
+ it("rejects expires before release", () => {
76
+ const issues = validateTicketTierScheduleInput({
77
+ availabilityType: "OnDate",
78
+ availableAt: new Date("2030-06-02T12:00:00Z"),
79
+ expiresAt: new Date("2030-06-01T12:00:00Z"),
80
+ });
81
+ expect(scheduleValidationHasErrors(issues)).toBe(true);
82
+ });
83
+ });
84
+ //# sourceMappingURL=ticketTierSchedule.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticketTierSchedule.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/ticketTierSchedule.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** Default featured-discovery radius when the client omits `featuredRadiusMiles`. */
2
+ export declare const DEFAULT_FEATURED_RADIUS_MILES = 200;
3
+ /**
4
+ * Haversine distance in miles between two WGS84 points.
5
+ */
6
+ export declare function haversineMiles(lat1: number, lng1: number, lat2: number, lng2: number): number;
7
+ export interface ViewerGeoScope {
8
+ lat: number;
9
+ lng: number;
10
+ radiusMiles: number;
11
+ }
12
+ export declare function effectiveFeaturedForGeoScope(isFeatured: boolean, coordinates: Array<{
13
+ lat: number | null;
14
+ lng: number | null;
15
+ }> | null | undefined, viewer: ViewerGeoScope | undefined): boolean;
16
+ export type EventWithFeaturedAndCoords = {
17
+ id: string;
18
+ isFeatured: boolean | null;
19
+ featuredUntil?: Date | null;
20
+ startDateTime: Date | string | null;
21
+ coordinates?: Array<{
22
+ lat: number | null;
23
+ lng: number | null;
24
+ }> | null;
25
+ };
26
+ /**
27
+ * Sort: effective featured (in geo scope if viewer set) first, then by startDateTime.
28
+ */
29
+ export declare function sortPublicEventsForFeaturedDiscovery<T extends EventWithFeaturedAndCoords>(events: T[], viewer: ViewerGeoScope | undefined): T[];
30
+ //# sourceMappingURL=featuredDiscoveryGeo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featuredDiscoveryGeo.d.ts","sourceRoot":"","sources":["../../src/utils/featuredDiscoveryGeo.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAYR;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACjF,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,OAAO,CAOT;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,CAAC,SAAS,0BAA0B,EACpC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,CAAC,EAAE,CAiBtD"}
@@ -0,0 +1,47 @@
1
+ /** Default featured-discovery radius when the client omits `featuredRadiusMiles`. */
2
+ export const DEFAULT_FEATURED_RADIUS_MILES = 200;
3
+ /**
4
+ * Haversine distance in miles between two WGS84 points.
5
+ */
6
+ export function haversineMiles(lat1, lng1, lat2, lng2) {
7
+ const R = 3958.8;
8
+ const dLat = ((lat2 - lat1) * Math.PI) / 180;
9
+ const dLng = ((lng2 - lng1) * Math.PI) / 180;
10
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
11
+ Math.cos((lat1 * Math.PI) / 180) *
12
+ Math.cos((lat2 * Math.PI) / 180) *
13
+ Math.sin(dLng / 2) *
14
+ Math.sin(dLng / 2);
15
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
16
+ return R * c;
17
+ }
18
+ export function effectiveFeaturedForGeoScope(isFeatured, coordinates, viewer) {
19
+ if (!isFeatured)
20
+ return false;
21
+ if (!viewer)
22
+ return true;
23
+ const first = coordinates?.find((c) => c.lat != null && c.lng != null);
24
+ if (!first || first.lat == null || first.lng == null)
25
+ return false;
26
+ const d = haversineMiles(first.lat, first.lng, viewer.lat, viewer.lng);
27
+ return d <= viewer.radiusMiles;
28
+ }
29
+ /**
30
+ * Sort: effective featured (in geo scope if viewer set) first, then by startDateTime.
31
+ */
32
+ export function sortPublicEventsForFeaturedDiscovery(events, viewer) {
33
+ const withKeys = events.map((e) => {
34
+ const eff = effectiveFeaturedForGeoScope(!!e.isFeatured, e.coordinates, viewer);
35
+ const start = e.startDateTime
36
+ ? new Date(e.startDateTime).getTime()
37
+ : 0;
38
+ return { e, eff, start };
39
+ });
40
+ withKeys.sort((a, b) => {
41
+ if (a.eff !== b.eff)
42
+ return (b.eff ? 1 : 0) - (a.eff ? 1 : 0);
43
+ return a.start - b.start;
44
+ });
45
+ return withKeys.map((x) => x.e);
46
+ }
47
+ //# sourceMappingURL=featuredDiscoveryGeo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featuredDiscoveryGeo.js","sourceRoot":"","sources":["../../src/utils/featuredDiscoveryGeo.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export declare function isEddmFlatSizeCompliant(widthIn: number, heightIn: numbe
48
48
  */
49
49
  export declare function quoteFlyerTierForHouseholds(totalHouseholds: number): FlyerTierQuote | null;
50
50
  export declare function computeHostTotalAfterSponsors(printPostageCostCents: number, sponsorRevenueCents: number): number;
51
+ /** Default slot price in cents for Featured vs Supporting flyer slots. */
52
+ export declare function flyerSponsorSlotPriceCents(slot: "FEATURED" | "SUPPORTING_1" | "SUPPORTING_2", requestedPrice?: number): number;
53
+ /** Host revenue share for a flyer sponsor slot. */
54
+ export declare function flyerSponsorSlotHostPct(slot: "FEATURED" | "SUPPORTING_1" | "SUPPORTING_2"): number;
55
+ export declare function flyerSponsorSlotLabel(slot: "FEATURED" | "SUPPORTING_1" | "SUPPORTING_2"): string;
51
56
  /** Haversine distance in miles between two WGS84 points. */
52
57
  export declare function distanceMiles(lat1: number, lng1: number, lat2: number, lng2: number): number;
53
58
  /** URL path for the public QR scan endpoint (prepend API origin in clients). */
@@ -1 +1 @@
1
- {"version":3,"file":"flyerUtils.d.ts","sourceRoot":"","sources":["../../src/utils/flyerUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,uEAAuE;AACvE,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,EA6B/C,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,oCAAoC,QAAQ,CAAC;AAC1D,eAAO,MAAM,sCAAsC,OAAO,CAAC;AAC3D,eAAO,MAAM,sCAAsC,KAAK,CAAC;AACzD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,4BAA4B,QAAkB,CAAC;AAC5D,eAAO,MAAM,qCAAqC,qEAKxC,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,oCAAoC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,GAC/B,oCAAoC,CAgCtC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIlF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,GACtB,cAAc,GAAG,IAAI,CAkBvB;AAED,wBAAgB,6BAA6B,CAC3C,qBAAqB,EAAE,MAAM,EAC7B,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAER;AAID,4DAA4D;AAC5D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAUR;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAOlD"}
1
+ {"version":3,"file":"flyerUtils.d.ts","sourceRoot":"","sources":["../../src/utils/flyerUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,uEAAuE;AACvE,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,EA6B/C,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,oCAAoC,QAAQ,CAAC;AAC1D,eAAO,MAAM,sCAAsC,OAAO,CAAC;AAC3D,eAAO,MAAM,sCAAsC,KAAK,CAAC;AACzD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,4BAA4B,QAAkB,CAAC;AAC5D,eAAO,MAAM,qCAAqC,qEAKxC,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,oCAAoC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,GAC/B,oCAAoC,CAgCtC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIlF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,eAAe,EAAE,MAAM,GACtB,cAAc,GAAG,IAAI,CAkBvB;AAED,wBAAgB,6BAA6B,CAC3C,qBAAqB,EAAE,MAAM,EAC7B,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAER;AAED,0EAA0E;AAC1E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,EAClD,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAKR;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,GACjD,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,GACjD,MAAM,CAWR;AAID,4DAA4D;AAC5D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAUR;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAOlD"}
@@ -108,6 +108,30 @@ export function quoteFlyerTierForHouseholds(totalHouseholds) {
108
108
  export function computeHostTotalAfterSponsors(printPostageCostCents, sponsorRevenueCents) {
109
109
  return Math.max(0, printPostageCostCents - sponsorRevenueCents);
110
110
  }
111
+ /** Default slot price in cents for Featured vs Supporting flyer slots. */
112
+ export function flyerSponsorSlotPriceCents(slot, requestedPrice) {
113
+ if (requestedPrice != null)
114
+ return requestedPrice;
115
+ return slot === "FEATURED"
116
+ ? FLYER_SPONSOR_DEFAULT_FEATURED_CENTS
117
+ : FLYER_SPONSOR_DEFAULT_SUPPORTING_CENTS;
118
+ }
119
+ /** Host revenue share for a flyer sponsor slot. */
120
+ export function flyerSponsorSlotHostPct(slot) {
121
+ return slot === "FEATURED" ? 0.6 : 0.65;
122
+ }
123
+ export function flyerSponsorSlotLabel(slot) {
124
+ switch (slot) {
125
+ case "FEATURED":
126
+ return "Featured";
127
+ case "SUPPORTING_1":
128
+ return "Supporting 1";
129
+ case "SUPPORTING_2":
130
+ return "Supporting 2";
131
+ default:
132
+ return slot;
133
+ }
134
+ }
111
135
  const EARTH_RADIUS_MI = 3958.8;
112
136
  /** Haversine distance in miles between two WGS84 points. */
113
137
  export function distanceMiles(lat1, lng1, lat2, lng2) {
@@ -1 +1 @@
1
- {"version":3,"file":"flyerUtils.js","sourceRoot":"","sources":["../../src/utils/flyerUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flyerUtils.js","sourceRoot":"","sources":["../../src/utils/flyerUtils.ts"],"names":[],"mappings":"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"}