@bash-app/bash-common 30.51.0 → 30.52.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 +668 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +467 -0
- package/dist/definitions.js.map +1 -0
- package/dist/extendedSchemas.d.ts +2206 -0
- package/dist/extendedSchemas.d.ts.map +1 -0
- package/dist/extendedSchemas.js +429 -0
- package/dist/extendedSchemas.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/addressUtils.d.ts +14 -0
- package/dist/utils/addressUtils.d.ts.map +1 -0
- package/dist/utils/addressUtils.js +177 -0
- package/dist/utils/addressUtils.js.map +1 -0
- package/dist/utils/apiUtils.d.ts +14 -0
- package/dist/utils/apiUtils.d.ts.map +1 -0
- package/dist/utils/apiUtils.js +61 -0
- package/dist/utils/apiUtils.js.map +1 -0
- package/dist/utils/arrayUtils.d.ts +2 -0
- package/dist/utils/arrayUtils.d.ts.map +1 -0
- package/dist/utils/arrayUtils.js +5 -0
- package/dist/utils/arrayUtils.js.map +1 -0
- package/dist/utils/awsS3Utils.d.ts +10 -0
- package/dist/utils/awsS3Utils.d.ts.map +1 -0
- package/dist/utils/awsS3Utils.js +89 -0
- package/dist/utils/awsS3Utils.js.map +1 -0
- package/dist/utils/badgeUtils.d.ts +33 -0
- package/dist/utils/badgeUtils.d.ts.map +1 -0
- package/dist/utils/badgeUtils.js +57 -0
- package/dist/utils/badgeUtils.js.map +1 -0
- package/dist/utils/blog/blogDbUtils.d.ts +48 -0
- package/dist/utils/blog/blogDbUtils.d.ts.map +1 -0
- package/dist/utils/blog/blogDbUtils.js +218 -0
- package/dist/utils/blog/blogDbUtils.js.map +1 -0
- package/dist/utils/blogUtils.d.ts +19 -0
- package/dist/utils/blogUtils.d.ts.map +1 -0
- package/dist/utils/blogUtils.js +118 -0
- package/dist/utils/blogUtils.js.map +1 -0
- package/dist/utils/dateTimeUtils.d.ts +38 -0
- package/dist/utils/dateTimeUtils.d.ts.map +1 -0
- package/dist/utils/dateTimeUtils.js +207 -0
- package/dist/utils/dateTimeUtils.js.map +1 -0
- package/dist/utils/entityUtils.d.ts +5 -0
- package/dist/utils/entityUtils.d.ts.map +1 -0
- package/dist/utils/entityUtils.js +5 -0
- package/dist/utils/entityUtils.js.map +1 -0
- package/dist/utils/generalDateTimeUtils.d.ts +15 -0
- package/dist/utils/generalDateTimeUtils.d.ts.map +1 -0
- package/dist/utils/generalDateTimeUtils.js +38 -0
- package/dist/utils/generalDateTimeUtils.js.map +1 -0
- package/dist/utils/luxonUtils.d.ts +95 -0
- package/dist/utils/luxonUtils.d.ts.map +1 -0
- package/dist/utils/luxonUtils.js +623 -0
- package/dist/utils/luxonUtils.js.map +1 -0
- package/dist/utils/mathUtils.d.ts +2 -0
- package/dist/utils/mathUtils.d.ts.map +1 -0
- package/dist/utils/mathUtils.js +4 -0
- package/dist/utils/mathUtils.js.map +1 -0
- package/dist/utils/objUtils.d.ts +3 -0
- package/dist/utils/objUtils.d.ts.map +1 -0
- package/dist/utils/objUtils.js +29 -0
- package/dist/utils/objUtils.js.map +1 -0
- package/dist/utils/paymentUtils.d.ts +18 -0
- package/dist/utils/paymentUtils.d.ts.map +1 -0
- package/dist/utils/paymentUtils.js +50 -0
- package/dist/utils/paymentUtils.js.map +1 -0
- package/dist/utils/promoCodesUtils.d.ts +6 -0
- package/dist/utils/promoCodesUtils.d.ts.map +1 -0
- package/dist/utils/promoCodesUtils.js +23 -0
- package/dist/utils/promoCodesUtils.js.map +1 -0
- package/dist/utils/qrCodeUtils.d.ts +4 -0
- package/dist/utils/qrCodeUtils.d.ts.map +1 -0
- package/dist/utils/qrCodeUtils.js +22 -0
- package/dist/utils/qrCodeUtils.js.map +1 -0
- package/dist/utils/recurrenceUtils.d.ts +8 -0
- package/dist/utils/recurrenceUtils.d.ts.map +1 -0
- package/dist/utils/recurrenceUtils.js +153 -0
- package/dist/utils/recurrenceUtils.js.map +1 -0
- package/dist/utils/reviewUtils.d.ts +29 -0
- package/dist/utils/reviewUtils.d.ts.map +1 -0
- package/dist/utils/reviewUtils.js +65 -0
- package/dist/utils/reviewUtils.js.map +1 -0
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts +21 -0
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts.map +1 -0
- package/dist/utils/service/apiServiceBookingApiUtils.js +131 -0
- package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -0
- package/dist/utils/service/attendeeOptionUtils.d.ts +11 -0
- package/dist/utils/service/attendeeOptionUtils.d.ts.map +1 -0
- package/dist/utils/service/attendeeOptionUtils.js +9 -0
- package/dist/utils/service/attendeeOptionUtils.js.map +1 -0
- package/dist/utils/service/frontendServiceBookingUtils.d.ts +53 -0
- package/dist/utils/service/frontendServiceBookingUtils.d.ts.map +1 -0
- package/dist/utils/service/frontendServiceBookingUtils.js +134 -0
- package/dist/utils/service/frontendServiceBookingUtils.js.map +1 -0
- package/dist/utils/service/regexUtils.d.ts +6 -0
- package/dist/utils/service/regexUtils.d.ts.map +1 -0
- package/dist/utils/service/regexUtils.js +16 -0
- package/dist/utils/service/regexUtils.js.map +1 -0
- package/dist/utils/service/serviceBookingStatusUtils.d.ts +21 -0
- package/dist/utils/service/serviceBookingStatusUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceBookingStatusUtils.js +130 -0
- package/dist/utils/service/serviceBookingStatusUtils.js.map +1 -0
- package/dist/utils/service/serviceBookingTypes.d.ts +19 -0
- package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -0
- package/dist/utils/service/serviceBookingTypes.js +2 -0
- package/dist/utils/service/serviceBookingTypes.js.map +1 -0
- package/dist/utils/service/serviceDBUtils.d.ts +5 -0
- package/dist/utils/service/serviceDBUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceDBUtils.js +48 -0
- package/dist/utils/service/serviceDBUtils.js.map +1 -0
- package/dist/utils/service/serviceRateDBUtils.d.ts +1 -0
- package/dist/utils/service/serviceRateDBUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceRateDBUtils.js +159 -0
- package/dist/utils/service/serviceRateDBUtils.js.map +1 -0
- package/dist/utils/service/serviceRateTypes.d.ts +9 -0
- package/dist/utils/service/serviceRateTypes.d.ts.map +1 -0
- package/dist/utils/service/serviceRateTypes.js +2 -0
- package/dist/utils/service/serviceRateTypes.js.map +1 -0
- package/dist/utils/service/serviceRateUtils.d.ts +24 -0
- package/dist/utils/service/serviceRateUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceRateUtils.js +183 -0
- package/dist/utils/service/serviceRateUtils.js.map +1 -0
- package/dist/utils/service/serviceUtils.d.ts +83 -0
- package/dist/utils/service/serviceUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceUtils.js +311 -0
- package/dist/utils/service/serviceUtils.js.map +1 -0
- package/dist/utils/service/venueUtils.d.ts +13 -0
- package/dist/utils/service/venueUtils.d.ts.map +1 -0
- package/dist/utils/service/venueUtils.js +18 -0
- package/dist/utils/service/venueUtils.js.map +1 -0
- package/dist/utils/slugUtils.d.ts +9 -0
- package/dist/utils/slugUtils.d.ts.map +1 -0
- package/dist/utils/slugUtils.js +47 -0
- package/dist/utils/slugUtils.js.map +1 -0
- package/dist/utils/sortUtils.d.ts +7 -0
- package/dist/utils/sortUtils.d.ts.map +1 -0
- package/dist/utils/sortUtils.js +26 -0
- package/dist/utils/sortUtils.js.map +1 -0
- package/dist/utils/stringUtils.d.ts +2 -0
- package/dist/utils/stringUtils.d.ts.map +1 -0
- package/dist/utils/stringUtils.js +6 -0
- package/dist/utils/stringUtils.js.map +1 -0
- package/dist/utils/stripeAccountUtils.d.ts +3 -0
- package/dist/utils/stripeAccountUtils.d.ts.map +1 -0
- package/dist/utils/stripeAccountUtils.js +10 -0
- package/dist/utils/stripeAccountUtils.js.map +1 -0
- package/dist/utils/ticketListUtils.d.ts +12 -0
- package/dist/utils/ticketListUtils.d.ts.map +1 -0
- package/dist/utils/ticketListUtils.js +78 -0
- package/dist/utils/ticketListUtils.js.map +1 -0
- package/dist/utils/typeUtils.d.ts +11 -0
- package/dist/utils/typeUtils.d.ts.map +1 -0
- package/dist/utils/typeUtils.js +8 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/urlUtils.d.ts +10 -0
- package/dist/utils/urlUtils.d.ts.map +1 -0
- package/dist/utils/urlUtils.js +66 -0
- package/dist/utils/urlUtils.js.map +1 -0
- package/dist/utils/userPromoCodeUtils.d.ts +21 -0
- package/dist/utils/userPromoCodeUtils.d.ts.map +1 -0
- package/dist/utils/userPromoCodeUtils.js +13 -0
- package/dist/utils/userPromoCodeUtils.js.map +1 -0
- package/dist/utils/userSubscriptionUtils.d.ts +36 -0
- package/dist/utils/userSubscriptionUtils.d.ts.map +1 -0
- package/dist/utils/userSubscriptionUtils.js +56 -0
- package/dist/utils/userSubscriptionUtils.js.map +1 -0
- package/dist/utils/userUtils.d.ts +2 -0
- package/dist/utils/userUtils.d.ts.map +1 -0
- package/dist/utils/userUtils.js +2 -0
- package/dist/utils/userUtils.js.map +1 -0
- package/package.json +4 -2
- package/prisma/schema.prisma +117 -0
- package/src/definitions.ts +52 -1
- package/src/extendedSchemas.ts +177 -6
- package/src/index.ts +32 -21
- package/src/utils/blog/blogDbUtils.ts +343 -0
- package/src/utils/blogUtils.ts +134 -0
- package/src/utils/qrCodeUtils.ts +4 -2
- package/src/utils/service/apiServiceBookingApiUtils.ts +0 -0
- package/src/utils/slugUtils.ts +60 -0
- package/src/utils/ticketListUtils.ts +24 -6
- package/src/utils/typeUtils.ts +0 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { ServiceCancellationPolicy as ServiceCancellationPolicyOption, ServiceSubscriptionStatus, } from "@prisma/client";
|
|
2
|
+
export const SERVICE_CANCELLATION_POLICY_DATA = {
|
|
3
|
+
[ServiceCancellationPolicyOption.None]: {
|
|
4
|
+
name: "None",
|
|
5
|
+
refundPolicy: [],
|
|
6
|
+
description: "No cancellation policy.",
|
|
7
|
+
},
|
|
8
|
+
[ServiceCancellationPolicyOption.VeryFlexible]: {
|
|
9
|
+
name: "Very Flexible",
|
|
10
|
+
refundPolicy: [
|
|
11
|
+
{
|
|
12
|
+
hours: 24,
|
|
13
|
+
refundPercentage: 100,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
[ServiceCancellationPolicyOption.Flexible]: {
|
|
18
|
+
name: "Flexible",
|
|
19
|
+
refundPolicy: [
|
|
20
|
+
{
|
|
21
|
+
days: 7,
|
|
22
|
+
refundPercentage: 100,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
hours: 24,
|
|
26
|
+
refundPercentage: 50,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
[ServiceCancellationPolicyOption.Standard30Day]: {
|
|
31
|
+
name: "Standard 30 Day",
|
|
32
|
+
refundPolicy: [
|
|
33
|
+
{
|
|
34
|
+
days: 30,
|
|
35
|
+
refundPercentage: 100,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
days: 7,
|
|
39
|
+
refundPercentage: 50,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
[ServiceCancellationPolicyOption.Standard90Day]: {
|
|
44
|
+
name: "Standard 90 Day",
|
|
45
|
+
refundPolicy: [
|
|
46
|
+
{
|
|
47
|
+
days: 90,
|
|
48
|
+
refundPercentage: 100,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
days: 14,
|
|
52
|
+
refundPercentage: 50,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
function generateDescription(refundPolicy) {
|
|
58
|
+
const descriptions = refundPolicy.map((policy, index) => {
|
|
59
|
+
const unit = policy.days ? "days" : "hours";
|
|
60
|
+
const timeValue = policy.days ?? policy.hours;
|
|
61
|
+
const refundText = policy.refundPercentage === 100
|
|
62
|
+
? "a full refund (including all Fees)"
|
|
63
|
+
: `${policy.refundPercentage}% refund (excluding Fees)`;
|
|
64
|
+
if (index === 0) {
|
|
65
|
+
return `Guests may cancel their Booking until ${timeValue} ${unit} before the event start time and will receive ${refundText} of their Booking Price.`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const previousTime = refundPolicy[index - 1].days ?? refundPolicy[index - 1].hours;
|
|
69
|
+
return `Guests may cancel their Booking between ${timeValue} ${unit} and ${previousTime} ${unit} before the event start time and receive ${refundText} of their Booking Price.`;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const lastTime = refundPolicy[refundPolicy.length - 1].days ??
|
|
73
|
+
refundPolicy[refundPolicy.length - 1].hours;
|
|
74
|
+
descriptions.push(`Cancellations submitted less than ${lastTime} ${refundPolicy[refundPolicy.length - 1].days ? "days" : "hours"} before the Event start time are not refundable.`);
|
|
75
|
+
return descriptions.join(" ");
|
|
76
|
+
}
|
|
77
|
+
Object.keys(SERVICE_CANCELLATION_POLICY_DATA)
|
|
78
|
+
.filter((policyKey) => policyKey !=
|
|
79
|
+
ServiceCancellationPolicyOption.None)
|
|
80
|
+
.forEach((policyKey) => {
|
|
81
|
+
const policy = SERVICE_CANCELLATION_POLICY_DATA[policyKey];
|
|
82
|
+
policy.description = generateDescription(policy.refundPolicy);
|
|
83
|
+
});
|
|
84
|
+
export function serviceSubscriptionIsActive(status) {
|
|
85
|
+
return [
|
|
86
|
+
ServiceSubscriptionStatus.Normal,
|
|
87
|
+
ServiceSubscriptionStatus.Trialing,
|
|
88
|
+
].includes(status);
|
|
89
|
+
}
|
|
90
|
+
export function serviceGetSpecificType(service) {
|
|
91
|
+
if (service.serviceType == null) {
|
|
92
|
+
// throw new Error(`serviceGetSpecificType invalid serviceType`);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const specificFieldName = serviceTypeToField(service.serviceType);
|
|
96
|
+
if (specificFieldName == null) {
|
|
97
|
+
// throw new Error(`serviceGetSpecificType invalid serviceType`);
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const specificId = service[`${specificFieldName}Id`];
|
|
101
|
+
return {
|
|
102
|
+
serviceId: service.id,
|
|
103
|
+
serviceType: service.serviceType,
|
|
104
|
+
specificFieldName: specificFieldName,
|
|
105
|
+
specificId: specificId,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function serviceDetailUrl(serviceId, serviceType, specificId) {
|
|
109
|
+
return `/services/${serviceId}/${serviceType}/${specificId}`;
|
|
110
|
+
}
|
|
111
|
+
export function serviceWizardUrl(serviceId, serviceType, specificId, step = 0, substep = 0) {
|
|
112
|
+
return `/wz/services/${serviceId}/${serviceType}/${specificId}/${step}/${substep}`;
|
|
113
|
+
}
|
|
114
|
+
export function serviceCheckoutUrl(serviceId, serviceType, specificId) {
|
|
115
|
+
return `/checkout/services/${serviceId}/${serviceType}/${specificId}`;
|
|
116
|
+
}
|
|
117
|
+
// Define the keys and values in a single object
|
|
118
|
+
const serviceKeysObject = {
|
|
119
|
+
eventService: true,
|
|
120
|
+
entertainmentService: true,
|
|
121
|
+
vendor: true,
|
|
122
|
+
exhibitor: true,
|
|
123
|
+
sponsor: true,
|
|
124
|
+
venue: true,
|
|
125
|
+
organization: true,
|
|
126
|
+
};
|
|
127
|
+
export const serviceKeysArray = Object.keys(serviceKeysObject);
|
|
128
|
+
export const specificServiceMap = {
|
|
129
|
+
EventServices: "eventService",
|
|
130
|
+
EntertainmentServices: "entertainmentService",
|
|
131
|
+
Vendors: "vendor",
|
|
132
|
+
Exhibitors: "exhibitor",
|
|
133
|
+
Sponsors: "sponsor",
|
|
134
|
+
Venues: "venue",
|
|
135
|
+
Organizations: "organization",
|
|
136
|
+
};
|
|
137
|
+
export const serviceTypeToField = (serviceType) => {
|
|
138
|
+
return specificServiceMap[serviceType];
|
|
139
|
+
};
|
|
140
|
+
export function aiServiceInfoToInfoString(field, info) {
|
|
141
|
+
return `${field}: ${info.description} - ${info.type}${info.isArray ? "[]" : ""}`;
|
|
142
|
+
}
|
|
143
|
+
export function aiServiceInfoToExampleString(field, info) {
|
|
144
|
+
return `${field}: ${info.example} - ${info.type}${info.isArray ? "[]" : ""}`;
|
|
145
|
+
}
|
|
146
|
+
export const serviceGetInfoAI = (serviceType) => {
|
|
147
|
+
const res = {
|
|
148
|
+
serviceName: {
|
|
149
|
+
description: `serviceName (a catchy, descriptive name for the ${serviceType})`,
|
|
150
|
+
example: `The Grand Atrium`,
|
|
151
|
+
type: "string",
|
|
152
|
+
isArray: false,
|
|
153
|
+
},
|
|
154
|
+
description: {
|
|
155
|
+
description: `description for the ${serviceType}`,
|
|
156
|
+
example: `The Grand Atrium provides a fantastic dining experience with great prices and supports local farmers and reduces environmental impact.`,
|
|
157
|
+
type: "string",
|
|
158
|
+
isArray: false,
|
|
159
|
+
},
|
|
160
|
+
mission: {
|
|
161
|
+
description: `if the ${serviceType} has a mission to make a positive impact, describe it`,
|
|
162
|
+
example: `We strive to provide a sustainable dining experience that supports local farmers and reduces environmental impact.`,
|
|
163
|
+
type: "string",
|
|
164
|
+
isArray: false,
|
|
165
|
+
},
|
|
166
|
+
communityInvolvement: {
|
|
167
|
+
description: `describe how the ${serviceType} is involved in the community, if applicable`,
|
|
168
|
+
example: `We host monthly charity events and donate 10% of profits to local education initiatives.`,
|
|
169
|
+
type: "string",
|
|
170
|
+
isArray: false,
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
return res;
|
|
174
|
+
};
|
|
175
|
+
export const serviceSpecificInfoAI = {
|
|
176
|
+
EventServices: {},
|
|
177
|
+
EntertainmentServices: {},
|
|
178
|
+
Vendors: {},
|
|
179
|
+
Exhibitors: {},
|
|
180
|
+
Sponsors: {},
|
|
181
|
+
Venues: {
|
|
182
|
+
venueTypes: {
|
|
183
|
+
description: `venueTypes (array of primary venue types)`,
|
|
184
|
+
example: `["Restaurant", "Bar"]`,
|
|
185
|
+
type: "string",
|
|
186
|
+
isArray: true,
|
|
187
|
+
},
|
|
188
|
+
secondaryVenueTypes: {
|
|
189
|
+
description: `secondaryVenueTypes (array of secondary venue types)`,
|
|
190
|
+
example: `["Event Venue", "Private Dining"]`,
|
|
191
|
+
type: "string",
|
|
192
|
+
isArray: true,
|
|
193
|
+
},
|
|
194
|
+
vibe: {
|
|
195
|
+
description: `describe the atmosphere/mood - this will be used as the main description`,
|
|
196
|
+
example: `Upscale and sophisticated with a warm, inviting atmosphere`,
|
|
197
|
+
type: "string",
|
|
198
|
+
isArray: false,
|
|
199
|
+
},
|
|
200
|
+
dress: {
|
|
201
|
+
description: `specify dress code`,
|
|
202
|
+
example: `Smart casual`,
|
|
203
|
+
type: "string",
|
|
204
|
+
isArray: false,
|
|
205
|
+
},
|
|
206
|
+
allowed: {
|
|
207
|
+
description: `what guests can bring or do`,
|
|
208
|
+
example: `Outside food for special occasions with prior approval`,
|
|
209
|
+
type: "string",
|
|
210
|
+
isArray: false,
|
|
211
|
+
},
|
|
212
|
+
notAllowed: {
|
|
213
|
+
description: `what guests cannot bring or do`,
|
|
214
|
+
example: `Smoking, outside alcohol, disruptive behavior`,
|
|
215
|
+
type: "string",
|
|
216
|
+
isArray: false,
|
|
217
|
+
},
|
|
218
|
+
capacity: {
|
|
219
|
+
description: `number of people the venue can accommodate`,
|
|
220
|
+
example: `150`,
|
|
221
|
+
type: "integer",
|
|
222
|
+
isArray: false,
|
|
223
|
+
},
|
|
224
|
+
amenities: {
|
|
225
|
+
description: `array of amenities like "WiFi", "Parking", etc.`,
|
|
226
|
+
example: `["WiFi", "Parking", "Wheelchair Access", "Restrooms"]`,
|
|
227
|
+
type: "string",
|
|
228
|
+
isArray: false,
|
|
229
|
+
},
|
|
230
|
+
features: {
|
|
231
|
+
description: `array of features like "Stage", "Dance Floor", etc.`,
|
|
232
|
+
example: `["Private Dining Area", "Full Bar", "Audio System", "Projector"]`,
|
|
233
|
+
type: "string",
|
|
234
|
+
isArray: false,
|
|
235
|
+
},
|
|
236
|
+
yearsInBusiness: {
|
|
237
|
+
description: `how long the venue has been in business as a string: "LessThanOneYear", "OneToThreeYears", "ThreeToFiveYears", "FivePlusYears"`,
|
|
238
|
+
example: `"ThreeToFiveYears"`,
|
|
239
|
+
type: "string",
|
|
240
|
+
isArray: false,
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
Organizations: {},
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* Builds a formatted string of AI context fields, handling optional schemas and types.
|
|
247
|
+
*/
|
|
248
|
+
export function buildAIFieldsString(data, info) {
|
|
249
|
+
return Object.entries(info)
|
|
250
|
+
.map(([key, cfg]) => {
|
|
251
|
+
const { type, isArray } = cfg;
|
|
252
|
+
const raw = data[key];
|
|
253
|
+
const formatSingle = (val) => {
|
|
254
|
+
if (val == null)
|
|
255
|
+
return "";
|
|
256
|
+
switch (type) {
|
|
257
|
+
case "integer":
|
|
258
|
+
return Number(val).toFixed(0);
|
|
259
|
+
case "float":
|
|
260
|
+
return Number(val).toString();
|
|
261
|
+
case "boolean":
|
|
262
|
+
return Boolean(val).toString();
|
|
263
|
+
case "date": {
|
|
264
|
+
const d = new Date(val);
|
|
265
|
+
return isNaN(d.getTime()) ? String(val) : d.toISOString();
|
|
266
|
+
}
|
|
267
|
+
case "string":
|
|
268
|
+
default:
|
|
269
|
+
return String(val);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
let display;
|
|
273
|
+
if (isArray) {
|
|
274
|
+
if (Array.isArray(raw)) {
|
|
275
|
+
display = raw.map(formatSingle).join(", ");
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
display = formatSingle(raw);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
display = formatSingle(raw);
|
|
283
|
+
}
|
|
284
|
+
return `${String(key)}: ${raw != null ? display : `No ${String(key)} provided`}`;
|
|
285
|
+
})
|
|
286
|
+
.join(",\n ");
|
|
287
|
+
}
|
|
288
|
+
export function serviceExcludeIds(service) {
|
|
289
|
+
const { id, venueId, entertainmentServiceId, eventServiceId, organizationId, volunteerServiceId, sponsorId, vendorId, exhibitorId, googlePlaceId, stripeAccountId, targetAudienceId, creatorId, ownerId, ...rest } = service;
|
|
290
|
+
return rest;
|
|
291
|
+
}
|
|
292
|
+
export function serviceExcludeOwners(service) {
|
|
293
|
+
const { owner, creator, ...rest } = service;
|
|
294
|
+
return rest;
|
|
295
|
+
}
|
|
296
|
+
export function serviceExcludeRates(service) {
|
|
297
|
+
const { serviceRatesAssociation, ...rest } = service;
|
|
298
|
+
return rest;
|
|
299
|
+
}
|
|
300
|
+
export function serviceExcludeDates(service) {
|
|
301
|
+
const { createdAt, updatedAt, ...rest } = service;
|
|
302
|
+
return rest;
|
|
303
|
+
}
|
|
304
|
+
export function serviceExcludeMiscData(service) {
|
|
305
|
+
const { serviceName, isApproved, serviceType, cancellationPolicy, instantBookingLeadTimeHours, allowsInstantBooking, displayBashReviewsOnDetailPage, displayGoogleReviewsOnDetailPage, subscriptionStatus, serviceCondition, serviceStatus, visibility, ...rest } = service;
|
|
306
|
+
return rest;
|
|
307
|
+
}
|
|
308
|
+
export function serviceRelevantData(service) {
|
|
309
|
+
return serviceExcludeOwners(serviceExcludeDates(serviceExcludeRates(serviceExcludeIds(serviceExcludeMiscData(service)))));
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=serviceUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceUtils.js","sourceRoot":"","sources":["../../../src/utils/service/serviceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,IAAI,+BAA+B,EAC5D,yBAAyB,GAE1B,MAAM,gBAAgB,CAAC;AAuBxB,MAAM,CAAC,MAAM,gCAAgC,GAAiC;IAC5E,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE;QACtC,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,yBAAyB;KACvC;IACD,CAAC,+BAA+B,CAAC,YAAY,CAAC,EAAE;QAC9C,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE;YACZ;gBACE,KAAK,EAAE,EAAE;gBACT,gBAAgB,EAAE,GAAG;aACtB;SACF;KACF;IACD,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE;QAC1C,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,CAAC;gBACP,gBAAgB,EAAE,GAAG;aACtB;YACD;gBACE,KAAK,EAAE,EAAE;gBACT,gBAAgB,EAAE,EAAE;aACrB;SACF;KACF;IACD,CAAC,+BAA+B,CAAC,aAAa,CAAC,EAAE;QAC/C,IAAI,EAAE,iBAAiB;QACvB,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,EAAE;gBACR,gBAAgB,EAAE,GAAG;aACtB;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,gBAAgB,EAAE,EAAE;aACrB;SACF;KACF;IACD,CAAC,+BAA+B,CAAC,aAAa,CAAC,EAAE;QAC/C,IAAI,EAAE,iBAAiB;QACvB,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,EAAE;gBACR,gBAAgB,EAAE,GAAG;aACtB;YACD;gBACE,IAAI,EAAE,EAAE;gBACR,gBAAgB,EAAE,EAAE;aACrB;SACF;KACF;CACO,CAAC;AAEX,SAAS,mBAAmB,CAC1B,YAA+C;IAE/C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC;QAE9C,MAAM,UAAU,GACd,MAAM,CAAC,gBAAgB,KAAK,GAAG;YAC7B,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,2BAA2B,CAAC;QAE5D,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,yCAAyC,SAAS,IAAI,IAAI,iDAAiD,UAAU,0BAA0B,CAAC;QACzJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAChB,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,OAAO,2CAA2C,SAAS,IAAI,IAAI,QAAQ,YAAY,IAAI,IAAI,4CAA4C,UAAU,0BAA0B,CAAC;QAClL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GACZ,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI;QAC1C,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,YAAY,CAAC,IAAI,CACf,qCAAqC,QAAQ,IAC3C,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OACxD,kDAAkD,CACnD,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC;KAC1C,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACX,SAA6C;IAC9C,+BAA+B,CAAC,IAAI,CACvC;KACA,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;IACrB,MAAM,MAAM,GACV,gCAAgC,CAC9B,SAA4C,CAC7C,CAAC;IACJ,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,2BAA2B,CACzC,MAAiC;IAEjC,OACE;QACE,yBAAyB,CAAC,MAAM;QAChC,yBAAyB,CAAC,QAAQ;KAErC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AASD,MAAM,UAAU,sBAAsB,CACpC,OAAoB;IAEpB,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAChC,iEAAiE;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QAC9B,iEAAiE;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,iBAAiB,IAAI,CAAW,CAAC;IAE/D,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,iBAAiB,EAAE,iBAAiB;QACpC,UAAU,EAAE,UAAU;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,WAAmB,EACnB,UAAkB;IAElB,OAAO,aAAa,SAAS,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,WAAmB,EACnB,UAAkB,EAClB,OAAe,CAAC,EAChB,UAAkB,CAAC;IAEnB,OAAO,gBAAgB,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,WAAmB,EACnB,UAAkB;IAElB,OAAO,sBAAsB,SAAS,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;AACxE,CAAC;AAED,gDAAgD;AAChD,MAAM,iBAAiB,GAAG;IACxB,YAAY,EAAE,IAAI;IAClB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,IAAI;CACV,CAAC;AAIX,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAI/D,MAAM,CAAC,MAAM,kBAAkB,GAA8C;IAC3E,aAAa,EAAE,cAAc;IAC7B,qBAAqB,EAAE,sBAAsB;IAC7C,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,OAAO;IACf,aAAa,EAAE,cAAc;CACrB,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,WAAyB,EACJ,EAAE;IACvB,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC,CAAC;AAuCF,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,IAAmB;IAEnB,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,IAAI,GACjD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EACxB,EAAE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,IAAmB;IAEnB,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAyB,EAAE,EAAE;IAC5D,MAAM,GAAG,GAA8B;QACrC,WAAW,EAAE;YACX,WAAW,EAAE,mDAAmD,WAAW,GAAG;YAC9E,OAAO,EAAE,kBAAkB;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,WAAW,EAAE;YACX,WAAW,EAAE,uBAAuB,WAAW,EAAE;YACjD,OAAO,EAAE,wIAAwI;YACjJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,WAAW,EAAE,UAAU,WAAW,uDAAuD;YACzF,OAAO,EAAE,oHAAoH;YAC7H,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,oBAAoB,EAAE;YACpB,WAAW,EAAE,oBAAoB,WAAW,8CAA8C;YAC1F,OAAO,EAAE,0FAA0F;YACnG,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,EAAE;IACjB,qBAAqB,EAAE,EAAE;IACzB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE;QACN,UAAU,EAAE;YACV,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;SACd;QACD,mBAAmB,EAAE;YACnB,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;SACd;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,4DAA4D;YACrE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,KAAK,EAAE;YACL,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,WAAW,EAAE,6BAA6B;YAC1C,OAAO,EAAE,wDAAwD;YACjE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,UAAU,EAAE;YACV,WAAW,EAAE,gCAAgC;YAC7C,OAAO,EAAE,+CAA+C;YACxD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,4CAA4C;YACzD,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD,SAAS,EAAE;YACT,WAAW,EAAE,iDAAiD;YAC9D,OAAO,EAAE,uDAAuD;YAChE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,kEAAkE;YAC3E,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;QACD,eAAe,EAAE;YACf,WAAW,EAAE,gIAAgI;YAC7I,OAAO,EAAE,oBAAoB;YAC7B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK;SACf;KACF;IACD,aAAa,EAAE,EAAE;CACU,CAAC;AAE9B;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAgB,EAChB,IAA6C;IAE7C,OAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAqC;SAC7D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtB,MAAM,YAAY,GAAG,CAAC,GAAY,EAAU,EAAE;YAC5C,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC3B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,SAAS;oBACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,KAAK,OAAO;oBACV,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,KAAK,SAAS;oBACZ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAa,CAAC,CAAC;oBAClC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5D,CAAC;gBACD,KAAK,QAAQ,CAAC;gBACd;oBACE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,GAAI,GAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KACnB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,WAC3C,EAAE,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA4B;IAE5B,MAAM,EACJ,EAAE,EACF,OAAO,EACP,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,GAAG,IAAI,EACR,GAAG,OAAO,CAAC;IAEZ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA4B;IAE5B,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAErD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA4B;IAE5B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA4B;IAE5B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,oBAAoB,EACpB,8BAA8B,EAC9B,gCAAgC,EAChC,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,GAAG,IAAI,EACR,GAAG,OAAO,CAAC;IAEZ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA4B;IAE5B,OAAO,oBAAoB,CACzB,mBAAmB,CACjB,mBAAmB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CACxE,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { VenuePricingPlan as VenuePricingPlanOption } from "@prisma/client";
|
|
2
|
+
export type VenuePricingPlanData = {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
percentageFee: number;
|
|
6
|
+
monthlyFee: number;
|
|
7
|
+
flatFee: number;
|
|
8
|
+
};
|
|
9
|
+
export type VenuePricingPlanMap = {
|
|
10
|
+
[key in VenuePricingPlanOption]: VenuePricingPlanData;
|
|
11
|
+
};
|
|
12
|
+
export declare const VENUE_PRICING_PLAN_DATA: VenuePricingPlanMap;
|
|
13
|
+
//# sourceMappingURL=venueUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"venueUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/venueUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;KAC/B,GAAG,IAAI,sBAAsB,GAAG,oBAAoB;CACtD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,mBAe5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { VenuePricingPlan as VenuePricingPlanOption } from "@prisma/client";
|
|
2
|
+
export const VENUE_PRICING_PLAN_DATA = {
|
|
3
|
+
[VenuePricingPlanOption.Percentage]: {
|
|
4
|
+
name: "Pay per booking",
|
|
5
|
+
description: "15% of each booking goes to Bash.",
|
|
6
|
+
percentageFee: 0.15,
|
|
7
|
+
monthlyFee: 0.0,
|
|
8
|
+
flatFee: 0.0,
|
|
9
|
+
},
|
|
10
|
+
[VenuePricingPlanOption.Subscription]: {
|
|
11
|
+
name: "Monthly subscription",
|
|
12
|
+
description: "Pay $100/month and keep 100% of each booking.",
|
|
13
|
+
percentageFee: 0.0,
|
|
14
|
+
monthlyFee: 100.0,
|
|
15
|
+
flatFee: 0.0,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=venueUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"venueUtils.js","sourceRoot":"","sources":["../../../src/utils/service/venueUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAc5E,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE;QACnC,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,mCAAmC;QAChD,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,GAAG;KACb;IACD,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE;QACrC,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,+CAA+C;QAC5D,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,GAAG;KACb;CACO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function generateSlug(title: string): string;
|
|
2
|
+
export declare function generateUniqueSlug(title: string, checkSlugExists: (slug: string, excludeId?: string) => Promise<boolean>, excludeId?: string): Promise<string>;
|
|
3
|
+
export declare function generateBashDetailUrl(bashEventId: string, slug: string): string;
|
|
4
|
+
export declare function parseBashUrlParams(param: string): {
|
|
5
|
+
id: string;
|
|
6
|
+
slug: string | null;
|
|
7
|
+
} | null;
|
|
8
|
+
export declare function validateSlug(slug: string): boolean;
|
|
9
|
+
//# sourceMappingURL=slugUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slugUtils.d.ts","sourceRoot":"","sources":["../../src/utils/slugUtils.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EACvE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAqB5F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import slugify from 'slugify';
|
|
2
|
+
export function generateSlug(title) {
|
|
3
|
+
return slugify(title, {
|
|
4
|
+
lower: true,
|
|
5
|
+
strict: true,
|
|
6
|
+
remove: /[*+~.()'"!:@]/g
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export async function generateUniqueSlug(title, checkSlugExists, excludeId) {
|
|
10
|
+
const baseSlug = generateSlug(title);
|
|
11
|
+
let slug = baseSlug;
|
|
12
|
+
let counter = 1;
|
|
13
|
+
while (true) {
|
|
14
|
+
const exists = await checkSlugExists(slug, excludeId);
|
|
15
|
+
if (!exists) {
|
|
16
|
+
return slug;
|
|
17
|
+
}
|
|
18
|
+
slug = `${baseSlug}-${counter}`;
|
|
19
|
+
counter++;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function generateBashDetailUrl(bashEventId, slug) {
|
|
23
|
+
return `/bash/${bashEventId}-${slug}`;
|
|
24
|
+
}
|
|
25
|
+
export function parseBashUrlParams(param) {
|
|
26
|
+
// Expected format: "id-slug" where id is first part before first dash
|
|
27
|
+
const dashIndex = param.indexOf('-');
|
|
28
|
+
if (dashIndex === -1) {
|
|
29
|
+
// Old format: just the ID
|
|
30
|
+
if (param && param.length > 0) {
|
|
31
|
+
return { id: param, slug: null };
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const id = param.substring(0, dashIndex);
|
|
36
|
+
const slug = param.substring(dashIndex + 1);
|
|
37
|
+
if (!id) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// New format: id-slug
|
|
41
|
+
return { id, slug: slug || null };
|
|
42
|
+
}
|
|
43
|
+
export function validateSlug(slug) {
|
|
44
|
+
// Check if slug only contains lowercase letters, numbers, and hyphens
|
|
45
|
+
return /^[a-z0-9-]+$/.test(slug);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=slugUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slugUtils.js","sourceRoot":"","sources":["../../src/utils/slugUtils.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,OAAO,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,gBAAgB;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,eAAuE,EACvE,SAAkB;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,IAAY;IACrE,OAAO,SAAS,WAAW,IAAI,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,sEAAsE;IACtE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,0BAA0B;QAC1B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,sEAAsE;IACtE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortUtils.d.ts","sourceRoot":"","sources":["../../src/utils/sortUtils.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAC,CAAC,CAAC;AAEjH,wBAAgB,SAAS,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAqBtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function sortTiers(a, b) {
|
|
2
|
+
const aValueToCompare = getTierValueToCompare(a);
|
|
3
|
+
const bValueToCompare = getTierValueToCompare(b);
|
|
4
|
+
if (aValueToCompare === bValueToCompare) {
|
|
5
|
+
return 0;
|
|
6
|
+
}
|
|
7
|
+
else if (!aValueToCompare && bValueToCompare) {
|
|
8
|
+
return -1;
|
|
9
|
+
}
|
|
10
|
+
else if (aValueToCompare && !bValueToCompare) {
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
13
|
+
else if (!aValueToCompare || !bValueToCompare) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
else if (aValueToCompare > bValueToCompare) {
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return -1;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getTierValueToCompare(tier) {
|
|
24
|
+
return tier.sortOrder?.toString() ?? tier.price?.toString();
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sortUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortUtils.js","sourceRoot":"","sources":["../../src/utils/sortUtils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,CAAiB,EAAE,CAAiB;IAC5D,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;SACI,IAAI,CAAC,eAAe,IAAI,eAAe,EAAE,CAAC;QAC7C,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SACI,IAAI,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,CAAC,CAAC;IACX,CAAC;SACI,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,OAAO,CAAC,CAAC;IACX,CAAC;SACI,IAAI,eAAe,GAAG,eAAe,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;SACI,CAAC;QACJ,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAoB;IACjD,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.d.ts","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACpE,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,CAAC,GACN,MAAM,CAIR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,IAAO;IAEP,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripeAccountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/stripeAccountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,wBAAwB,GACnC,eAAe,mBAAmB,GAAG,IAAI,GAAG,SAAS,KACpD,OASF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const stripeAccountFullyLinked = (linkingStatus) => {
|
|
2
|
+
return (linkingStatus != null &&
|
|
3
|
+
!linkingStatus.hasOutstandingRequirements &&
|
|
4
|
+
linkingStatus.isOnboarded &&
|
|
5
|
+
linkingStatus.paymentsEnabled &&
|
|
6
|
+
linkingStatus.taxMonitoringEnabled
|
|
7
|
+
// (!isProduction() || linkingStatus.taxMonitoringEnabled);
|
|
8
|
+
);
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=stripeAccountUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripeAccountUtils.js","sourceRoot":"","sources":["../../src/utils/stripeAccountUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,aAAqD,EAC5C,EAAE;IACX,OAAO,CACL,aAAa,IAAI,IAAI;QACrB,CAAC,aAAa,CAAC,0BAA0B;QACzC,aAAa,CAAC,WAAW;QACzB,aAAa,CAAC,eAAe;QAC7B,aAAa,CAAC,oBAAoB;IAClC,2DAA2D;KAC5D,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NumberOfTicketsForDate } from "../definitions";
|
|
2
|
+
/**
|
|
3
|
+
* Returns A string structured like: [ticketTierId]__[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~,...
|
|
4
|
+
* @param ticketList A map where the key is the ticketTierId
|
|
5
|
+
*/
|
|
6
|
+
export declare function ticketListToString(ticketList: Map<string, NumberOfTicketsForDate[]>): string;
|
|
7
|
+
/**
|
|
8
|
+
* Returns map where the key is the ticketTierId
|
|
9
|
+
* @param ticketListStr A string structured like: [ticketTierId]__[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~...,...
|
|
10
|
+
*/
|
|
11
|
+
export declare function ticketListStrToTicketList(ticketListStr: string): Map<string, NumberOfTicketsForDate[]>;
|
|
12
|
+
//# sourceMappingURL=ticketListUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticketListUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAKvB,MAAM,gBAAgB,CAAC;AAIxB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAAG,MAAM,CAuC5F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAmCtG"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { DateTime } from "luxon";
|
|
2
|
+
import { URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM, URL_PARAMS_TICKET_LIST_DELIM, URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM, URL_PARAMS_TICKETS_DATE_DELIM } from "../definitions";
|
|
3
|
+
import { DATETIME_FORMAT_ISO_LIKE } from "./dateTimeUtils";
|
|
4
|
+
/**
|
|
5
|
+
* Returns A string structured like: [ticketTierId]__[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~,...
|
|
6
|
+
* @param ticketList A map where the key is the ticketTierId
|
|
7
|
+
*/
|
|
8
|
+
export function ticketListToString(ticketList) {
|
|
9
|
+
const ticketListArr = [];
|
|
10
|
+
for (const [ticketTierId, ticketListArgs] of ticketList.entries()) {
|
|
11
|
+
let ticketsExist = true;
|
|
12
|
+
const ticketArgs = [`${ticketTierId}${URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM}`];
|
|
13
|
+
for (const ticketNumAndDates of ticketListArgs) {
|
|
14
|
+
if (ticketNumAndDates.numberOfTickets > 0) {
|
|
15
|
+
ticketsExist = true;
|
|
16
|
+
// Ensure ticketDateTime is in ISO format
|
|
17
|
+
let dateTimeStr = ticketNumAndDates.ticketDateTime;
|
|
18
|
+
if (dateTimeStr) {
|
|
19
|
+
// If it's already a string, try to parse it as DateTime and convert to ISO
|
|
20
|
+
const dateTime = typeof dateTimeStr === 'string'
|
|
21
|
+
? DateTime.fromFormat(dateTimeStr, DATETIME_FORMAT_ISO_LIKE).isValid
|
|
22
|
+
? DateTime.fromFormat(dateTimeStr, DATETIME_FORMAT_ISO_LIKE)
|
|
23
|
+
: DateTime.fromISO(dateTimeStr).isValid
|
|
24
|
+
? DateTime.fromISO(dateTimeStr)
|
|
25
|
+
: DateTime.fromJSDate(new Date(dateTimeStr))
|
|
26
|
+
: DateTime.fromJSDate(dateTimeStr);
|
|
27
|
+
if (dateTime.isValid) {
|
|
28
|
+
dateTimeStr = dateTime.toISO() || dateTimeStr;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ticketArgs.push(`${ticketNumAndDates.numberOfTickets}${URL_PARAMS_TICKETS_DATE_DELIM}${dateTimeStr}`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
ticketsExist = false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (ticketsExist) {
|
|
38
|
+
ticketListArr.push(ticketArgs.join(URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return ticketListArr.join(URL_PARAMS_TICKET_LIST_DELIM);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns map where the key is the ticketTierId
|
|
45
|
+
* @param ticketListStr A string structured like: [ticketTierId]__[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~...,...
|
|
46
|
+
*/
|
|
47
|
+
export function ticketListStrToTicketList(ticketListStr) {
|
|
48
|
+
const ticketList = new Map();
|
|
49
|
+
// [ticketTierId]__~~[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~...,...
|
|
50
|
+
const ticketListArgs = ticketListStr.split(URL_PARAMS_TICKET_LIST_DELIM);
|
|
51
|
+
ticketListArgs.forEach((tierIdAndTicketNumbersAndDates) => {
|
|
52
|
+
const ticketNumAndDatesArr = [];
|
|
53
|
+
// [ticketTierId]__~~[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~...
|
|
54
|
+
const [ticketTierId, ticketNumAndDatesStr] = tierIdAndTicketNumbersAndDates.split(URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM);
|
|
55
|
+
if (!ticketNumAndDatesArr) {
|
|
56
|
+
throw new Error(`Could not parse ticketListStr. Maybe it is just an amount?`);
|
|
57
|
+
}
|
|
58
|
+
// ~~[numberOfTickets];;[date]~~[numberOfTickets];;[date]~~...
|
|
59
|
+
const ticketNumAndDates = ticketNumAndDatesStr.split(URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM)
|
|
60
|
+
.filter((ticketNumAndDateStr) => !!ticketNumAndDateStr);
|
|
61
|
+
for (const ticketNumAndDateStr of ticketNumAndDates) {
|
|
62
|
+
// [numberOfTickets];;[date]
|
|
63
|
+
const [numberOfTickets, ticketDateTimeStr] = ticketNumAndDateStr.split(URL_PARAMS_TICKETS_DATE_DELIM);
|
|
64
|
+
const ticketDateTime = DateTime.fromISO(ticketDateTimeStr);
|
|
65
|
+
let ticketDateTimeFormattedStr = undefined;
|
|
66
|
+
if (ticketDateTime.isValid) {
|
|
67
|
+
ticketDateTimeFormattedStr = ticketDateTime.toFormat(DATETIME_FORMAT_ISO_LIKE);
|
|
68
|
+
}
|
|
69
|
+
ticketNumAndDatesArr.push({
|
|
70
|
+
numberOfTickets: parseInt(numberOfTickets),
|
|
71
|
+
ticketDateTime: ticketDateTimeFormattedStr,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
ticketList.set(ticketTierId, ticketNumAndDatesArr);
|
|
75
|
+
});
|
|
76
|
+
return ticketList;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ticketListUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticketListUtils.js","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAEL,+CAA+C,EAC/C,4BAA4B,EAC5B,sDAAsD,EACtD,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAiD;IAClF,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAClE,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,MAAM,UAAU,GAAa,CAAC,GAAG,YAAY,GAAG,sDAAsD,EAAE,CAAC,CAAC;QAC1G,KAAK,MAAM,iBAAiB,IAAI,cAAc,EAAE,CAAC;YAC/C,IAAI,iBAAiB,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBAC1C,YAAY,GAAG,IAAI,CAAC;gBAEpB,yCAAyC;gBACzC,IAAI,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC;gBACnD,IAAI,WAAW,EAAE,CAAC;oBAChB,2EAA2E;oBAC3E,MAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,QAAQ;wBAC9C,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,OAAO;4BAClE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,wBAAwB,CAAC;4BAC5D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO;gCACrC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gCAC/B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;wBAChD,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAkB,CAAC,CAAC;oBAE5C,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACrB,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,UAAU,CAAC,IAAI,CACb,GAAG,iBAAiB,CAAC,eAAe,GAAG,6BAA6B,GAAG,WAAW,EAAE,CAAC,CAAC;YAC1F,CAAC;iBACI,CAAC;gBACJ,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,aAAqB;IAC7D,MAAM,UAAU,GAA0C,IAAI,GAAG,EAAE,CAAC;IAEpE,kFAAkF;IAClF,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAEzE,cAAc,CAAC,OAAO,CAAC,CAAC,8BAAsC,EAAQ,EAAE;QACtE,MAAM,oBAAoB,GAA6B,EAAE,CAAC;QAC1D,8EAA8E;QAC9E,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1I,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,8DAA8D;QAC9D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,+CAA+C,CAAC;aACtD,MAAM,CAAC,CAAC,mBAAmB,EAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE/G,KAAK,MAAM,mBAAmB,IAAI,iBAAiB,EAAE,CAAC;YACpD,4BAA4B;YAC5B,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACtG,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,0BAA0B,GAAuB,SAAS,CAAC;YAE/D,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,0BAA0B,GAAG,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YACjF,CAAC;YAED,oBAAoB,CAAC,IAAI,CAAC;gBACxB,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;gBAC1C,cAAc,EAAE,0BAA0B;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ValueOf<T> = T[keyof T];
|
|
2
|
+
export type UnionFromArray<T extends ReadonlyArray<any>> = T[number];
|
|
3
|
+
export type RemoveCommonProperties<T, U> = keyof (Omit<T, keyof U> & Omit<U, keyof T>);
|
|
4
|
+
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
5
|
+
export type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
6
|
+
export type DeepPartial<T> = T extends Function ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends object ? {
|
|
7
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
8
|
+
} : T;
|
|
9
|
+
export type Override<T, U> = Omit<T, keyof U> & U;
|
|
10
|
+
export declare function createAllTrueObject<T extends string>(keys: T[]): Record<T, true>;
|
|
11
|
+
//# sourceMappingURL=typeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/typeUtils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,MAAM,MAAM,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAChE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEpB,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEtB,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACzD,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvB,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB,CAAC,SAAS,QAAQ,GACd,CAAC,GACD,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACxB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,MAAM,GAChB;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAEV,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAGlD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,IAAI,EAAE,CAAC,EAAE,GACR,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAKjB"}
|