@bash-app/bash-common 17.8.2 → 18.0.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.
@@ -1,277 +1,276 @@
1
- import {
2
- AmountOfGuests,
3
- EventTask,
4
- AssociatedBash,
5
- BashEvent,
6
- Invitation,
7
- BashTargetAudience,
8
- Ticket,
9
- User,
10
- TicketTier, Service, Review, Media, BashComment, Recurrence, Contact,
11
- BashNotification, BashEventPromoCode,
12
- Reminder, ServiceRange,
13
- ServiceTargetAudience,
14
- Checkout,
15
- ServiceLink,
16
- Link, Venue, Availability,
17
- VenueTargetAudience,
18
- } from "@prisma/client";
19
-
20
- export const FRONT_END_USER_DATA_TO_SELECT = {
21
- id: true,
22
- email: true,
23
- givenName: true,
24
- familyName: true,
25
- image: true,
26
- uploadedImage: true,
27
- services: true,
28
- }
29
-
30
- export const PRIVATE_USER_ACCOUNT_TO_SELECT = {
31
- ...FRONT_END_USER_DATA_TO_SELECT,
32
- streetAddress: true,
33
- city: true,
34
- state: true,
35
- postalCode: true,
36
- country: true,
37
- phone: true,
38
- }
39
-
40
- export interface BashEventExt extends BashEvent {
41
- targetAudience?: BashTargetAudience;
42
- amountOfGuests?: AmountOfGuests;
43
- recurrence?: Recurrence;
44
- creator?: PublicUser;
45
- ticketTiers: TicketTierExt[];
46
- media: Media[];
47
- eventTasks: EventTask[];
48
- tickets?: Ticket[]; // Only include tickets that the user has purchased and not all tickets (could be thousands + privacy)
49
- // Do not include in fetch. Could be hundreds of these
50
- invitations: InvitationExt[];
51
- }
52
-
53
- export const TICKET_TIER_DATA_TO_INCLUDE = {
54
- promoCodes: true,
55
- }
56
-
57
- export const BASH_EVENT_DATA_TO_INCLUDE = {
58
- creator: {
59
- select: FRONT_END_USER_DATA_TO_SELECT
60
- },
61
- targetAudience: true,
62
- amountOfGuests: true,
63
- recurrence: true,
64
- ticketTiers: {
65
- include: TICKET_TIER_DATA_TO_INCLUDE
66
- },
67
- eventTasks: true,
68
- media: true,
69
- }
70
-
71
- export const BASH_EVENT_DATA_TO_CLONE = [
72
- 'targetAudience',
73
- 'amountOfGuests',
74
- 'ticketTiers',
75
- 'media',
76
- 'recurrence',
77
- 'invitations',
78
- ] as const;
79
-
80
- export interface BashNotificationExt extends BashNotification {
81
- creator?: PublicUser;
82
- bashEvent?: BashEvent;
83
- eventTask?: EventTask;
84
- invitation?: Invitation;
85
- reminders?: Reminder[];
86
- }
87
-
88
- export const BASH_NOTIFICATION_DATA_TO_INCLUDE = {
89
- bashEvent: {
90
- select: {
91
- coverPhoto: true,
92
- },
93
- },
94
- creator: {
95
- select: {
96
- image: true,
97
- },
98
- },
99
-
100
- }
101
-
102
- export interface EventTaskExt extends EventTask {
103
- creator: PublicUser;
104
- assignedTo?: PublicUser | null;
105
- }
106
-
107
- export const EVENT_TASK_DATA_TO_INCLUDE = {
108
- creator: {
109
- select: FRONT_END_USER_DATA_TO_SELECT
110
- },
111
- assignedTo: {
112
- select: FRONT_END_USER_DATA_TO_SELECT
113
- }
114
- }
115
-
116
- type RemoveCommonProperties<T, U> = keyof (Omit<T, keyof U> & Omit<U, keyof T>);
117
- type UnionFromArray<T extends ReadonlyArray<any>> = T[number];
118
- type BashEventExtMinusDataToCloneType = Omit<BashEventExt, UnionFromArray<typeof BASH_EVENT_DATA_TO_CLONE>>;
119
-
120
- export const BASH_EVENT_DATA_TO_REMOVE: RemoveCommonProperties<BashEvent, BashEventExtMinusDataToCloneType>[] = [
121
- 'creator',
122
- 'eventTasks',
123
- 'tickets'
124
- ];
125
-
126
- export interface VenueExt extends Venue {
127
- service: Service;
128
- availableDateTimes: Availability[];
129
- targetAudience: VenueTargetAudience;
130
- venueLinks: ServiceLinkExt[];
131
- capacity?: AmountOfGuests;
132
- media?: Media[];
133
- }
134
-
135
- export const VENUE_DATA_TO_INCLUDE = {
136
- service: true,
137
- availableDateTimes: true,
138
- targetAudience: true,
139
- venueLinks: true,
140
- capacity: true,
141
- media: true,
142
- }
143
-
144
- export interface ServiceExt extends Service {
145
- owner: PublicUser;
146
- media: Media[];
147
- serviceRange: ServiceRange;
148
- targetAudience: ServiceTargetAudience;
149
- serviceLinks?: ServiceLinkExt[];
150
- venues: VenueExt[];
151
- }
152
-
153
- export interface ServiceLinkExt extends ServiceLink {
154
- link: Link;
155
- }
156
-
157
- export const SERVICE_LINK_DATA_TO_INCLUDE = {
158
- link: true,
159
- }
160
-
161
- export const SERVICE_DATA_TO_INCLUDE = {
162
- owner: {
163
- select: FRONT_END_USER_DATA_TO_SELECT
164
- },
165
- media: true,
166
- serviceRange: true,
167
- targetAudience: true,
168
- serviceLinks: {
169
- include: SERVICE_LINK_DATA_TO_INCLUDE
170
- },
171
- venues: {
172
- include: VENUE_DATA_TO_INCLUDE
173
- }
174
- }
175
-
176
- export interface InvitationExt extends Invitation {
177
- creator: PublicUser;
178
- sentTo: PublicUser;
179
- tickets: Ticket[];
180
- associatedBash?: AssociatedBash | null;
181
- }
182
-
183
- export const INVITATION_DATA_TO_INCLUDE = {
184
- creator: {
185
- select: FRONT_END_USER_DATA_TO_SELECT
186
- },
187
- sentTo: {
188
- select: FRONT_END_USER_DATA_TO_SELECT
189
- },
190
- tickets: true,
191
- }
192
-
193
- export interface InvitationExtraData extends Invitation {
194
- isFreeGuest?: boolean;
195
- isOrganizer?: boolean;
196
- }
197
-
198
- export interface AssociatedBashExt extends AssociatedBash {
199
- bashEvent: BashEventExt;
200
- invitation: InvitationExt;
201
- }
202
-
203
- export const ASSOCIATED_BASH_DATA_TO_INCLUDE = {
204
- bashEvent: {
205
- include: BASH_EVENT_DATA_TO_INCLUDE
206
- },
207
- invitation: {
208
- include: INVITATION_DATA_TO_INCLUDE
209
- }
210
- }
211
-
212
- export interface TicketTierExt extends TicketTier {
213
- bashEvent: BashEvent;
214
- tickets: TicketExt[];
215
- promoCodes: BashEventPromoCode[];
216
- }
217
-
218
- export interface TicketExt extends Ticket {
219
- owner: PublicUser;
220
- forUser: PublicUser;
221
- checkout?: Checkout;
222
- }
223
-
224
- export interface CheckoutExt extends Checkout {
225
- owner: PublicUser;
226
- tickets: Ticket[]
227
- }
228
-
229
- export const CHECKOUT_DATA_TO_INCLUDE = {
230
- owner: {
231
- select: FRONT_END_USER_DATA_TO_SELECT
232
- },
233
- tickets: {
234
- select: {
235
- ownerId: true
236
- }
237
- }
238
- }
239
-
240
- export interface ReviewExt extends Review {
241
- comments: BashComment[];
242
- }
243
-
244
- export const CONTACT_DATA_TO_INCLUDE = {
245
- user: {
246
- select: FRONT_END_USER_DATA_TO_SELECT
247
- },
248
- media: true
249
- };
250
-
251
-
252
- export interface UserExtraData extends User {
253
- password?: string;
254
- otp?: string;
255
- }
256
-
257
- export interface UserExt extends User {
258
- services?: Service[] | null;
259
-
260
- // Do not include in fetch as there could be thousands of these
261
- associatedBashes?: AssociatedBash[] | null;
262
- reviews?: ReviewExt[] | null;
263
- contacts?: Contact[] | null;
264
- ticketsIOwn?: TicketExt[] | null;
265
- }
266
-
267
- export const USER_DATA_SELECT_REVIEWS_COMMENTS = {
268
- reviews: {
269
- include: {
270
- comments: true
271
- }
272
- }
273
- }
274
-
275
-
276
- export type PublicUser = Pick<UserExt, keyof typeof FRONT_END_USER_DATA_TO_SELECT>
277
- & Partial<Pick<UserExt, keyof typeof USER_DATA_SELECT_REVIEWS_COMMENTS>>;
1
+ import {
2
+ AmountOfGuests,
3
+ EventTask,
4
+ AssociatedBash,
5
+ BashEvent,
6
+ Invitation,
7
+ Ticket,
8
+ User,
9
+ TicketTier, Service, Review, Media, BashComment, Recurrence, Contact,
10
+ BashNotification, BashEventPromoCode,
11
+ Reminder, ServiceRange,
12
+ Checkout,
13
+ ServiceLink,
14
+ Link, Venue, Availability,
15
+ TargetAudience,
16
+ } from "@prisma/client";
17
+ import { AttendeeOfBashEvent } from "./definitions";
18
+
19
+ export const FRONT_END_USER_DATA_TO_SELECT = {
20
+ id: true,
21
+ email: true,
22
+ givenName: true,
23
+ familyName: true,
24
+ image: true,
25
+ uploadedImage: true,
26
+ services: true,
27
+ }
28
+
29
+ export const PRIVATE_USER_ACCOUNT_TO_SELECT = {
30
+ ...FRONT_END_USER_DATA_TO_SELECT,
31
+ streetAddress: true,
32
+ city: true,
33
+ state: true,
34
+ postalCode: true,
35
+ country: true,
36
+ phone: true,
37
+ }
38
+
39
+ export interface BashEventExt extends BashEvent {
40
+ targetAudience?: TargetAudience;
41
+ amountOfGuests?: AmountOfGuests;
42
+ recurrence?: Recurrence;
43
+ creator?: PublicUser;
44
+ ticketTiers: TicketTierExt[];
45
+ media: Media[];
46
+ eventTasks: EventTask[];
47
+ tickets?: Ticket[]; // Only include tickets that the user has purchased and not all tickets (could be thousands + privacy)
48
+ // Do not include in fetch. Could be hundreds of these
49
+ invitations: InvitationExt[];
50
+ }
51
+
52
+ export const TICKET_TIER_DATA_TO_INCLUDE = {
53
+ promoCodes: true,
54
+ }
55
+
56
+ export const BASH_EVENT_DATA_TO_INCLUDE = {
57
+ creator: {
58
+ select: FRONT_END_USER_DATA_TO_SELECT
59
+ },
60
+ targetAudience: true,
61
+ amountOfGuests: true,
62
+ recurrence: true,
63
+ ticketTiers: {
64
+ include: TICKET_TIER_DATA_TO_INCLUDE
65
+ },
66
+ eventTasks: true,
67
+ media: true,
68
+ }
69
+
70
+ export const BASH_EVENT_DATA_TO_CLONE = [
71
+ 'targetAudience',
72
+ 'amountOfGuests',
73
+ 'ticketTiers',
74
+ 'media',
75
+ 'recurrence',
76
+ 'invitations',
77
+ ] as const;
78
+
79
+ export interface BashNotificationExt extends BashNotification {
80
+ creator?: PublicUser;
81
+ bashEvent?: BashEvent;
82
+ eventTask?: EventTask;
83
+ invitation?: Invitation;
84
+ reminders?: Reminder[];
85
+ }
86
+
87
+ export const BASH_NOTIFICATION_DATA_TO_INCLUDE = {
88
+ bashEvent: {
89
+ select: {
90
+ coverPhoto: true,
91
+ },
92
+ },
93
+ creator: {
94
+ select: {
95
+ image: true,
96
+ },
97
+ },
98
+
99
+ }
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
+
115
+ type RemoveCommonProperties<T, U> = keyof (Omit<T, keyof U> & Omit<U, keyof T>);
116
+ type UnionFromArray<T extends ReadonlyArray<any>> = T[number];
117
+ type BashEventExtMinusDataToCloneType = Omit<BashEventExt, UnionFromArray<typeof BASH_EVENT_DATA_TO_CLONE>>;
118
+
119
+ export const BASH_EVENT_DATA_TO_REMOVE: RemoveCommonProperties<BashEvent, BashEventExtMinusDataToCloneType>[] = [
120
+ 'creator',
121
+ 'eventTasks',
122
+ 'tickets'
123
+ ];
124
+
125
+ export interface VenueExt extends Venue {
126
+ service: Service;
127
+ availableDateTimes: Availability[];
128
+ targetAudience: TargetAudience;
129
+ venueLinks: ServiceLinkExt[];
130
+ capacity?: AmountOfGuests;
131
+ media?: Media[];
132
+ }
133
+
134
+ export const VENUE_DATA_TO_INCLUDE = {
135
+ service: true,
136
+ availableDateTimes: true,
137
+ targetAudience: true,
138
+ venueLinks: true,
139
+ capacity: true,
140
+ media: true,
141
+ }
142
+
143
+ export interface ServiceExt extends Service {
144
+ owner: PublicUser;
145
+ media: Media[];
146
+ serviceRange: ServiceRange;
147
+ targetAudience: TargetAudience;
148
+ serviceLinks?: ServiceLinkExt[];
149
+ venues: VenueExt[];
150
+ }
151
+
152
+ export interface ServiceLinkExt extends ServiceLink {
153
+ link: Link;
154
+ }
155
+
156
+ export const SERVICE_LINK_DATA_TO_INCLUDE = {
157
+ link: true,
158
+ }
159
+
160
+ export const SERVICE_DATA_TO_INCLUDE = {
161
+ owner: {
162
+ select: FRONT_END_USER_DATA_TO_SELECT
163
+ },
164
+ media: true,
165
+ serviceRange: true,
166
+ targetAudience: true,
167
+ serviceLinks: {
168
+ include: SERVICE_LINK_DATA_TO_INCLUDE
169
+ },
170
+ venues: {
171
+ include: VENUE_DATA_TO_INCLUDE
172
+ }
173
+ }
174
+
175
+ export interface InvitationExt extends Invitation {
176
+ creator: PublicUser;
177
+ sentTo: PublicUser;
178
+ tickets: Ticket[];
179
+ associatedBash?: AssociatedBash | null;
180
+ }
181
+
182
+ export const INVITATION_DATA_TO_INCLUDE = {
183
+ creator: {
184
+ select: FRONT_END_USER_DATA_TO_SELECT
185
+ },
186
+ sentTo: {
187
+ select: FRONT_END_USER_DATA_TO_SELECT
188
+ },
189
+ tickets: true,
190
+ }
191
+
192
+ export interface InvitationExtraData extends Invitation {
193
+ isFreeGuest?: boolean;
194
+ isOrganizer?: boolean;
195
+ }
196
+
197
+ export interface AssociatedBashExt extends AssociatedBash {
198
+ bashEvent: BashEventExt;
199
+ invitation: InvitationExt;
200
+ }
201
+
202
+ export const ASSOCIATED_BASH_DATA_TO_INCLUDE = {
203
+ bashEvent: {
204
+ include: BASH_EVENT_DATA_TO_INCLUDE
205
+ },
206
+ invitation: {
207
+ include: INVITATION_DATA_TO_INCLUDE
208
+ }
209
+ }
210
+
211
+ export interface TicketTierExt extends TicketTier {
212
+ bashEvent: BashEvent;
213
+ tickets: TicketExt[];
214
+ promoCodes: BashEventPromoCode[];
215
+ }
216
+
217
+ export interface TicketExt extends Ticket {
218
+ owner: PublicUser;
219
+ forUser: PublicUser;
220
+ checkout?: Checkout;
221
+ }
222
+
223
+ export interface CheckoutExt extends Checkout {
224
+ owner: PublicUser;
225
+ tickets: Ticket[]
226
+ }
227
+
228
+ export const CHECKOUT_DATA_TO_INCLUDE = {
229
+ owner: {
230
+ select: FRONT_END_USER_DATA_TO_SELECT
231
+ },
232
+ tickets: {
233
+ select: {
234
+ ownerId: true
235
+ }
236
+ }
237
+ }
238
+
239
+ export interface ReviewExt extends Review {
240
+ comments: BashComment[];
241
+ }
242
+
243
+ export const CONTACT_DATA_TO_INCLUDE = {
244
+ user: {
245
+ select: FRONT_END_USER_DATA_TO_SELECT
246
+ },
247
+ media: true
248
+ };
249
+
250
+
251
+ export interface UserExtraData extends User {
252
+ password?: string;
253
+ otp?: string;
254
+ }
255
+
256
+ export interface UserExt extends User {
257
+ services?: Service[] | null;
258
+
259
+ // Do not include in fetch as there could be thousands of these
260
+ associatedBashes?: AssociatedBash[] | null;
261
+ reviews?: ReviewExt[] | null;
262
+ contacts?: Contact[] | null;
263
+ ticketsIOwn?: TicketExt[] | null;
264
+ }
265
+
266
+ export const USER_DATA_SELECT_REVIEWS_COMMENTS = {
267
+ reviews: {
268
+ include: {
269
+ comments: true
270
+ }
271
+ }
272
+ }
273
+
274
+
275
+ export type PublicUser = Pick<UserExt, keyof typeof FRONT_END_USER_DATA_TO_SELECT>
276
+ & Partial<Pick<UserExt, keyof typeof USER_DATA_SELECT_REVIEWS_COMMENTS>>;
package/src/index.ts CHANGED
@@ -1,13 +1,13 @@
1
- export * from "./extendedSchemas";
2
- export * from "./definitions";
3
- export * from "./utils/ticketListUtils";
4
- export * from "./utils/dateTimeUtils";
5
- export * from "./utils/recurrenceUtils";
6
- export * from "./utils/addressUtils";
7
- export * from "./utils/paymentUtils";
8
- export * from "./utils/awsS3Utils";
9
- export * from "./utils/qrCodeUtils";
10
- export * from "./utils/sortUtils";
11
- export * from "./utils/apiUtils";
12
- export * from "./utils/urlUtils";
13
- export * from "./utils/promoCodesUtils";
1
+ export * from "./extendedSchemas";
2
+ export * from "./definitions";
3
+ export * from "./utils/ticketListUtils";
4
+ export * from "./utils/dateTimeUtils";
5
+ export * from "./utils/recurrenceUtils";
6
+ export * from "./utils/addressUtils";
7
+ export * from "./utils/paymentUtils";
8
+ export * from "./utils/awsS3Utils";
9
+ export * from "./utils/qrCodeUtils";
10
+ export * from "./utils/sortUtils";
11
+ export * from "./utils/apiUtils";
12
+ export * from "./utils/urlUtils";
13
+ export * from "./utils/promoCodesUtils";