@bash-app/bash-common 30.172.0 → 30.174.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.
@@ -0,0 +1,195 @@
1
+ import type { BashAssociationType, BashFeedPost, Privacy } from "@prisma/client";
2
+ /**
3
+ * Bash snippet on a feed post (matches typical `linkedBashInclude` / shaping output).
4
+ * `activeOffers` replaces raw `ticketTiers` after API media-tree shaping.
5
+ */
6
+ export interface BashFeedPostBashSummary {
7
+ id: string;
8
+ title: string;
9
+ startDateTime: Date | null;
10
+ endDateTime: Date | null;
11
+ coverPhoto: string | null;
12
+ privacy: Privacy;
13
+ creatorId: string;
14
+ /** Present when bash is loaded for feed scoring / filters. */
15
+ eventType?: string | null;
16
+ status?: string;
17
+ ideaExpiresAt?: Date | null;
18
+ ideaInterestThreshold?: number | null;
19
+ hideInterestCount?: boolean;
20
+ isAutoApprovable?: boolean;
21
+ vibe?: string | null;
22
+ allowed?: string | null;
23
+ notAllowed?: string | null;
24
+ averageRating?: number | null;
25
+ _count?: {
26
+ tickets: number;
27
+ };
28
+ activeOffers?: Array<{
29
+ id: string;
30
+ offerType: string;
31
+ badgeText: string | null;
32
+ displayBadge: boolean;
33
+ }>;
34
+ }
35
+ /**
36
+ * Service snippet on a feed post (matches `serviceSelect` in feed queries).
37
+ */
38
+ export interface BashFeedPostServiceSummary {
39
+ id: string;
40
+ serviceName: string | null;
41
+ serviceType: string | null;
42
+ coverPhoto: string | null;
43
+ ownerId: string | null;
44
+ vendorId: string | null;
45
+ venueId: string | null;
46
+ entertainmentServiceId: string | null;
47
+ eventServiceId: string | null;
48
+ exhibitorId: string | null;
49
+ sponsorId: string | null;
50
+ organizationId: string | null;
51
+ }
52
+ /**
53
+ * Feed post returned by BashFeed APIs after includes + shaping + enrich.
54
+ * Extends the Prisma model so scalar fields stay aligned with `schema.prisma`.
55
+ */
56
+ export interface PostWithDetails extends BashFeedPost {
57
+ /**
58
+ * Embedded original when this row is a repost shell (`repostOfPostId` set).
59
+ * Prisma uses `null` when the relation is absent.
60
+ */
61
+ repostOf?: PostWithDetails | null;
62
+ user: {
63
+ id: string;
64
+ givenName: string | null;
65
+ familyName: string | null;
66
+ username: string | null;
67
+ image: string | null;
68
+ uploadedImage: string | null;
69
+ };
70
+ bash?: BashFeedPostBashSummary | null;
71
+ service?: BashFeedPostServiceSummary | null;
72
+ _count: {
73
+ likes: number;
74
+ comments: number;
75
+ ratings: number;
76
+ saves?: number;
77
+ reposts?: number;
78
+ };
79
+ userLiked?: boolean;
80
+ userSaved?: boolean;
81
+ userRating?: number;
82
+ userReposted?: boolean;
83
+ mediaUrls?: string[];
84
+ }
85
+ /**
86
+ * Row before stripping Prisma per-user interaction arrays in feed enrich (likes/saves/ratings/reposts).
87
+ */
88
+ export type PostWithDetailsForEnrich = PostWithDetails & {
89
+ likes?: unknown;
90
+ saves?: unknown;
91
+ ratings?: unknown;
92
+ reposts?: unknown;
93
+ };
94
+ /**
95
+ * Minimum shape the feed ranking algorithm reads (Prisma includes / `PostWithDetails` satisfy this).
96
+ */
97
+ export type BashFeedPostForAlgorithm = BashFeedPost & {
98
+ user: {
99
+ id: string;
100
+ givenName?: string | null;
101
+ familyName?: string | null;
102
+ username?: string | null;
103
+ image?: string | null;
104
+ uploadedImage?: string | null;
105
+ };
106
+ bash?: {
107
+ eventType?: string | null;
108
+ } | null;
109
+ likes?: unknown[];
110
+ comments?: unknown[];
111
+ _count?: {
112
+ likes?: number;
113
+ comments?: number;
114
+ };
115
+ };
116
+ /** Bash snippet on the client (JSON). */
117
+ export interface BashFeedPostBashSummaryWire {
118
+ id: string;
119
+ title: string;
120
+ startDateTime: string | null;
121
+ endDateTime: string | null;
122
+ coverPhoto: string | null;
123
+ creatorId: string;
124
+ status?: string;
125
+ ideaExpiresAt?: string | null;
126
+ isAutoApprovable?: boolean;
127
+ privacy: "Public" | "ContactsOnly" | "InviteOnly" | "ConnectionsOnly" | "PremiumOnly";
128
+ activeOffers?: Array<{
129
+ id: string;
130
+ offerType: string;
131
+ badgeText: string | null;
132
+ displayBadge: boolean;
133
+ }>;
134
+ _count?: {
135
+ tickets: number;
136
+ };
137
+ }
138
+ /** Service snippet on the client (JSON). */
139
+ export interface BashFeedPostServiceSummaryWire {
140
+ id: string;
141
+ serviceName: string | null;
142
+ serviceType: string | null;
143
+ coverPhoto: string | null;
144
+ ownerId: string | null;
145
+ vendorId: string | null;
146
+ venueId: string | null;
147
+ entertainmentServiceId: string | null;
148
+ eventServiceId: string | null;
149
+ exhibitorId: string | null;
150
+ sponsorId: string | null;
151
+ organizationId: string | null;
152
+ }
153
+ /**
154
+ * BashFeed post in the app after `JSON.parse` / SWR (dates are ISO strings).
155
+ * Keep aligned with {@link PostWithDetails} when adding fields.
156
+ */
157
+ export interface BashFeedPostData {
158
+ id: string;
159
+ userId: string;
160
+ repostOfPostId?: string | null;
161
+ repostOf?: BashFeedPostData | null;
162
+ bashId?: string | null;
163
+ serviceId?: string | null;
164
+ bashAssociationType?: BashAssociationType | null;
165
+ content: string | null;
166
+ mediaIds: string[];
167
+ mediaUrls?: string[];
168
+ isFeatured?: boolean;
169
+ isAnonymous?: boolean;
170
+ createdAt: string;
171
+ updatedAt: string;
172
+ editedAt: string | null;
173
+ user: {
174
+ id: string;
175
+ givenName: string | null;
176
+ familyName: string | null;
177
+ username: string | null;
178
+ image: string | null;
179
+ uploadedImage: string | null;
180
+ };
181
+ bash?: BashFeedPostBashSummaryWire | null;
182
+ service?: BashFeedPostServiceSummaryWire | null;
183
+ _count: {
184
+ likes: number;
185
+ comments: number;
186
+ ratings: number;
187
+ saves?: number;
188
+ reposts?: number;
189
+ };
190
+ userLiked?: boolean;
191
+ userRating?: number;
192
+ userSaved?: boolean;
193
+ userReposted?: boolean;
194
+ }
195
+ //# sourceMappingURL=bashFeedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bashFeedTypes.d.ts","sourceRoot":"","sources":["../src/bashFeedTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bashFeedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bashFeedTypes.js","sourceRoot":"","sources":["../src/bashFeedTypes.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export * from "./definitions.js";
2
2
  export * from "./extendedSchemas.js";
