@zyacreatives/shared 2.5.24 → 2.5.26

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.
@@ -13,48 +13,60 @@ import {
13
13
  import { MinimalUserSchema } from "./user";
14
14
  import { NormalizedJobSchema } from "./job";
15
15
 
16
+ const ApplicationStatusSchema = z.enum(
17
+ Object.values(APPLICATION_STATUS) as [
18
+ ApplicationStatus,
19
+ ...ApplicationStatus[],
20
+ ],
21
+ );
22
+
23
+ const ExperienceLevelSchema = z.enum(
24
+ Object.values(EXPERIENCE_LEVELS) as [ExperienceLevel, ...ExperienceLevel[]],
25
+ );
26
+
27
+ const JobAvailabilitySchema = z.enum(
28
+ Object.values(JOB_AVAILABILITY_TYPES) as [
29
+ JobAvailabilityTypes,
30
+ ...JobAvailabilityTypes[],
31
+ ],
32
+ );
33
+
16
34
  export const MinimalJobApplicationEntitySchema = z.object({
17
35
  user: MinimalUserSchema,
18
36
  jobId: z.cuid2(),
19
37
  id: z.cuid2(),
20
38
  coverLetter: z.string(),
21
39
  createdAt: z.coerce.date(),
22
- applicationStatus: z.enum(
23
- Object.values(APPLICATION_STATUS) as [
24
- ApplicationStatus,
25
- ...ApplicationStatus[]
26
- ]
27
- ),
40
+ applicationStatus: ApplicationStatusSchema,
28
41
  });
29
42
 
43
+ export type MinimalJobApplicationEntity = z.infer<
44
+ typeof MinimalJobApplicationEntitySchema
45
+ >;
46
+
30
47
  export const BaseJobApplicationEntitySchema = z.object({
31
48
  id: z.string(),
32
49
  createdAt: z.coerce.date(),
33
50
  updatedAt: z.coerce.date(),
34
51
  availability: z.enum(JOB_AVAILABILITY_TYPES).optional(),
35
52
  experienceLevel: z.enum(EXPERIENCE_LEVELS).optional(),
36
-
37
53
  jobId: z.string(),
38
54
  applicantId: z.string(),
39
-
40
55
  firstName: z.string().optional(),
41
56
  lastName: z.string().optional(),
42
57
  emailAddress: z.string().optional(),
43
58
  phoneNumber: z.string().nullable(),
44
-
45
59
  currentRole: z.string(),
46
60
  resumeUrl: z.url(),
47
-
48
61
  workSampleUrls: z
49
62
  .array(
50
63
  z.object({
51
64
  url: z.url(),
52
65
  name: z.string().optional(),
53
66
  mimeType: z.string().optional(),
54
- })
67
+ }),
55
68
  )
56
69
  .optional(),
57
-
58
70
  zyaProjects: z
59
71
  .array(
60
72
  z.object({
@@ -62,31 +74,27 @@ export const BaseJobApplicationEntitySchema = z.object({
62
74
  projectImgUrl: z.url().optional(),
63
75
  projectId: z.string(),
64
76
  tags: z.array(z.string()).optional(),
65
- })
77
+ }),
66
78
  )
67
79
  .optional(),
68
-
69
- applicationStatus: z.enum(
70
- Object.values(APPLICATION_STATUS) as [
71
- ApplicationStatus,
72
- ...ApplicationStatus[]
73
- ]
74
- ),
75
-
80
+ applicationStatus: ApplicationStatusSchema,
76
81
  linkUrls: z
77
82
  .array(
78
83
  z.object({
79
84
  url: z.url(),
80
85
  isPortfolioUrl: z.boolean().optional(),
81
- })
86
+ }),
82
87
  )
83
88
  .optional(),
84
-
85
89
  coverLetter: z.string().nullable(),
86
90
  receiveEmailUpdates: z.boolean(),
87
91
  wagesAmount: z.number().nullable(),
88
92
  });
