@bash-app/bash-common 30.51.0 → 30.53.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 +5 -3
- 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,177 @@
|
|
|
1
|
+
const ADDRESS_DELIM = '|';
|
|
2
|
+
const googleMapsApiKey = process.env.REACT_APP_GOOGLE_MAP_API_KEY;
|
|
3
|
+
export function addressHasEnoughDataForGeolocation(address) {
|
|
4
|
+
return !!((address.place && address.city && address.state) || (address.street && address.city && address.state));
|
|
5
|
+
}
|
|
6
|
+
export function addressValuesToDatabaseAddressString(addressValues) {
|
|
7
|
+
const { place = '', street, city, state, zipCode, country } = addressValues;
|
|
8
|
+
return [place, street, city, state, zipCode, country].join(ADDRESS_DELIM);
|
|
9
|
+
}
|
|
10
|
+
export function databaseAddressStringToAddressValues(addressString) {
|
|
11
|
+
if (addressString) {
|
|
12
|
+
const addressArray = addressString.split(ADDRESS_DELIM);
|
|
13
|
+
return {
|
|
14
|
+
place: addressArray[0],
|
|
15
|
+
street: addressArray[1],
|
|
16
|
+
city: addressArray[2],
|
|
17
|
+
state: addressArray[3],
|
|
18
|
+
zipCode: addressArray[4],
|
|
19
|
+
country: 'USA'
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return { place: '', street: '', city: '', state: '', zipCode: '', country: '' };
|
|
23
|
+
}
|
|
24
|
+
export function databaseAddressStringToOneLineString(addressString) {
|
|
25
|
+
if (addressString) {
|
|
26
|
+
// Special handling for place-only addresses
|
|
27
|
+
if (!addressString.includes(ADDRESS_DELIM)) {
|
|
28
|
+
return addressString.trim();
|
|
29
|
+
}
|
|
30
|
+
const address = databaseAddressStringToAddressValues(addressString);
|
|
31
|
+
// If only place exists, just return it
|
|
32
|
+
if (address.place &&
|
|
33
|
+
(!address.street || address.street === 'undefined') &&
|
|
34
|
+
(!address.city || address.city === 'undefined') &&
|
|
35
|
+
(!address.state || address.state === 'undefined')) {
|
|
36
|
+
return address.place.trim();
|
|
37
|
+
}
|
|
38
|
+
let addressArr = address.place ? [address.place] : [];
|
|
39
|
+
// Add non-empty and non-undefined parts
|
|
40
|
+
if (address.street && address.street !== 'undefined')
|
|
41
|
+
addressArr.push(address.street);
|
|
42
|
+
if (address.city && address.city !== 'undefined')
|
|
43
|
+
addressArr.push(address.city);
|
|
44
|
+
if (address.state && address.state !== 'undefined')
|
|
45
|
+
addressArr.push(address.state);
|
|
46
|
+
const addressStr = addressArr.filter(str => !!str && str !== 'undefined').join(', ');
|
|
47
|
+
// Only add zip code if it exists and isn't 'undefined'
|
|
48
|
+
return address.zipCode && address.zipCode !== 'undefined'
|
|
49
|
+
? `${addressStr} ${address.zipCode}`
|
|
50
|
+
: addressStr;
|
|
51
|
+
}
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
export function databaseAddressStringToDisplayString(addressString) {
|
|
55
|
+
if (addressString) {
|
|
56
|
+
// Special handling for place-only addresses (no delimiters)
|
|
57
|
+
if (!addressString.includes(ADDRESS_DELIM)) {
|
|
58
|
+
return addressString.trim();
|
|
59
|
+
}
|
|
60
|
+
const oneLineString = databaseAddressStringToOneLineString(addressString);
|
|
61
|
+
const formatted = oneLineString.replace(/([A-Z])(?=[A-Z][a-z])/g, "$1 ") // Add space between a single uppercase letter and a capitalized word
|
|
62
|
+
.replace(/(\d)(?=[A-Z])/g, "$1 ") // Add space between numbers and letters
|
|
63
|
+
.replace(/,/g, ", ") // Add space after commas
|
|
64
|
+
.replace(/undefined/g, ""); // Remove any "undefined" strings
|
|
65
|
+
return formatted;
|
|
66
|
+
}
|
|
67
|
+
return '';
|
|
68
|
+
}
|
|
69
|
+
export function addressToDisplayString(address) {
|
|
70
|
+
let addressArr = address.place ? [address.place] : [];
|
|
71
|
+
addressArr = [...addressArr, address.street, address.city, address.state];
|
|
72
|
+
const addressStr = addressArr.filter((str) => !!str).join(', ');
|
|
73
|
+
return `${addressStr} ${address.zipCode}`;
|
|
74
|
+
}
|
|
75
|
+
export async function getAddressFromCoordinates(lat, lng) {
|
|
76
|
+
const apiUrl = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${googleMapsApiKey}&loading=async`;
|
|
77
|
+
try {
|
|
78
|
+
const response = await fetch(apiUrl);
|
|
79
|
+
const data = await response.json();
|
|
80
|
+
if (data.results.length > 0) {
|
|
81
|
+
const addressComponents = data.results[0].address_components;
|
|
82
|
+
let street = "";
|
|
83
|
+
let city = "";
|
|
84
|
+
let state = "";
|
|
85
|
+
let zipCode = "";
|
|
86
|
+
addressComponents.forEach((component) => {
|
|
87
|
+
if (component.types.includes("route")) {
|
|
88
|
+
street = component.long_name;
|
|
89
|
+
}
|
|
90
|
+
else if (component.types.includes("locality")) {
|
|
91
|
+
city = component.long_name;
|
|
92
|
+
}
|
|
93
|
+
else if (component.types.includes("administrative_area_level_1")) {
|
|
94
|
+
state = component.short_name;
|
|
95
|
+
}
|
|
96
|
+
else if (component.types.includes("postal_code")) {
|
|
97
|
+
zipCode = component.long_name;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return { place: '', street, city, state, zipCode, country: 'USA' };
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw new Error("No address found");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error(error);
|
|
108
|
+
return {
|
|
109
|
+
place: '',
|
|
110
|
+
street: "",
|
|
111
|
+
city: "",
|
|
112
|
+
state: "",
|
|
113
|
+
zipCode: "",
|
|
114
|
+
country: 'USA'
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export function extractAddressComponents(place) {
|
|
119
|
+
const addressComponents = place.address_components;
|
|
120
|
+
let streetNumber = '';
|
|
121
|
+
let streetName = '';
|
|
122
|
+
let city = '';
|
|
123
|
+
let state = '';
|
|
124
|
+
let zipCode = '';
|
|
125
|
+
let country = 'USA';
|
|
126
|
+
addressComponents.forEach((component) => {
|
|
127
|
+
const types = component.types;
|
|
128
|
+
if (types.includes('street_number')) {
|
|
129
|
+
streetNumber = component.long_name;
|
|
130
|
+
}
|
|
131
|
+
if (types.includes('route')) {
|
|
132
|
+
streetName = component.long_name;
|
|
133
|
+
}
|
|
134
|
+
if (types.includes('locality')) {
|
|
135
|
+
city = component.long_name;
|
|
136
|
+
}
|
|
137
|
+
if (types.includes('administrative_area_level_1')) {
|
|
138
|
+
state = component.short_name;
|
|
139
|
+
}
|
|
140
|
+
if (types.includes('postal_code')) {
|
|
141
|
+
zipCode = component.long_name;
|
|
142
|
+
}
|
|
143
|
+
if (types.includes('country')) {
|
|
144
|
+
country = component.long_name;
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
const street = `${streetNumber} ${streetName}`.trim();
|
|
148
|
+
return {
|
|
149
|
+
googlePlaceId: place.place_id,
|
|
150
|
+
place: place.name || '',
|
|
151
|
+
street,
|
|
152
|
+
city,
|
|
153
|
+
state,
|
|
154
|
+
zipCode,
|
|
155
|
+
country
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
export async function getGeoCoordinatesFromAddress(address) {
|
|
159
|
+
const addressStr = `${address.street}, ${address.city}, ${address.state} ${address.zipCode}, ${address.country}`;
|
|
160
|
+
const response = await fetch(`https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(addressStr)}&key=${googleMapsApiKey}`);
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
console.error('Geocode response was not ok for address: ' + addressStr);
|
|
163
|
+
}
|
|
164
|
+
const data = await response.json();
|
|
165
|
+
if (data.status === 'OK') {
|
|
166
|
+
if (data.results?.length) {
|
|
167
|
+
return data.results[0].geometry.location;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
console.error('Geocode results were empty with address: ' + addressStr);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.error(`Geocode was not successful with address: ${addressStr}\nfor the following reason: ${data.status}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=addressUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressUtils.js","sourceRoot":"","sources":["../../src/utils/addressUtils.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAAsC,CAAC;AAG5E,MAAM,UAAU,kCAAkC,CAAC,OAAiB;IAClE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,aAAuB;IAC1E,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;IAC5E,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,aAAwC;IAC3F,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,OAAO;YACL,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YACrB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACtB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,KAAK;SACf,CAAA;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAClF,CAAC;AAGD,MAAM,UAAU,oCAAoC,CAAC,aAAwC;IAC3F,IAAI,aAAa,EAAE,CAAC;QAClB,4CAA4C;QAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAAG,oCAAoC,CAAC,aAAa,CAAC,CAAC;QAEpE,uCAAuC;QACvC,IAAI,OAAO,CAAC,KAAK;YACb,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;YAC/C,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,wCAAwC;QACxC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChF,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnF,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErF,uDAAuD;QACvD,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW;YACvD,CAAC,CAAC,GAAG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE;YACpC,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,aAAwC;IAC3F,IAAI,aAAa,EAAE,CAAC;QAClB,4DAA4D;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,aAAa,GAAG,oCAAoC,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC,qEAAqE;aAChI,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,wCAAwC;aACzE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,yBAAyB;aAC7C,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,iCAAiC;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAiB;IACtD,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,GAAG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5C,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAE,GAAW,EAAE,GAAW;IACvE,MAAM,MAAM,GAAG,4DAA4D,GAAG,IAAI,GAAG,QAAQ,gBAAgB,gBAAgB,CAAC;IAC9H,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAE7D,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,OAAO,GAAG,EAAE,CAAC;YAEjB,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;gBAC3C,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC/B,CAAC;qBAAM,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChD,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC7B,CAAC;qBAAM,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;oBACnE,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;gBAC/B,CAAC;qBAAM,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACnD,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAU;IACjD,MAAM,iBAAiB,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACnD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAClD,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;IAEtD,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,QAAQ;QAC7B,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACvB,MAAM;QACN,IAAI;QACJ,KAAK;QACL,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAAiB;IAClE,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;IAEjH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,6DAA6D,kBAAkB,CAAC,UAAU,CAAC,QAAQ,gBAAgB,EAAE,CACtH,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,CAAC;aACI,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,UAAU,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;SACI,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,4CAA4C,UAAU,+BAA+B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BashEvent, Contact, User } from "@prisma/client";
|
|
2
|
+
import { ContactOrUser } from "../definitions";
|
|
3
|
+
import { PublicUser } from "../extendedSchemas";
|
|
4
|
+
type CombinedUser = User | PublicUser;
|
|
5
|
+
type CombinedUserOrContact = CombinedUser | Contact;
|
|
6
|
+
export declare function isContactAndNotUser(contactOrUser: Partial<ContactOrUser>): contactOrUser is Contact;
|
|
7
|
+
export declare function getUserName(contactOrUser: Partial<CombinedUserOrContact> | undefined): string;
|
|
8
|
+
export declare function getUserImage(contactOrUser: CombinedUserOrContact | undefined): string;
|
|
9
|
+
export declare function getContactOrUserEmail(contactOrUser: Partial<ContactOrUser>): string;
|
|
10
|
+
export declare function getUserIdAndNotContactId(contactOrUser: Partial<ContactOrUser>): string | null;
|
|
11
|
+
export declare function getBashEventDetailUrlParamsFromBashEvent(bashEvent: BashEvent | undefined, coverPhoto?: string): string;
|
|
12
|
+
export declare function isProduction(): boolean;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=apiUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/apiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C,KAAK,YAAY,GAAG,IAAI,GAAG,UAAU,CAAC;AACtC,KAAK,qBAAqB,GAAG,YAAY,GAAG,OAAO,CAAC;AAEpD,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,IAAI,OAAO,CAEnG;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,GAAG,MAAM,CAU7F;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAUrF;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAInF;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,IAAI,CAI7F;AAED,wBAAgB,wCAAwC,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtH;AAqBD,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export function isContactAndNotUser(contactOrUser) {
|
|
2
|
+
return !!contactOrUser.contactOwnerId;
|
|
3
|
+
}
|
|
4
|
+
export function getUserName(contactOrUser) {
|
|
5
|
+
if (!contactOrUser) {
|
|
6
|
+
return '';
|
|
7
|
+
}
|
|
8
|
+
if (isContactAndNotUser(contactOrUser)) {
|
|
9
|
+
return contactOrUser.fullName ?? contactOrUser.contactEmail ?? '';
|
|
10
|
+
}
|
|
11
|
+
const user = contactOrUser;
|
|
12
|
+
const combinedName = user.givenName && user.familyName ? `${user.givenName} ${user.familyName}` : null;
|
|
13
|
+
return combinedName ?? user.email;
|
|
14
|
+
}
|
|
15
|
+
export function getUserImage(contactOrUser) {
|
|
16
|
+
if (!contactOrUser) {
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
const noProfilePicture = '/noProfilePicture.svg';
|
|
20
|
+
if (isContactAndNotUser(contactOrUser)) {
|
|
21
|
+
return noProfilePicture;
|
|
22
|
+
}
|
|
23
|
+
const user = contactOrUser;
|
|
24
|
+
return user.uploadedImage ?? user.image ?? noProfilePicture;
|
|
25
|
+
}
|
|
26
|
+
export function getContactOrUserEmail(contactOrUser) {
|
|
27
|
+
return isContactAndNotUser(contactOrUser)
|
|
28
|
+
? contactOrUser.contactEmail ?? ''
|
|
29
|
+
: contactOrUser.email;
|
|
30
|
+
}
|
|
31
|
+
export function getUserIdAndNotContactId(contactOrUser) {
|
|
32
|
+
return isContactAndNotUser(contactOrUser)
|
|
33
|
+
? null
|
|
34
|
+
: contactOrUser.id;
|
|
35
|
+
}
|
|
36
|
+
export function getBashEventDetailUrlParamsFromBashEvent(bashEvent, coverPhoto) {
|
|
37
|
+
if (!bashEvent) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
return getBashEventDetailUrlParams(bashEvent.title, bashEvent.description, coverPhoto ?? bashEvent.coverPhoto);
|
|
41
|
+
}
|
|
42
|
+
function getBashEventDetailUrlParams(bashEventTitle, bashEventDescription, coverPhoto) {
|
|
43
|
+
// Don't let the description be huge
|
|
44
|
+
const desc = bashEventDescription && bashEventDescription.length > 10 ? bashEventDescription?.slice(0, 10) + '...' : bashEventDescription;
|
|
45
|
+
// Need to add characters if any of the args is undefined or else the params get thrown off
|
|
46
|
+
const params = [];
|
|
47
|
+
if (bashEventTitle) {
|
|
48
|
+
// params.push(`${URL_PARAMS_BASH_EVENT_TITLE}=${encodeURIComponent(bashEventTitle)}`);
|
|
49
|
+
}
|
|
50
|
+
if (desc) {
|
|
51
|
+
// params.push(`${URL_PARAMS_BASH_EVENT_DESC}=${encodeURIComponent(desc)}`);
|
|
52
|
+
}
|
|
53
|
+
if (coverPhoto) {
|
|
54
|
+
// params.push(`${URL_PARAMS_BASH_EVENT_COVER_PHOTO}=${encodeURIComponent(coverPhoto)}`);
|
|
55
|
+
}
|
|
56
|
+
return params.join('&');
|
|
57
|
+
}
|
|
58
|
+
export function isProduction() {
|
|
59
|
+
return process.env.NODE_ENV === 'production';
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=apiUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiUtils.js","sourceRoot":"","sources":["../../src/utils/apiUtils.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CAAC,aAAqC;IACvE,OAAO,CAAC,CAAE,aAAyB,CAAC,cAAc,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,aAAyD;IACnF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC,QAAQ,IAAK,aAAyB,CAAC,YAAY,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,aAA6B,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvG,OAAO,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,aAAgD;IAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;IACjD,IAAI,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,GAAG,aAA6B,CAAC;IAC3C,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAqC;IACzE,OAAO,mBAAmB,CAAC,aAAa,CAAC;QACvC,CAAC,CAAE,aAAyB,CAAC,YAAY,IAAI,EAAE;QAC/C,CAAC,CAAE,aAAsB,CAAC,KAAK,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqC;IAC5E,OAAO,mBAAmB,CAAC,aAAa,CAAC;QACvC,CAAC,CAAC,IAAI;QACN,CAAC,CAAE,aAAsB,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,SAAgC,EAAE,UAAmB;IAC5G,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,2BAA2B,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;AACjH,CAAC;AAED,SAAS,2BAA2B,CAAC,cAAkC,EAClC,oBAA+C,EAC/C,UAA0B;IAC7D,oCAAoC;IACpC,MAAM,IAAI,GAAG,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC1I,2FAA2F;IAC3F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,uFAAuF;IACzF,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,4EAA4E;IAC9E,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,yFAAyF;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrayUtils.d.ts","sourceRoot":"","sources":["../../src/utils/arrayUtils.ts"],"names":[],"mappings":"AAAA,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,CAAC,EAAE,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,gBAKtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrayUtils.js","sourceRoot":"","sources":["../../src/utils/arrayUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAQ,EACR,SAAqC;IAErC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DeleteObjectCommandOutput } from "@aws-sdk/client-s3/dist-types/commands";
|
|
2
|
+
export declare class AwsS3Utils {
|
|
3
|
+
static uploadBase64String(base64Str: string, assetKey: string): Promise<string | undefined>;
|
|
4
|
+
static uploadFile(file: Blob, assetKey: string, mimetype: string): Promise<string | undefined>;
|
|
5
|
+
static uploadFileViaPreSignedUrl(file: Blob, preSignedUrl: string | undefined, mimetype: string): Promise<boolean>;
|
|
6
|
+
static createUrlFromAssetKey(assetKey: string): string;
|
|
7
|
+
static createPreSignedUrl(key: string | undefined, mimetype: string | undefined): Promise<string>;
|
|
8
|
+
static deleteFile(key: string): Promise<DeleteObjectCommandOutput | undefined>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=awsS3Utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awsS3Utils.d.ts","sourceRoot":"","sources":["../../src/utils/awsS3Utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,yBAAyB,EAAC,MAAM,wCAAwC,CAAC;AAIjF,qBAAa,UAAU;WACR,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;WAMpF,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;WASvF,yBAAyB,CAAC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B1E,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;WAOzC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;WAqB1F,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;CAmBrF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { DeleteObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
|
2
|
+
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
3
|
+
const BASE_64_IMAGE_REGEX = /^data:image\/\w+;base64,/;
|
|
4
|
+
export class AwsS3Utils {
|
|
5
|
+
static async uploadBase64String(base64Str, assetKey) {
|
|
6
|
+
const bufferData = Buffer.from(base64Str.replace(BASE_64_IMAGE_REGEX, ""), 'base64');
|
|
7
|
+
const blobData = new Blob([bufferData]);
|
|
8
|
+
return AwsS3Utils.uploadFile(blobData, assetKey, 'image/jpeg');
|
|
9
|
+
}
|
|
10
|
+
static async uploadFile(file, assetKey, mimetype) {
|
|
11
|
+
const preSignedUrl = await AwsS3Utils.createPreSignedUrl(assetKey, mimetype);
|
|
12
|
+
const assetUrl = AwsS3Utils.createUrlFromAssetKey(assetKey);
|
|
13
|
+
const uploadSuccessful = await AwsS3Utils.uploadFileViaPreSignedUrl(file, preSignedUrl, mimetype);
|
|
14
|
+
if (uploadSuccessful) {
|
|
15
|
+
return assetUrl;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
static async uploadFileViaPreSignedUrl(file, preSignedUrl, mimetype) {
|
|
19
|
+
try {
|
|
20
|
+
if (!file) {
|
|
21
|
+
throw new Error('The file data buffer was undefined; no data to upload.');
|
|
22
|
+
}
|
|
23
|
+
if (!preSignedUrl) {
|
|
24
|
+
throw new Error('The pre-signed url for uploading the file was undefined');
|
|
25
|
+
}
|
|
26
|
+
const res = await fetch(preSignedUrl, {
|
|
27
|
+
method: 'PUT',
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-Type': mimetype
|
|
30
|
+
},
|
|
31
|
+
body: file
|
|
32
|
+
});
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
throw new Error(`Response was not ok when uploading media file.\nStatus, text: ${res.status}, ${res.statusText}`);
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
console.error(`Error when uploading file to: ${preSignedUrl}\n${e}`);
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
static createUrlFromAssetKey(assetKey) {
|
|
44
|
+
if (!assetKey) {
|
|
45
|
+
throw new Error(`Cannot create a url with an assetKey that is undefined`);
|
|
46
|
+
}
|
|
47
|
+
return `https://${process.env.CLOUDFRONT_ASSETS_URL}/${assetKey}`;
|
|
48
|
+
}
|
|
49
|
+
static async createPreSignedUrl(key, mimetype) {
|
|
50
|
+
if (!key || !mimetype) {
|
|
51
|
+
throw new Error(`Cannot create a pre-signed url without a key or a mimetype`);
|
|
52
|
+
}
|
|
53
|
+
const client = new S3Client({
|
|
54
|
+
credentials: {
|
|
55
|
+
accessKeyId: String(process.env.AWS_S3_ACCESS_KEY_ID),
|
|
56
|
+
secretAccessKey: String(process.env.AWS_S3_SECRET_ACCESS_KEY),
|
|
57
|
+
},
|
|
58
|
+
region: String(process.env.AWS_S3_REGION),
|
|
59
|
+
});
|
|
60
|
+
const command = new PutObjectCommand({
|
|
61
|
+
Bucket: String(process.env.AWS_S3_ASSETS_BUCKET_NAME),
|
|
62
|
+
Key: key,
|
|
63
|
+
ContentType: mimetype
|
|
64
|
+
});
|
|
65
|
+
return getSignedUrl(client, command, {
|
|
66
|
+
expiresIn: 3600,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
static async deleteFile(key) {
|
|
70
|
+
try {
|
|
71
|
+
const command = new DeleteObjectCommand({
|
|
72
|
+
Bucket: String(process.env.AWS_S3_BUCKET_NAME),
|
|
73
|
+
Key: key,
|
|
74
|
+
});
|
|
75
|
+
const client = new S3Client({
|
|
76
|
+
credentials: {
|
|
77
|
+
accessKeyId: String(process.env.AWS_S3_ACCESS_KEY_ID),
|
|
78
|
+
secretAccessKey: String(process.env.AWS_S3_SECRET_ACCESS_KEY),
|
|
79
|
+
},
|
|
80
|
+
region: String(process.env.AWS_S3_REGION),
|
|
81
|
+
});
|
|
82
|
+
return client.send(command);
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.error(e);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=awsS3Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awsS3Utils.js","sourceRoot":"","sources":["../../src/utils/awsS3Utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LevelBadge, TemporaryBadge, UserTemporaryBadge } from "../definitions";
|
|
2
|
+
/**
|
|
3
|
+
* Get the level badge details for a given badge ID
|
|
4
|
+
* @param badgeId The ID of the level badge
|
|
5
|
+
* @returns The level badge details or undefined if not found
|
|
6
|
+
*/
|
|
7
|
+
export declare const getLevelBadgeById: (badgeId: string) => LevelBadge | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Get the temporary badge details for a given badge ID
|
|
10
|
+
* @param badgeId The ID of the temporary badge
|
|
11
|
+
* @returns The temporary badge details or undefined if not found
|
|
12
|
+
*/
|
|
13
|
+
export declare const getTemporaryBadgeById: (badgeId: string) => TemporaryBadge | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a temporary badge is expired
|
|
16
|
+
* @param badge The temporary badge to check
|
|
17
|
+
* @returns True if the badge is expired, false otherwise
|
|
18
|
+
*/
|
|
19
|
+
export declare const isTemporaryBadgeExpired: (badge: UserTemporaryBadge) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Filter out expired temporary badges
|
|
22
|
+
* @param badges Array of temporary badges
|
|
23
|
+
* @returns Array of non-expired temporary badges
|
|
24
|
+
*/
|
|
25
|
+
export declare const filterExpiredTemporaryBadges: (badges: UserTemporaryBadge[]) => UserTemporaryBadge[];
|
|
26
|
+
/**
|
|
27
|
+
* Determine the appropriate level badge based on event count and rating
|
|
28
|
+
* @param eventCount Number of hosted events
|
|
29
|
+
* @param rating Average host rating
|
|
30
|
+
* @returns The ID of the highest level badge the user qualifies for, or null if none
|
|
31
|
+
*/
|
|
32
|
+
export declare const determineLevelBadge: (eventCount: number, rating: number) => string | null;
|
|
33
|
+
//# sourceMappingURL=badgeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badgeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/badgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEhI;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,UAAU,GAAG,SAEhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,cAAc,GAAG,SAExE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,kBAAkB,KAAG,OAOnE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,QAAQ,kBAAkB,EAAE,KAAG,kBAAkB,EAE7F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,IAmBjF,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { DEFAULT_LEVEL_BADGES, DEFAULT_TEMPORARY_BADGES } from "../definitions";
|
|
2
|
+
/**
|
|
3
|
+
* Get the level badge details for a given badge ID
|
|
4
|
+
* @param badgeId The ID of the level badge
|
|
5
|
+
* @returns The level badge details or undefined if not found
|
|
6
|
+
*/
|
|
7
|
+
export const getLevelBadgeById = (badgeId) => {
|
|
8
|
+
return DEFAULT_LEVEL_BADGES[badgeId];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Get the temporary badge details for a given badge ID
|
|
12
|
+
* @param badgeId The ID of the temporary badge
|
|
13
|
+
* @returns The temporary badge details or undefined if not found
|
|
14
|
+
*/
|
|
15
|
+
export const getTemporaryBadgeById = (badgeId) => {
|
|
16
|
+
return DEFAULT_TEMPORARY_BADGES[badgeId];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Check if a temporary badge is expired
|
|
20
|
+
* @param badge The temporary badge to check
|
|
21
|
+
* @returns True if the badge is expired, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
export const isTemporaryBadgeExpired = (badge) => {
|
|
24
|
+
if (!badge.expiresOn)
|
|
25
|
+
return false;
|
|
26
|
+
const expiryDate = new Date(badge.expiresOn);
|
|
27
|
+
const currentDate = new Date();
|
|
28
|
+
return expiryDate < currentDate;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Filter out expired temporary badges
|
|
32
|
+
* @param badges Array of temporary badges
|
|
33
|
+
* @returns Array of non-expired temporary badges
|
|
34
|
+
*/
|
|
35
|
+
export const filterExpiredTemporaryBadges = (badges) => {
|
|
36
|
+
return badges.filter(badge => !isTemporaryBadgeExpired(badge));
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Determine the appropriate level badge based on event count and rating
|
|
40
|
+
* @param eventCount Number of hosted events
|
|
41
|
+
* @param rating Average host rating
|
|
42
|
+
* @returns The ID of the highest level badge the user qualifies for, or null if none
|
|
43
|
+
*/
|
|
44
|
+
export const determineLevelBadge = (eventCount, rating) => {
|
|
45
|
+
// Sort badge IDs by required events in descending order
|
|
46
|
+
const sortedBadgeIds = Object.keys(DEFAULT_LEVEL_BADGES).sort((a, b) => DEFAULT_LEVEL_BADGES[b].requiredEvents - DEFAULT_LEVEL_BADGES[a].requiredEvents);
|
|
47
|
+
// Find the highest level badge the user qualifies for
|
|
48
|
+
for (const badgeId of sortedBadgeIds) {
|
|
49
|
+
const badge = DEFAULT_LEVEL_BADGES[badgeId];
|
|
50
|
+
if (eventCount >= badge.requiredEvents &&
|
|
51
|
+
(badge.requiredRating === undefined || rating >= badge.requiredRating)) {
|
|
52
|
+
return badgeId;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=badgeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badgeUtils.js","sourceRoot":"","sources":["../../src/utils/badgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAkD,MAAM,gBAAgB,CAAC;AAEhI;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAA0B,EAAE;IAC3E,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAA8B,EAAE;IACnF,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAyB,EAAW,EAAE;IAC5E,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAE/B,OAAO,UAAU,GAAG,WAAW,CAAC;AAClC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAA4B,EAAwB,EAAE;IACjG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAiB,EAAE;IACvF,wDAAwD;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC3D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,CAC1F,CAAC;IAEF,sDAAsD;IACtD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE5C,IACE,UAAU,IAAI,KAAK,CAAC,cAAc;YAClC,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,EACtE,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { PrismaClient, BlogCategory, BlogStatus } from '@prisma/client';
|
|
2
|
+
import { BlogPostExt, BlogSearchParams, BlogSearchResult } from '../../extendedSchemas';
|
|
3
|
+
export declare function checkBlogSlugExists(prisma: PrismaClient, slug: string, excludeId?: string): Promise<boolean>;
|
|
4
|
+
export declare function generateUniqueBlogSlug(prisma: PrismaClient, title: string, excludeId?: string): Promise<string>;
|
|
5
|
+
export declare function createBlogPost(prisma: PrismaClient, data: {
|
|
6
|
+
title: string;
|
|
7
|
+
content: string;
|
|
8
|
+
authorId: string;
|
|
9
|
+
excerpt?: string;
|
|
10
|
+
coverImage?: string;
|
|
11
|
+
categoryId?: string;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
metaTitle?: string;
|
|
14
|
+
metaDescription?: string;
|
|
15
|
+
metaKeywords?: string[];
|
|
16
|
+
status?: BlogStatus;
|
|
17
|
+
publishedAt?: Date;
|
|
18
|
+
scheduledFor?: Date;
|
|
19
|
+
}): Promise<BlogPostExt>;
|
|
20
|
+
export declare function updateBlogPost(prisma: PrismaClient, id: string, data: {
|
|
21
|
+
title?: string;
|
|
22
|
+
content?: string;
|
|
23
|
+
excerpt?: string;
|
|
24
|
+
coverImage?: string;
|
|
25
|
+
categoryId?: string;
|
|
26
|
+
tags?: string[];
|
|
27
|
+
metaTitle?: string;
|
|
28
|
+
metaDescription?: string;
|
|
29
|
+
metaKeywords?: string[];
|
|
30
|
+
status?: BlogStatus;
|
|
31
|
+
publishedAt?: Date;
|
|
32
|
+
scheduledFor?: Date;
|
|
33
|
+
}): Promise<BlogPostExt>;
|
|
34
|
+
export declare function getBlogPost(prisma: PrismaClient, id: string, includeComments?: boolean): Promise<BlogPostExt | null>;
|
|
35
|
+
export declare function getBlogPostBySlug(prisma: PrismaClient, slug: string, includeComments?: boolean): Promise<BlogPostExt | null>;
|
|
36
|
+
export declare function searchBlogPosts(prisma: PrismaClient, params: BlogSearchParams): Promise<BlogSearchResult>;
|
|
37
|
+
export declare function incrementBlogPostViews(prisma: PrismaClient, id: string): Promise<void>;
|
|
38
|
+
export declare function createBlogCategory(prisma: PrismaClient, data: {
|
|
39
|
+
name: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
color?: string;
|
|
42
|
+
}): Promise<BlogCategory>;
|
|
43
|
+
export declare function connectOrCreateTags(prisma: PrismaClient, tagNames: string[]): Promise<{
|
|
44
|
+
id: string;
|
|
45
|
+
}[]>;
|
|
46
|
+
export declare function getPopularBlogPosts(prisma: PrismaClient, limit?: number): Promise<BlogPostExt[]>;
|
|
47
|
+
export declare function getRecentBlogPosts(prisma: PrismaClient, limit?: number): Promise<BlogPostExt[]>;
|
|
48
|
+
//# sourceMappingURL=blogDbUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blogDbUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/blog/blogDbUtils.ts"],"names":[],"mappings":"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"}
|