@bash-app/bash-common 30.370.0 → 30.372.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/accessScreening.js +1 -0
- package/dist/aiApproval.js +1 -0
- package/dist/aiEventPlan.js +1 -0
- package/dist/bashFeedTypes.js +1 -0
- package/dist/bookingIntent.js +1 -0
- package/dist/causeTags.js +1 -0
- package/dist/definitions.d.ts +6 -0
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js.map +1 -1
- package/dist/entertainmentNotableVenues.js +1 -0
- package/dist/groupTicketUtils.js +1 -0
- package/dist/guestPartySize.js +1 -0
- package/dist/hostCrmAutomation.js +1 -0
- package/dist/hostCrmConstants.js +1 -0
- package/dist/hostCrmInsights.js +1 -0
- package/dist/hostCrmSegments.js +1 -0
- package/dist/icebreakerPrompts.js +1 -0
- package/dist/influencerAudience.js +1 -0
- package/dist/legalTemplates.js +1 -0
- package/dist/membershipDefinitions.js +1 -0
- package/dist/mirroredPrismaEnums.js +1 -0
- package/dist/onSaleCapabilityRecommendations.js +1 -0
- package/dist/partnerStoreTypes.js +1 -0
- package/dist/productLaunch.js +1 -0
- package/dist/relationshipHealth.js +1 -0
- package/dist/requestAuthUser.js +1 -0
- package/dist/sideQuestIdeas.js +1 -0
- package/dist/storePrintArtworkUtils.js +1 -0
- package/dist/storeTypes.js +1 -0
- package/dist/stripeListingSubscriptionMessages.js +1 -0
- package/dist/templates/eventTemplates.js +1 -0
- package/dist/ticketBnplPaymentMethods.js +1 -0
- package/dist/userReportTypes.js +1 -0
- package/dist/utils/agencyBookingCheckoutCopy.js +1 -0
- package/dist/utils/arrayUtils.js +1 -0
- package/dist/utils/bashPointsPaymentUtils.js +1 -0
- package/dist/utils/birthdayExperienceQuality.js +1 -0
- package/dist/utils/contentFilterUtils.js +1 -0
- package/dist/utils/discountEngine/eligibilityValidator.js +1 -0
- package/dist/utils/displayDateUtils.js +1 -0
- package/dist/utils/entertainmentDrawFit.js +1 -0
- package/dist/utils/entityUtils.js +1 -0
- package/dist/utils/featuredDiscoveryGeo.js +1 -0
- package/dist/utils/flyerUtils.js +1 -0
- package/dist/utils/generalDateTimeUtils.js +1 -0
- package/dist/utils/lobFlyerUtils.js +1 -0
- package/dist/utils/localPartnerHours.js +1 -0
- package/dist/utils/luxonUtils.d.ts +7 -7
- package/dist/utils/luxonUtils.d.ts.map +1 -1
- package/dist/utils/luxonUtils.js +1 -0
- package/dist/utils/mathUtils.js +1 -0
- package/dist/utils/mediaClientDefaults.js +1 -0
- package/dist/utils/nonprofitUtils.js +1 -0
- package/dist/utils/objUtils.js +1 -0
- package/dist/utils/orgPromotionalPackageUtils.js +1 -0
- package/dist/utils/organizationEntitlements.d.ts +17 -14
- package/dist/utils/organizationEntitlements.d.ts.map +1 -1
- package/dist/utils/organizationEntitlements.js +12 -10
- package/dist/utils/organizationEntitlements.js.map +1 -1
- package/dist/utils/promotionBlastUtils.js +1 -0
- package/dist/utils/reputationUtils.js +1 -0
- package/dist/utils/reviewDimensionUtils.js +1 -0
- package/dist/utils/service/__tests__/apiServiceBookingApiUtils.test.js +66 -1
- package/dist/utils/service/__tests__/apiServiceBookingApiUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.d.ts +2 -0
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.d.ts.map +1 -0
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.js +165 -0
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.js.map +1 -0
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts +5 -3
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts.map +1 -1
- package/dist/utils/service/apiServiceBookingApiUtils.js +30 -1
- package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -1
- package/dist/utils/service/attendeeOptionUtils.js +1 -0
- package/dist/utils/service/billingCapUtils.js +1 -0
- package/dist/utils/service/eventPromoterUtils.js +1 -0
- package/dist/utils/service/frontendServiceBookingUtils.d.ts +10 -4
- package/dist/utils/service/frontendServiceBookingUtils.d.ts.map +1 -1
- package/dist/utils/service/frontendServiceBookingUtils.js +16 -3
- package/dist/utils/service/frontendServiceBookingUtils.js.map +1 -1
- package/dist/utils/service/offerAllowListUtils.js +1 -0
- package/dist/utils/service/offerComparisonUtils.js +1 -0
- package/dist/utils/service/regexUtils.js +1 -0
- package/dist/utils/service/serviceBookingExposureUtils.js +1 -0
- package/dist/utils/service/serviceBookingTypes.d.ts +2 -2
- package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -1
- package/dist/utils/service/serviceFeaturedSortUtils.js +1 -0
- package/dist/utils/service/unifiedPricingResolver.js +1 -0
- package/dist/utils/service/venueSettlementUtils.js +1 -0
- package/dist/utils/service/volunteerCompensationUtils.js +1 -0
- package/dist/utils/serviceAvailabilityDisplay.js +1 -0
- package/dist/utils/sortUtils.js +1 -0
- package/dist/utils/stringUtils.js +1 -0
- package/dist/utils/ticketCheckInDisplay.js +1 -0
- package/dist/utils/trustScoreUtils.js +1 -0
- package/dist/utils/typeUtils.js +1 -0
- package/dist/utils/userPromoCodeUtils.js +1 -0
- package/dist/utils/userUtils.js +1 -0
- package/dist/utils/venueLoyalty/redemptionCodeUtils.js +1 -0
- package/dist/utils/venueTypeFormatter.js +1 -0
- package/dist/utmAttribution.js +1 -0
- package/dist/venueMatch.js +1 -0
- package/package.json +1 -1
- package/src/definitions.ts +7 -0
- package/src/utils/organizationEntitlements.ts +17 -14
- package/src/utils/service/__tests__/apiServiceBookingApiUtils.test.ts +102 -2
- package/src/utils/service/__tests__/frontendServiceBookingUtils.test.ts +217 -0
- package/src/utils/service/apiServiceBookingApiUtils.ts +53 -1
- package/src/utils/service/frontendServiceBookingUtils.ts +33 -2
- package/src/utils/service/serviceBookingTypes.ts +2 -1
|
@@ -34,6 +34,20 @@ export function apiTransformAddOnsToAddonInputs(addOnsApi, serviceAddons) {
|
|
|
34
34
|
};
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
+
export function apiTransformPackagesToPackageInputs(packagesApi, servicePackages) {
|
|
38
|
+
// Create a Map for faster lookup by packageId
|
|
39
|
+
const packageMap = new Map(servicePackages.map((pkg) => [pkg.id, pkg]));
|
|
40
|
+
return packagesApi.map((packageApi) => {
|
|
41
|
+
const matchedPackage = packageMap.get(packageApi.packageId);
|
|
42
|
+
if (!matchedPackage) {
|
|
43
|
+
throw new Error(`Failed to match package with id: ${packageApi.packageId}`);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...matchedPackage,
|
|
47
|
+
...packageApi,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
37
51
|
export function apiTransformBookedDays(priceToBook) {
|
|
38
52
|
return priceToBook.daysToBook.map((day) => {
|
|
39
53
|
// Transform addOns using the helper function, then map to the expected output.
|
|
@@ -55,6 +69,8 @@ export function apiTransformBookedDays(priceToBook) {
|
|
|
55
69
|
startDate: day.dateTimeRange.start.toJSDate(),
|
|
56
70
|
endDate: day.dateTimeRange.end.toJSDate(),
|
|
57
71
|
addOns: addOns,
|
|
72
|
+
// Packages are booking-level bundles (see servicePriceToBookToApiBookingBase),
|
|
73
|
+
// not tied to a specific day, so this stays empty here.
|
|
58
74
|
packages: [],
|
|
59
75
|
fees: day.fees,
|
|
60
76
|
priceBreakdown: priceBreakdown,
|
|
@@ -90,6 +106,7 @@ export function serviceGetPriceToBookFromBooking(service, booking) {
|
|
|
90
106
|
flatRateCents: booking.flatRateCents,
|
|
91
107
|
additionalFees: booking.additionalFees,
|
|
92
108
|
addOns: booking.addOns,
|
|
109
|
+
packages: booking.packages,
|
|
93
110
|
daysTotalBeforeTaxesCents: booking.daysTotalATBCents,
|
|
94
111
|
subtotalBeforeTaxesCents: booking.subtotalATBCents,
|
|
95
112
|
totalBeforeTaxesCents: booking.totalATBCents,
|
|
@@ -138,6 +155,12 @@ export function servicePriceToBookToApiDays(serviceId, userId, priceToBook) {
|
|
|
138
155
|
.filter((dayParams) => dayParams !== null) ?? [];
|
|
139
156
|
return bookedDays;
|
|
140
157
|
}
|
|
158
|
+
export function servicePriceToBookToApiPackages(priceToBook) {
|
|
159
|
+
return priceToBook.packages.map((pkg) => ({
|
|
160
|
+
packageId: pkg.packageId,
|
|
161
|
+
chosenQuantity: pkg.chosenQuantity,
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
141
164
|
export function servicePriceToBookToApiBookingBase({ bookingType, status, timezone, priceToBook, allowPromiseToPay = false, isFreeGuest = false, }) {
|
|
142
165
|
const bookedDays = apiTransformBookedDays(priceToBook);
|
|
143
166
|
const addOns = priceToBook.addOns.map((addOn) => ({
|
|
@@ -146,6 +169,12 @@ export function servicePriceToBookToApiBookingBase({ bookingType, status, timezo
|
|
|
146
169
|
chosenQuantity: addOn.chosenQuantity,
|
|
147
170
|
costPQCents: addOn.costPQCents,
|
|
148
171
|
}));
|
|
172
|
+
const packages = priceToBook.packages.map((pkg) => ({
|
|
173
|
+
packageId: pkg.packageId,
|
|
174
|
+
package: pkg.package,
|
|
175
|
+
chosenQuantity: pkg.chosenQuantity,
|
|
176
|
+
costPQCents: pkg.costPQCents,
|
|
177
|
+
}));
|
|
149
178
|
return {
|
|
150
179
|
bookingType: bookingType,
|
|
151
180
|
status: status,
|
|
@@ -158,7 +187,7 @@ export function servicePriceToBookToApiBookingBase({ bookingType, status, timezo
|
|
|
158
187
|
subtotalATBCents: priceToBook.subtotalBeforeTaxesCents,
|
|
159
188
|
totalATBCents: priceToBook.totalBeforeTaxesCents,
|
|
160
189
|
addOns: addOns,
|
|
161
|
-
packages:
|
|
190
|
+
packages: packages,
|
|
162
191
|
allowPromiseToPay: allowPromiseToPay,
|
|
163
192
|
isFreeGuest: isFreeGuest,
|
|
164
193
|
// Phase 3 — providers opt in per-booking when they want BP-paid tickets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiServiceBookingApiUtils.js","sourceRoot":"","sources":["../../../src/utils/service/apiServiceBookingApiUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiServiceBookingApiUtils.js","sourceRoot":"","sources":["../../../src/utils/service/apiServiceBookingApiUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { ServiceAddon, ServiceBookingRateOption } from "@prisma/client";
|
|
2
|
-
import { ServiceRatesAssociationExt } from "../../extendedSchemas.js";
|
|
2
|
+
import { ServicePackageExt, ServiceRatesAssociationExt } from "../../extendedSchemas.js";
|
|
3
3
|
import { ServiceAttendeeOption } from "./attendeeOptionUtils.js";
|
|
4
4
|
import { ServiceRatesLuxon } from "./serviceRateUtils.js";
|
|
5
5
|
import { LuxonDateRange } from "../luxonUtils.js";
|
|
6
|
-
import { ServiceBookingFeeBase, ServiceBookingPriceBreakdownBaseT, ServiceBookingAddOnBase } from "./serviceBookingTypes.js";
|
|
6
|
+
import { ServiceBookingFeeBase, ServiceBookingPriceBreakdownBaseT, ServiceBookingAddOnBase, ServiceBookingPackageBase } from "./serviceBookingTypes.js";
|
|
7
7
|
export interface ServiceAddonInput extends ServiceAddon {
|
|
8
8
|
chosenQuantity?: number;
|
|
9
9
|
}
|
|
10
|
+
export interface ServicePackageInput extends ServicePackageExt {
|
|
11
|
+
chosenQuantity?: number;
|
|
12
|
+
}
|
|
10
13
|
export interface FrontendServiceBookingDayInfoParams {
|
|
11
14
|
dateTimeRange: LuxonDateRange;
|
|
12
15
|
fees: ServiceBookingFeeBase[];
|
|
@@ -28,6 +31,7 @@ export interface FrontendServiceGetPriceToBookResult {
|
|
|
28
31
|
rateOption: ServiceBookingRateOption;
|
|
29
32
|
flatRateCents?: number;
|
|
30
33
|
addOns: ServiceBookingAddOnBase[];
|
|
34
|
+
packages: ServiceBookingPackageBase[];
|
|
31
35
|
daysTotalBeforeTaxesCents: number;
|
|
32
36
|
subtotalBeforeTaxesCents: number;
|
|
33
37
|
totalBeforeTaxesCents: number;
|
|
@@ -46,15 +50,17 @@ export interface FrontendServiceGetPriceToBookFeesParams {
|
|
|
46
50
|
selectedAttendeeOption: ServiceAttendeeOption;
|
|
47
51
|
additionalFees: ServiceBookingFeeBase[];
|
|
48
52
|
addOns: ServiceAddonInput[];
|
|
53
|
+
packages?: ServicePackageInput[];
|
|
49
54
|
timezone: string | null | undefined;
|
|
50
55
|
}
|
|
51
|
-
export declare function frontendServiceGetPriceToBookFees(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, { daysToBookParams, selectedAttendeeOption, addOns, additionalFees, timezone, }: FrontendServiceGetPriceToBookFeesParams): FrontendServiceGetPriceToBookResult;
|
|
56
|
+
export declare function frontendServiceGetPriceToBookFees(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, { daysToBookParams, selectedAttendeeOption, addOns, packages, additionalFees, timezone, }: FrontendServiceGetPriceToBookFeesParams): FrontendServiceGetPriceToBookResult;
|
|
52
57
|
export interface FrontendServiceGetPriceToBookParams {
|
|
53
58
|
addOns: ServiceAddonInput[];
|
|
59
|
+
packages?: ServicePackageInput[];
|
|
54
60
|
selectedAttendeeOption: ServiceAttendeeOption;
|
|
55
61
|
bookingDateTimeRanges: LuxonDateRange[];
|
|
56
62
|
timezone: string | null | undefined;
|
|
57
63
|
}
|
|
58
|
-
export declare function frontendServiceGetPriceToBook(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, { addOns, selectedAttendeeOption, bookingDateTimeRanges, //list of dateTime ranges to book
|
|
64
|
+
export declare function frontendServiceGetPriceToBook(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, { addOns, packages, selectedAttendeeOption, bookingDateTimeRanges, //list of dateTime ranges to book
|
|
59
65
|
timezone, }: FrontendServiceGetPriceToBookParams): FrontendServiceGetPriceToBookResult;
|
|
60
66
|
//# sourceMappingURL=frontendServiceBookingUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontendServiceBookingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/frontendServiceBookingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,wBAAwB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAML,0BAA0B,EAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAML,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"frontendServiceBookingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/frontendServiceBookingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,7 +72,7 @@ timezone, }) {
|
|
|
72
72
|
});
|
|
73
73
|
return bookingDayResults;
|
|
74
74
|
}
|
|
75
|
-
export function frontendServiceGetPriceToBookFees(serviceRatesAssociation, { daysToBookParams, selectedAttendeeOption, addOns, additionalFees,
|
|
75
|
+
export function frontendServiceGetPriceToBookFees(serviceRatesAssociation, { daysToBookParams, selectedAttendeeOption, addOns, packages = [], additionalFees,
|
|
76
76
|
// overlappingBusinessHours,
|
|
77
77
|
timezone, }) {
|
|
78
78
|
const bookingDateTimeRanges = daysToBookParams.map((daysToBookParams) => daysToBookParams.dateTimeRange);
|
|
@@ -92,6 +92,16 @@ timezone, }) {
|
|
|
92
92
|
};
|
|
93
93
|
})
|
|
94
94
|
: [];
|
|
95
|
+
// Packages are booking-level bundled line items (e.g. "Gold DJ Package") and apply
|
|
96
|
+
// on top of the booking regardless of hourly/daily/flat rate option.
|
|
97
|
+
const usedPackages = packages.map((pkg) => {
|
|
98
|
+
return {
|
|
99
|
+
package: pkg,
|
|
100
|
+
packageId: pkg.id,
|
|
101
|
+
chosenQuantity: pkg.chosenQuantity ?? 0,
|
|
102
|
+
costPQCents: pkg.priceCents,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
95
105
|
const bookingDayResults = frontendServiceGetBookingDayInfo({
|
|
96
106
|
rateOption: rateOption,
|
|
97
107
|
filteredRates: filteredRates,
|
|
@@ -120,7 +130,8 @@ timezone, }) {
|
|
|
120
130
|
const hasCustomProcessingFee = additionalFees.some((fee) => fee.feeType == ServiceBookingFeeType.ProcessingFee);
|
|
121
131
|
allAdditionalFees = allAdditionalFees.filter((fee) => fee.costPQCents > 0);
|
|
122
132
|
const addOnsTotalCents = usedAddons.reduce((sofar, addOn) => sofar + addOn.costPQCents * addOn.chosenQuantity, 0);
|
|
123
|
-
const
|
|
133
|
+
const packagesTotalCents = usedPackages.reduce((sofar, pkg) => sofar + pkg.costPQCents * pkg.chosenQuantity, 0);
|
|
134
|
+
const subtotalBeforeTaxesCents = daysTotalBeforeTaxesCents + addOnsTotalCents + packagesTotalCents;
|
|
124
135
|
if (!hasCustomProcessingFee) {
|
|
125
136
|
// Same pass-through formula as bash ticket/donation checkout (STRIPE_PROCESSING_FEE).
|
|
126
137
|
const processingFeeCents = calculateStripeProcessingFeeCents(subtotalBeforeTaxesCents);
|
|
@@ -143,6 +154,7 @@ timezone, }) {
|
|
|
143
154
|
totalWithFees: totalBeforeTaxesCents, // Same as totalBeforeTaxesCents
|
|
144
155
|
additionalFees: allAdditionalFees,
|
|
145
156
|
addOns: usedAddons,
|
|
157
|
+
packages: usedPackages,
|
|
146
158
|
minimumTimeBlockHours: minimumTimeBlockHours,
|
|
147
159
|
rateOption: rateOption,
|
|
148
160
|
flatRateCents: (filteredRates.generalRate?.flatRateCents ?? 0) > 0
|
|
@@ -150,7 +162,7 @@ timezone, }) {
|
|
|
150
162
|
: undefined,
|
|
151
163
|
};
|
|
152
164
|
}
|
|
153
|
-
export function frontendServiceGetPriceToBook(serviceRatesAssociation, { addOns, selectedAttendeeOption, bookingDateTimeRanges, //list of dateTime ranges to book
|
|
165
|
+
export function frontendServiceGetPriceToBook(serviceRatesAssociation, { addOns, packages = [], selectedAttendeeOption, bookingDateTimeRanges, //list of dateTime ranges to book
|
|
154
166
|
// overlappingBusinessHours,
|
|
155
167
|
timezone, }) {
|
|
156
168
|
const cleaningFeePerBookingCents = serviceRatesAssociation?.serviceGeneralRates?.cleaningFeePerBookingCents ??
|
|
@@ -176,6 +188,7 @@ timezone, }) {
|
|
|
176
188
|
selectedAttendeeOption: selectedAttendeeOption,
|
|
177
189
|
additionalFees: [],
|
|
178
190
|
addOns: addOns,
|
|
191
|
+
packages: packages,
|
|
179
192
|
timezone: timezone,
|
|
180
193
|
});
|
|
181
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontendServiceBookingUtils.js","sourceRoot":"","sources":["../../../src/utils/service/frontendServiceBookingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"frontendServiceBookingUtils.js","sourceRoot":"","sources":["../../../src/utils/service/frontendServiceBookingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ServiceBookingAddOnExt, ServiceBookingFeeExt, ServiceBookingPriceBreakdownExt, ServiceBookingDayExt, ServiceBookingExt } from "../../extendedSchemas.js";
|
|
1
|
+
import { ServiceBookingAddOnExt, ServiceBookingFeeExt, ServiceBookingPackageExt, ServiceBookingPriceBreakdownExt, ServiceBookingDayExt, ServiceBookingExt } from "../../extendedSchemas.js";
|
|
2
2
|
import { LuxonDateRange } from "../luxonUtils.js";
|
|
3
3
|
import { MakeNullablePropsOptional, MakeOptional } from "../typeUtils.js";
|
|
4
4
|
export type ServiceBookingAddOnBase = Omit<ServiceBookingAddOnExt, "id" | "serviceBookingDayId" | "serviceBookingDay" | "serviceBookingId" | "serviceBooking">;
|
|
5
|
-
export type ServiceBookingPackageBase = Omit<
|
|
5
|
+
export type ServiceBookingPackageBase = Omit<ServiceBookingPackageExt, "id" | "serviceBookingDayId" | "serviceBookingDay" | "serviceBookingId" | "serviceBooking">;
|
|
6
6
|
export type ServiceBookingFeeBase = Omit<ServiceBookingFeeExt, "id" | "serviceBookingDayId" | "serviceBookingDay" | "serviceBookingId" | "serviceBooking">;
|
|
7
7
|
export type ServiceBookingPriceBreakdownBase = Omit<ServiceBookingPriceBreakdownExt, "id" | "serviceBookingDayId" | "serviceBookingDay">;
|
|
8
8
|
export type ServiceBookingDayBase = Omit<ServiceBookingDayExt, "id" | "serviceBookingRequestId" | "serviceBookingRequest">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceBookingTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceBookingTypes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,oBAAoB,EAGpB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,
|
|
1
|
+
{"version":3,"file":"serviceBookingTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceBookingTypes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EAGpB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACpB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,wBAAwB,EACtB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EAClB,IAAI,GACJ,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,CACnB,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,+BAA+B,EAC/B,IAAI,GAAG,qBAAqB,GAAG,mBAAmB,CACnD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,IAAI,GAAG,yBAAyB,GAAG,uBAAuB,CAC3D,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,iBAAiB,EACjB,YAAY,GAAG,UAAU,GAAG,gBAAgB,CAC7C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAChE,YAAY,CACV,iBAAiB,EACf,IAAI,GACJ,0BAA0B,GAC1B,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,UAAU,GAGV,kBAAkB,GAClB,oBAAoB,GAGpB,kBAAkB,CACrB,CACF,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAC/D,MAAM,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AACnE,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAC3D,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,gCAAgC,EAChC,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,qBAAqB,EACrB,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC"}
|
|
@@ -62,3 +62,4 @@ export function compareFeaturedServices(now = new Date()) {
|
|
|
62
62
|
}
|
|
63
63
|
/** Minimum number of active featured services required for the homepage / browse "Featured Services" carousel to render. Below this floor the section feels sparse. */
|
|
64
64
|
export const MIN_FEATURED_SERVICES_FOR_SECTION = 3;
|
|
65
|
+
//# sourceMappingURL=serviceFeaturedSortUtils.js.map
|
|
@@ -85,3 +85,4 @@ export function volunteerCompensationSummary(args) {
|
|
|
85
85
|
* detail. Kept here so wizard, api, and docs cite the exact same wording.
|
|
86
86
|
*/
|
|
87
87
|
export const VOLUNTEER_COMPENSATION_DISCLAIMER = "Volunteers are not employees or contractors. BashPoints stipends are platform credit redeemable on Bash, not wages, and don't count toward employment or 1099 reporting.";
|
|
88
|
+
//# sourceMappingURL=volunteerCompensationUtils.js.map
|
package/dist/utils/sortUtils.js
CHANGED
package/dist/utils/typeUtils.js
CHANGED
package/dist/utils/userUtils.js
CHANGED
package/dist/utmAttribution.js
CHANGED
package/dist/venueMatch.js
CHANGED
package/package.json
CHANGED
package/src/definitions.ts
CHANGED
|
@@ -709,6 +709,11 @@ export type ApiServiceAddonParams = {
|
|
|
709
709
|
chosenQuantity: number;
|
|
710
710
|
};
|
|
711
711
|
|
|
712
|
+
export type ApiServicePackageParams = {
|
|
713
|
+
packageId: string;
|
|
714
|
+
chosenQuantity: number;
|
|
715
|
+
};
|
|
716
|
+
|
|
712
717
|
export type ApiServiceBookedDayParams = {
|
|
713
718
|
serviceId: string;
|
|
714
719
|
forUserId: string;
|
|
@@ -741,6 +746,8 @@ export type ApiServiceBookingParams = {
|
|
|
741
746
|
timezone: string;
|
|
742
747
|
attendeeOption: ServiceAttendeeOption;
|
|
743
748
|
bashEventId?: string;
|
|
749
|
+
/** Booking-level bundled packages (e.g. "Gold DJ Package"), independent of hourly/daily rates. */
|
|
750
|
+
packages?: ApiServicePackageParams[];
|
|
744
751
|
};
|
|
745
752
|
|
|
746
753
|
export type ApiServiceCanBookParams = {} & ApiServiceBookingParams;
|
|
@@ -17,10 +17,11 @@ export interface OrganizationEntitlementInput {
|
|
|
17
17
|
subscriptionStatus?: string | null;
|
|
18
18
|
/**
|
|
19
19
|
* True only when ops provisioned Enterprise via a signed deal (admin
|
|
20
|
-
* enterprise-provisioning endpoint)
|
|
21
|
-
* subscriptionTier="Enterprise"
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* enterprise-provisioning endpoint) — the only way to reach
|
|
21
|
+
* subscriptionTier="Enterprise" (see docs/ENTERPRISE-B2B-SALES-PLAYBOOK.md;
|
|
22
|
+
* self-serve checkout rejects Enterprise). Optional/undefined is treated as
|
|
23
|
+
* false so legacy call sites that don't select this field fail closed on the
|
|
24
|
+
* sales-gated surface rather than open.
|
|
24
25
|
*/
|
|
25
26
|
enterpriseSalesProvisioned?: boolean | null;
|
|
26
27
|
}
|
|
@@ -41,8 +42,10 @@ function hasActiveEnterpriseTier(
|
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Vanity subdomains ({slug}.bash.community) and custom domains (white-label)
|
|
44
|
-
*
|
|
45
|
-
*
|
|
45
|
+
* come bundled with any Enterprise plan — Enterprise is sales-led (custom
|
|
46
|
+
* quote), so this is always a sales-negotiated deal today, but the check
|
|
47
|
+
* intentionally doesn't require `enterpriseSalesProvisioned` in case self-serve
|
|
48
|
+
* Enterprise checkout returns as a fast-follow.
|
|
46
49
|
*/
|
|
47
50
|
export function organizationHasVanitySubdomain(
|
|
48
51
|
org: OrganizationEntitlementInput | null | undefined
|
|
@@ -53,11 +56,10 @@ export function organizationHasVanitySubdomain(
|
|
|
53
56
|
/**
|
|
54
57
|
* Shared gate for the enterprise platform surface: org-scoped audit logs,
|
|
55
58
|
* SSO/identity setup, procurement approval policy, API keys, webhooks, and
|
|
56
|
-
* third-party integrations (Mailchimp/Salesforce).
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* involve a security review or contract terms sales owns.
|
|
59
|
+
* third-party integrations (Mailchimp/Salesforce). Requires the explicit
|
|
60
|
+
* `enterpriseSalesProvisioned` flag set by ops after a signed deal, since SSO,
|
|
61
|
+
* compliance, procurement, and API access typically involve a security review
|
|
62
|
+
* or contract terms sales owns.
|
|
61
63
|
*/
|
|
62
64
|
export function organizationHasEnterprisePlatformAccess(
|
|
63
65
|
org: OrganizationEntitlementInput | null | undefined
|
|
@@ -106,9 +108,10 @@ export function organizationHasComplianceAccess(
|
|
|
106
108
|
* removal toggle. Same Enterprise + active/trialing gate as
|
|
107
109
|
* {@link organizationHasVanitySubdomain} for MVP — reuse the existing tier rather
|
|
108
110
|
* than invent a new pricing tier now. A dedicated "White-label" tier is a
|
|
109
|
-
* fast-follow if sales needs separate pricing.
|
|
110
|
-
*
|
|
111
|
-
*
|
|
111
|
+
* fast-follow if sales needs separate pricing. Does NOT require
|
|
112
|
+
* {@link organizationHasEnterprisePlatformAccess}'s `enterpriseSalesProvisioned`
|
|
113
|
+
* flag, so a fast-follow self-serve Enterprise checkout could unlock this
|
|
114
|
+
* without the sales-gated platform surface.
|
|
112
115
|
*/
|
|
113
116
|
export function organizationHasCustomDomainAccess(
|
|
114
117
|
org: OrganizationEntitlementInput | null | undefined
|