@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
|
@@ -21,19 +21,19 @@ export interface LuxonDateRangeN {
|
|
|
21
21
|
export declare function dayOfWeekGetIdx(dayOfWeek: DayOfWeek | DayOfWeekIdx): DayOfWeekIdx;
|
|
22
22
|
export declare function dayOfWeekFromIdx(dayOfWeek: DayOfWeek | DayOfWeekIdx): import(".prisma/client").$Enums.DayOfWeek;
|
|
23
23
|
export declare function dateTimeFromDayTime(dayOfWeek: DayOfWeek | DayOfWeekIdx, hour?: number, minute?: number, interpretAsTimezone?: string, timezoneToConvertTo?: string): DateTime;
|
|
24
|
-
export declare function dateTimeFromDate(date: string | Date, interpretAsTimezone?: string, timezoneToConvertTo?: string): DateTime<
|
|
24
|
+
export declare function dateTimeFromDate(date: string | Date, interpretAsTimezone?: string, timezoneToConvertTo?: string): DateTime<true> | DateTime<false>;
|
|
25
25
|
export type DateTimeTime = Pick<DateTime, "hour" | "minute">;
|
|
26
26
|
export type DateTimeDate = Pick<DateTime, "year" | "month" | "day">;
|
|
27
27
|
export declare function dateTimeToTimeComponents(dateTime: DateTime): DateTimeTime;
|
|
28
28
|
export declare function dateTimeToDateComponents(dateTime: DateTime): DateTimeDate;
|
|
29
29
|
export declare function dateTimeFromTime(time: string | Date, interpretAsTimezone?: string, timezoneToConvertTo?: string): DateTime | null;
|
|
30
30
|
export declare function dateTimeFromComponents(date: DateTime | Date | string | null | undefined, time: DateTime | Date | string | null | undefined, interpretAsTimezone?: string, timezoneToConvertTo?: string): DateTime | null;
|
|
31
|
-
export declare function dateTimeGetDateTimeTime(dateTime: DateTime): DateTime<
|
|
31
|
+
export declare function dateTimeGetDateTimeTime(dateTime: DateTime): DateTime<true> | DateTime<false>;
|
|
32
32
|
export declare function dateTimeSetTime(dateTime: DateTime, time?: DateTimeTime | DateTime): DateTime;
|
|
33
33
|
export declare function dateTimeSetDate(dateTime: DateTime, date?: DateTimeDate | DateTime): DateTime;
|
|
34
34
|
export declare function dateRangeGetDateTimeTIme(dateRange: LuxonDateRange): {
|
|
35
|
-
start: DateTime<
|
|
36
|
-
end: DateTime<
|
|
35
|
+
start: DateTime<true> | DateTime<false>;
|
|
36
|
+
end: DateTime<true> | DateTime<false>;
|
|
37
37
|
};
|
|
38
38
|
export declare function dateTimeFormat(dateTime?: DateTime | undefined | null): string;
|
|
39
39
|
export declare function dateTimeFormatExt(dateTime?: DateTime | undefined | null): string;
|
|
@@ -61,8 +61,8 @@ export type LuxonDayOfWeekHours = {
|
|
|
61
61
|
export declare function formatDayOfWeekHours(hours: LuxonDayOfWeekHours): string[];
|
|
62
62
|
export declare function mergeCrossDayHours(hours: LuxonDateRange[]): LuxonDateRange[];
|
|
63
63
|
export declare function dateTimeHoursByDay(hours: LuxonDateRange[]): LuxonDayOfWeekHours;
|
|
64
|
-
export declare function normalizeLuxonInterval(interval: Interval): Interval<
|
|
65
|
-
export declare function dateRangeIntervalFromWeekdayTime(dateRange: LuxonDateRange): Interval<
|
|
64
|
+
export declare function normalizeLuxonInterval(interval: Interval): Interval<true> | Interval<false>;
|
|
65
|
+
export declare function dateRangeIntervalFromWeekdayTime(dateRange: LuxonDateRange): Interval<true> | Interval<false>;
|
|
66
66
|
export declare function dateTimeGetOverlappingHoursCommonHelper(weekHours: LuxonDayOfWeekHours, inputInterval: Interval): LuxonDateRange | null;
|
|
67
67
|
export declare function dateTimeGetOverlappingHoursCommon(weekHours: LuxonDayOfWeekHours, inputHours: LuxonDateRange): LuxonDateRange | null;
|
|
68
68
|
export declare function dateTimeGetOverlappingHoursContinuousHelper(weekHours: LuxonDayOfWeekHours, inputInterval: Interval): LuxonDateRange[] | null;
|
|
@@ -100,7 +100,7 @@ export declare function dateTimeRangeCrossesMidnight(range: LuxonDateRange): boo
|
|
|
100
100
|
*/
|
|
101
101
|
export declare function splitRangeByInputTimes(range: LuxonDateRange): LuxonDateRange[];
|
|
102
102
|
export declare function dateTimeRangeFromDates(startDate: Date | string, endDate: Date | string, interpretAsTimezone?: string, timezoneToConvertTo?: string): LuxonDateRange;
|
|
103
|
-
export declare function dateTimeFromString(str: string): DateTime<
|
|
103
|
+
export declare function dateTimeFromString(str: string): DateTime<true> | DateTime<false>;
|
|
104
104
|
export declare function dateTimeToString(dateTime: DateTime): string | null;
|
|
105
105
|
export declare function dateRangesFormat(dateRanges: LuxonDateRange[]): string;
|
|
106
106
|
//# sourceMappingURL=luxonUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"luxonUtils.d.ts","sourceRoot":"","sources":["../../src/utils/luxonUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EACL,YAAY,EAIb,MAAM,2BAA2B,CAAC;AAInC,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AACpD,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AACpD,eAAO,MAAM,uCAAuC,aAAa,CAAC;AAGlE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,gBAQlE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,6CAQnE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,GAAG,YAAY,EACnC,IAAI,GAAE,MAAU,EAChB,MAAM,GAAE,MAAU,EAClB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,QAAQ,CAqBV;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,mBAAmB,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"luxonUtils.d.ts","sourceRoot":"","sources":["../../src/utils/luxonUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/luxonUtils.js
CHANGED
package/dist/utils/mathUtils.js
CHANGED
package/dist/utils/objUtils.js
CHANGED
|
@@ -12,27 +12,29 @@ export interface OrganizationEntitlementInput {
|
|
|
12
12
|
subscriptionStatus?: string | null;
|
|
13
13
|
/**
|
|
14
14
|
* True only when ops provisioned Enterprise via a signed deal (admin
|
|
15
|
-
* enterprise-provisioning endpoint)
|
|
16
|
-
* subscriptionTier="Enterprise"
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* enterprise-provisioning endpoint) — the only way to reach
|
|
16
|
+
* subscriptionTier="Enterprise" (see docs/ENTERPRISE-B2B-SALES-PLAYBOOK.md;
|
|
17
|
+
* self-serve checkout rejects Enterprise). Optional/undefined is treated as
|
|
18
|
+
* false so legacy call sites that don't select this field fail closed on the
|
|
19
|
+
* sales-gated surface rather than open.
|
|
19
20
|
*/
|
|
20
21
|
enterpriseSalesProvisioned?: boolean | null;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Vanity subdomains ({slug}.bash.community) and custom domains (white-label)
|
|
24
|
-
*
|
|
25
|
-
*
|
|
25
|
+
* come bundled with any Enterprise plan — Enterprise is sales-led (custom
|
|
26
|
+
* quote), so this is always a sales-negotiated deal today, but the check
|
|
27
|
+
* intentionally doesn't require `enterpriseSalesProvisioned` in case self-serve
|
|
28
|
+
* Enterprise checkout returns as a fast-follow.
|
|
26
29
|
*/
|
|
27
30
|
export declare function organizationHasVanitySubdomain(org: OrganizationEntitlementInput | null | undefined): boolean;
|
|
28
31
|
/**
|
|
29
32
|
* Shared gate for the enterprise platform surface: org-scoped audit logs,
|
|
30
33
|
* SSO/identity setup, procurement approval policy, API keys, webhooks, and
|
|
31
|
-
* third-party integrations (Mailchimp/Salesforce).
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* involve a security review or contract terms sales owns.
|
|
34
|
+
* third-party integrations (Mailchimp/Salesforce). Requires the explicit
|
|
35
|
+
* `enterpriseSalesProvisioned` flag set by ops after a signed deal, since SSO,
|
|
36
|
+
* compliance, procurement, and API access typically involve a security review
|
|
37
|
+
* or contract terms sales owns.
|
|
36
38
|
*/
|
|
37
39
|
export declare function organizationHasEnterprisePlatformAccess(org: OrganizationEntitlementInput | null | undefined): boolean;
|
|
38
40
|
/** Org-admin audit log viewer + CSV export. */
|
|
@@ -51,9 +53,10 @@ export declare function organizationHasComplianceAccess(org: OrganizationEntitle
|
|
|
51
53
|
* removal toggle. Same Enterprise + active/trialing gate as
|
|
52
54
|
* {@link organizationHasVanitySubdomain} for MVP — reuse the existing tier rather
|
|
53
55
|
* than invent a new pricing tier now. A dedicated "White-label" tier is a
|
|
54
|
-
* fast-follow if sales needs separate pricing.
|
|
55
|
-
*
|
|
56
|
-
*
|
|
56
|
+
* fast-follow if sales needs separate pricing. Does NOT require
|
|
57
|
+
* {@link organizationHasEnterprisePlatformAccess}'s `enterpriseSalesProvisioned`
|
|
58
|
+
* flag, so a fast-follow self-serve Enterprise checkout could unlock this
|
|
59
|
+
* without the sales-gated platform surface.
|
|
57
60
|
*/
|
|
58
61
|
export declare function organizationHasCustomDomainAccess(org: OrganizationEntitlementInput | null | undefined): boolean;
|
|
59
62
|
//# sourceMappingURL=organizationEntitlements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizationEntitlements.d.ts","sourceRoot":"","sources":["../../src/utils/organizationEntitlements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,iCAGnC,CAAC;AAEX,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC
|
|
1
|
+
{"version":3,"file":"organizationEntitlements.d.ts","sourceRoot":"","sources":["../../src/utils/organizationEntitlements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,iCAGnC,CAAC;AAEX,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C;AAgBD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED,+CAA+C;AAC/C,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED,0BAA0B;AAC1B,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED,+DAA+D;AAC/D,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED,+EAA+E;AAC/E,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACnD,OAAO,CAET"}
|
|
@@ -24,8 +24,10 @@ function hasActiveEnterpriseTier(org) {
|
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Vanity subdomains ({slug}.bash.community) and custom domains (white-label)
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* come bundled with any Enterprise plan — Enterprise is sales-led (custom
|
|
28
|
+
* quote), so this is always a sales-negotiated deal today, but the check
|
|
29
|
+
* intentionally doesn't require `enterpriseSalesProvisioned` in case self-serve
|
|
30
|
+
* Enterprise checkout returns as a fast-follow.
|
|
29
31
|
*/
|
|
30
32
|
export function organizationHasVanitySubdomain(org) {
|
|
31
33
|
return hasActiveEnterpriseTier(org);
|
|
@@ -33,11 +35,10 @@ export function organizationHasVanitySubdomain(org) {
|
|
|
33
35
|
/**
|
|
34
36
|
* Shared gate for the enterprise platform surface: org-scoped audit logs,
|
|
35
37
|
* SSO/identity setup, procurement approval policy, API keys, webhooks, and
|
|
36
|
-
* third-party integrations (Mailchimp/Salesforce).
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* involve a security review or contract terms sales owns.
|
|
38
|
+
* third-party integrations (Mailchimp/Salesforce). Requires the explicit
|
|
39
|
+
* `enterpriseSalesProvisioned` flag set by ops after a signed deal, since SSO,
|
|
40
|
+
* compliance, procurement, and API access typically involve a security review
|
|
41
|
+
* or contract terms sales owns.
|
|
41
42
|
*/
|
|
42
43
|
export function organizationHasEnterprisePlatformAccess(org) {
|
|
43
44
|
return hasActiveEnterpriseTier(org) && org?.enterpriseSalesProvisioned === true;
|
|
@@ -68,9 +69,10 @@ export function organizationHasComplianceAccess(org) {
|
|
|
68
69
|
* removal toggle. Same Enterprise + active/trialing gate as
|
|
69
70
|
* {@link organizationHasVanitySubdomain} for MVP — reuse the existing tier rather
|
|
70
71
|
* than invent a new pricing tier now. A dedicated "White-label" tier is a
|
|
71
|
-
* fast-follow if sales needs separate pricing.
|
|
72
|
-
*
|
|
73
|
-
*
|
|
72
|
+
* fast-follow if sales needs separate pricing. Does NOT require
|
|
73
|
+
* {@link organizationHasEnterprisePlatformAccess}'s `enterpriseSalesProvisioned`
|
|
74
|
+
* flag, so a fast-follow self-serve Enterprise checkout could unlock this
|
|
75
|
+
* without the sales-gated platform surface.
|
|
74
76
|
*/
|
|
75
77
|
export function organizationHasCustomDomainAccess(org) {
|
|
76
78
|
return organizationHasVanitySubdomain(org);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizationEntitlements.js","sourceRoot":"","sources":["../../src/utils/organizationEntitlements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,QAAQ;IACR,UAAU;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"organizationEntitlements.js","sourceRoot":"","sources":["../../src/utils/organizationEntitlements.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,QAAQ;IACR,UAAU;CACF,CAAC;AAgBX,SAAS,uBAAuB,CAC9B,GAAoD;IAEpD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,GAAG,CAAC,gBAAgB,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACxD,+EAA+E;IAC/E,4EAA4E;IAC5E,4BAA4B;IAC5B,IAAI,GAAG,CAAC,kBAAkB,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAChD,OAAQ,gCAAsD,CAAC,QAAQ,CACrE,GAAG,CAAC,kBAAkB,CACvB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,GAAoD;IAEpD,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uCAAuC,CACrD,GAAoD;IAEpD,OAAO,uBAAuB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,0BAA0B,KAAK,IAAI,CAAC;AAClF,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,6BAA6B,CAC3C,GAAoD;IAEpD,OAAO,uCAAuC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,wBAAwB,CACtC,GAAoD;IAEpD,OAAO,uCAAuC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gCAAgC,CAC9C,GAAoD;IAEpD,OAAO,uCAAuC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,wBAAwB,CACtC,GAAoD;IAEpD,OAAO,uCAAuC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAC7C,GAAoD;IAEpD,OAAO,uCAAuC,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC/C,GAAoD;IAEpD,OAAO,8BAA8B,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -85,3 +85,4 @@ export function generatePromotionBlastConfirmationCode() {
|
|
|
85
85
|
export function promotionBlastDeepLinkPath(bashEventId, blastId) {
|
|
86
86
|
return `/bash/${encodeURIComponent(bashEventId)}?tab=promotions&blast=${encodeURIComponent(blastId)}`;
|
|
87
87
|
}
|
|
88
|
+
//# sourceMappingURL=promotionBlastUtils.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { apiTransformAddOnsToAddonInputs, serviceBookingParamsToLuxon, } from "../apiServiceBookingApiUtils";
|
|
1
|
+
import { apiTransformAddOnsToAddonInputs, apiTransformPackagesToPackageInputs, servicePriceToBookToApiPackages, serviceBookingParamsToLuxon, } from "../apiServiceBookingApiUtils";
|
|
2
2
|
// ---------------------------------------------------------------------------
|
|
3
3
|
// apiTransformAddOnsToAddonInputs
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
@@ -45,6 +45,71 @@ describe("apiTransformAddOnsToAddonInputs", () => {
|
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
47
|
// ---------------------------------------------------------------------------
|
|
48
|
+
// apiTransformPackagesToPackageInputs
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
function makePackageExt(id, name = "Package") {
|
|
51
|
+
return {
|
|
52
|
+
id,
|
|
53
|
+
name,
|
|
54
|
+
description: "",
|
|
55
|
+
priceCents: 5000,
|
|
56
|
+
serviceAddons: [],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function makePackageParam(packageId, qty = 1) {
|
|
60
|
+
return { packageId, chosenQuantity: qty };
|
|
61
|
+
}
|
|
62
|
+
describe("apiTransformPackagesToPackageInputs", () => {
|
|
63
|
+
it("returns empty array when no packages are provided", () => {
|
|
64
|
+
expect(apiTransformPackagesToPackageInputs([], [])).toEqual([]);
|
|
65
|
+
});
|
|
66
|
+
it("maps package params to their matching ServicePackageExt", () => {
|
|
67
|
+
const servicePackages = [makePackageExt("p1"), makePackageExt("p2")];
|
|
68
|
+
const packagesApi = [makePackageParam("p1", 2)];
|
|
69
|
+
const result = apiTransformPackagesToPackageInputs(packagesApi, servicePackages);
|
|
70
|
+
expect(result).toHaveLength(1);
|
|
71
|
+
expect(result[0].id).toBe("p1");
|
|
72
|
+
expect(result[0].chosenQuantity).toBe(2);
|
|
73
|
+
});
|
|
74
|
+
it("merges package params over the ServicePackageExt fields (params win)", () => {
|
|
75
|
+
const servicePackages = [makePackageExt("p1")];
|
|
76
|
+
const packagesApi = [
|
|
77
|
+
{ packageId: "p1", chosenQuantity: 5, extra: "field" },
|
|
78
|
+
];
|
|
79
|
+
const result = apiTransformPackagesToPackageInputs(packagesApi, servicePackages);
|
|
80
|
+
expect(result[0].chosenQuantity).toBe(5);
|
|
81
|
+
});
|
|
82
|
+
it("throws when a packageId does not match any ServicePackageExt", () => {
|
|
83
|
+
const servicePackages = [makePackageExt("p1")];
|
|
84
|
+
const packagesApi = [makePackageParam("ghost-id")];
|
|
85
|
+
expect(() => apiTransformPackagesToPackageInputs(packagesApi, servicePackages)).toThrow(/Failed to match package with id: ghost-id/);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// servicePriceToBookToApiPackages
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
describe("servicePriceToBookToApiPackages", () => {
|
|
92
|
+
it("returns empty array when priceToBook has no packages", () => {
|
|
93
|
+
const priceToBook = {
|
|
94
|
+
packages: [],
|
|
95
|
+
};
|
|
96
|
+
expect(servicePriceToBookToApiPackages(priceToBook)).toEqual([]);
|
|
97
|
+
});
|
|
98
|
+
it("maps priceToBook packages to ApiServicePackageParams", () => {
|
|
99
|
+
const priceToBook = {
|
|
100
|
+
packages: [
|
|
101
|
+
{ packageId: "p1", chosenQuantity: 2, costPQCents: 5000 },
|
|
102
|
+
{ packageId: "p2", chosenQuantity: 1, costPQCents: 8000 },
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
const result = servicePriceToBookToApiPackages(priceToBook);
|
|
106
|
+
expect(result).toEqual([
|
|
107
|
+
{ packageId: "p1", chosenQuantity: 2 },
|
|
108
|
+
{ packageId: "p2", chosenQuantity: 1 },
|
|
109
|
+
]);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
48
113
|
// serviceBookingParamsToLuxon
|
|
49
114
|
// ---------------------------------------------------------------------------
|
|
50
115
|
function makeBookingParams(days) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiServiceBookingApiUtils.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/apiServiceBookingApiUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"apiServiceBookingApiUtils.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/apiServiceBookingApiUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontendServiceBookingUtils.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/frontendServiceBookingUtils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { DateTime } from "luxon";
|
|
2
|
+
import { frontendServiceGetPriceToBook, frontendServiceGetPriceToBookFees, } from "../frontendServiceBookingUtils";
|
|
3
|
+
function makeRange(startISO, endISO) {
|
|
4
|
+
return {
|
|
5
|
+
start: DateTime.fromISO(startISO, { zone: "utc" }),
|
|
6
|
+
end: DateTime.fromISO(endISO, { zone: "utc" }),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function makeFlatRateAssociation(flatRateCents = 20000) {
|
|
10
|
+
return {
|
|
11
|
+
serviceId: "svc-1",
|
|
12
|
+
serviceGeneralRates: {
|
|
13
|
+
flatRateCents,
|
|
14
|
+
hourlyRateCents: null,
|
|
15
|
+
dailyRateCents: null,
|
|
16
|
+
minimumTimeBlockHours: null,
|
|
17
|
+
cleaningFeePerBookingCents: 0,
|
|
18
|
+
},
|
|
19
|
+
serviceSpecialRates: [],
|
|
20
|
+
serviceDailyRates: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function makeTimeBasedAssociation(hourlyRateCents = 5000) {
|
|
24
|
+
return {
|
|
25
|
+
serviceId: "svc-1",
|
|
26
|
+
serviceGeneralRates: {
|
|
27
|
+
flatRateCents: null,
|
|
28
|
+
hourlyRateCents,
|
|
29
|
+
dailyRateCents: null,
|
|
30
|
+
minimumTimeBlockHours: null,
|
|
31
|
+
cleaningFeePerBookingCents: 0,
|
|
32
|
+
},
|
|
33
|
+
serviceSpecialRates: [],
|
|
34
|
+
serviceDailyRates: [],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function makePackageInput(overrides = {}) {
|
|
38
|
+
return {
|
|
39
|
+
id: "pkg-1",
|
|
40
|
+
name: "Gold DJ Package",
|
|
41
|
+
description: "",
|
|
42
|
+
priceCents: 10000,
|
|
43
|
+
serviceAddons: [],
|
|
44
|
+
chosenQuantity: 1,
|
|
45
|
+
...overrides,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const ATTENDEE_OPTION = null;
|
|
49
|
+
const RANGE_2H = makeRange("2025-07-01T09:00:00Z", "2025-07-01T11:00:00Z");
|
|
50
|
+
describe("frontendServiceGetPriceToBookFees — packages", () => {
|
|
51
|
+
it("returns an empty packages array and adds nothing to the subtotal when no packages are given", () => {
|
|
52
|
+
const result = frontendServiceGetPriceToBookFees(makeFlatRateAssociation(20000), {
|
|
53
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
54
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
55
|
+
additionalFees: [],
|
|
56
|
+
addOns: [],
|
|
57
|
+
timezone: "UTC",
|
|
58
|
+
});
|
|
59
|
+
expect(result.packages).toEqual([]);
|
|
60
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000);
|
|
61
|
+
});
|
|
62
|
+
it("folds a single package's cost into the subtotal", () => {
|
|
63
|
+
const result = frontendServiceGetPriceToBookFees(makeFlatRateAssociation(20000), {
|
|
64
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
65
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
66
|
+
additionalFees: [],
|
|
67
|
+
addOns: [],
|
|
68
|
+
packages: [makePackageInput({ priceCents: 15000, chosenQuantity: 1 })],
|
|
69
|
+
timezone: "UTC",
|
|
70
|
+
});
|
|
71
|
+
expect(result.packages).toHaveLength(1);
|
|
72
|
+
expect(result.packages[0]).toMatchObject({
|
|
73
|
+
packageId: "pkg-1",
|
|
74
|
+
chosenQuantity: 1,
|
|
75
|
+
costPQCents: 15000,
|
|
76
|
+
});
|
|
77
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000 + 15000);
|
|
78
|
+
});
|
|
79
|
+
it("multiplies a package's cost by chosenQuantity", () => {
|
|
80
|
+
const result = frontendServiceGetPriceToBookFees(makeFlatRateAssociation(20000), {
|
|
81
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
82
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
83
|
+
additionalFees: [],
|
|
84
|
+
addOns: [],
|
|
85
|
+
packages: [makePackageInput({ priceCents: 15000, chosenQuantity: 3 })],
|
|
86
|
+
timezone: "UTC",
|
|
87
|
+
});
|
|
88
|
+
expect(result.packages[0].chosenQuantity).toBe(3);
|
|
89
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000 + 15000 * 3);
|
|
90
|
+
});
|
|
91
|
+
it("sums multiple distinct packages into the subtotal", () => {
|
|
92
|
+
const result = frontendServiceGetPriceToBookFees(makeFlatRateAssociation(20000), {
|
|
93
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
94
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
95
|
+
additionalFees: [],
|
|
96
|
+
addOns: [],
|
|
97
|
+
packages: [
|
|
98
|
+
makePackageInput({
|
|
99
|
+
id: "pkg-1",
|
|
100
|
+
priceCents: 15000,
|
|
101
|
+
chosenQuantity: 1,
|
|
102
|
+
}),
|
|
103
|
+
makePackageInput({
|
|
104
|
+
id: "pkg-2",
|
|
105
|
+
priceCents: 8000,
|
|
106
|
+
chosenQuantity: 2,
|
|
107
|
+
}),
|
|
108
|
+
],
|
|
109
|
+
timezone: "UTC",
|
|
110
|
+
});
|
|
111
|
+
expect(result.packages).toHaveLength(2);
|
|
112
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000 + 15000 + 8000 * 2);
|
|
113
|
+
});
|
|
114
|
+
it("defaults chosenQuantity to 0 when not provided", () => {
|
|
115
|
+
const result = frontendServiceGetPriceToBookFees(makeFlatRateAssociation(20000), {
|
|
116
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
117
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
118
|
+
additionalFees: [],
|
|
119
|
+
addOns: [],
|
|
120
|
+
packages: [
|
|
121
|
+
makePackageInput({ priceCents: 15000, chosenQuantity: undefined }),
|
|
122
|
+
],
|
|
123
|
+
timezone: "UTC",
|
|
124
|
+
});
|
|
125
|
+
expect(result.packages[0].chosenQuantity).toBe(0);
|
|
126
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000);
|
|
127
|
+
});
|
|
128
|
+
it("applies package pricing on top of time-based (hourly) bookings too", () => {
|
|
129
|
+
const result = frontendServiceGetPriceToBookFees(makeTimeBasedAssociation(5000), {
|
|
130
|
+
daysToBookParams: [{ dateTimeRange: RANGE_2H, fees: [], addOns: [] }],
|
|
131
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
132
|
+
additionalFees: [],
|
|
133
|
+
addOns: [],
|
|
134
|
+
packages: [makePackageInput({ priceCents: 12000, chosenQuantity: 1 })],
|
|
135
|
+
timezone: "UTC",
|
|
136
|
+
});
|
|
137
|
+
// 2 hours @ $50/hr = $100 in day totals, plus the $120 package.
|
|
138
|
+
expect(result.daysTotalBeforeTaxesCents).toBe(10000);
|
|
139
|
+
expect(result.subtotalBeforeTaxesCents).toBe(10000 + 12000);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe("frontendServiceGetPriceToBook — packages", () => {
|
|
143
|
+
it("passes packages through to frontendServiceGetPriceToBookFees", () => {
|
|
144
|
+
const result = frontendServiceGetPriceToBook(makeFlatRateAssociation(20000), {
|
|
145
|
+
addOns: [],
|
|
146
|
+
packages: [makePackageInput({ priceCents: 5000, chosenQuantity: 2 })],
|
|
147
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
148
|
+
bookingDateTimeRanges: [RANGE_2H],
|
|
149
|
+
timezone: "UTC",
|
|
150
|
+
});
|
|
151
|
+
expect(result.packages).toHaveLength(1);
|
|
152
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000 + 5000 * 2);
|
|
153
|
+
});
|
|
154
|
+
it("defaults to an empty packages array when packages is omitted", () => {
|
|
155
|
+
const result = frontendServiceGetPriceToBook(makeFlatRateAssociation(20000), {
|
|
156
|
+
addOns: [],
|
|
157
|
+
selectedAttendeeOption: ATTENDEE_OPTION,
|
|
158
|
+
bookingDateTimeRanges: [RANGE_2H],
|
|
159
|
+
timezone: "UTC",
|
|
160
|
+
});
|
|
161
|
+
expect(result.packages).toEqual([]);
|
|
162
|
+
expect(result.subtotalBeforeTaxesCents).toBe(20000);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=frontendServiceBookingUtils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontendServiceBookingUtils.test.js","sourceRoot":"","sources":["../../../../src/utils/service/__tests__/frontendServiceBookingUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ServiceBookingStatus, ServiceBookingType } from "@prisma/client";
|
|
2
|
-
import { ApiBookingParamsLuxon, ApiServiceAddonParams, ApiServiceBookedDayParams, ApiServiceBookingParams, ApiServicePriceToBookResult } from "../../definitions.js";
|
|
3
|
-
import { ServiceAddonExt, ServiceBookingDayExt, ServiceBookingExt, ServiceExt } from "../../extendedSchemas.js";
|
|
4
|
-
import { FrontendServiceGetPriceToBookResult, ServiceAddonInput } from "./frontendServiceBookingUtils.js";
|
|
2
|
+
import { ApiBookingParamsLuxon, ApiServiceAddonParams, ApiServiceBookedDayParams, ApiServiceBookingParams, ApiServicePackageParams, ApiServicePriceToBookResult } from "../../definitions.js";
|
|
3
|
+
import { ServiceAddonExt, ServiceBookingDayExt, ServiceBookingExt, ServiceExt, ServicePackageExt } from "../../extendedSchemas.js";
|
|
4
|
+
import { FrontendServiceGetPriceToBookResult, ServiceAddonInput, ServicePackageInput } from "./frontendServiceBookingUtils.js";
|
|
5
5
|
import { ServiceBookingRequiredData } from "./serviceBookingTypes.js";
|
|
6
6
|
export type ApiServiceCantBookReason = {
|
|
7
7
|
type: string;
|
|
@@ -17,10 +17,12 @@ export declare const ApiServiceCantBookReasons: {
|
|
|
17
17
|
};
|
|
18
18
|
export type ApiServiceCantBookReasons = keyof typeof ApiServiceCantBookReasons;
|
|
19
19
|
export declare function apiTransformAddOnsToAddonInputs<AddonParams_t extends ApiServiceAddonParams>(addOnsApi: AddonParams_t[], serviceAddons: ServiceAddonExt[]): ServiceAddonInput[];
|
|
20
|
+
export declare function apiTransformPackagesToPackageInputs<PackageParams_t extends ApiServicePackageParams>(packagesApi: PackageParams_t[], servicePackages: ServicePackageExt[]): ServicePackageInput[];
|
|
20
21
|
export declare function apiTransformBookedDays(priceToBook: ApiServicePriceToBookResult): Partial<ServiceBookingDayExt>[];
|
|
21
22
|
export declare function serviceGetPriceToBookFromBooking(service: ServiceExt, booking: ServiceBookingExt): FrontendServiceGetPriceToBookResult;
|
|
22
23
|
export declare function serviceBookingParamsToLuxon(params: ApiServiceBookingParams): ApiBookingParamsLuxon;
|
|
23
24
|
export declare function servicePriceToBookToApiDays(serviceId: string, userId: string, priceToBook: FrontendServiceGetPriceToBookResult): ApiServiceBookedDayParams[];
|
|
25
|
+
export declare function servicePriceToBookToApiPackages(priceToBook: FrontendServiceGetPriceToBookResult): ApiServicePackageParams[];
|
|
24
26
|
export interface ServicePriceToBookToApiBookingBaseArgs {
|
|
25
27
|
bookingType: ServiceBookingType;
|
|
26
28
|
status: ServiceBookingStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiServiceBookingApiUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/apiServiceBookingApiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EAEzB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EAEf,oBAAoB,EACpB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"apiServiceBookingApiUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/apiServiceBookingApiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EAEzB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EAEf,oBAAoB,EACpB,iBAAiB,EAIjB,UAAU,EACV,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,mCAAmC,EACnC,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,yBAAyB;2BAG/B,wBAAwB;iCAGxB,wBAAwB;+BAGxB,wBAAwB;0BAGxB,wBAAwB;4BAGxB,wBAAwB;8BAGxB,wBAAwB;CACrB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAE/E,wBAAgB,+BAA+B,CAC7C,aAAa,SAAS,qBAAqB,EAE3C,SAAS,EAAE,aAAa,EAAE,EAC1B,aAAa,EAAE,eAAe,EAAE,GAC/B,iBAAiB,EAAE,CAgBrB;AAED,wBAAgB,mCAAmC,CACjD,eAAe,SAAS,uBAAuB,EAE/C,WAAW,EAAE,eAAe,EAAE,EAC9B,eAAe,EAAE,iBAAiB,EAAE,GACnC,mBAAmB,EAAE,CAkBvB;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,2BAA2B,GACvC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAoCjC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,iBAAiB,GACzB,mCAAmC,CAkDrC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,uBAAuB,GAC9B,qBAAqB,CAoBvB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,mCAAmC,GAC/C,yBAAyB,EAAE,CAkC7B;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,mCAAmC,GAC/C,uBAAuB,EAAE,CAO3B;AAED,MAAM,WAAW,sCAAsC;IACrD,WAAW,EAAE,kBAAkB,CAAC;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,mCAAmC,CAAC;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,kCAAkC,CAAC,EACjD,WAAW,EACX,MAAM,EACN,QAAQ,EACR,WAAW,EACX,iBAAyB,EACzB,WAAmB,GACpB,EAAE,sCAAsC,GAAG,0BAA0B,CAuCrE"}
|