@bash-app/bash-common 30.225.0 → 30.227.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 (142) hide show
  1. package/dist/__tests__/agePolicy.test.d.ts +2 -0
  2. package/dist/__tests__/agePolicy.test.d.ts.map +1 -0
  3. package/dist/__tests__/agePolicy.test.js +203 -0
  4. package/dist/__tests__/agePolicy.test.js.map +1 -0
  5. package/dist/__tests__/getDisplayGender.test.d.ts +2 -0
  6. package/dist/__tests__/getDisplayGender.test.d.ts.map +1 -0
  7. package/dist/__tests__/getDisplayGender.test.js +34 -0
  8. package/dist/__tests__/getDisplayGender.test.js.map +1 -0
  9. package/dist/__tests__/statusEnums.test.d.ts +2 -0
  10. package/dist/__tests__/statusEnums.test.d.ts.map +1 -0
  11. package/dist/__tests__/statusEnums.test.js +24 -0
  12. package/dist/__tests__/statusEnums.test.js.map +1 -0
  13. package/dist/aiApproval.d.ts +89 -0
  14. package/dist/aiApproval.d.ts.map +1 -0
  15. package/dist/aiApproval.js +82 -0
  16. package/dist/aiApproval.js.map +1 -0
  17. package/dist/definitions.d.ts +44 -2
  18. package/dist/definitions.d.ts.map +1 -1
  19. package/dist/definitions.js +106 -2
  20. package/dist/definitions.js.map +1 -1
  21. package/dist/extendedSchemas.d.ts +280 -105
  22. package/dist/extendedSchemas.d.ts.map +1 -1
  23. package/dist/extendedSchemas.js +34 -2
  24. package/dist/extendedSchemas.js.map +1 -1
  25. package/dist/index.d.ts +5 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/legalTemplates.d.ts +1 -1
  30. package/dist/legalTemplates.js +1 -1
  31. package/dist/utils/__tests__/badgeUtils.test.d.ts +2 -0
  32. package/dist/utils/__tests__/badgeUtils.test.d.ts.map +1 -0
  33. package/dist/utils/__tests__/badgeUtils.test.js +157 -0
  34. package/dist/utils/__tests__/badgeUtils.test.js.map +1 -0
  35. package/dist/utils/__tests__/bashPointsPaymentUtils.test.d.ts +2 -0
  36. package/dist/utils/__tests__/bashPointsPaymentUtils.test.d.ts.map +1 -0
  37. package/dist/utils/__tests__/bashPointsPaymentUtils.test.js +114 -0
  38. package/dist/utils/__tests__/bashPointsPaymentUtils.test.js.map +1 -0
  39. package/dist/utils/__tests__/contentFilterUtils.test.d.ts +2 -0
  40. package/dist/utils/__tests__/contentFilterUtils.test.d.ts.map +1 -0
  41. package/dist/utils/__tests__/contentFilterUtils.test.js +443 -0
  42. package/dist/utils/__tests__/contentFilterUtils.test.js.map +1 -0
  43. package/dist/utils/__tests__/displayDateUtils.test.d.ts +2 -0
  44. package/dist/utils/__tests__/displayDateUtils.test.d.ts.map +1 -0
  45. package/dist/utils/__tests__/displayDateUtils.test.js +105 -0
  46. package/dist/utils/__tests__/displayDateUtils.test.js.map +1 -0
  47. package/dist/utils/__tests__/flyerUtils.test.d.ts +2 -0
  48. package/dist/utils/__tests__/flyerUtils.test.d.ts.map +1 -0
  49. package/dist/utils/__tests__/flyerUtils.test.js +49 -0
  50. package/dist/utils/__tests__/flyerUtils.test.js.map +1 -0
  51. package/dist/utils/__tests__/getBackendHost.test.d.ts +2 -0
  52. package/dist/utils/__tests__/getBackendHost.test.d.ts.map +1 -0
  53. package/dist/utils/__tests__/getBackendHost.test.js +104 -0
  54. package/dist/utils/__tests__/getBackendHost.test.js.map +1 -0
  55. package/dist/utils/__tests__/getFrontendHost.test.d.ts +2 -0
  56. package/dist/utils/__tests__/getFrontendHost.test.d.ts.map +1 -0
  57. package/dist/utils/__tests__/getFrontendHost.test.js +207 -0
  58. package/dist/utils/__tests__/getFrontendHost.test.js.map +1 -0
  59. package/dist/utils/__tests__/promoCodesUtils.test.d.ts +2 -0
  60. package/dist/utils/__tests__/promoCodesUtils.test.d.ts.map +1 -0
  61. package/dist/utils/__tests__/promoCodesUtils.test.js +183 -0
  62. package/dist/utils/__tests__/promoCodesUtils.test.js.map +1 -0
  63. package/dist/utils/__tests__/qrCodeUtils.test.d.ts +2 -0
  64. package/dist/utils/__tests__/qrCodeUtils.test.d.ts.map +1 -0
  65. package/dist/utils/__tests__/qrCodeUtils.test.js +99 -0
  66. package/dist/utils/__tests__/qrCodeUtils.test.js.map +1 -0
  67. package/dist/utils/__tests__/stripeAccountUtils.test.d.ts +2 -0
  68. package/dist/utils/__tests__/stripeAccountUtils.test.d.ts.map +1 -0
  69. package/dist/utils/__tests__/stripeAccountUtils.test.js +75 -0
  70. package/dist/utils/__tests__/stripeAccountUtils.test.js.map +1 -0
  71. package/dist/utils/blog/__tests__/getRelatedBlogPosts.test.d.ts +2 -0
  72. package/dist/utils/blog/__tests__/getRelatedBlogPosts.test.d.ts.map +1 -0
  73. package/dist/utils/blog/__tests__/getRelatedBlogPosts.test.js +233 -0
  74. package/dist/utils/blog/__tests__/getRelatedBlogPosts.test.js.map +1 -0
  75. package/dist/utils/blog/blogCommentDbUtils.d.ts +161 -0
  76. package/dist/utils/blog/blogCommentDbUtils.d.ts.map +1 -0
  77. package/dist/utils/blog/blogCommentDbUtils.js +111 -0
  78. package/dist/utils/blog/blogCommentDbUtils.js.map +1 -0
  79. package/dist/utils/blog/blogDbUtils.d.ts +10 -0
  80. package/dist/utils/blog/blogDbUtils.d.ts.map +1 -1
  81. package/dist/utils/blog/blogDbUtils.js +71 -0
  82. package/dist/utils/blog/blogDbUtils.js.map +1 -1
  83. package/dist/utils/flyerUtils.d.ts +42 -0
  84. package/dist/utils/flyerUtils.d.ts.map +1 -0
  85. package/dist/utils/flyerUtils.js +104 -0
  86. package/dist/utils/flyerUtils.js.map +1 -0
  87. package/dist/utils/urlUtils.d.ts +10 -0
  88. package/dist/utils/urlUtils.d.ts.map +1 -1
  89. package/dist/utils/urlUtils.js +24 -5
  90. package/dist/utils/urlUtils.js.map +1 -1
  91. package/dist/utils/userUtils.d.ts +32 -0
  92. package/dist/utils/userUtils.d.ts.map +1 -1
  93. package/dist/utils/userUtils.js +27 -0
  94. package/dist/utils/userUtils.js.map +1 -1
  95. package/package.json +1 -1
  96. package/prisma/schema.prisma +1196 -845
  97. package/src/__tests__/agePolicy.test.ts +257 -0
  98. package/src/__tests__/getDisplayGender.test.ts +50 -0
  99. package/src/__tests__/statusEnums.test.ts +36 -0
  100. package/src/aiApproval.ts +118 -0
  101. package/src/definitions.ts +138 -1
  102. package/src/extendedSchemas.ts +86 -3
  103. package/src/index.ts +15 -0
  104. package/src/legalTemplates.ts +1 -1
  105. package/src/utils/__tests__/badgeUtils.test.ts +191 -0
  106. package/src/utils/__tests__/bashPointsPaymentUtils.test.ts +153 -0
  107. package/src/utils/__tests__/contentFilterUtils.test.ts +547 -0
  108. package/src/utils/__tests__/displayDateUtils.test.ts +113 -0
  109. package/src/utils/__tests__/flyerUtils.test.ts +70 -0
  110. package/src/utils/__tests__/getBackendHost.test.ts +128 -0
  111. package/src/utils/__tests__/getFrontendHost.test.ts +232 -0
  112. package/src/utils/__tests__/promoCodesUtils.test.ts +237 -0
  113. package/src/utils/__tests__/qrCodeUtils.test.ts +143 -0
  114. package/src/utils/__tests__/stripeAccountUtils.test.ts +93 -0
  115. package/src/utils/blog/__tests__/getRelatedBlogPosts.test.ts +271 -0
  116. package/src/utils/blog/blogCommentDbUtils.ts +161 -0
  117. package/src/utils/blog/blogDbUtils.ts +95 -1
  118. package/src/utils/flyerUtils.ts +137 -0
  119. package/src/utils/urlUtils.ts +27 -5
  120. package/src/utils/userUtils.ts +40 -0
  121. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.d.ts +0 -6
  122. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.d.ts.map +0 -1
  123. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.js +0 -104
  124. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.js.map +0 -1
  125. package/dist/utils/service/serviceRateDBUtils.d.ts +0 -1
  126. package/dist/utils/service/serviceRateDBUtils.d.ts.map +0 -1
  127. package/dist/utils/service/serviceRateDBUtils.js +0 -159
  128. package/dist/utils/service/serviceRateDBUtils.js.map +0 -1
  129. package/prisma/migrations/add_bash_availability.sql +0 -53
  130. package/prisma/migrations/add_bashcash_pricing_to_ticket_tier.sql +0 -15
  131. package/prisma/migrations/add_bashpoints_purchase_tracking.sql +0 -33
  132. package/prisma/migrations/add_event_group_allow_auto_join.sql +0 -17
  133. package/prisma/migrations/add_group_member_status_not_going_maybe.sql +0 -5
  134. package/prisma/migrations/add_groups_and_momentum.sql +0 -135
  135. package/prisma/migrations/add_groups_momentum_phase0_4.sql +0 -200
  136. package/prisma/migrations/add_new_feature_tables.sql +0 -140
  137. package/prisma/migrations/add_pricing_type_enum.sql +0 -88
  138. package/prisma/migrations/add_tier_privacy_and_fee_handling.sql +0 -29
  139. package/prisma/migrations/diagnostic_bashcash_columns.sql +0 -157
  140. package/prisma/migrations/fix_bashcash_referral_code_schema_mismatch.sql +0 -81
  141. package/prisma/migrations/rename_bashcash_to_bashpoints.sql +0 -183
  142. package/prisma/migrations/rename_bashcredits_to_bashpoints.sql +0 -96
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRelatedBlogPosts.test.js","sourceRoot":"","sources":["../../../../src/utils/blog/__tests__/getRelatedBlogPosts.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { PrismaClient, BlogComment, CommentStatus } from '@prisma/client';
2
+ import { PublicUser } from '../../extendedSchemas.js';
3
+ export declare const BLOG_COMMENT_INCLUDE: {
4
+ author: {
5
+ select: {
6
+ id: true;
7
+ username: true;
8
+ email: true;
9
+ givenName: true;
10
+ familyName: true;
11
+ image: true;
12
+ imageUpdatedAt: true;
13
+ uploadedImage: true;
14
+ uploadedImageUpdatedAt: true;
15
+ isSuperUser: true;
16
+ socialMediaProfiles: true;
17
+ city: true;
18
+ state: true;
19
+ createdOn: true;
20
+ dob: true;
21
+ showAgeOnProfile: true;
22
+ showGenderOnProfile: true;
23
+ showVerifiedBadgesOnProfile: true;
24
+ schoolName: true;
25
+ documentIDId: true;
26
+ idVerified: true;
27
+ paymentVerified: true;
28
+ reviews: true;
29
+ contacts: true;
30
+ accepted: true;
31
+ boughtTicket: true;
32
+ noPay: true;
33
+ supportedEvent: true;
34
+ aboutMe: true;
35
+ levelBadge: true;
36
+ temporaryBadges: true;
37
+ artistsToSee: true;
38
+ membershipTier: true;
39
+ isAmbashador: true;
40
+ isBashInsider: true;
41
+ scoutTier: true;
42
+ isFirstInCity: true;
43
+ paymentHandle: true;
44
+ bashPointsBalance: true;
45
+ bashPointsEarnedLifetime: true;
46
+ hostRating: true;
47
+ totalRatings: true;
48
+ totalEventsHosted: true;
49
+ isSuspended: true;
50
+ userSubscription: {
51
+ select: {
52
+ type: true;
53
+ status: true;
54
+ ownerId: true;
55
+ subscriptionCount: true;
56
+ listedCount: true;
57
+ };
58
+ };
59
+ };
60
+ };
61
+ replies: {
62
+ where: {
63
+ status: "Published";
64
+ };
65
+ orderBy: {
66
+ createdAt: "asc";
67
+ };
68
+ include: {
69
+ author: {
70
+ select: {
71
+ id: true;
72
+ username: true;
73
+ email: true;
74
+ givenName: true;
75
+ familyName: true;
76
+ image: true;
77
+ imageUpdatedAt: true;
78
+ uploadedImage: true;
79
+ uploadedImageUpdatedAt: true;
80
+ isSuperUser: true;
81
+ socialMediaProfiles: true;
82
+ city: true;
83
+ state: true;
84
+ createdOn: true;
85
+ dob: true;
86
+ showAgeOnProfile: true;
87
+ showGenderOnProfile: true;
88
+ showVerifiedBadgesOnProfile: true;
89
+ schoolName: true;
90
+ documentIDId: true;
91
+ idVerified: true;
92
+ paymentVerified: true;
93
+ reviews: true;
94
+ contacts: true;
95
+ accepted: true;
96
+ boughtTicket: true;
97
+ noPay: true;
98
+ supportedEvent: true;
99
+ aboutMe: true;
100
+ levelBadge: true;
101
+ temporaryBadges: true;
102
+ artistsToSee: true;
103
+ membershipTier: true;
104
+ isAmbashador: true;
105
+ isBashInsider: true;
106
+ scoutTier: true;
107
+ isFirstInCity: true;
108
+ paymentHandle: true;
109
+ bashPointsBalance: true;
110
+ bashPointsEarnedLifetime: true;
111
+ hostRating: true;
112
+ totalRatings: true;
113
+ totalEventsHosted: true;
114
+ isSuspended: true;
115
+ userSubscription: {
116
+ select: {
117
+ type: true;
118
+ status: true;
119
+ ownerId: true;
120
+ subscriptionCount: true;
121
+ listedCount: true;
122
+ };
123
+ };
124
+ };
125
+ };
126
+ };
127
+ };
128
+ };
129
+ export interface BlogCommentWithAuthor extends BlogComment {
130
+ author: PublicUser;
131
+ replies?: (BlogComment & {
132
+ author: PublicUser;
133
+ })[];
134
+ }
135
+ export declare function validateCommentContent(content: string): {
136
+ ok: true;
137
+ } | {
138
+ ok: false;
139
+ reason: string;
140
+ };
141
+ export declare function getBlogCommentsForPost(prisma: PrismaClient, postId: string): Promise<BlogCommentWithAuthor[]>;
142
+ export declare function getBlogCommentsByStatus(prisma: PrismaClient, status: CommentStatus | CommentStatus[], options?: {
143
+ limit?: number;
144
+ offset?: number;
145
+ }): Promise<BlogCommentWithAuthor[]>;
146
+ export declare function getBlogCommentById(prisma: PrismaClient, id: string): Promise<BlogCommentWithAuthor | null>;
147
+ export declare function createBlogComment(prisma: PrismaClient, data: {
148
+ postId: string;
149
+ authorId: string;
150
+ parentId?: string | null;
151
+ content: string;
152
+ status: CommentStatus;
153
+ }): Promise<BlogCommentWithAuthor>;
154
+ export declare function updateBlogCommentContent(prisma: PrismaClient, id: string, data: {
155
+ content: string;
156
+ status?: CommentStatus;
157
+ }): Promise<BlogCommentWithAuthor>;
158
+ export declare function setBlogCommentStatus(prisma: PrismaClient, id: string, status: CommentStatus): Promise<BlogCommentWithAuthor>;
159
+ export declare function softDeleteBlogComment(prisma: PrismaClient, id: string): Promise<BlogCommentWithAuthor>;
160
+ export declare function countRecentCommentsByAuthor(prisma: PrismaClient, authorId: string, windowMs: number): Promise<number>;
161
+ //# sourceMappingURL=blogCommentDbUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blogCommentDbUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/blog/blogCommentDbUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAiC,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAIrF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAaI,CAAC;AAEtC,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,WAAW,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,EAAE,CAAC;CACpD;AAKD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CASpG;AAGD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC;AAGD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,EACvC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAKvC;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB,GACA,OAAO,CAAC,qBAAqB,CAAC,CAWhC;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,GAChD,OAAO,CAAC,qBAAqB,CAAC,CAShC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAMhC;AAKD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,111 @@
1
+ import { CommentStatus } from '@prisma/client';
2
+ import { FRONT_END_USER_DATA_TO_SELECT } from '../../extendedSchemas.js';
3
+ // Shape returned by every helper below. Mirrors INVITATION_DATA_TO_INCLUDE
4
+ // pattern so consumers never have to `as`-cast.
5
+ export const BLOG_COMMENT_INCLUDE = {
6
+ author: {
7
+ select: FRONT_END_USER_DATA_TO_SELECT,
8
+ },
9
+ replies: {
10
+ where: { status: CommentStatus.Published },
11
+ orderBy: { createdAt: 'asc' },
12
+ include: {
13
+ author: {
14
+ select: FRONT_END_USER_DATA_TO_SELECT,
15
+ },
16
+ },
17
+ },
18
+ };
19
+ const MAX_COMMENT_LENGTH = 4000;
20
+ const MIN_COMMENT_LENGTH = 1;
21
+ export function validateCommentContent(content) {
22
+ const trimmed = content.trim();
23
+ if (trimmed.length < MIN_COMMENT_LENGTH) {
24
+ return { ok: false, reason: 'Comment cannot be empty.' };
25
+ }
26
+ if (trimmed.length > MAX_COMMENT_LENGTH) {
27
+ return { ok: false, reason: `Comment is too long (max ${MAX_COMMENT_LENGTH} characters).` };
28
+ }
29
+ return { ok: true };
30
+ }
31
+ // Public list: only Published comments + their Published replies.
32
+ export async function getBlogCommentsForPost(prisma, postId) {
33
+ const comments = await prisma.blogComment.findMany({
34
+ where: {
35
+ postId,
36
+ parentId: null,
37
+ status: CommentStatus.Published,
38
+ },
39
+ include: BLOG_COMMENT_INCLUDE,
40
+ orderBy: { createdAt: 'desc' },
41
+ });
42
+ return comments;
43
+ }
44
+ // Admin list: any status, used by the moderation queue.
45
+ export async function getBlogCommentsByStatus(prisma, status, options = {}) {
46
+ const { limit = 50, offset = 0 } = options;
47
+ const statusFilter = Array.isArray(status) ? { in: status } : status;
48
+ const comments = await prisma.blogComment.findMany({
49
+ where: { status: statusFilter },
50
+ include: BLOG_COMMENT_INCLUDE,
51
+ orderBy: { createdAt: 'desc' },
52
+ skip: offset,
53
+ take: limit,
54
+ });
55
+ return comments;
56
+ }
57
+ export async function getBlogCommentById(prisma, id) {
58
+ return prisma.blogComment.findUnique({
59
+ where: { id },
60
+ include: BLOG_COMMENT_INCLUDE,
61
+ });
62
+ }
63
+ // Caller (the API endpoint) is responsible for running AI moderation BEFORE
64
+ // calling this and choosing the resulting `status` (Published vs Pending).
65
+ // Keeping moderation in the API layer avoids dragging the OpenAI dependency
66
+ // into bash-common.
67
+ export async function createBlogComment(prisma, data) {
68
+ return prisma.blogComment.create({
69
+ data: {
70
+ postId: data.postId,
71
+ authorId: data.authorId,
72
+ parentId: data.parentId ?? null,
73
+ content: data.content.trim(),
74
+ status: data.status,
75
+ },
76
+ include: BLOG_COMMENT_INCLUDE,
77
+ });
78
+ }
79
+ export async function updateBlogCommentContent(prisma, id, data) {
80
+ return prisma.blogComment.update({
81
+ where: { id },
82
+ data: {
83
+ content: data.content.trim(),
84
+ ...(data.status ? { status: data.status } : {}),
85
+ },
86
+ include: BLOG_COMMENT_INCLUDE,
87
+ });
88
+ }
89
+ export async function setBlogCommentStatus(prisma, id, status) {
90
+ return prisma.blogComment.update({
91
+ where: { id },
92
+ data: { status },
93
+ include: BLOG_COMMENT_INCLUDE,
94
+ });
95
+ }
96
+ // Soft delete: preserves the row (and any child replies) so threading stays
97
+ // intact, but hides it from public reads. Use `setBlogCommentStatus` with
98
+ // `Trash` rather than a hard delete unless an admin explicitly removes it.
99
+ export async function softDeleteBlogComment(prisma, id) {
100
+ return setBlogCommentStatus(prisma, id, CommentStatus.Trash);
101
+ }
102
+ export async function countRecentCommentsByAuthor(prisma, authorId, windowMs) {
103
+ const since = new Date(Date.now() - windowMs);
104
+ return prisma.blogComment.count({
105
+ where: {
106
+ authorId,
107
+ createdAt: { gte: since },
108
+ },
109
+ });
110
+ }
111
+ //# sourceMappingURL=blogCommentDbUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blogCommentDbUtils.js","sourceRoot":"","sources":["../../../src/utils/blog/blogCommentDbUtils.ts"],"names":[],"mappings":"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"}
@@ -45,4 +45,14 @@ export declare function connectOrCreateTags(prisma: PrismaClient, tagNames: stri
45
45
  }[]>;