3
+ export * from "./bashFeedTypes.js";
3
4
  export * from "./membershipDefinitions.js";
4
- export type { Service, Organization, User, BashEvent } from '@prisma/client';
5
+ export type { Service, Organization, User, BashEvent, BashFeedPost, BashAssociationType, Privacy, } from '@prisma/client';
5
6
  export * from "./utils/addressUtils.js";
6
7
  export * from "./utils/apiUtils.js";
7
8
  export * from "./utils/arrayUtils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAG3C,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7E,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACR,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EACjE,MAAM,sBAAsB,CAAC;AAG9B,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAG3C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACR,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EACjE,MAAM,sBAAsB,CAAC;AAG9B,cAAc,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./definitions.js";
2
2
  export * from "./extendedSchemas.js";
3
+ export * from "./bashFeedTypes.js";
3
4
  export * from "./membershipDefinitions.js";
4
5
  export * from "./utils/addressUtils.js";
5
6
  export * from "./utils/apiUtils.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAK3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,+DAA+D;AAC/D,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAE9C,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM3D,kBAAkB;AAClB,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAa3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,+DAA+D;AAC/D,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAE9C,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM3D,kBAAkB;AAClB,cAAc,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bash-app/bash-common",
3
- "version": "30.172.0",
3
+ "version": "30.174.0",
4
4
  "description": "Common data and scripts to use on the frontend and backend",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -72,6 +72,10 @@ model BashFeedPost {
72
72
  createdAt DateTime @default(now())
73
73
  updatedAt DateTime @updatedAt
74
74
  editedAt DateTime?
75
+ /// When set, this row is a feed "repost shell": `user` is the reposter; content lives on `repostOf`.
76
+ repostOfPostId String?
77
+ repostOf BashFeedPost? @relation("BashFeedPostRepost", fields: [repostOfPostId], references: [id], onDelete: Cascade)
78
+ repostShells BashFeedPost[] @relation("BashFeedPostRepost")
75
79
 
76
80
  // Relationships
77
81
  user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@ -84,10 +88,12 @@ model BashFeedPost {
84
88
  saves BashFeedSave[]
85
89
  reposts BashFeedRepost[]
86
90
 
91
+ @@unique([userId, repostOfPostId])
87
92
  @@index([bashId])
88
93
  @@index([serviceId])
89
94
  @@index([userId])
90
95
  @@index([createdAt])
96
+ @@index([repostOfPostId])
91
97
  @@index([isAnonymous])
92
98
  @@index([isFeatured, featuredBoost])
93
99
  }
@@ -610,7 +616,8 @@ model BashEvent {
610
616
  donationDetails String?
611
617
  absorbDonationFees Boolean @default(false)
612
618
  absorbTicketFees Boolean @default(false)
613
- feeHandling String @default("GuestPays") // "GuestPays" | "HostAbsorbs" | "Split"
619
+ // GuestPays / Split preserved for possible future use; checkout always uses HostAbsorbs (no buyer-facing processing fee).
620
+ feeHandling String @default("HostAbsorbs") // "GuestPays" | "HostAbsorbs" | "Split"
614
621
  topPromoterPrize String? // Optional prize label: "Free table for your crew"
615
622
  promoterLeaderboardIsPublic Boolean @default(false) // Host opts in to public leaderboard
616
623
  showAttendees Boolean @default(true)
@@ -0,0 +1,206 @@
1
+ import type {
2
+ BashAssociationType,
3
+ BashFeedPost,
4
+ Privacy,
5
+ } from "@prisma/client";
6
+
7
+ /**
8
+ * Bash snippet on a feed post (matches typical `linkedBashInclude` / shaping output).
9
+ * `activeOffers` replaces raw `ticketTiers` after API media-tree shaping.
10
+ */
11
+ export interface BashFeedPostBashSummary {
12
+ id: string;
13
+ title: string;
14
+ startDateTime: Date | null;
15
+ endDateTime: Date | null;
16
+ coverPhoto: string | null;
17
+ privacy: Privacy;
18
+ creatorId: string;
19
+ /** Present when bash is loaded for feed scoring / filters. */
20
+ eventType?: string | null;
21
+ status?: string;
22
+ ideaExpiresAt?: Date | null;
23
+ ideaInterestThreshold?: number | null;
24
+ hideInterestCount?: boolean;
25
+ isAutoApprovable?: boolean;
26
+ vibe?: string | null;
27
+ allowed?: string | null;
28
+ notAllowed?: string | null;
29
+ averageRating?: number | null;
30
+ _count?: { tickets: number };
31
+ activeOffers?: Array<{
32
+ id: string;
33
+ offerType: string;
34
+ badgeText: string | null;
35
+ displayBadge: boolean;
36
+ }>;
37
+ }
38
+
39
+ /**
40
+ * Service snippet on a feed post (matches `serviceSelect` in feed queries).
41
+ */
42
+ export interface BashFeedPostServiceSummary {
43
+ id: string;
44
+ serviceName: string | null;
45
+ serviceType: string | null;
46
+ coverPhoto: string | null;
47
+ ownerId: string | null;
48
+ vendorId: string | null;
49
+ venueId: string | null;
50
+ entertainmentServiceId: string | null;
51
+ eventServiceId: string | null;
52
+ exhibitorId: string | null;
53
+ sponsorId: string | null;
54
+ organizationId: string | null;
55
+ }
56
+
57
+ /**
58
+ * Feed post returned by BashFeed APIs after includes + shaping + enrich.
59
+ * Extends the Prisma model so scalar fields stay aligned with `schema.prisma`.
60
+ */
61
+ export interface PostWithDetails extends BashFeedPost {
62
+ /**
63
+ * Embedded original when this row is a repost shell (`repostOfPostId` set).
64
+ * Prisma uses `null` when the relation is absent.
65
+ */
66
+ repostOf?: PostWithDetails | null;
67
+ user: {
68
+ id: string;
69
+ givenName: string | null;
70
+ familyName: string | null;
71
+ username: string | null;
72
+ image: string | null;
73
+ uploadedImage: string | null;
74
+ };
75
+ bash?: BashFeedPostBashSummary | null;
76
+ service?: BashFeedPostServiceSummary | null;
77
+ _count: {
78
+ likes: number;
79
+ comments: number;
80
+ ratings: number;
81
+ saves?: number;
82
+ reposts?: number;
83
+ };
84
+ userLiked?: boolean;
85
+ userSaved?: boolean;
86
+ userRating?: number;
87
+ userReposted?: boolean;
88
+ mediaUrls?: string[];
89
+ }
90
+
91
+ /**
92
+ * Row before stripping Prisma per-user interaction arrays in feed enrich (likes/saves/ratings/reposts).
93
+ */
94
+ export type PostWithDetailsForEnrich = PostWithDetails & {
95
+ likes?: unknown;
96
+ saves?: unknown;
97
+ ratings?: unknown;
98
+ reposts?: unknown;
99
+ };
100
+
101
+ /**
102
+ * Minimum shape the feed ranking algorithm reads (Prisma includes / `PostWithDetails` satisfy this).
103
+ */
104
+ export type BashFeedPostForAlgorithm = BashFeedPost & {
105
+ user: {
106
+ id: string;
107
+ givenName?: string | null;
108
+ familyName?: string | null;
109
+ username?: string | null;
110
+ image?: string | null;
111
+ uploadedImage?: string | null;
112
+ };
113
+ bash?: { eventType?: string | null } | null;
114
+ likes?: unknown[];
115
+ comments?: unknown[];
116
+ _count?: { likes?: number; comments?: number };
117
+ };
118
+
119
+ // --- Client / JSON wire shape (ISO date strings) -----------------------------------------------
120
+
121
+ /** Bash snippet on the client (JSON). */
122
+ export interface BashFeedPostBashSummaryWire {
123
+ id: string;
124
+ title: string;
125
+ startDateTime: string | null;
126
+ endDateTime: string | null;
127
+ coverPhoto: string | null;
128
+ creatorId: string;
129
+ status?: string;
130
+ ideaExpiresAt?: string | null;
131
+ isAutoApprovable?: boolean;
132
+ privacy:
133
+ | "Public"
134
+ | "ContactsOnly"
135
+ | "InviteOnly"
136
+ | "ConnectionsOnly"
137
+ | "PremiumOnly";
138
+ activeOffers?: Array<{
139
+ id: string;
140
+ offerType: string;
141
+ badgeText: string | null;
142
+ displayBadge: boolean;
143
+ }>;
144
+ _count?: {
145
+ tickets: number;
146
+ };
147
+ }
148
+
149
+ /** Service snippet on the client (JSON). */
150
+ export interface BashFeedPostServiceSummaryWire {
151
+ id: string;
152
+ serviceName: string | null;
153
+ serviceType: string | null;
154
+ coverPhoto: string | null;
155
+ ownerId: string | null;
156
+ vendorId: string | null;
157
+ venueId: string | null;
158
+ entertainmentServiceId: string | null;
159
+ eventServiceId: string | null;
160
+ exhibitorId: string | null;
161
+ sponsorId: string | null;
162
+ organizationId: string | null;
163
+ }
164
+
165
+ /**
166
+ * BashFeed post in the app after `JSON.parse` / SWR (dates are ISO strings).
167
+ * Keep aligned with {@link PostWithDetails} when adding fields.
168
+ */
169
+ export interface BashFeedPostData {
170
+ id: string;
171
+ userId: string;
172
+ repostOfPostId?: string | null;
173
+ repostOf?: BashFeedPostData | null;
174
+ bashId?: string | null;
175
+ serviceId?: string | null;
176
+ bashAssociationType?: BashAssociationType | null;
177
+ content: string | null;
178
+ mediaIds: string[];
179
+ mediaUrls?: string[];
180
+ isFeatured?: boolean;
181
+ isAnonymous?: boolean;
182
+ createdAt: string;
183
+ updatedAt: string;
184
+ editedAt: string | null;
185
+ user: {
186
+ id: string;
187
+ givenName: string | null;
188
+ familyName: string | null;
189
+ username: string | null;
190
+ image: string | null;
191
+ uploadedImage: string | null;
192
+ };
193
+ bash?: BashFeedPostBashSummaryWire | null;
194
+ service?: BashFeedPostServiceSummaryWire | null;
195
+ _count: {
196
+ likes: number;
197
+ comments: number;
198
+ ratings: number;
199
+ saves?: number;
200
+ reposts?: number;
201
+ };
202
+ userLiked?: boolean;
203
+ userRating?: number;
204
+ userSaved?: boolean;
205
+ userReposted?: boolean;
206
+ }
package/src/index.ts CHANGED
@@ -1,9 +1,18 @@
1
1
  export * from "./definitions.js";
2
2
  export * from "./extendedSchemas.js";
3
+ export * from "./bashFeedTypes.js";
3
4
  export * from "./membershipDefinitions.js";
4
5
 
5
6
  // Re-export commonly used Prisma types
6
- export type { Service, Organization, User, BashEvent } from '@prisma/client';
7
+ export type {
8
+ Service,
9
+ Organization,
10
+ User,
11
+ BashEvent,
12
+ BashFeedPost,
13
+ BashAssociationType,
14
+ Privacy,
15
+ } from '@prisma/client';
7
16
 
8
17
  export * from "./utils/addressUtils.js";
9
18
  export * from "./utils/apiUtils.js";