@bash-app/bash-common 15.1.1 → 15.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bash-app/bash-common",
3
- "version": "15.1.1",
3
+ "version": "15.2.0",
4
4
  "description": "Common data and scripts to use on the frontend and backend",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -11,7 +11,7 @@ import {
11
11
  User,
12
12
  YearsOfExperience
13
13
  } from "@prisma/client";
14
- import { CheckoutExt } from "./extendedSchemas";
14
+ import { CheckoutExt, PublicUser } from "./extendedSchemas";
15
15
 
16
16
  export const PASSWORD_MIN_LENGTH = 10 as const;
17
17
  export const PASSWORD_REQUIREMENTS_REGEX = new RegExp(String.raw`^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{${PASSWORD_MIN_LENGTH},}$`);
@@ -87,7 +87,7 @@ export const ASSET_MAX_MD5_BYTE_LENGTH = 1024 * 100; // 100kb
87
87
 
88
88
  export type DateTimeArgType = Date | string | undefined | null;
89
89
  export type RequiredStripeInfoMissingErrorDataType = { [k in keyof User]?: { type: string, label: string } };
90
- export type ContactOrUser = Contact | User;
90
+ export type ContactOrUser = Contact | PublicUser;
91
91
 
92
92
  export type FilterFields = {
93
93
  price: string[];
@@ -110,7 +110,7 @@ export interface DeletedAndHiddenTiers {
110
110
  }
111
111
 
112
112
  export interface AttendeeOfBashEvent {
113
- user: User;
113
+ user: PublicUser;
114
114
  tickets: Ticket[];
115
115
  }
116
116
 
@@ -40,7 +40,7 @@ export interface BashEventExt extends BashEvent {
40
40
  targetAudience?: TargetAudience;
41
41
  amountOfGuests?: AmountOfGuests;
42
42
  recurrence?: Recurrence;
43
- creator?: User;
43
+ creator?: PublicUser;
44
44
  ticketTiers: TicketTierExt[];
45
45
  media: Media[];
46
46
  eventTasks: EventTask[];
@@ -49,17 +49,14 @@ export interface BashEventExt extends BashEvent {
49
49
  invitations: InvitationExt[];
50
50
  }
51
51
 
52
- export const BASH_EVENT_DATA_TO_SELECT = {
53
- creator: {
54
- select: FRONT_END_USER_DATA_TO_SELECT
55
- }
56
- }
57
-
58
52
  export const TICKET_TIER_DATA_TO_INCLUDE = {
59
53
  promoCodes: true,
60
54
  }
61
55
 
62
56
  export const BASH_EVENT_DATA_TO_INCLUDE = {
57
+ creator: {
58
+ select: FRONT_END_USER_DATA_TO_SELECT
59
+ },
63
60
  targetAudience: true,
64
61
  amountOfGuests: true,
65
62
  recurrence: true,
@@ -80,7 +77,7 @@ export const BASH_EVENT_DATA_TO_CLONE = [
80
77
  ] as const;
81
78
 
82
79
  export interface BashNotificationExt extends BashNotification {
83
- creator?: User;
80
+ creator?: PublicUser;
84
81
  bashEvent?: BashEvent;
85
82
  eventTask?: EventTask;
86
83
  invitation?: Invitation;
@@ -88,19 +85,33 @@ export interface BashNotificationExt extends BashNotification {
88
85
  }
89
86
 
90
87
  export const BASH_NOTIFICATION_DATA_TO_INCLUDE = {
91
- bashEvent: {
92
- select: {
93
- coverPhoto: true,
94
- },
88
+ bashEvent: {
89
+ select: {
90
+ coverPhoto: true,
95
91
  },
96
- creator: {
97
- select: {
98
- image: true,
99
- },
92
+ },
93
+ creator: {
94
+ select: {
95
+ image: true,
100
96
  },
97
+ },
101
98
 
102
99
  }
103
100
 
101
+ export interface EventTaskExt extends EventTask {
102
+ creator: PublicUser;
103
+ assignedTo?: PublicUser | null;
104
+ }
105
+
106
+ export const EVENT_TASK_DATA_TO_INCLUDE = {
107
+ creator: {
108
+ select: FRONT_END_USER_DATA_TO_SELECT
109
+ },
110
+ assignedTo: {
111
+ select: FRONT_END_USER_DATA_TO_SELECT
112
+ }
113
+ }
114
+
104
115
  type RemoveCommonProperties<T, U> = keyof (Omit<T, keyof U> & Omit<U, keyof T>);
105
116
  type UnionFromArray<T extends ReadonlyArray<any>> = T[number];
106
117
  type BashEventExtMinusDataToCloneType = Omit<BashEventExt, UnionFromArray<typeof BASH_EVENT_DATA_TO_CLONE>>;
@@ -122,7 +133,7 @@ export const VENUE_DATA_TO_INCLUDE = {
122
133
  }
123
134
 
124
135
  export interface ServiceExt extends Service {
125
- owner: User;
136
+ owner: PublicUser;
126
137
  media: Media[];
127
138
  crowdSize: ServiceRange;
128
139
  serviceRange: ServiceRange;
@@ -155,15 +166,19 @@ export const SERVICE_DATA_TO_INCLUDE = {
155
166
  }
156
167
 
157
168
  export interface InvitationExt extends Invitation {
158
- creator: User;
159
- sentTo: User;
169
+ creator: PublicUser;
170
+ sentTo: PublicUser;
160
171
  tickets: Ticket[];
161
172
  associatedBash?: AssociatedBash | null;
162
173
  }
163
174
 
164
175
  export const INVITATION_DATA_TO_INCLUDE = {
165
- creator: true,
166
- sentTo: true,
176
+ creator: {
177
+ select: FRONT_END_USER_DATA_TO_SELECT
178
+ },
179
+ sentTo: {
180
+ select: FRONT_END_USER_DATA_TO_SELECT
181
+ },
167
182
  tickets: true,
168
183
  }
169
184
 
@@ -193,13 +208,13 @@ export interface TicketTierExt extends TicketTier {
193
208
  }
194
209
 
195
210
  export interface TicketExt extends Ticket {
196
- owner: User;
197
- forUser: User;
211
+ owner: PublicUser;
212
+ forUser: PublicUser;
198
213
  checkout?: Checkout;
199
214
  }
200
215
 
201
216
  export interface CheckoutExt extends Checkout {
202
- owner: User;
217
+ owner: PublicUser;
203
218
  tickets: Ticket[]
204
219
  }
205
220
 
@@ -232,13 +247,13 @@ export interface UserExtraData extends User {
232
247
  }
233
248
 
234
249
  export interface UserExt extends User {
235
- services?: Service[];
250
+ services?: Service[] | null;
236
251
 
237
252
  // Do not include in fetch as there could be thousands of these
238
- associatedBashes?: AssociatedBash[]
239
- reviews?: ReviewExt[];
240
- contacts?: Contact[];
241
- ticketsIOwn?: TicketExt[];
253
+ associatedBashes?: AssociatedBash[] | null;
254
+ reviews?: ReviewExt[] | null;
255
+ contacts?: Contact[] | null;
256
+ ticketsIOwn?: TicketExt[] | null;
242
257
  }
243
258
 
244
259
  export const USER_DATA_SELECT_REVIEWS_COMMENTS = {
@@ -250,5 +265,5 @@ export const USER_DATA_SELECT_REVIEWS_COMMENTS = {
250
265
  }
251
266
 
252
267
 
253
- export type Public_User = Pick<UserExt, keyof typeof FRONT_END_USER_DATA_TO_SELECT>
268
+ export type PublicUser = Pick<UserExt, keyof typeof FRONT_END_USER_DATA_TO_SELECT>
254
269
  & Partial<Pick<UserExt, keyof typeof USER_DATA_SELECT_REVIEWS_COMMENTS>>;
@@ -1,8 +1,8 @@
1
1
  import {BashEvent, Contact, User } from "@prisma/client";
2
2
  import {ContactOrUser} from "../definitions";
3
- import {Public_User} from "../extendedSchemas";
3
+ import {PublicUser} from "../extendedSchemas";
4
4
 
5
- type CombinedUser = User | Public_User;
5
+ type CombinedUser = User | PublicUser;
6
6
  type CombinedUserOrContact = CombinedUser | Contact;
7
7
 
8
8
  export function isContactAndNotUser(contactOrUser: Partial<ContactOrUser>): contactOrUser is Contact {
@@ -17,17 +17,21 @@ export function ticketListToString(ticketList: Map<string, NumberOfTicketsForDat
17
17
  const ticketListArr: string[] = [];
18
18
 
19
19
  for (const [ticketTierId, ticketListArgs] of ticketList.entries()) {
20
+ let ticketsExist = true;
20
21
  const ticketArgs: string[] = [`${ticketTierId}${URL_PARAMS_TICKET_TIER_ID_NUMBER_OF_TICKETS_DATE_DELIM}`];
21
22
  for (const ticketNumAndDates of ticketListArgs) {
22
23
  if (ticketNumAndDates.numberOfTickets > 0) {
24
+ ticketsExist = true;
23
25
  ticketArgs.push(
24
26
  `${ticketNumAndDates.numberOfTickets}${URL_PARAMS_TICKETS_DATE_DELIM}${ticketNumAndDates.ticketDateTime}`);
25
27
  }
26
28
  else {
27
- continue;
29
+ ticketsExist = false;
28
30
  }
29
31
  }
30
- ticketListArr.push(ticketArgs.join(URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM));
32
+ if (ticketsExist) {
33
+ ticketListArr.push(ticketArgs.join(URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM));
34
+ }
31
35
  }
32
36
  return ticketListArr.join(URL_PARAMS_TICKET_LIST_DELIM);
33
37
  }