46
46
  export declare function getPopularBlogPosts(prisma: PrismaClient, limit?: number): Promise<BlogPostExt[]>;
47
47
  export declare function getRecentBlogPosts(prisma: PrismaClient, limit?: number): Promise<BlogPostExt[]>;
48
+ export interface RelatedBlogPost {
49
+ id: string;
50
+ slug: string | null;
51
+ title: string;
52
+ excerpt: string | null;
53
+ coverImage: string | null;
54
+ readTime: number | null;
55
+ publishedAt: Date | null;
56
+ }
57
+ export declare function getRelatedBlogPosts(prisma: PrismaClient, postId: string, limit?: number): Promise<RelatedBlogPost[]>;
48
58
  //# sourceMappingURL=blogDbUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blogDbUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/blog/blogDbUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blogDbUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/blog/blogDbUtils.ts"],"names":[],"mappings":"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"}
@@ -219,4 +219,75 @@ export async function getRecentBlogPosts(prisma, limit = 5) {
219
219
  });
220
220
  return posts;
221
221
  }
222
+ // Score candidate posts by (1) tag overlap with the source post, (2) shared
223
+ // category, then (3) recency. Drives the "Related posts" module that internal-
224
+ // links blog detail pages -- a major SEO lever per the backlink/SEO plan.
225
+ // Falls back to recent same-category posts when the source has no tags.
226
+ export async function getRelatedBlogPosts(prisma, postId, limit = 4) {
227
+ const source = await prisma.blogPost.findUnique({
228
+ where: { id: postId },
229
+ select: {
230
+ id: true,
231
+ categoryId: true,
232
+ tags: { select: { id: true } },
233
+ },
234
+ });
235
+ if (!source) {
236
+ return [];
237
+ }
238
+ const tagIds = source.tags.map((t) => t.id);
239
+ const orClauses = [];
240
+ if (tagIds.length > 0) {
241
+ orClauses.push({ tags: { some: { id: { in: tagIds } } } });
242
+ }
243
+ if (source.categoryId) {
244
+ orClauses.push({ categoryId: source.categoryId });
245
+ }
246
+ const where = {
247
+ id: { not: postId },
248
+ status: BlogStatus.Published,
249
+ publishedAt: { not: null },
250
+ ...(orClauses.length > 0 ? { OR: orClauses } : {}),
251
+ };
252
+ const candidates = await prisma.blogPost.findMany({
253
+ where,
254
+ select: {
255
+ id: true,
256
+ slug: true,
257
+ title: true,
258
+ excerpt: true,
259
+ coverImage: true,
260
+ readTime: true,
261
+ publishedAt: true,
262
+ categoryId: true,
263
+ tags: { select: { id: true } },
264
+ },
265
+ orderBy: { publishedAt: 'desc' },
266
+ take: limit * 4,
267
+ });
268
+ const scored = candidates.map((c) => {
269
+ const sharedTagCount = c.tags.filter((t) => tagIds.includes(t.id)).length;
270
+ const sharedCategory = source.categoryId && c.categoryId === source.categoryId ? 1 : 0;
271
+ const recency = c.publishedAt ? c.publishedAt.getTime() : 0;
272
+ return { c, sharedTagCount, sharedCategory, recency };
273
+ });
274
+ scored.sort((a, b) => {
275
+ if (b.sharedTagCount !== a.sharedTagCount) {
276
+ return b.sharedTagCount - a.sharedTagCount;
277
+ }
278
+ if (b.sharedCategory !== a.sharedCategory) {
279
+ return b.sharedCategory - a.sharedCategory;
280
+ }
281
+ return b.recency - a.recency;
282
+ });
283
+ return scored.slice(0, limit).map(({ c }) => ({
284
+ id: c.id,
285
+ slug: c.slug,
286
+ title: c.title,
287
+ excerpt: c.excerpt,
288
+ coverImage: c.coverImage,
289
+ readTime: c.readTime,
290
+ publishedAt: c.publishedAt,
291
+ }));
292
+ }
222
293
  //# sourceMappingURL=blogDbUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blogDbUtils.js","sourceRoot":"","sources":["../../../src/utils/blog/blogDbUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blogDbUtils.js","sourceRoot":"","sources":["../../../src/utils/blog/blogDbUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * USPS EDDM flat minimum: 6.125" × 11" (one dimension must be at least 11").
