@bash-app/bash-common 30.50.1 → 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.
Files changed (205) hide show
  1. package/README.md +0 -0
  2. package/dist/definitions.d.ts +668 -0
  3. package/dist/definitions.d.ts.map +1 -0
  4. package/dist/definitions.js +467 -0
  5. package/dist/definitions.js.map +1 -0
  6. package/dist/extendedSchemas.d.ts +2206 -0
  7. package/dist/extendedSchemas.d.ts.map +1 -0
  8. package/dist/extendedSchemas.js +429 -0
  9. package/dist/extendedSchemas.js.map +1 -0
  10. package/dist/index.d.ts +39 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +40 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/utils/addressUtils.d.ts +14 -0
  15. package/dist/utils/addressUtils.d.ts.map +1 -0
  16. package/dist/utils/addressUtils.js +177 -0
  17. package/dist/utils/addressUtils.js.map +1 -0
  18. package/dist/utils/apiUtils.d.ts +14 -0
  19. package/dist/utils/apiUtils.d.ts.map +1 -0
  20. package/dist/utils/apiUtils.js +61 -0
  21. package/dist/utils/apiUtils.js.map +1 -0
  22. package/dist/utils/arrayUtils.d.ts +2 -0
  23. package/dist/utils/arrayUtils.d.ts.map +1 -0
  24. package/dist/utils/arrayUtils.js +5 -0
  25. package/dist/utils/arrayUtils.js.map +1 -0
  26. package/dist/utils/awsS3Utils.d.ts +10 -0
  27. package/dist/utils/awsS3Utils.d.ts.map +1 -0
  28. package/dist/utils/awsS3Utils.js +89 -0
  29. package/dist/utils/awsS3Utils.js.map +1 -0
  30. package/dist/utils/badgeUtils.d.ts +33 -0
  31. package/dist/utils/badgeUtils.d.ts.map +1 -0
  32. package/dist/utils/badgeUtils.js +57 -0
  33. package/dist/utils/badgeUtils.js.map +1 -0
  34. package/dist/utils/blog/blogDbUtils.d.ts +48 -0
  35. package/dist/utils/blog/blogDbUtils.d.ts.map +1 -0
  36. package/dist/utils/blog/blogDbUtils.js +218 -0
  37. package/dist/utils/blog/blogDbUtils.js.map +1 -0
  38. package/dist/utils/blogUtils.d.ts +19 -0
  39. package/dist/utils/blogUtils.d.ts.map +1 -0
  40. package/dist/utils/blogUtils.js +118 -0
  41. package/dist/utils/blogUtils.js.map +1 -0
  42. package/dist/utils/dateTimeUtils.d.ts +38 -0
  43. package/dist/utils/dateTimeUtils.d.ts.map +1 -0
  44. package/dist/utils/dateTimeUtils.js +207 -0
  45. package/dist/utils/dateTimeUtils.js.map +1 -0
  46. package/dist/utils/entityUtils.d.ts +5 -0
  47. package/dist/utils/entityUtils.d.ts.map +1 -0
  48. package/dist/utils/entityUtils.js +5 -0
  49. package/dist/utils/entityUtils.js.map +1 -0
  50. package/dist/utils/generalDateTimeUtils.d.ts +15 -0
  51. package/dist/utils/generalDateTimeUtils.d.ts.map +1 -0
  52. package/dist/utils/generalDateTimeUtils.js +38 -0
  53. package/dist/utils/generalDateTimeUtils.js.map +1 -0
  54. package/dist/utils/luxonUtils.d.ts +95 -0
  55. package/dist/utils/luxonUtils.d.ts.map +1 -0
  56. package/dist/utils/luxonUtils.js +623 -0
  57. package/dist/utils/luxonUtils.js.map +1 -0
  58. package/dist/utils/mathUtils.d.ts +2 -0
  59. package/dist/utils/mathUtils.d.ts.map +1 -0
  60. package/dist/utils/mathUtils.js +4 -0
  61. package/dist/utils/mathUtils.js.map +1 -0
  62. package/dist/utils/objUtils.d.ts +3 -0
  63. package/dist/utils/objUtils.d.ts.map +1 -0
  64. package/dist/utils/objUtils.js +29 -0
  65. package/dist/utils/objUtils.js.map +1 -0
  66. package/dist/utils/paymentUtils.d.ts +18 -0
  67. package/dist/utils/paymentUtils.d.ts.map +1 -0
  68. package/dist/utils/paymentUtils.js +50 -0
  69. package/dist/utils/paymentUtils.js.map +1 -0
  70. package/dist/utils/promoCodesUtils.d.ts +6 -0
  71. package/dist/utils/promoCodesUtils.d.ts.map +1 -0
  72. package/dist/utils/promoCodesUtils.js +23 -0
  73. package/dist/utils/promoCodesUtils.js.map +1 -0
  74. package/dist/utils/qrCodeUtils.d.ts +4 -0
  75. package/dist/utils/qrCodeUtils.d.ts.map +1 -0
  76. package/dist/utils/qrCodeUtils.js +22 -0
  77. package/dist/utils/qrCodeUtils.js.map +1 -0
  78. package/dist/utils/recurrenceUtils.d.ts +8 -0
  79. package/dist/utils/recurrenceUtils.d.ts.map +1 -0
  80. package/dist/utils/recurrenceUtils.js +153 -0
  81. package/dist/utils/recurrenceUtils.js.map +1 -0
  82. package/dist/utils/reviewUtils.d.ts +29 -0
  83. package/dist/utils/reviewUtils.d.ts.map +1 -0
  84. package/dist/utils/reviewUtils.js +65 -0
  85. package/dist/utils/reviewUtils.js.map +1 -0
  86. package/dist/utils/service/apiServiceBookingApiUtils.d.ts +21 -0
  87. package/dist/utils/service/apiServiceBookingApiUtils.d.ts.map +1 -0
  88. package/dist/utils/service/apiServiceBookingApiUtils.js +131 -0
  89. package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -0
  90. package/dist/utils/service/attendeeOptionUtils.d.ts +11 -0
  91. package/dist/utils/service/attendeeOptionUtils.d.ts.map +1 -0
  92. package/dist/utils/service/attendeeOptionUtils.js +9 -0
  93. package/dist/utils/service/attendeeOptionUtils.js.map +1 -0
  94. package/dist/utils/service/frontendServiceBookingUtils.d.ts +53 -0
  95. package/dist/utils/service/frontendServiceBookingUtils.d.ts.map +1 -0
  96. package/dist/utils/service/frontendServiceBookingUtils.js +134 -0
  97. package/dist/utils/service/frontendServiceBookingUtils.js.map +1 -0
  98. package/dist/utils/service/regexUtils.d.ts +6 -0
  99. package/dist/utils/service/regexUtils.d.ts.map +1 -0
  100. package/dist/utils/service/regexUtils.js +16 -0
  101. package/dist/utils/service/regexUtils.js.map +1 -0
  102. package/dist/utils/service/serviceBookingStatusUtils.d.ts +21 -0
  103. package/dist/utils/service/serviceBookingStatusUtils.d.ts.map +1 -0
  104. package/dist/utils/service/serviceBookingStatusUtils.js +130 -0
  105. package/dist/utils/service/serviceBookingStatusUtils.js.map +1 -0
  106. package/dist/utils/service/serviceBookingTypes.d.ts +19 -0
  107. package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -0
  108. package/dist/utils/service/serviceBookingTypes.js +2 -0
  109. package/dist/utils/service/serviceBookingTypes.js.map +1 -0
  110. package/dist/utils/service/serviceDBUtils.d.ts +5 -0
  111. package/dist/utils/service/serviceDBUtils.d.ts.map +1 -0
  112. package/dist/utils/service/serviceDBUtils.js +48 -0
  113. package/dist/utils/service/serviceDBUtils.js.map +1 -0
  114. package/dist/utils/service/serviceRateDBUtils.d.ts +1 -0
  115. package/dist/utils/service/serviceRateDBUtils.d.ts.map +1 -0
  116. package/dist/utils/service/serviceRateDBUtils.js +159 -0
  117. package/dist/utils/service/serviceRateDBUtils.js.map +1 -0
  118. package/dist/utils/service/serviceRateTypes.d.ts +9 -0
  119. package/dist/utils/service/serviceRateTypes.d.ts.map +1 -0
  120. package/dist/utils/service/serviceRateTypes.js +2 -0
  121. package/dist/utils/service/serviceRateTypes.js.map +1 -0
  122. package/dist/utils/service/serviceRateUtils.d.ts +24 -0
  123. package/dist/utils/service/serviceRateUtils.d.ts.map +1 -0
  124. package/dist/utils/service/serviceRateUtils.js +183 -0
  125. package/dist/utils/service/serviceRateUtils.js.map +1 -0
  126. package/dist/utils/service/serviceUtils.d.ts +83 -0
  127. package/dist/utils/service/serviceUtils.d.ts.map +1 -0
  128. package/dist/utils/service/serviceUtils.js +311 -0
  129. package/dist/utils/service/serviceUtils.js.map +1 -0
  130. package/dist/utils/service/venueUtils.d.ts +13 -0
  131. package/dist/utils/service/venueUtils.d.ts.map +1 -0
  132. package/dist/utils/service/venueUtils.js +18 -0
  133. package/dist/utils/service/venueUtils.js.map +1 -0
  134. package/dist/utils/slugUtils.d.ts +9 -0
  135. package/dist/utils/slugUtils.d.ts.map +1 -0
  136. package/dist/utils/slugUtils.js +47 -0
  137. package/dist/utils/slugUtils.js.map +1 -0
  138. package/dist/utils/sortUtils.d.ts +7 -0
  139. package/dist/utils/sortUtils.d.ts.map +1 -0
  140. package/dist/utils/sortUtils.js +26 -0
  141. package/dist/utils/sortUtils.js.map +1 -0
  142. package/dist/utils/stringUtils.d.ts +2 -0
  143. package/dist/utils/stringUtils.d.ts.map +1 -0
  144. package/dist/utils/stringUtils.js +6 -0
  145. package/dist/utils/stringUtils.js.map +1 -0
  146. package/dist/utils/stripeAccountUtils.d.ts +3 -0
  147. package/dist/utils/stripeAccountUtils.d.ts.map +1 -0
  148. package/dist/utils/stripeAccountUtils.js +10 -0
  149. package/dist/utils/stripeAccountUtils.js.map +1 -0
  150. package/dist/utils/ticketListUtils.d.ts +12 -0
  151. package/dist/utils/ticketListUtils.d.ts.map +1 -0
  152. package/dist/utils/ticketListUtils.js +78 -0
  153. package/dist/utils/ticketListUtils.js.map +1 -0
  154. package/dist/utils/typeUtils.d.ts +11 -0
  155. package/dist/utils/typeUtils.d.ts.map +1 -0
  156. package/dist/utils/typeUtils.js +8 -0
  157. package/dist/utils/typeUtils.js.map +1 -0
  158. package/dist/utils/urlUtils.d.ts +10 -0
  159. package/dist/utils/urlUtils.d.ts.map +1 -0
  160. package/dist/utils/urlUtils.js +66 -0
  161. package/dist/utils/urlUtils.js.map +1 -0
  162. package/dist/utils/userPromoCodeUtils.d.ts +21 -0
  163. package/dist/utils/userPromoCodeUtils.d.ts.map +1 -0
  164. package/dist/utils/userPromoCodeUtils.js +13 -0
  165. package/dist/utils/userPromoCodeUtils.js.map +1 -0
  166. package/dist/utils/userSubscriptionUtils.d.ts +36 -0
  167. package/dist/utils/userSubscriptionUtils.d.ts.map +1 -0
  168. package/dist/utils/userSubscriptionUtils.js +56 -0
  169. package/dist/utils/userSubscriptionUtils.js.map +1 -0
  170. package/dist/utils/userUtils.d.ts +2 -0
  171. package/dist/utils/userUtils.d.ts.map +1 -0
  172. package/dist/utils/userUtils.js +2 -0
  173. package/dist/utils/userUtils.js.map +1 -0
  174. package/package.json +4 -2
  175. package/prisma/schema.prisma +247 -94
  176. package/src/definitions.ts +52 -1
  177. package/src/extendedSchemas.ts +180 -13
  178. package/src/index.ts +32 -21
  179. package/src/utils/apiUtils.ts +0 -0
  180. package/src/utils/arrayUtils.ts +0 -0
  181. package/src/utils/awsS3Utils.ts +0 -0
  182. package/src/utils/blog/blogDbUtils.ts +343 -0
  183. package/src/utils/blogUtils.ts +134 -0
  184. package/src/utils/entityUtils.ts +0 -0
  185. package/src/utils/generalDateTimeUtils.ts +0 -0
  186. package/src/utils/mathUtils.ts +0 -0
  187. package/src/utils/objUtils.ts +0 -0
  188. package/src/utils/paymentUtils.ts +0 -0
  189. package/src/utils/promoCodesUtils.ts +0 -0
  190. package/src/utils/qrCodeUtils.ts +4 -2
  191. package/src/utils/service/attendeeOptionUtils.ts +0 -0
  192. package/src/utils/service/regexUtils.ts +0 -0
  193. package/src/utils/service/serviceBookingStatusUtils.ts +6 -18
  194. package/src/utils/service/serviceDBUtils.ts +0 -0
  195. package/src/utils/service/serviceRateDBUtils.ts +0 -0
  196. package/src/utils/service/serviceUtils.ts +0 -0
  197. package/src/utils/service/venueUtils.ts +0 -0
  198. package/src/utils/slugUtils.ts +60 -0
  199. package/src/utils/sortUtils.ts +0 -0
  200. package/src/utils/stringUtils.ts +0 -0
  201. package/src/utils/stripeAccountUtils.ts +0 -0
  202. package/src/utils/ticketListUtils.ts +24 -6
  203. package/src/utils/urlUtils.ts +0 -0
  204. package/src/utils/userPromoCodeUtils.ts +0 -0
  205. package/src/utils/userSubscriptionUtils.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":"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"}
@@ -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,2 @@
1
+ export declare function asyncFilter<T>(arr: T[], predicate: (t: T) => Promise<boolean>): Promise<T[]>;
2
+ //# sourceMappingURL=arrayUtils.d.ts.map
@@ -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,5 @@
1
+ export async function asyncFilter(arr, predicate) {
2
+ const results = await Promise.all(arr.map(predicate));
3
+ return arr.filter((_v, index) => results[index]);
4
+ }
5
+ //# sourceMappingURL=arrayUtils.js.map
@@ -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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"}