@bash-app/bash-common 30.310.0 → 30.314.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/definitions.d.ts +11 -1
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js +18 -1
- package/dist/definitions.js.map +1 -1
- package/dist/extendedSchemas.d.ts +214 -41
- package/dist/extendedSchemas.d.ts.map +1 -1
- package/dist/extendedSchemas.js +71 -22
- package/dist/extendedSchemas.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mirroredPrismaEnums.d.ts +6 -0
- package/dist/mirroredPrismaEnums.d.ts.map +1 -1
- package/dist/mirroredPrismaEnums.js +12 -0
- package/dist/mirroredPrismaEnums.js.map +1 -1
- package/dist/serviceTypeLabels.d.ts +15 -0
- package/dist/serviceTypeLabels.d.ts.map +1 -0
- package/dist/serviceTypeLabels.js +24 -0
- package/dist/serviceTypeLabels.js.map +1 -0
- package/dist/targetAudienceLabels.d.ts +12 -0
- package/dist/targetAudienceLabels.d.ts.map +1 -0
- package/dist/targetAudienceLabels.js +50 -0
- package/dist/targetAudienceLabels.js.map +1 -0
- package/dist/utils/service/serviceBookingTypes.d.ts +1 -1
- package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +5 -1
- package/src/definitions.ts +27 -1
- package/src/extendedSchemas.ts +199 -58
- package/src/index.ts +2 -0
- package/src/mirroredPrismaEnums.ts +16 -0
- package/src/serviceTypeLabels.ts +24 -0
- package/src/targetAudienceLabels.ts +54 -0
- package/src/utils/service/serviceBookingTypes.ts +1 -1
package/src/extendedSchemas.ts
CHANGED
|
@@ -268,14 +268,18 @@ export const PRIVATE_USER_ACCOUNT_TO_SELECT = {
|
|
|
268
268
|
},
|
|
269
269
|
} satisfies Prisma.UserSelect;
|
|
270
270
|
|
|
271
|
-
export
|
|
271
|
+
export type SponsoredEventExt = SponsoredEvent;
|
|
272
272
|
|
|
273
273
|
/** Minimal service identity used wherever a competition prize/offer just needs to point at a listing. */
|
|
274
|
-
export
|
|
275
|
-
id:
|
|
276
|
-
serviceName:
|
|
277
|
-
coverPhoto:
|
|
278
|
-
}
|
|
274
|
+
export const SERVICE_REF_LITE_SELECT = {
|
|
275
|
+
id: true,
|
|
276
|
+
serviceName: true,
|
|
277
|
+
coverPhoto: true,
|
|
278
|
+
} satisfies Prisma.ServiceSelect;
|
|
279
|
+
|
|
280
|
+
export type ServiceRefLite = Prisma.ServiceGetPayload<{
|
|
281
|
+
select: typeof SERVICE_REF_LITE_SELECT;
|
|
282
|
+
}>;
|
|
279
283
|
|
|
280
284
|
export interface PrizeExt extends Prize {
|
|
281
285
|
winner?: PublicUser | null;
|
|
@@ -283,6 +287,18 @@ export interface PrizeExt extends Prize {
|
|
|
283
287
|
sourceService?: ServiceRefLite | null;
|
|
284
288
|
}
|
|
285
289
|
|
|
290
|
+
/** Minimal prize-slot identity used wherever a sponsor offer just needs to point at the slot it's filling. */
|
|
291
|
+
export const PRIZE_SLOT_REF_SELECT = {
|
|
292
|
+
id: true,
|
|
293
|
+
name: true,
|
|
294
|
+
placeName: true,
|
|
295
|
+
sponsorCostCents: true,
|
|
296
|
+
} satisfies Prisma.PrizeSelect;
|
|
297
|
+
|
|
298
|
+
export type PrizeSlotRef = Prisma.PrizeGetPayload<{
|
|
299
|
+
select: typeof PRIZE_SLOT_REF_SELECT;
|
|
300
|
+
}>;
|
|
301
|
+
|
|
286
302
|
export interface CompetitionPrizeOfferExt {
|
|
287
303
|
id: string;
|
|
288
304
|
competitionId: string;
|
|
@@ -300,17 +316,12 @@ export interface CompetitionPrizeOfferExt {
|
|
|
300
316
|
respondedAt?: Date | string | null;
|
|
301
317
|
offeredBy?: PublicUser;
|
|
302
318
|
sourceService?: ServiceRefLite | null;
|
|
303
|
-
targetPrize?:
|
|
304
|
-
id: string;
|
|
305
|
-
name: string;
|
|
306
|
-
placeName: string | null;
|
|
307
|
-
sponsorCostCents: number | null;
|
|
308
|
-
} | null;
|
|
319
|
+
targetPrize?: PrizeSlotRef | null;
|
|
309
320
|
}
|
|
310
321
|
|
|
311
322
|
/** One competition participant row + resolved user; shared by CompetitionExt.participants and the host roster endpoint. */
|
|
312
323
|
export interface CompetitionParticipantExt extends CompetitionParticipant {
|
|
313
|
-
user?:
|
|
324
|
+
user?: PublicUser | null;
|
|
314
325
|
}
|
|
315
326
|
|
|
316
327
|
/** Competition row + relations; Override keeps new columns visible before consumers refresh Prisma. */
|
|
@@ -516,24 +527,27 @@ export type BashEventUpsertWireInput = Override<
|
|
|
516
527
|
}
|
|
517
528
|
>;
|
|
518
529
|
|
|
530
|
+
/** Minimal ticket-holder identity — narrower than PublicUser/PublicTeaserUser; used wherever a ticket
|
|
531
|
+
* relation just needs to identify who owns/holds it (not a full public profile). */
|
|
532
|
+
export const TICKET_HOLDER_USER_SELECT = {
|
|
533
|
+
id: true,
|
|
534
|
+
email: true,
|
|
535
|
+
givenName: true,
|
|
536
|
+
familyName: true,
|
|
537
|
+
} satisfies Prisma.UserSelect;
|
|
538
|
+
|
|
539
|
+
export type TicketHolderUser = Prisma.UserGetPayload<{
|
|
540
|
+
select: typeof TICKET_HOLDER_USER_SELECT;
|
|
541
|
+
}>;
|
|
542
|
+
|
|
519
543
|
export const TICKET_TIER_DATA_TO_INCLUDE = {
|
|
520
544
|
tickets: {
|
|
521
545
|
include: {
|
|
522
546
|
owner: {
|
|
523
|
-
select:
|
|
524
|
-
id: true,
|
|
525
|
-
email: true,
|
|
526
|
-
givenName: true,
|
|
527
|
-
familyName: true,
|
|
528
|
-
},
|
|
547
|
+
select: TICKET_HOLDER_USER_SELECT,
|
|
529
548
|
},
|
|
530
549
|
forUser: {
|
|
531
|
-
select:
|
|
532
|
-
id: true,
|
|
533
|
-
email: true,
|
|
534
|
-
givenName: true,
|
|
535
|
-
familyName: true,
|
|
536
|
-
},
|
|
550
|
+
select: TICKET_HOLDER_USER_SELECT,
|
|
537
551
|
},
|
|
538
552
|
},
|
|
539
553
|
},
|
|
@@ -583,7 +597,7 @@ export const BASH_EVENT_DATA_TO_INCLUDE = {
|
|
|
583
597
|
select: FRONT_END_USER_DATA_TO_SELECT,
|
|
584
598
|
},
|
|
585
599
|
sourceService: {
|
|
586
|
-
select:
|
|
600
|
+
select: SERVICE_REF_LITE_SELECT,
|
|
587
601
|
},
|
|
588
602
|
},
|
|
589
603
|
},
|
|
@@ -673,9 +687,15 @@ export const VENUE_DATA_TO_REMOVE: RemoveCommonProperties<
|
|
|
673
687
|
// 'bashEvents',
|
|
674
688
|
] as const;
|
|
675
689
|
|
|
676
|
-
|
|
690
|
+
/** Shared by Vendor/EventService/EntertainmentService/Exhibitor/Sponsor includes — each model has
|
|
691
|
+
* its own identically-shaped `crowdSize`/`serviceRange` relations (attendance preferences). */
|
|
692
|
+
export const SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE = {
|
|
677
693
|
crowdSize: true,
|
|
678
694
|
serviceRange: true,
|
|
695
|
+
} as const;
|
|
696
|
+
|
|
697
|
+
export const VENDOR_DATA_TO_INCLUDE = {
|
|
698
|
+
...SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE,
|
|
679
699
|
} satisfies Prisma.VendorInclude;
|
|
680
700
|
|
|
681
701
|
export const VOLUNTEER_DATA_TO_INCLUDE = {
|
|
@@ -707,24 +727,20 @@ export type VolunteerServiceExt = Prisma.VolunteerServiceGetPayload<{
|
|
|
707
727
|
export const VENUE_DATA_TO_INCLUDE = {} satisfies Prisma.VenueInclude;
|
|
708
728
|
|
|
709
729
|
export const EVENT_SERVICE_DATA_TO_INCLUDE = {
|
|
710
|
-
|
|
711
|
-
serviceRange: true,
|
|
730
|
+
...SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE,
|
|
712
731
|
formatOptions: true,
|
|
713
732
|
} satisfies Prisma.EventServiceInclude;
|
|
714
733
|
|
|
715
734
|
export const ENTERTAINMENT_SERVICE_DATA_TO_INCLUDE = {
|
|
716
|
-
|
|
717
|
-
serviceRange: true,
|
|
735
|
+
...SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE,
|
|
718
736
|
} satisfies Prisma.EntertainmentServiceInclude;
|
|
719
737
|
|
|
720
738
|
export const SPONSOR_DATA_TO_INCLUDE = {
|
|
721
|
-
|
|
722
|
-
serviceRange: true,
|
|
739
|
+
...SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE,
|
|
723
740
|
} satisfies Prisma.SponsorInclude;
|
|
724
741
|
|
|
725
742
|
export const EXHIBITOR_DATA_TO_INCLUDE = {
|
|
726
|
-
|
|
727
|
-
serviceRange: true,
|
|
743
|
+
...SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE,
|
|
728
744
|
} satisfies Prisma.ExhibitorInclude;
|
|
729
745
|
|
|
730
746
|
// Lightweight include for public service listings (browse pages).
|
|
@@ -928,10 +944,9 @@ export interface ServiceBookingAddOnExt extends ServiceBookingAddOn {
|
|
|
928
944
|
export interface ServiceBookingPackageExt extends ServiceBookingPackage {
|
|
929
945
|
package: ServicePackageExt;
|
|
930
946
|
}
|
|
931
|
-
export
|
|
932
|
-
extends ServiceBookingPriceBreakdown {}
|
|
947
|
+
export type ServiceBookingPriceBreakdownExt = ServiceBookingPriceBreakdown;
|
|
933
948
|
|
|
934
|
-
export
|
|
949
|
+
export type ServiceBookingFeeExt = ServiceBookingFee;
|
|
935
950
|
export interface ServiceBookingDayExt extends ServiceBookingDay {
|
|
936
951
|
addOns: ServiceBookingAddOnExt[];
|
|
937
952
|
packages: ServiceBookingPackageExt[];
|
|
@@ -1169,32 +1184,28 @@ export type ServiceExtNoIds = Omit<
|
|
|
1169
1184
|
| "serviceRatesAssociationId"
|
|
1170
1185
|
| "serviceId"
|
|
1171
1186
|
>;
|
|
1172
|
-
|
|
1187
|
+
/** Attendance-preference overlay shared by every bookable service subtype — mirrors
|
|
1188
|
+
* SERVICE_SUBTYPE_CROWD_RANGE_INCLUDE so the type and the select/include it's derived from stay in sync. */
|
|
1189
|
+
export interface ServiceSubtypeCrowdRange {
|
|
1173
1190
|
crowdSize?: AmountOfGuests;
|
|
1174
1191
|
serviceRange?: ServiceRange;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
export interface EventServiceExt extends EventService, ServiceSubtypeCrowdRange {
|
|
1175
1195
|
formatOptions?: ServiceFormatOption[];
|
|
1176
1196
|
}
|
|
1177
1197
|
|
|
1178
1198
|
export interface EntertainmentServiceExt
|
|
1179
|
-
extends Omit<EntertainmentService, "notableVenueEntries"
|
|
1180
|
-
|
|
1181
|
-
serviceRange?: ServiceRange;
|
|
1199
|
+
extends Omit<EntertainmentService, "notableVenueEntries">,
|
|
1200
|
+
ServiceSubtypeCrowdRange {
|
|
1182
1201
|
notableVenueEntries?: EntertainmentNotableVenueEntry[];
|
|
1183
1202
|
}
|
|
1184
1203
|
|
|
1185
|
-
export interface ExhibitorExt extends Exhibitor {
|
|
1186
|
-
crowdSize?: AmountOfGuests;
|
|
1187
|
-
serviceRange?: ServiceRange;
|
|
1188
|
-
}
|
|
1204
|
+
export interface ExhibitorExt extends Exhibitor, ServiceSubtypeCrowdRange {}
|
|
1189
1205
|
|
|
1190
|
-
export interface SponsorExt extends Sponsor {
|
|
1191
|
-
crowdSize?: AmountOfGuests;
|
|
1192
|
-
serviceRange?: ServiceRange;
|
|
1193
|
-
}
|
|
1206
|
+
export interface SponsorExt extends Sponsor, ServiceSubtypeCrowdRange {}
|
|
1194
1207
|
|
|
1195
|
-
export interface VendorExt extends Vendor {
|
|
1196
|
-
crowdSize?: AmountOfGuests;
|
|
1197
|
-
serviceRange?: ServiceRange;
|
|
1208
|
+
export interface VendorExt extends Vendor, ServiceSubtypeCrowdRange {
|
|
1198
1209
|
spaceRequirements?: VendorSpaceRequirements;
|
|
1199
1210
|
insurance?: VendorInsurance;
|
|
1200
1211
|
permits?: VendorPermit[];
|
|
@@ -1203,6 +1214,108 @@ export interface VendorExt extends Vendor {
|
|
|
1203
1214
|
};
|
|
1204
1215
|
}
|
|
1205
1216
|
|
|
1217
|
+
//-------------------------------------------------------------------------------------------------------------------------------
|
|
1218
|
+
// Partner (Vendor/Exhibitor/Sponsor) booking requests
|
|
1219
|
+
//
|
|
1220
|
+
// VendorBookingRequest/ExhibitorBookingRequest/SponsorBookingRequest are three separate Prisma
|
|
1221
|
+
// models (a real merge into one polymorphic table is a future schema migration — see the
|
|
1222
|
+
// bash-common schema/type consolidation plan). Until then, these GetPayload-derived types give
|
|
1223
|
+
// the API and app a single shared, real contract instead of hand-typed hand-drift per package.
|
|
1224
|
+
//-------------------------------------------------------------------------------------------------------------------------------
|
|
1225
|
+
|
|
1226
|
+
/** Minimal contact identity embedded on a partner booking request (hostUser, or the service owner). */
|
|
1227
|
+
export const PARTNER_BOOKING_CONTACT_SELECT = {
|
|
1228
|
+
id: true,
|
|
1229
|
+
email: true,
|
|
1230
|
+
givenName: true,
|
|
1231
|
+
familyName: true,
|
|
1232
|
+
} satisfies Prisma.UserSelect;
|
|
1233
|
+
|
|
1234
|
+
export type PartnerBookingContact = Prisma.UserGetPayload<{
|
|
1235
|
+
select: typeof PARTNER_BOOKING_CONTACT_SELECT;
|
|
1236
|
+
}>;
|
|
1237
|
+
|
|
1238
|
+
/** Minimal event ref embedded on a partner booking request. */
|
|
1239
|
+
export const PARTNER_BOOKING_BASH_EVENT_SELECT = {
|
|
1240
|
+
id: true,
|
|
1241
|
+
title: true,
|
|
1242
|
+
startDateTime: true,
|
|
1243
|
+
endDateTime: true,
|
|
1244
|
+
} satisfies Prisma.BashEventSelect;
|
|
1245
|
+
|
|
1246
|
+
export type PartnerBookingBashEventRef = Prisma.BashEventGetPayload<{
|
|
1247
|
+
select: typeof PARTNER_BOOKING_BASH_EVENT_SELECT;
|
|
1248
|
+
}>;
|
|
1249
|
+
|
|
1250
|
+
export const VENDOR_BOOKING_REQUEST_INCLUDE = {
|
|
1251
|
+
hostUser: { select: PARTNER_BOOKING_CONTACT_SELECT },
|
|
1252
|
+
vendorService: { include: { owner: { select: PARTNER_BOOKING_CONTACT_SELECT } } },
|
|
1253
|
+
bashEvent: { select: PARTNER_BOOKING_BASH_EVENT_SELECT },
|
|
1254
|
+
} satisfies Prisma.VendorBookingRequestInclude;
|
|
1255
|
+
|
|
1256
|
+
export type VendorBookingRequestExt = Prisma.VendorBookingRequestGetPayload<{
|
|
1257
|
+
include: typeof VENDOR_BOOKING_REQUEST_INCLUDE;
|
|
1258
|
+
}>;
|
|
1259
|
+
|
|
1260
|
+
export const EXHIBITOR_BOOKING_REQUEST_INCLUDE = {
|
|
1261
|
+
hostUser: { select: PARTNER_BOOKING_CONTACT_SELECT },
|
|
1262
|
+
exhibitorService: { include: { owner: { select: PARTNER_BOOKING_CONTACT_SELECT } } },
|
|
1263
|
+
bashEvent: { select: PARTNER_BOOKING_BASH_EVENT_SELECT },
|
|
1264
|
+
} satisfies Prisma.ExhibitorBookingRequestInclude;
|
|
1265
|
+
|
|
1266
|
+
export type ExhibitorBookingRequestExt = Prisma.ExhibitorBookingRequestGetPayload<{
|
|
1267
|
+
include: typeof EXHIBITOR_BOOKING_REQUEST_INCLUDE;
|
|
1268
|
+
}>;
|
|
1269
|
+
|
|
1270
|
+
export const SPONSOR_BOOKING_REQUEST_INCLUDE = {
|
|
1271
|
+
hostUser: { select: PARTNER_BOOKING_CONTACT_SELECT },
|
|
1272
|
+
sponsorService: { include: { owner: { select: PARTNER_BOOKING_CONTACT_SELECT } } },
|
|
1273
|
+
bashEvent: { select: PARTNER_BOOKING_BASH_EVENT_SELECT },
|
|
1274
|
+
} satisfies Prisma.SponsorBookingRequestInclude;
|
|
1275
|
+
|
|
1276
|
+
export type SponsorBookingRequestExt = Prisma.SponsorBookingRequestGetPayload<{
|
|
1277
|
+
include: typeof SPONSOR_BOOKING_REQUEST_INCLUDE;
|
|
1278
|
+
}>;
|
|
1279
|
+
|
|
1280
|
+
/** Fields common to all three partner booking request models (same name + type on every model).
|
|
1281
|
+
* `status` is intentionally excluded — Vendor/Exhibitor/SponsorBookingStatus are separate (if
|
|
1282
|
+
* byte-identical) enums, so each Ext type keeps its own nominal status field. */
|
|
1283
|
+
export type PartnerBookingRequestBase = Pick<
|
|
1284
|
+
VendorBookingRequestExt,
|
|
1285
|
+
| "id"
|
|
1286
|
+
| "createdAt"
|
|
1287
|
+
| "updatedAt"
|
|
1288
|
+
| "hostUserId"
|
|
1289
|
+
| "bashEventId"
|
|
1290
|
+
| "expectedGuests"
|
|
1291
|
+
| "eventDuration"
|
|
1292
|
+
| "eventDescription"
|
|
1293
|
+
| "specialRequests"
|
|
1294
|
+
| "contactPreference"
|
|
1295
|
+
| "urgency"
|
|
1296
|
+
| "paymentTiming"
|
|
1297
|
+
| "depositPercentage"
|
|
1298
|
+
| "competitorRestrictions"
|
|
1299
|
+
| "cancellationPolicy"
|
|
1300
|
+
| "pricingModelAllowList"
|
|
1301
|
+
| "paymentAmount"
|
|
1302
|
+
| "paymentStatus"
|
|
1303
|
+
| "stripePaymentIntentId"
|
|
1304
|
+
| "paidAt"
|
|
1305
|
+
| "respondedAt"
|
|
1306
|
+
| "feeStructure"
|
|
1307
|
+
| "percentageRate"
|
|
1308
|
+
| "hostUser"
|
|
1309
|
+
| "bashEvent"
|
|
1310
|
+
>;
|
|
1311
|
+
|
|
1312
|
+
/** Discriminated union of the three partner booking request types — `partnerType` is attached
|
|
1313
|
+
* by the API (it isn't a DB column) so callers can narrow without checking which service-ref key is present. */
|
|
1314
|
+
export type PartnerBookingRequest =
|
|
1315
|
+
| ({ partnerType: "vendor" } & VendorBookingRequestExt)
|
|
1316
|
+
| ({ partnerType: "exhibitor" } & ExhibitorBookingRequestExt)
|
|
1317
|
+
| ({ partnerType: "sponsor" } & SponsorBookingRequestExt);
|
|
1318
|
+
|
|
1206
1319
|
// Future type for venue unavailable dates (not yet implemented in database)
|
|
1207
1320
|
// To implement: Add VenueUnavailableDate model to Prisma schema
|
|
1208
1321
|
export interface UnavailableDate {
|
|
@@ -1595,12 +1708,40 @@ export const USER_DATA_SELECT_REVIEWS_COMMENTS = {
|
|
|
1595
1708
|
},
|
|
1596
1709
|
} satisfies Prisma.UserSelect;
|
|
1597
1710
|
|
|
1711
|
+
/** Plain `reviews` shape queried by `FRONT_END_USER_DATA_TO_SELECT` alone (no nested `comments`). */
|
|
1712
|
+
type PublicUserPlainReview = Prisma.UserGetPayload<{
|
|
1713
|
+
select: typeof FRONT_END_USER_DATA_TO_SELECT;
|
|
1714
|
+
}>["reviews"][number];
|
|
1715
|
+
|
|
1716
|
+
/** `reviews` shape when a query additionally merges in `USER_DATA_SELECT_REVIEWS_COMMENTS` on top of
|
|
1717
|
+
* `FRONT_END_USER_DATA_TO_SELECT` (nested `comments` included). */
|
|
1718
|
+
export type PublicUserReviewWithComments = Prisma.UserGetPayload<{
|
|
1719
|
+
select: typeof USER_DATA_SELECT_REVIEWS_COMMENTS;
|
|
1720
|
+
}>["reviews"][number];
|
|
1721
|
+
|
|
1722
|
+
type PublicUserBase = Prisma.UserGetPayload<{
|
|
1723
|
+
select: typeof FRONT_END_USER_DATA_TO_SELECT;
|
|
1724
|
+
}>;
|
|
1725
|
+
|
|
1726
|
+
/** Real `User` select shape for public profile surfaces — derived via `GetPayload` (like `PublicTeaserUser`)
|
|
1727
|
+
* so relation/computed fields (e.g. `reviews`, `contacts`) can't silently drift from what
|
|
1728
|
+
* `FRONT_END_USER_DATA_TO_SELECT` actually queries. The four relation fields below stay optional (not
|
|
1729
|
+
* required-but-nullable, as a strict `GetPayload` would make them) because some call sites — e.g. auth/session
|
|
1730
|
+
* flows — legitimately pass a scalar-only `User` row through this type without ever including them.
|
|
1731
|
+
* `reviews` is additionally re-widened to a union since some call sites merge in
|
|
1732
|
+
* `USER_DATA_SELECT_REVIEWS_COMMENTS` for nested review comments. */
|
|
1598
1733
|
export type PublicUser = Omit<
|
|
1599
|
-
|
|
1600
|
-
"userSubscription"
|
|
1601
|
-
> &
|
|
1602
|
-
|
|
1603
|
-
|
|
1734
|
+
PublicUserBase,
|
|
1735
|
+
"reviews" | "contacts" | "socialMediaProfiles" | "userSubscription"
|
|
1736
|
+
> &
|
|
1737
|
+
Partial<Pick<PublicUserBase, "contacts" | "socialMediaProfiles" | "userSubscription">> & {
|
|
1738
|
+
reviews?: (PublicUserPlainReview | PublicUserReviewWithComments)[] | null;
|
|
1739
|
+
};
|
|
1740
|
+
|
|
1741
|
+
/** Self-account (`/me`) select shape — derived via `GetPayload` the same way `PublicUser` is. */
|
|
1742
|
+
export type PrivateUser = Prisma.UserGetPayload<{
|
|
1743
|
+
select: typeof PRIVATE_USER_ACCOUNT_TO_SELECT;
|
|
1744
|
+
}>;
|
|
1604
1745
|
|
|
1605
1746
|
export type PublicStripeAccount = Pick<
|
|
1606
1747
|
StripeAccountExt,
|
package/src/index.ts
CHANGED
|
@@ -35,6 +35,8 @@ export * from "./userReportTypes.js";
|
|
|
35
35
|
export * from "./mirroredPrismaEnums.js";
|
|
36
36
|
export * from "./utils/featuredDiscoveryGeo.js";
|
|
37
37
|
export * from "./utils/organizationEntitlements.js";
|
|
38
|
+
export * from "./serviceTypeLabels.js";
|
|
39
|
+
export * from "./targetAudienceLabels.js";
|
|
38
40
|
|
|
39
41
|
// Re-export ALL Prisma enums as values (usable as runtime constants, e.g. ServiceTypes.Entertainment)
|
|
40
42
|
// Excludes enums already re-exported by definitions.ts, mirroredPrismaEnums.ts, and membershipDefinitions.ts:
|
|
@@ -86,6 +86,22 @@ export const ServiceBookingSettlementStatus = {
|
|
|
86
86
|
|
|
87
87
|
export type ServiceBookingSettlementStatus = ServiceBookingSettlementStatusEnum;
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Display label for `ServiceBookingSettlementStatus` — consolidated from the hand-typed
|
|
91
|
+
* `STATUS_UI.label` copy in `EventPromoterBookingCard.tsx`. Icon/color styling stays local to
|
|
92
|
+
* that component (UI-specific, not a bash-common concern); only the text is shared here.
|
|
93
|
+
*/
|
|
94
|
+
export const ServiceBookingSettlementStatusLabel: Record<
|
|
95
|
+
ServiceBookingSettlementStatus,
|
|
96
|
+
string
|
|
97
|
+
> = {
|
|
98
|
+
Pending: "Awaiting settle",
|
|
99
|
+
Settled: "Settled",
|
|
100
|
+
SettlementPaymentFailed: "Payment failed",
|
|
101
|
+
SettlementHeld: "Held for review",
|
|
102
|
+
SettlementDisputed: "Disputed",
|
|
103
|
+
};
|
|
104
|
+
|
|
89
105
|
/**
|
|
90
106
|
* Mirrors Prisma `PricingModel`. Includes the Phase 1 additions
|
|
91
107
|
* `PER_PAID_ATTENDEE` and `PER_BASHPOINTS_ATTENDEE` introduced by the
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ServiceTypes } from "@prisma/client";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Human-readable label for every `ServiceTypes` value — the raw enum ("EventServices",
|
|
5
|
+
* "EntertainmentServices") is not fit for display copy.
|
|
6
|
+
*
|
|
7
|
+
* Single source of truth for what was previously four drifted, hand-typed copies:
|
|
8
|
+
* `homeServicesSort.ts`, `CategoryRequestsPage.tsx`, `serviceCategorySuggestionApi.ts`,
|
|
9
|
+
* and the `TAB_CONFIG` labels in `HowServices.tsx`.
|
|
10
|
+
*
|
|
11
|
+
* Note: this is distinct from `SERVICE_TYPE_DISPLAY_LABEL` in `definitions.ts`, which only
|
|
12
|
+
* covers the two values `COMPLEMENTARY_SERVICE_TYPE` can produce (Vendors/EventServices) for
|
|
13
|
+
* "also list as" copy — that narrower map stays as-is.
|
|
14
|
+
*/
|
|
15
|
+
export const SERVICE_TYPE_LABELS: Record<ServiceTypes, string> = {
|
|
16
|
+
[ServiceTypes.EntertainmentServices]: "Entertainment",
|
|
17
|
+
[ServiceTypes.EventServices]: "Event Services",
|
|
18
|
+
[ServiceTypes.Vendors]: "Vendors",
|
|
19
|
+
[ServiceTypes.Exhibitors]: "Exhibitors",
|
|
20
|
+
[ServiceTypes.Sponsors]: "Sponsors",
|
|
21
|
+
[ServiceTypes.Venues]: "Venues",
|
|
22
|
+
[ServiceTypes.Organizations]: "Organizations",
|
|
23
|
+
[ServiceTypes.Volunteers]: "Volunteers",
|
|
24
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { AgeRange, Education, Gender, Occupation } from "@prisma/client";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Display labels for `BashEvent`/`Service` target-audience demographics — consolidated from
|
|
5
|
+
* byte-identical copies that lived in `WhoTargetAudience.tsx` (bash event wizard) and
|
|
6
|
+
* `ServicesTargetAudience.tsx` (service wizard). Follows the `IncomeRangeLabel` precedent in
|
|
7
|
+
* `definitions.ts`.
|
|
8
|
+
*/
|
|
9
|
+
export const AgeRangeLabel: Record<AgeRange, string> = {
|
|
10
|
+
NoPreference: "Anyone",
|
|
11
|
+
Sixteen_17: "16-17",
|
|
12
|
+
EighteenPlus: "18+",
|
|
13
|
+
Eighteen_20: "18-20",
|
|
14
|
+
TwentyOnePlus: "21+",
|
|
15
|
+
TwentyOne_25: "21-25",
|
|
16
|
+
TwentySix_34: "26-34",
|
|
17
|
+
ThirtyFive_49: "35-49",
|
|
18
|
+
Fifty_64: "50-64",
|
|
19
|
+
SixtyFivePlus: "65+",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const GenderLabel: Record<Gender, string> = {
|
|
23
|
+
NoPreference: "Anyone",
|
|
24
|
+
Male: "Male",
|
|
25
|
+
Female: "Female",
|
|
26
|
+
Other: "Other",
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const OccupationLabel: Record<Occupation, string> = {
|
|
30
|
+
NoPreference: "Anyone",
|
|
31
|
+
Students: "Students",
|
|
32
|
+
Entrepreneurs: "Entrepreneurs",
|
|
33
|
+
SmallBusinesses: "Small Businesses",
|
|
34
|
+
Corporations: "Corporations",
|
|
35
|
+
Professionals: "Professionals",
|
|
36
|
+
Creatives: "Creatives",
|
|
37
|
+
AngelInvestors: "Angel Investors",
|
|
38
|
+
FamilyOffices: "Family Offices",
|
|
39
|
+
Retirees: "Retirees",
|
|
40
|
+
Academics: "Academics",
|
|
41
|
+
Government: "Government",
|
|
42
|
+
NonProfits: "Non-Profits",
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const EducationLabel: Record<Education, string> = {
|
|
46
|
+
NoPreference: "Anyone",
|
|
47
|
+
HighSchool: "High School",
|
|
48
|
+
SomeCollege: "Some College",
|
|
49
|
+
InCollege: "In College",
|
|
50
|
+
GraduateStudent: "Graduate Students",
|
|
51
|
+
Bachelors: "Bachelor's Degree",
|
|
52
|
+
Masters: "Master's Degree",
|
|
53
|
+
Doctorate: "Doctorate",
|
|
54
|
+
};
|