lancer-shared 1.2.2 → 1.2.3

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 (154) hide show
  1. package/dist/constants/collections.js +11 -13
  2. package/dist/constants/common-questions.js +1 -4
  3. package/dist/constants/index.js +10 -32
  4. package/dist/constants/job-filter-options.js +1 -4
  5. package/dist/constants/job-status.js +7 -12
  6. package/dist/constants/mappings/countryMapping.js +1 -3
  7. package/dist/constants/mappings/regionMapping.js +1 -3
  8. package/dist/constants/routes.js +43 -35
  9. package/dist/constants/upwork-accounts.js +3 -6
  10. package/dist/index.js +4 -20
  11. package/dist/schemas/account/account-status.js +2 -5
  12. package/dist/schemas/account/bidder-account.js +22 -24
  13. package/dist/schemas/account/index.js +3 -19
  14. package/dist/schemas/account/scraper-account.js +21 -24
  15. package/dist/schemas/ai/ai-config.js +8 -11
  16. package/dist/schemas/ai/index.js +3 -19
  17. package/dist/schemas/ai/proposal.js +10 -13
  18. package/dist/schemas/ai/suitability.js +8 -11
  19. package/dist/schemas/bid/bid-result.js +9 -13
  20. package/dist/schemas/bid/bid.js +29 -30
  21. package/dist/schemas/bid/index.js +2 -18
  22. package/dist/schemas/campaign/campaign-ai-metrics.js +5 -8
  23. package/dist/schemas/campaign/campaign-analytics.js +32 -31
  24. package/dist/schemas/campaign/campaign-expenses.js +5 -8
  25. package/dist/schemas/campaign/campaign-insights.js +30 -30
  26. package/dist/schemas/campaign/campaign-integrations.js +10 -13
  27. package/dist/schemas/campaign/campaign-job-count.js +3 -6
  28. package/dist/schemas/campaign/campaign.js +32 -35
  29. package/dist/schemas/campaign/index.js +7 -23
  30. package/dist/schemas/chat-message/chat-message.js +7 -10
  31. package/dist/schemas/chat-message/index.js +1 -17
  32. package/dist/schemas/config/agency-config.js +6 -9
  33. package/dist/schemas/config/index.js +1 -17
  34. package/dist/schemas/event/index.d.ts +58 -0
  35. package/dist/schemas/index.js +17 -32
  36. package/dist/schemas/job/index.d.ts +95 -3
  37. package/dist/schemas/job-filters/index.js +1 -17
  38. package/dist/schemas/job-filters/job-filters.js +62 -65
  39. package/dist/schemas/lead/index.js +173 -19
  40. package/dist/schemas/lead/lead-note.js +13 -16
  41. package/dist/schemas/lead/lead-status.js +3 -6
  42. package/dist/schemas/lead/nuxt.js +287 -0
  43. package/dist/schemas/logger/index.js +1 -17
  44. package/dist/schemas/logger/log-event.js +100 -49
  45. package/dist/schemas/organization/index.js +70 -17
  46. package/dist/schemas/organization/member.js +7 -0
  47. package/dist/schemas/organization/organization.d.ts +177 -7
  48. package/dist/schemas/organization/organization.js +14 -17
  49. package/dist/schemas/organization/subscription.js +17 -0
  50. package/dist/schemas/proxy/index.js +3 -17
  51. package/dist/schemas/proxy/proxy-available-replacements.js +3 -0
  52. package/dist/schemas/proxy/proxy-country.js +249 -0
  53. package/dist/schemas/proxy/proxy.js +25 -17
  54. package/dist/schemas/saved-search/index.js +8 -11
  55. package/dist/schemas/scraper/index.js +2 -18
  56. package/dist/schemas/scraper/scrape-payload.js +19 -14
  57. package/dist/schemas/scraper/scrape-result.js +21 -21
  58. package/dist/schemas/shared.js +12 -9
  59. package/dist/schemas/time-filter/index.js +5 -8
  60. package/dist/schemas/transaction/index.js +17 -0
  61. package/dist/schemas/usage/index.js +18 -0
  62. package/dist/schemas/user/index.js +38 -41
  63. package/dist/types/account/account-status.js +1 -2
  64. package/dist/types/account/bidder-account.js +1 -2
  65. package/dist/types/account/index.js +3 -19
  66. package/dist/types/account/scraper-account.js +1 -2
  67. package/dist/types/ai/ai-config.js +1 -2
  68. package/dist/types/ai/index.js +3 -19
  69. package/dist/types/ai/proposal.js +1 -2
  70. package/dist/types/ai/suitability.js +1 -2
  71. package/dist/types/bid/bid-result.js +1 -2
  72. package/dist/types/bid/bid.js +1 -2
  73. package/dist/types/bid/index.js +2 -18
  74. package/dist/types/campaign/campaign-analytics.js +1 -2
  75. package/dist/types/campaign/campaign-expenses.js +1 -2
  76. package/dist/types/campaign/campaign-insights.js +1 -2
  77. package/dist/types/campaign/campaign-integrations.js +1 -2
  78. package/dist/types/campaign/campaign-job-count.js +1 -2
  79. package/dist/types/campaign/campaign.js +1 -2
  80. package/dist/types/campaign/index.js +6 -22
  81. package/dist/types/chat-message/chat-message.js +1 -2
  82. package/dist/types/chat-message/index.js +1 -17
  83. package/dist/types/config/agency-config.js +1 -2
  84. package/dist/types/config/index.js +1 -17
  85. package/dist/types/index.js +15 -29
  86. package/dist/types/job/index.js +3 -19
  87. package/dist/types/job/job-note.js +1 -2
  88. package/dist/types/job/job-status.js +1 -4
  89. package/dist/types/job/nuxt.js +1 -0
  90. package/dist/types/job-filters/index.js +1 -17
  91. package/dist/types/job-filters/job-filters.js +1 -2
  92. package/dist/types/logger/index.js +1 -17
  93. package/dist/types/logger/log-event.js +1 -2
  94. package/dist/types/saved-search/index.js +1 -2
  95. package/dist/types/scraper/index.js +2 -18
  96. package/dist/types/scraper/scrape-payload.js +1 -2
  97. package/dist/types/scraper/scrape-result.js +1 -2
  98. package/dist/types/shared.js +1 -0
  99. package/dist/types/time-filter/index.js +1 -2
  100. package/dist/types/transaction/index.js +1 -0
  101. package/dist/types/usage/index.js +1 -0
  102. package/dist/types/user/index.js +1 -2
  103. package/dist/utils/index.js +1 -17
  104. package/dist/utils/try-catch.js +8 -23
  105. package/package.json +2 -2
  106. package/dist/constants/account-status.d.ts +0 -3
  107. package/dist/constants/account-status.js +0 -17
  108. package/dist/schemas/account/manager-account.d.ts +0 -116
  109. package/dist/schemas/account/manager-account.js +0 -38
  110. package/dist/schemas/bidding/index.d.ts +0 -1
  111. package/dist/schemas/bidding/index.js +0 -17
  112. package/dist/schemas/bidding/proposal-bidding-status.d.ts +0 -26
  113. package/dist/schemas/bidding/proposal-bidding-status.js +0 -18
  114. package/dist/schemas/job/index.js +0 -19
  115. package/dist/schemas/job/job-details.d.ts +0 -335
  116. package/dist/schemas/job/job-details.js +0 -29
  117. package/dist/schemas/job/job-note.d.ts +0 -83
  118. package/dist/schemas/job/job-note.js +0 -30
  119. package/dist/schemas/job/job-status.d.ts +0 -3
  120. package/dist/schemas/job/job-status.js +0 -27
  121. package/dist/schemas/job/job.d.ts +0 -1160
  122. package/dist/schemas/job/job.js +0 -90
  123. package/dist/schemas/job/pipeline-job.d.ts +0 -602
  124. package/dist/schemas/job/pipeline-job.js +0 -42
  125. package/dist/schemas/job/upwork-job.d.ts +0 -334
  126. package/dist/schemas/job/upwork-job.js +0 -60
  127. package/dist/schemas/lead/lead.d.ts +0 -1897
  128. package/dist/schemas/lead/lead.js +0 -143
  129. package/dist/schemas/upwork-account/index.d.ts +0 -3
  130. package/dist/schemas/upwork-account/index.js +0 -19
  131. package/dist/schemas/upwork-account/upwork-account-status.d.ts +0 -2
  132. package/dist/schemas/upwork-account/upwork-account-status.js +0 -11
  133. package/dist/schemas/upwork-account/upwork-business-manager-account.d.ts +0 -95
  134. package/dist/schemas/upwork-account/upwork-business-manager-account.js +0 -35
  135. package/dist/schemas/upwork-account/upwork-scraping-account.d.ts +0 -90
  136. package/dist/schemas/upwork-account/upwork-scraping-account.js +0 -29
  137. package/dist/types/account/manager-account.d.ts +0 -7
  138. package/dist/types/account/manager-account.js +0 -2
  139. package/dist/types/bidding/index.d.ts +0 -1
  140. package/dist/types/bidding/index.js +0 -17
  141. package/dist/types/bidding/proposal-bidding-status.d.ts +0 -3
  142. package/dist/types/bidding/proposal-bidding-status.js +0 -2
  143. package/dist/types/job/job-details.d.ts +0 -36
  144. package/dist/types/job/job-details.js +0 -2
  145. package/dist/types/job/job.d.ts +0 -36
  146. package/dist/types/job/job.js +0 -2
  147. package/dist/types/upwork-account/index.d.ts +0 -3
  148. package/dist/types/upwork-account/index.js +0 -19
  149. package/dist/types/upwork-account/upwork-account-status.d.ts +0 -3
  150. package/dist/types/upwork-account/upwork-account-status.js +0 -2
  151. package/dist/types/upwork-account/upwork-business-manager-account.d.ts +0 -7
  152. package/dist/types/upwork-account/upwork-business-manager-account.js +0 -2
  153. package/dist/types/upwork-account/upwork-scraping-account.d.ts +0 -5
  154. package/dist/types/upwork-account/upwork-scraping-account.js +0 -2