89
93
 
94
+ export type BaseJobApplicationEntity = z.infer<
95
+ typeof BaseJobApplicationEntitySchema
96
+ >;
97
+
90
98
  export const JobApplicationEntitySchema = z.object({
91
99
  id: z.string(),
92
100
  firstName: z.string().optional(),
@@ -96,14 +104,7 @@ export const JobApplicationEntitySchema = z.object({
96
104
  emailAddress: z.email().optional(),
97
105
  phoneNumber: z.string().optional(),
98
106
  currentRole: z.string().optional(),
99
- experienceLevel: z
100
- .enum(
101
- Object.values(EXPERIENCE_LEVELS) as [
102
- ExperienceLevel,
103
- ...ExperienceLevel[]
104
- ]
105
- )
106
- .optional(),
107
+ experienceLevel: ExperienceLevelSchema.optional(),
107
108
  resumeUrl: z.url(),
108
109
  workSampleUrls: z
109
110
  .array(
@@ -111,7 +112,7 @@ export const JobApplicationEntitySchema = z.object({
111
112
  url: z.url(),
112
113
  name: z.string().optional(),
113
114
  mimeType: z.string().optional(),
114
- })
115
+ }),
115
116
  )
116
117
  .optional(),
117
118
  zyaProjects: z
@@ -121,34 +122,20 @@ export const JobApplicationEntitySchema = z.object({
121
122
  projectImgUrl: z.url(),
122
123
  projectId: z.cuid2(),
123
124
  tags: z.array(z.string()).optional(),
124
- })
125
+ }),
125
126
  )
126
127
  .optional(),
127
- applicationStatus: z
128
- .enum(
129
- Object.values(APPLICATION_STATUS) as [
130
- ApplicationStatus,
131
- ...ApplicationStatus[]
132
- ]
133
- )
134
- .default("Application Sent"),
128
+ applicationStatus: ApplicationStatusSchema.default("Application Sent"),
135
129
  applicantId: z.cuid2(),
136
130
  linkUrls: z
137
131
  .array(
138
- z.object({ url: z.url(), isPortfolioUrl: z.boolean().default(false) })
132
+ z.object({ url: z.url(), isPortfolioUrl: z.boolean().default(false) }),
139
133
  )
140
134
  .optional(),
141
135
  coverLetter: z.string().optional(),
142
136
  receiveEmailUpdates: z.boolean().optional(),
143
- wagesAmount: z.coerce.number().optional().optional(),
144
- availability: z
145
- .enum(
146
- Object.values(JOB_AVAILABILITY_TYPES) as [
147
- JobAvailabilityTypes,
148
- ...JobAvailabilityTypes[]
149
- ]
150
- )
151
- .optional(),
137
+ wagesAmount: z.coerce.number().optional(),
138
+ availability: JobAvailabilitySchema.optional(),
152
139
  createdAt: z.coerce
153
140
  .date()
154
141
  .optional()
@@ -156,6 +143,8 @@ export const JobApplicationEntitySchema = z.object({
156
143
  updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
157
144
  });
158
145
 
