@bash-app/bash-common 9.2.1 → 9.3.1

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