@@ -0,0 +1,287 @@
1
+ import { any, array, boolean, number, object, record, string } from "zod";
2
+ const segmentationDataSchema = object({
3
+ customValue: string().nullable(),
4
+ label: string(),
5
+ name: string(),
6
+ sortOrder: number(),
7
+ type: string(),
8
+ value: string(),
9
+ skill: any().nullable(),
10
+ });
11
+ const clientActivitySchema = object({
12
+ lastBuyerActivity: string(),
13
+ totalApplicants: number(),
14
+ totalHired: number(),
15
+ totalInvitedToInterview: number(),
16
+ unansweredInvites: number(),
17
+ invitationsSent: number(),
18
+ numberOfPositionsToHire: number(),
19
+ });
20
+ const annotationsSchema = object({
21
+ tags: array(string()),
22
+ });
23
+ const budgetSchema = object({
24
+ amount: number(),
25
+ currencyCode: string(),
26
+ });
27
+ const engagementDurationSchema = object({
28
+ label: string(),
29
+ weeks: number(),
30
+ });
31
+ const extendedBudgetInfoSchema = object({
32
+ hourlyBudgetMin: number().nullable(),
33
+ hourlyBudgetMax: number().nullable(),
34
+ hourlyBudgetType: string().nullable(),
35
+ });
36
+ const qualificationsSchema = object({
37
+ countries: any().nullable(),
38
+ earnings: any().nullable(),
39
+ groupRecno: any().nullable(),
40
+ languages: any().nullable(),
41
+ localDescription: any().nullable(),
42
+ localFlexibilityDescription: any().nullable(),
43
+ localMarket: boolean(),
44
+ minJobSuccessScore: number(),
45
+ minOdeskHours: number(),
46
+ onSiteType: any().nullable(),
47
+ prefEnglishSkill: number(),
48
+ regions: any().nullable(),
49
+ risingTalent: boolean(),
50
+ shouldHavePortfolio: boolean(),
51
+ states: any().nullable(),
52
+ tests: any().nullable(),
53
+ timezones: any().nullable(),
54
+ type: number(),
55
+ locationCheckRequired: boolean(),
56
+ group: any().nullable(),
57
+ location: any().nullable(),
58
+ locations: any().nullable(),
59
+ });
60
+ const jobSchema = object({
61
+ status: number(),
62
+ category: object({
63
+ name: string(),
64
+ urlSlug: string(),
65
+ }),
66
+ categoryGroup: object({
67
+ name: string(),
68
+ urlSlug: string(),
69
+ }),
70
+ budget: budgetSchema,
71
+ postedOn: string(),
72
+ publishTime: string(),
73
+ wasRenewed: boolean(),
74
+ startDate: string().nullable(),
75
+ deliveryDate: string().nullable(),
76
+ workload: string().nullable(),
77
+ engagementDuration: engagementDurationSchema,
78
+ extendedBudgetInfo: extendedBudgetInfoSchema,
79
+ contractorTier: number(),
80
+ description: string(),
81
+ segmentationData: array(segmentationDataSchema),
82
+ clientActivity: clientActivitySchema,
83
+ annotations: annotationsSchema,
84
+ uid: string(),
85
+ title: string(),
86
+ type: number(),
87
+ ciphertext: string(),
88
+ access: number(),
89
+ createdOn: string(),
90
+ hideBudget: boolean(),
91
+ notSureProjectDuration: boolean(),
92
+ notSureFreelancersToHire: boolean(),
93
+ notSureExperienceLevel: boolean(),
94
+ numberOfPositionsToHire: number(),
95
+ isContractToHire: boolean(),
96
+ attachments: array(any()),
97
+ isPremium: boolean(),
98
+ qualifications: qualificationsSchema,
99
+ questions: array(object({ question: string(), position: number() })),
100
+ durationIdV3: number(),
101
+ durationLabel: string(),
102
+ });
103
+ const buyerSchema = object({
104
+ isEnterprise: boolean(),
105
+ isPaymentMethodVerified: boolean(),
106
+ stats: object({
107
+ totalAssignments: number(),
108
+ activeAssignmentsCount: number(),
109
+ hoursCount: number(),
110
+ feedbackCount: number(),
111
+ score: number(),
112
+ totalJobsWithHires: number(),
113
+ totalCharges: object({
114
+ amount: number(),
115
+ }),
116
+ }),
117
+ location: object({
118
+ offsetFromUtcMillis: number(),
119
+ countryTimezone: string(),
120
+ city: string(),
121
+ country: string(),
122
+ }),
123
+ company: object({
124
+ isEDCReplicated: any().nullable(),
125
+ contractDate: string(),
126
+ profile: object({
127
+ industry: string(),
128
+ size: number(),
129
+ }),
130
+ name: string().nullable(),
131
+ }),
132
+ jobs: object({
133
+ postedCount: number(),
134
+ openCount: number(),
135
+ }),
136
+ avgHourlyJobsRate: object({
137
+ amount: number(),
138
+ }).nullable(),
139
+ });
140
+ const currentUserInfoSchema = object({
141
+ owner: boolean(),
142
+ freelancerInfo: object({
143
+ profileState: string(),
144
+ applied: any().nullable(),
145
+ devProfileCiphertext: string(),
146
+ hired: any().nullable(),
147
+ application: record(any()),
148
+ pendingInvite: record(any()),
149
+ contract: any().nullable(),
150
+ hourlyRate: object({
151
+ amount: number(),
152
+ }),
153
+ qualificationsMatches: object({
154
+ matches: array(object({
155
+ clientPreferred: string(),
156
+ clientPreferredLabel: string().nullable(),
157
+ freelancerValue: string(),
158
+ freelancerValueLabel: string(),
159
+ qualification: number(),
160
+ qualified: boolean(),
161
+ })),
162
+ }),
163
+ }),
164
+ });
165
+ const workHistorySchema = array(object({
166
+ isPtcJob: any().nullable(),
167
+ status: any().nullable(),
168
+ isEDCReplicated: any().nullable(),
169
+ startDate: string(),
170
+ endDate: string(),
171
+ totalCharge: number(),
172
+ totalHours: number(),
173
+ jobInfo: object({
174
+ title: string(),
175
+ id: any().nullable(),
176
+ uid: any().nullable(),
177
+ access: number(),
178
+ type: number(),
179
+ ciphertext: any().nullable(),
180
+ }),
181
+ contractorInfo: object({
182
+ contractorName: string(),
183
+ accessType: string(),
184
+ ciphertext: string(),
185
+ }),
186
+ rate: object({
187
+ amount: number(),
188
+ }).nullable(),
189
+ feedback: object({
190
+ feedbackSuppressed: boolean(),
191
+ score: number(),
192
+ comment: string(),
193
+ feedback_suppressed: boolean(),
194
+ }),
195
+ feedbackToClient: object({
196
+ feedbackSuppressed: boolean(),
197
+ score: number(),
198
+ comment: string(),
199
+ feedback_suppressed: boolean(),
200
+ }),
201
+ isEDCPublic: boolean(),
202
+ }));
203
+ const sandsSchema = object({
204
+ occupation: object({
205
+ freeText: string().nullable(),
206
+ ontologyId: string(),
207
+ prefLabel: string(),
208
+ id: string(),
209
+ uid: string(),
210
+ }),
211
+ ontologySkills: array(any()),
212
+ additionalSkills: array(object({
213
+ uid: string(),
214
+ name: string(),
215
+ isFreeText: boolean(),
216
+ })),
217
+ });
218
+ const connectsSchema = object({
219
+ pricing: object({
220
+ price: number(),
221
+ context: string(),
222
+ auctionPrice: number(),
223
+ }),
224
+ requiredConnects: number(),
225
+ availableConnects: number(),
226
+ chooseConnectsStatus: object({
227
+ isExplainerModalShown: boolean().nullable(),
228
+ }),
229
+ canSeeApplicantsRates: boolean(),
230
+ });
231
+ const authSchema = object({
232
+ canFlagOpening: boolean(),
233
+ canPostJob: boolean(),
234
+ domestic: object({
235
+ country: string().nullable(),
236
+ isInfographicTooltipAvailable: boolean(),
237
+ }),
238
+ });
239
+ const applicationContextSchema = object({
240
+ freelancerAllowed: boolean(),
241
+ clientAllowed: boolean(),
242
+ userIntentEvaluation: object({
243
+ isDeclined: boolean(),
244
+ reason: string().nullable(),
245
+ }),
246
+ canApplyOnBehalfOfAgencyFreelancers: boolean(),
247
+ canSubmitMoreProposals: boolean(),
248
+ submittedProposals: any().nullable(),
249
+ });
250
+ export const nuxtStateJobSchema = object({
251
+ cache: boolean(),
252
+ job: jobSchema,
253
+ buyer: buyerSchema,
254
+ currentUserInfo: currentUserInfoSchema,
255
+ isVisitor: boolean(),
256
+ openJobs: array(any()),
257
+ workHistory: workHistorySchema,
258
+ similarJobs: array(any()),
259
+ sands: sandsSchema,
260
+ auth: authSchema,
261
+ applicants: object({
262
+ applicantsBidsStats: any().nullable(),
263
+ }),
264
+ connects: connectsSchema.nullish(),
265
+ enterpriseJobAdditionalInfo: record(any()),
266
+ applicationContext: applicationContextSchema,
267
+ profileMatchServiceUid: string(),
268
+ seo: object({
269
+ title: string(),
270
+ description: string(),
271
+ url: string(),
272
+ }),
273
+ teamUid: any().nullable(),
274
+ proposalPermissions: object({
275
+ freelancerAllowed: boolean(),
276
+ clientAllowed: boolean(),
277
+ }),
278
+ jobSlug: any().nullable(),
279
+ prefillWith: any().nullable(),
280
+ isGroupOpportunity: boolean(),
281
+ workLocation: any().nullable(),
282
+ isPhoneVerified: boolean(),
283
+ errorResponse: any().nullable(),
284
+ isApplyBlocked: boolean(),
285
+ hasAiInterview: boolean(),
286
+ talentFeePromotion: boolean().nullish(),
287
+ });
@@ -1,17 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./log-event"), exports);
1
+ export * from "./log-event";
@@ -1,66 +1,117 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logEventSchema = exports.LogEventTypeEnum = void 0;
4
- const zod_1 = require("zod");
5
- exports.LogEventTypeEnum = zod_1.z.enum([
1
+ import { boolean, number, object, string, z } from 'zod';
2
+ import { jobActivityOffsetHourSchema, jobActivitySchema, jobListingSchema, } from '../lead';
3
+ import { regionSchema } from '../shared';
4
+ export const LogEventTypeEnum = z.enum([
6
5
  // Scraper Events
7
- "scraperStarted",
8
- "scraperCompleted",
9
- "jobScraped",
10
- "jobsIndexed",
11
- "jobDuplicateSkipped",
12
- "scraperFailed",
13
- "userProfileScrapingStarted",
14
- "userProfileScrapingComplete",
15
- "userProfileScrapingFailed",
6
+ 'scraperStarted',
7
+ 'scraperCompleted',
8
+ 'jobScraped',
9
+ 'jobScrapeFailed',
10
+ 'jobsIndexed',
11
+ 'jobDuplicateSkipped',
12
+ 'scraperFailed',
13
+ 'jobActivityScraped',
14
+ 'jobActivityScrapeFailed',
15
+ // Feed Scraper Events
16
+ 'feedScrapeStarted',
17
+ 'feedScrapeCompleted',
18
+ 'feedScrapeFailed',
19
+ 'jobListingScraped',
16
20
  // Job Sync & Campaign Matching
17
- "jobSyncPublished",
18
- "jobSyncReceived",
19
- "leadsCreatedAndSynced",
21
+ 'jobSyncPublished',
22
+ 'jobSyncReceived',
23
+ 'leadsCreatedAndSynced',
20
24
  // Suitability Events
21
- "suitabilityPending",
22
- "suitabilityProcessing",
23
- "suitabilityComplete",
24
- "suitabilityFailed",
25
- "manualSuitabilityAnalyzed",
25
+ 'suitabilityPending',
26
+ 'suitabilityProcessing',
27
+ 'suitabilityComplete',
28
+ 'suitabilityFailed',
29
+ 'manualSuitabilityAnalyzed',
26
30
  // Proposal Events
27
- "proposalProcessing",
28
- "proposalComplete",
29
- "proposalFailed",
30
- "manualProposalGenerated",
31
+ 'proposalProcessing',
32
+ 'proposalComplete',
33
+ 'proposalFailed',
34
+ 'manualProposalGenerated',
31
35
  // Bidding Events
32
- "biddingProcessing",
33
- "biddingComplete",
34
- "biddingFailed",
35
- "biddingSkipped",
36
- "biddingPending",
36
+ 'biddingProcessing',
37
+ 'biddingComplete',
38
+ 'biddingFailed',
39
+ 'biddingSkipped',
40
+ 'biddingPending',
41
+ 'biddingRetry',
42
+ 'biddingInsufficientConnects',
43
+ 'biddingWarningAlert',
37
44
  // System/Generic Events
38
- "errorLogged",
39
- "cloudTaskRetry",
40
- "manualLeadEdited",
41
- "leadArchived",
42
- "auditTrailLogged",
45
+ 'errorLogged',
46
+ 'cloudTaskRetry',
47
+ 'manualLeadEdited',
48
+ 'leadArchived',
49
+ 'auditTrailLogged',
43
50
  // Knowledge Base Events
44
- "knowledgeBaseGenerationComplete",
45
- "knowledgeBaseGenerationFailed",
51
+ 'knowledgeBaseGenerationComplete',
52
+ 'knowledgeBaseGenerationFailed',
53
+ // Model Chain Events
54
+ 'modelFailed',
46
55
  ]);
47
- exports.logEventSchema = zod_1.z.object({
56
+ export const logEventSchema = z.object({
48
57
  // The type of event (use a z.enum if possible)
49
- type: exports.LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
58
+ type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
50
59
  // The service that triggered the event
51
- source: zod_1.z.string(), // e.g. "lancer-agents", "lancer-bidding"
60
+ source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
52
61
  // Optional: Allow logging non-lead events in the future
53
- resourceType: zod_1.z.string().default("lead"), // e.g. "lead", "campaign", "user"
62
+ resourceType: z.string().default('lead'), // e.g. "lead", "campaign", "user"
54
63
  // ID of the resource (primary entity affected)
55
- resourceId: zod_1.z.string().nullable(), // fallback if leadId is not applicable
64
+ resourceId: z.string().nullable(), // fallback if leadId is not applicable
56
65
  // Lead-level metadata
57
- leadId: zod_1.z.string().nullable(),
58
- campaignId: zod_1.z.string().nullable(),
59
- userId: zod_1.z.string().nullable(),
66
+ leadId: z.string().nullable(),
67
+ campaignId: z.string().nullable(),
68
+ userId: z.string().nullable(),
60
69
  // Reason or message for the event
61
- reason: zod_1.z.string().nullable(),
70
+ reason: z.string().nullable(),
62
71
  // Generic metadata (stacktrace, score, raw request, etc.)
63
- metadata: zod_1.z.record(zod_1.z.unknown()).nullable(),
72
+ metadata: z.record(z.unknown()).nullable(),
64
73
  // Optional timestamp override
65
- timestamp: zod_1.z.number(),
74
+ timestamp: z.number(),
75
+ });
76
+ export const listingScrapedEventMetadata = object({
77
+ listing: jobListingSchema,
78
+ region: regionSchema,
79
+ });
80
+ export const jobActivityScrapedEventMetadata = object({
81
+ activity: jobActivitySchema,
82
+ region: regionSchema,
83
+ offsetHour: jobActivityOffsetHourSchema,
84
+ scrapedAt: number(),
85
+ });
86
+ export const jobActivityScrapeFailedEventMetadata = object({
87
+ listing: jobListingSchema,
88
+ region: regionSchema,
89
+ offsetHour: jobActivityOffsetHourSchema,
90
+ });
91
+ export const feedScrapeStartedEventMetadata = object({
92
+ id: string(),
93
+ startTime: number(),
94
+ region: regionSchema,
95
+ });
96
+ export const feedScrapeCompletedEventMetadata = object({
97
+ id: string(),
98
+ endTime: number(),
99
+ region: regionSchema,
100
+ accountUsername: string(),
101
+ });
102
+ export const biddingCompletedEventMetadata = object({
103
+ biddingAmount: number(),
104
+ boosted: boolean(),
105
+ boostingAmount: number(),
106
+ });
107
+ export const biddingFailedEventMetadata = object({
108
+ errorType: string(),
109
+ errorMessage: string(),
110
+ context: z.string().optional(),
111
+ });
112
+ export const biddingWarningAlertEventMetadata = object({
113
+ warningMessage: string(),
114
+ });
115
+ export const biddingRetryEventMetadata = object({
116
+ errorMessage: string(),
66
117
  });
@@ -1,17 +1,70 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./organization"), exports);
1
+ import { boolean, number, object, string, z } from "zod";
2
+ import { LogEventTypeEnum } from "../logger";
3
+ import { organizationSubscriptionSchema } from "./subscription";
4
+ export const bidConfigSchema = object({
5
+ agencyName: string().nullable(),
6
+ bidderId: string().nullable(),
7
+ contractorName: string().nullable(),
8
+ specialisedProfile: string().nullable(),
9
+ });
10
+ export const organizationTypeSchema = z.enum(["agency", "freelancer"]);
11
+ export const organizationTierEnum = z.enum(["free", "premium"]);
12
+ export const organizationLimitsSchema = object({
13
+ monthlyCredits: number(),
14
+ usedCredits: number(),
15
+ extraCredits: number(),
16
+ });
17
+ export const organizationBillingSchema = object({
18
+ stripeCustomerId: string(),
19
+ savedCard: boolean(),
20
+ creditsRemaining: number(),
21
+ });
22
+ export const organizationSchema = object({
23
+ id: string(),
24
+ name: string(),
25
+ type: organizationTypeSchema,
26
+ tierId: organizationTierEnum,
27
+ subscription: organizationSubscriptionSchema.nullable(),
28
+ bidConfig: bidConfigSchema,
29
+ active: boolean(),
30
+ limits: organizationLimitsSchema,
31
+ billing: organizationBillingSchema.nullable(),
32
+ createdAt: number(),
33
+ updatedAt: number(),
34
+ });
35
+ export const creditDeductionEventTypeEnum = LogEventTypeEnum.extract([
36
+ "suitabilityComplete",
37
+ "proposalComplete",
38
+ ]);
39
+ export const creditDeductionPayloadSchema = object({
40
+ event: creditDeductionEventTypeEnum,
41
+ campaignId: string().nullish(),
42
+ });
43
+ export const aiConfigOldSchema = object({
44
+ id: string(),
45
+ suitabilityPrompt: string().nullable(),
46
+ proposalPrompt: string().nullable(),
47
+ questionProposalPrompt: string().nullable(),
48
+ knowledgeBase: string().nullable(),
49
+ });
50
+ export const aiConfigSchema = object({
51
+ suitabilityRules: string().nullable(),
52
+ coverLetterRules: string().nullable(),
53
+ questionRules: string().nullable(),
54
+ });
55
+ export const knowledgeBaseSchema = object({
56
+ about: string(),
57
+ caseStudies: string(),
58
+ });
59
+ export const notificationConfigSchema = object({
60
+ emailEnabled: boolean(),
61
+ discordWebhookUrl: string().nullable(),
62
+ slackWebhookUrl: string().nullable(),
63
+ });
64
+ export const organizationSettingsSchema = object({
65
+ aiConfig: aiConfigSchema,
66
+ knowledgeBase: knowledgeBaseSchema,
67
+ notifications: notificationConfigSchema,
68
+ });
69
+ export * from "./member";
70
+ export * from "./subscription";
@@ -0,0 +1,7 @@
1
+ import { number, object, string, z } from "zod";
2
+ export const organizationMemberRoleEnum = z.enum(["admin", "member"]);
3
+ export const organizationMemberSchema = object({
4
+ role: organizationMemberRoleEnum,
5
+ joinedAt: number(),
6
+ invitedBy: string(),
7
+ });