146
+ export type JobApplicationEntity = z.infer<typeof JobApplicationEntitySchema>;
147
+
159
148
  export const CreateJobApplicationInputSchema = z.object({
160
149
  jobId: z.cuid2(),
161
150
  applicantId: z.cuid2(),
@@ -165,29 +154,19 @@ export const CreateJobApplicationInputSchema = z.object({
165
154
  emailAddress: z.email().optional(),
166
155
  phoneNumber: z.string().optional(),
167
156
  currentRole: z.string().optional(),
168
- experienceLevel: z
169
- .enum(
170
- Object.values(EXPERIENCE_LEVELS) as [
171
- ExperienceLevel,
172
- ...ExperienceLevel[]
173
- ]
174
- )
175
- .optional(),
176
-
157
+ experienceLevel: ExperienceLevelSchema.optional(),
177
158
  resumeUrl: z.url().optional(),
178
159
  coverLetter: z.string().optional(),
179
-
180
160
  availability: z.enum(JOB_AVAILABILITY_TYPES).optional(),
181
161
  wagesAmount: z.coerce.number().optional(),
182
162
  receiveEmailUpdates: z.boolean().optional(),
183
-
184
163
  workSampleUrls: z
185
164
  .array(
186
165
  z.object({
187
166
  url: z.url(),
188
167
  name: z.string().optional(),
189
168
  mimeType: z.string().optional(),
190
- })
169
+ }),
191
170
  )
192
171
  .optional(),
193
172
  linkUrls: z
@@ -200,46 +179,39 @@ export const CreateJobApplicationInputSchema = z.object({
200
179
  projectId: z.cuid2(),
201
180
  projectImgUrl: z.url(),
202
181
  tags: z.array(z.string()).optional(),
203
- })
182
+ }),
204
183
  )
205
184
  .optional(),
206
185
  });
207
186
 
187
+ export type CreateJobApplicationInput = z.infer<
188
+ typeof CreateJobApplicationInputSchema
189
+ >;
190
+
208
191
  export const TrackedJobApplicationEntitySchema = z.object({
209
192
  id: z.cuid2(),
210
193
  createdAt: z.coerce.date(),
211
- applicationStatus: z.enum(
212
- Object.values(APPLICATION_STATUS) as [
213
- ApplicationStatus,
214
- ...ApplicationStatus[]
215
- ]
216
- ),
194
+ applicationStatus: ApplicationStatusSchema,
217
195
  job: NormalizedJobSchema,
218
196
  });
219
197
 
198
+ export type TrackedJobApplicationEntity = z.infer<
199
+ typeof TrackedJobApplicationEntitySchema
200
+ >;
201
+
220
202
  export const UpdateJobApplicationInputSchema =
221
203
  CreateJobApplicationInputSchema.partial().extend({
222
204
  id: z.cuid2(),
223
- applicationStatus: z
224
- .enum(
225
- Object.values(APPLICATION_STATUS) as [
226
- ApplicationStatus,
227
- ...ApplicationStatus[]
228
- ]
229
- )
230
- .optional(),
205
+ applicationStatus: ApplicationStatusSchema.optional(),
231
206
  });
232
207
 
208
+ export type UpdateJobApplicationInput = z.infer<
209
+ typeof UpdateJobApplicationInputSchema
210
+ >;
211
+
233
212
  export const GetTrackedJobApplicationsInputSchema = z.object({
234
213
  query: z.string().optional(),
235
- status: z
236
- .enum(
237
- Object.values(APPLICATION_STATUS) as [
238
- ApplicationStatus,
239
- ...ApplicationStatus[]
240
- ]
241
- )
242
- .optional(),
214
+ status: ApplicationStatusSchema.optional(),
243
215
  jobType: z
244
216
  .enum(Object.values(JOB_TYPE) as [JobType, ...JobType[]])
245
217
  .optional(),
@@ -247,6 +219,10 @@ export const GetTrackedJobApplicationsInputSchema = z.object({
247
219
  limit: z.coerce.number().min(1).max(100).default(20),
248
220
  });
249
221
 
222
+ export type GetTrackedJobApplicationsInput = z.infer<
223
+ typeof GetTrackedJobApplicationsInputSchema
224
+ >;
225
+
250
226
  export const GetTrackedJobApplicationsOutputSchema = z.object({
251
227
  applications: z.array(TrackedJobApplicationEntitySchema),
252
228
  total: z.number(),
@@ -255,3 +231,7 @@ export const GetTrackedJobApplicationsOutputSchema = z.object({
255
231
  hasNextPage: z.boolean(),
256
232
  hasPrevPage: z.boolean(),
257
233
  });
234
+
235
+ export type GetTrackedJobApplicationsOutput = z.infer<
236
+ typeof GetTrackedJobApplicationsOutputSchema
237
+ >;