3
+ * Product standard used by Flyer Blast: 6.25" × 11" portrait.
4
+ */
5
+ export declare const FLYER_EDDM_WIDTH_IN = 6.25;
6
+ export declare const FLYER_EDDM_HEIGHT_IN = 11;
7
+ export declare const FLYER_EDDM_MIN_WIDTH_IN = 6.125;
8
+ export declare const FLYER_EDDM_MIN_HEIGHT_IN = 11;
9
+ /** USPS EDDM Retail per-piece postage (2026 — verify periodically). */
10
+ export declare const USPS_EDDM_RETAIL_PER_PIECE_CENTS = 24.7;
11
+ /**
12
+ * USPS EDDM Retail minimum mailpieces per mailing (saturation).
13
+ * Aligns with starter tier lower bound in `FLYER_PRICING_TIERS`.
14
+ */
15
+ export declare const USPS_EDDM_RETAIL_MIN_MAILPIECES = 200;
16
+ export type FlyerPricingTierId = "starter" | "neighborhood" | "district" | "metro";
17
+ export interface FlyerTierQuote {
18
+ tierId: FlyerPricingTierId;
19
+ label: string;
20
+ minHouseholds: number;
21
+ maxHouseholds: number;
22
+ hostPriceCents: number;
23
+ }
24
+ export declare const FLYER_PRICING_TIERS: FlyerTierQuote[];
25
+ /** Default sponsor slot list prices (Utah / intermountain — cents). */
26
+ export declare const FLYER_SPONSOR_DEFAULT_FEATURED_CENTS = 10000;
27
+ export declare const FLYER_SPONSOR_DEFAULT_SUPPORTING_CENTS = 5000;
28
+ export declare function isEddmFlatSizeCompliant(widthIn: number, heightIn: number): boolean;
29
+ /**
30
+ * Map total selected households to a pricing tier. Returns null if below minimum (200 for EDDM Retail).
31
+ */
32
+ export declare function quoteFlyerTierForHouseholds(totalHouseholds: number): FlyerTierQuote | null;
33
+ export declare function computeHostTotalAfterSponsors(printPostageCostCents: number, sponsorRevenueCents: number): number;
34
+ /** Haversine distance in miles between two WGS84 points. */
35
+ export declare function distanceMiles(lat1: number, lng1: number, lat2: number, lng2: number): number;
36
+ /** URL path for the public QR scan endpoint (prepend API origin in clients). */
37
+ export declare function flyerQrScanPath(campaignQrSlug: string): string;
38
+ /**
39
+ * Short slug for campaign QR (avoid ambiguous chars); unique enforced in DB.
40
+ */
41
+ export declare function generateFlyerCampaignSlug(): string;
42
+ //# sourceMappingURL=flyerUtils.d.ts.map
@@ -0,0 +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;AAE3D,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;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAOlD"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * USPS EDDM flat minimum: 6.125" × 11" (one dimension must be at least 11").
3
+ * Product standard used by Flyer Blast: 6.25" × 11" portrait.
4
+ */
5
+ export const FLYER_EDDM_WIDTH_IN = 6.25;
6
+ export const FLYER_EDDM_HEIGHT_IN = 11;
7
+ export const FLYER_EDDM_MIN_WIDTH_IN = 6.125;
8
+ export const FLYER_EDDM_MIN_HEIGHT_IN = 11;
9
+ /** USPS EDDM Retail per-piece postage (2026 — verify periodically). */
10
+ export const USPS_EDDM_RETAIL_PER_PIECE_CENTS = 24.7;
11
+ /**
12
+ * USPS EDDM Retail minimum mailpieces per mailing (saturation).
13
+ * Aligns with starter tier lower bound in `FLYER_PRICING_TIERS`.
14
+ */
15
+ export const USPS_EDDM_RETAIL_MIN_MAILPIECES = 200;
16
+ export const FLYER_PRICING_TIERS = [
17
+ {
18
+ tierId: "starter",
19
+ label: "Starter",
20
+ minHouseholds: 200,
21
+ maxHouseholds: 499,
22
+ hostPriceCents: 14900,
23
+ },
24
+ {
25
+ tierId: "neighborhood",
26
+ label: "Neighborhood",
27
+ minHouseholds: 500,
28
+ maxHouseholds: 1499,
29
+ hostPriceCents: 32900,
30
+ },
31
+ {
32
+ tierId: "district",
33
+ label: "District",
34
+ minHouseholds: 1500,
35
+ maxHouseholds: 3999,
36
+ hostPriceCents: 69900,
37
+ },
38
+ {
39
+ tierId: "metro",
40
+ label: "Metro",
41
+ minHouseholds: 4000,
42
+ maxHouseholds: 9999,
43
+ hostPriceCents: 139900,
44
+ },
45
+ ];
46
+ /** Default sponsor slot list prices (Utah / intermountain — cents). */
47
+ export const FLYER_SPONSOR_DEFAULT_FEATURED_CENTS = 10000;
48
+ export const FLYER_SPONSOR_DEFAULT_SUPPORTING_CENTS = 5000;
49
+ export function isEddmFlatSizeCompliant(widthIn, heightIn) {
50
+ const long = Math.max(widthIn, heightIn);
51
+ const short = Math.min(widthIn, heightIn);
52
+ return long >= FLYER_EDDM_MIN_HEIGHT_IN && short >= FLYER_EDDM_MIN_WIDTH_IN;
53
+ }
54
+ /**
55
+ * Map total selected households to a pricing tier. Returns null if below minimum (200 for EDDM Retail).
56
+ */
57
+ export function quoteFlyerTierForHouseholds(totalHouseholds) {
58
+ if (totalHouseholds < FLYER_PRICING_TIERS[0].minHouseholds) {
59
+ return null;
60
+ }
61
+ for (const tier of FLYER_PRICING_TIERS) {
62
+ if (totalHouseholds >= tier.minHouseholds &&
63
+ totalHouseholds <= tier.maxHouseholds) {
64
+ return tier;
65
+ }
66
+ }
67
+ // Above metro max — use metro as ceiling for MVP
68
+ const last = FLYER_PRICING_TIERS[FLYER_PRICING_TIERS.length - 1];
69
+ if (totalHouseholds > last.maxHouseholds) {
70
+ return last;
71
+ }
72
+ return null;
73
+ }
74
+ export function computeHostTotalAfterSponsors(printPostageCostCents, sponsorRevenueCents) {
75
+ return Math.max(0, printPostageCostCents - sponsorRevenueCents);
76
+ }
77
+ const EARTH_RADIUS_MI = 3958.8;
78
+ /** Haversine distance in miles between two WGS84 points. */
79
+ export function distanceMiles(lat1, lng1, lat2, lng2) {
80
+ const rlat1 = (lat1 * Math.PI) / 180;
81
+ const rlat2 = (lat2 * Math.PI) / 180;
82
+ const dLat = rlat2 - rlat1;
83
+ const dLng = ((lng2 - lng1) * Math.PI) / 180;
84
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
85
+ Math.cos(rlat1) * Math.cos(rlat2) * Math.sin(dLng / 2) * Math.sin(dLng / 2);
86
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
87
+ return EARTH_RADIUS_MI * c;
88
+ }
89
+ /** URL path for the public QR scan endpoint (prepend API origin in clients). */
90
+ export function flyerQrScanPath(campaignQrSlug) {
91
+ return `/api/flyer/qr-scan?c=${encodeURIComponent(campaignQrSlug)}`;
92
+ }
93
+ /**
94
+ * Short slug for campaign QR (avoid ambiguous chars); unique enforced in DB.
95
+ */
96
+ export function generateFlyerCampaignSlug() {
97
+ const alphabet = "23456789abcdefghjkmnpqrstuvwxyz";
98
+ let out = "fb";
99
+ for (let i = 0; i < 12; i++) {
100
+ out += alphabet[Math.floor(Math.random() * alphabet.length)];
101
+ }
102
+ return out;
103
+ }
104
+ //# sourceMappingURL=flyerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flyerUtils.js","sourceRoot":"","sources":["../../src/utils/flyerUtils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Canonical frontend origin for share links, embeds, QR codes, etc.
3
+ *
4
+ * Browser-hostname-driven (NOT env-var driven) so the answer is correct in any
5
+ * deployed environment — including ones where `process.env.ENVIRONMENT` /
6
+ * `BASH_ENV` aren't inlined into the bundle (Vite only inlines REACT_APP_* /
7
+ * VITE_* / NODE_ENV / PUBLIC_URL). Previously this depended on `isProduction()`
8
+ * and produced URLs like `https://bash.community:3000/bash/...` in production,
9
+ * which broke Facebook/iMessage previews because `:3000` isn't publicly reachable.
10
+ */
1
11
  export declare function getFrontendHost(): string;
2
12
  export declare function getBackendHost(): string;
3
13
  export declare function getSsrBashDetailUrl(bashEventId: string | undefined): string;
@@ -1 +1 @@
1
- {"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":"AAmBA,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAgBvC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO3E;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CA0B7E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA0BvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,GAAE,MAAmC,EAC9C,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACxD,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAmC,EAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,IAAI,CA8BN;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAiCzE"}
1
+ {"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAgBvC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO3E;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CA0B7E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CA0BvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,GAAE,MAAmC,EAC9C,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACxD,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAmC,EAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,IAAI,CA8BN;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAiCzE"}