lancer-shared 1.2.119 → 1.2.120

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 (73) hide show
  1. package/dist/bundle.cjs.js +902 -323
  2. package/dist/constants/organization.d.ts +2 -2
  3. package/dist/constants/proxies.d.ts +4 -0
  4. package/dist/constants/routes.d.ts +3 -2
  5. package/dist/constants/routes.js +6 -0
  6. package/dist/constants/upwork-filters.d.ts +5 -0
  7. package/dist/constants/upwork-filters.js +75 -0
  8. package/dist/schemas/account/bidder-account.d.ts +12 -7
  9. package/dist/schemas/account/exceptions/no-bidder-accounts-available.d.ts +5 -0
  10. package/dist/schemas/account/scraper-account.d.ts +14 -16
  11. package/dist/schemas/ai-config/ai-config.d.ts +39 -0
  12. package/dist/schemas/ai-config/ai-config.js +12 -0
  13. package/dist/schemas/ai-config/index.d.ts +1 -0
  14. package/dist/schemas/ai-config/index.js +17 -0
  15. package/dist/schemas/bid/bid-status.d.ts +30 -0
  16. package/dist/schemas/bid/bid-status.js +15 -0
  17. package/dist/schemas/bid/exceptions/base-exception.d.ts +4 -0
  18. package/dist/schemas/bid/exceptions/evalute-element.exception.d.ts +5 -0
  19. package/dist/schemas/bid/exceptions/wait-for-function-timeout.d.ts +5 -0
  20. package/dist/schemas/bidding/proposal-dto.d.ts +26 -0
  21. package/dist/schemas/bidding/proposal-dto.js +18 -0
  22. package/dist/schemas/campaign/campaign-integrations.d.ts +0 -5
  23. package/dist/schemas/job/feed-job.d.ts +842 -0
  24. package/dist/schemas/job/index.d.ts +3 -0
  25. package/dist/schemas/job/job-details.d.ts +5711 -305
  26. package/dist/schemas/job/job-exceptions.d.ts +10 -0
  27. package/dist/schemas/job/job-pipeline.d.ts +74 -0
  28. package/dist/schemas/job/job-pipeline.js +29 -0
  29. package/dist/schemas/job/job-suitability.d.ts +12 -0
  30. package/dist/schemas/job/job-suitability.js +13 -0
  31. package/dist/schemas/job/job.d.ts +16 -16
  32. package/dist/schemas/job/pipeline-job.d.ts +9 -3
  33. package/dist/schemas/job/pipeline-job.js +1 -0
  34. package/dist/schemas/knowledge-object/index.d.ts +1 -0
  35. package/dist/schemas/knowledge-object/index.js +17 -0
  36. package/dist/schemas/knowledge-object/knowledge-object.d.ts +128 -0
  37. package/dist/schemas/knowledge-object/knowledge-object.js +47 -0
  38. package/dist/schemas/logger/log-event.d.ts +290 -36
  39. package/dist/schemas/proxy/proxy-available-replacements.d.ts +1 -1
  40. package/dist/schemas/proxy/proxy.d.ts +20 -9
  41. package/dist/schemas/proxy/proxy.js +3 -1
  42. package/dist/schemas/scraper/scrape-payload.d.ts +5 -0
  43. package/dist/schemas/scraper/scrape-response.d.ts +345 -0
  44. package/dist/schemas/scraper/scrape-response.js +9 -0
  45. package/dist/schemas/upwork-account/index.d.ts +1 -1
  46. package/dist/schemas/upwork-account/index.js +1 -1
  47. package/dist/schemas/upwork-account/upwork-business-manager-account.d.ts +14 -14
  48. package/dist/schemas/upwork-account/upwork-business-manager-account.js +2 -2
  49. package/dist/schemas/upwork-account/upwork-scraper-account.d.ts +92 -0
  50. package/dist/schemas/upwork-account/upwork-scraper-account.js +31 -0
  51. package/dist/schemas/upwork-account/upwork-scraping-account.d.ts +23 -23
  52. package/dist/schemas/upwork-account/upwork-scraping-account.js +4 -3
  53. package/dist/types/ai-config/ai-config.d.ts +6 -0
  54. package/dist/types/ai-config/ai-config.js +2 -0
  55. package/dist/types/ai-config/index.d.ts +1 -0
  56. package/dist/types/ai-config/index.js +17 -0
  57. package/dist/types/bid/bid-status.d.ts +5 -0
  58. package/dist/types/bid/bid-status.js +2 -0
  59. package/dist/types/bidding/proposal-dto.d.ts +3 -0
  60. package/dist/types/bidding/proposal-dto.js +2 -0
  61. package/dist/types/job/job-pipeline.d.ts +4 -0
  62. package/dist/types/job/job-pipeline.js +2 -0
  63. package/dist/types/job/job-suitability.d.ts +3 -0
  64. package/dist/types/job/job-suitability.js +2 -0
  65. package/dist/types/knowledge-object/index.d.ts +1 -0
  66. package/dist/types/knowledge-object/index.js +17 -0
  67. package/dist/types/knowledge-object/knowledge-object.d.ts +4 -0
  68. package/dist/types/knowledge-object/knowledge-object.js +2 -0
  69. package/dist/types/scraper/scrape-response.d.ts +4 -0
  70. package/dist/types/scraper/scrape-response.js +2 -0
  71. package/dist/types/upwork-account/upwork-scraping-account.d.ts +2 -2
  72. package/package.json +1 -1
  73. package/dist/schemas/account/bidder-account-rental.d.ts +0 -91
@@ -6419,105 +6419,106 @@ var moment = /*@__PURE__*/getDefaultExportFromCjs(momentExports);
6419
6419
 
6420
6420
  const ROUTES = {
6421
6421
  AUTH: {
6422
- BASE: "auth",
6423
- REGISTER: "auth/register",
6422
+ BASE: 'auth',
6423
+ REGISTER: 'auth/register',
6424
6424
  },
6425
6425
  SYSTEM: {
6426
- BASE: "system",
6426
+ BASE: 'system',
6427
6427
  PROMPTS: {
6428
- BASE: "system/prompts",
6428
+ BASE: 'system/prompts',
6429
6429
  },
6430
6430
  },
6431
6431
  EVENTS: {
6432
- BASE: "events",
6432
+ BASE: 'events',
6433
6433
  BY_ID: (id) => `events/${id}`,
6434
6434
  },
6435
6435
  JOBS: {
6436
- BASE: "jobs",
6436
+ BASE: 'jobs',
6437
6437
  BY_ID: (id) => `jobs/${id}`,
6438
6438
  UPDATE_ACTIVITY: `jobs/update-activity`,
6439
- IMPORT: "jobs/import",
6440
- FILTER_OPTIONS: "jobs/filter-options",
6441
- TOTAL_JOBS: "jobs/total-jobs",
6439
+ IMPORT: 'jobs/import',
6440
+ FILTER_OPTIONS: 'jobs/filter-options',
6441
+ TOTAL_JOBS: 'jobs/total-jobs',
6442
6442
  GET_JOB_TITLE: (jobId) => `jobs/get-job-title/${jobId}`,
6443
- GET_JOBS_COUNT: "jobs/get-jobs-count",
6443
+ GET_JOBS_COUNT: 'jobs/get-jobs-count',
6444
6444
  },
6445
6445
  USERS: {
6446
- BASE: "users",
6446
+ BASE: 'users',
6447
6447
  BY_ID: (id) => `users/${id}`,
6448
6448
  ORGANIZATIONS: (id) => `users/${id}/organizations`,
6449
6449
  },
6450
6450
  COOKIES: {
6451
- BASE: "cookies",
6452
- SCRAPE: "cookies/scrape-cookies",
6451
+ BASE: 'cookies',
6452
+ SCRAPE: 'cookies/scrape-cookies',
6453
6453
  },
6454
6454
  SCRAPING: {
6455
- BASE: "scraping",
6456
- START_SCRAPING: "scraping/start",
6457
- START_WORLDWIDE_SCRAPING: "scraping/start-worldwide",
6458
- START_US_SCRAPING: "scraping/start-us",
6459
- START_UK_SCRAPING: "scraping/start-uk",
6460
- UPDATE_ACTIVITY_4H_WORLDWIDE: "scraping/update-activity/4h",
6461
- UPDATE_ACTIVITY_4H_UK: "scraping/update-activity/4h/uk",
6462
- UPDATE_ACTIVITY_4H_US: "scraping/update-activity/4h/us",
6463
- UPDATE_ACTIVITY_24H_WORLDWIDE: "scraping/update-activity/24h",
6464
- UPDATE_ACTIVITY_24H_UK: "scraping/update-activity/24h/uk",
6465
- UPDATE_ACTIVITY_24H_US: "scraping/update-activity/24h/us",
6466
- SCRAPE_FEED_WORLDWIDE: "scraping/feed-worldwide",
6467
- SCRAPE_FEED_UK: "scraping/feed-uk",
6468
- SCRAPE_FEED_US: "scraping/feed-us",
6469
- SCRAPE_JOB: "scraping/job",
6470
- PROCESS_FEED: "scraping/process-feed",
6471
- SCRAPE_JOB_ACTIVITY: "scraping/job-activity",
6472
- USER_PROFILE: "scraping/user-profile",
6473
- CHECK_LEAD_STATUS: "scraping/check-lead-status",
6455
+ BASE: 'scraping',
6456
+ START_SCRAPING: 'scraping/start',
6457
+ START_WORLDWIDE_SCRAPING: 'scraping/start-worldwide',
6458
+ START_US_SCRAPING: 'scraping/start-us',
6459
+ START_UK_SCRAPING: 'scraping/start-uk',
6460
+ UPDATE_ACTIVITY_4H_WORLDWIDE: 'scraping/update-activity/4h',
6461
+ UPDATE_ACTIVITY_4H_UK: 'scraping/update-activity/4h/uk',
6462
+ UPDATE_ACTIVITY_4H_US: 'scraping/update-activity/4h/us',
6463
+ UPDATE_ACTIVITY_24H_WORLDWIDE: 'scraping/update-activity/24h',
6464
+ UPDATE_ACTIVITY_24H_UK: 'scraping/update-activity/24h/uk',
6465
+ UPDATE_ACTIVITY_24H_US: 'scraping/update-activity/24h/us',
6466
+ SCRAPE_FEED_WORLDWIDE: 'scraping/feed-worldwide',
6467
+ SCRAPE_FEED_UK: 'scraping/feed-uk',
6468
+ SCRAPE_FEED_US: 'scraping/feed-us',
6469
+ SCRAPE_JOB: 'scraping/job',
6470
+ PROCESS_FEED: 'scraping/process-feed',
6471
+ SCRAPE_JOB_ACTIVITY: 'scraping/job-activity',
6472
+ USER_PROFILE: 'scraping/user-profile',
6473
+ CHECK_LEAD_STATUS: 'scraping/check-lead-status',
6474
6474
  },
6475
6475
  ADMIN: {
6476
- BASE: "admin",
6476
+ BASE: 'admin',
6477
6477
  BIDDER_ACCOUNTS: {
6478
- BASE: "admin/bidder-accounts",
6478
+ BASE: 'admin/bidder-accounts',
6479
6479
  BY_ID: (id) => `admin/bidder-accounts/${id}`,
6480
6480
  BY_PROVIDER: (provider) => `admin/bidder-accounts/${provider}`,
6481
6481
  BY_PROVIDER_AND_ID: (provider, id) => `admin/bidder-accounts/${provider}/${id}`,
6482
6482
  },
6483
6483
  SCRAPER_ACCOUNTS: {
6484
- BASE: "admin/scraper-accounts",
6484
+ BASE: 'admin/scraper-accounts',
6485
6485
  BY_ID: (id) => `admin/scraper-accounts/${id}`,
6486
6486
  BY_PROVIDER: (provider) => `admin/scraper-accounts/${provider}`,
6487
6487
  BY_PROVIDER_AND_ID: (provider, id) => `admin/scraper-accounts/${provider}/${id}`,
6488
+ REFRESH_ROTATING_PROXIES: (provider) => `admin/scraper-accounts/${provider}/refresh-rotating-proxies`,
6488
6489
  },
6489
6490
  PROXIES: {
6490
- BASE: "admin/proxies",
6491
+ BASE: 'admin/proxies',
6491
6492
  BY_ID: (id) => `admin/proxies/${id}`,
6492
6493
  REPLACE_PROXY: (id) => `admin/proxies/${id}/replace`,
6493
- SYNC: "admin/proxies/sync",
6494
- AVAILABLE_REPLACEMENTS: "admin/proxies/available-replacements",
6495
- AVAILABLE_COUNTRIES: "admin/proxies/available-countries",
6494
+ SYNC: 'admin/proxies/sync',
6495
+ AVAILABLE_REPLACEMENTS: 'admin/proxies/available-replacements',
6496
+ AVAILABLE_COUNTRIES: 'admin/proxies/available-countries',
6496
6497
  },
6497
6498
  DASHBOARD: {
6498
- CAMPAIGN_STATS: "admin/dashboard/campaign-stats",
6499
+ CAMPAIGN_STATS: 'admin/dashboard/campaign-stats',
6499
6500
  },
6500
6501
  ALERTS: {
6501
- BASE: "admin/alerts",
6502
- SEND_ALERT: "admin/alerts/send",
6502
+ BASE: 'admin/alerts',
6503
+ SEND_ALERT: 'admin/alerts/send',
6503
6504
  },
6504
6505
  AGENT: {
6505
- BASE: "admin/agent",
6506
- TEST_JOB_QUALITY: "admin/agent/test-job-quality",
6507
- TEST_SUITABILITY: "admin/agent/test-suitability",
6508
- TEST_PROPOSAL: "admin/agent/test-proposal",
6506
+ BASE: 'admin/agent',
6507
+ TEST_JOB_QUALITY: 'admin/agent/test-job-quality',
6508
+ TEST_SUITABILITY: 'admin/agent/test-suitability',
6509
+ TEST_PROPOSAL: 'admin/agent/test-proposal',
6509
6510
  },
6510
6511
  },
6511
6512
  BID: {
6512
- BASE: "bid",
6513
+ BASE: 'bid',
6513
6514
  BID_ON_JOB: (userId, campaignId, leadId) => `bid/${userId}/${campaignId}/${leadId}`,
6514
6515
  },
6515
6516
  BIDDER_ACCOUNTS: {
6516
- BASE: "bidder-accounts",
6517
+ BASE: 'bidder-accounts',
6517
6518
  BY_ID: (id) => `bidder-accounts/${id}`,
6518
6519
  },
6519
6520
  ORGANIZATIONS: {
6520
- BASE: "organizations",
6521
+ BASE: 'organizations',
6521
6522
  BY_ID: (id) => `organizations/${id}`,
6522
6523
  ONBOARDING: {
6523
6524
  BASE: (id) => `organizations/${id}/onboarding`,
@@ -6570,8 +6571,8 @@ const ROUTES = {
6570
6571
  BY_PLATFORM: (organizationId, campaignId, platform) => `organizations/${organizationId}/campaigns/${campaignId}/chat-bots/${platform}`,
6571
6572
  OAUTH_URL: (organizationId, campaignId, platform) => `organizations/${organizationId}/campaigns/${campaignId}/chat-bots/${platform}/oauth-url`,
6572
6573
  CALLBACK: (platform) => `chat-bots/${platform}/callback`,
6573
- SEND_NOTIFICATION: () => "chat-bots/send-notification",
6574
- REMOVE_SUITABLE_LEAD_MESSAGE_BUTTONS: () => "chat-bots/remove-suitable-lead-message-buttons",
6574
+ SEND_NOTIFICATION: () => 'chat-bots/send-notification',
6575
+ REMOVE_SUITABLE_LEAD_MESSAGE_BUTTONS: () => 'chat-bots/remove-suitable-lead-message-buttons',
6575
6576
  },
6576
6577
  ACTIVITIES: {
6577
6578
  BASE: (organizationId, campaignId) => `organizations/${organizationId}/campaigns/${campaignId}/activities`,
@@ -6582,26 +6583,26 @@ const ROUTES = {
6582
6583
  USAGE_SUMMARIES: {
6583
6584
  DAILY: {
6584
6585
  BASE: (organizationId) => `usage-summaries/${organizationId}/daily`,
6585
- BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/daily/${moment(date).format("YYYY-MM-DD")}`,
6586
+ BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/daily/${moment(date).format('YYYY-MM-DD')}`,
6586
6587
  },
6587
6588
  WEEKLY: {
6588
6589
  BASE: (organizationId) => `usage-summaries/${organizationId}/weekly`,
6589
- BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/weekly/${moment(date).format("YYYY-WW")}`,
6590
+ BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/weekly/${moment(date).format('YYYY-WW')}`,
6590
6591
  },
6591
6592
  MONTHLY: {
6592
6593
  BASE: (organizationId) => `usage-summaries/${organizationId}/monthly`,
6593
- BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/monthly/${moment(date).format("YYYY-MM")}`,
6594
+ BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/monthly/${moment(date).format('YYYY-MM')}`,
6594
6595
  },
6595
6596
  QUARTERLY: {
6596
6597
  BASE: (organizationId) => `usage-summaries/${organizationId}/quarterly`,
6597
6598
  BY_DATE: (organizationId, date) => {
6598
6599
  const parsed = moment(date);
6599
- return `usage-summaries/${organizationId}/quarterly/${parsed.format("YYYY")}-Q${parsed.quarter()}`;
6600
+ return `usage-summaries/${organizationId}/quarterly/${parsed.format('YYYY')}-Q${parsed.quarter()}`;
6600
6601
  },
6601
6602
  },
6602
6603
  YEARLY: {
6603
6604
  BASE: (organizationId) => `usage-summaries/${organizationId}/yearly`,
6604
- BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/yearly/${moment(date).format("YYYY")}`,
6605
+ BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/yearly/${moment(date).format('YYYY')}`,
6605
6606
  },
6606
6607
  },
6607
6608
  INVOICES: {
@@ -6615,35 +6616,35 @@ const ROUTES = {
6615
6616
  INVOICE_PREVIEW: (id) => `organizations/${id}/invoice-preview`,
6616
6617
  },
6617
6618
  TRANSACTIONS: {
6618
- BASE: "transactions",
6619
+ BASE: 'transactions',
6619
6620
  BY_ID: (id) => `transactions/${id}`,
6620
6621
  },
6621
6622
  AGENT: {
6622
- BASE: "agent",
6623
- SCRAPE_UPWORK_PROFILE: "agent/scrape-upwork-profile",
6624
- GENERATE_DEFAULT_AI_CONFIG: "agent/generate-ai-config",
6625
- TEST_JOB_QUALITY: "agent/test-job-quality",
6626
- TEST_SUITABILITY: "agent/test-suitability",
6627
- TEST_PROPOSAL: "agent/test-proposal",
6628
- TEST_SYSTEM_PROMPTS: "agent/test-system-prompts",
6629
- ANALYZE_LEAD: "agent/analyze-lead",
6630
- GENERATE_PROPOSAL: "agent/generate-proposal",
6631
- BID: "agent/bid",
6623
+ BASE: 'agent',
6624
+ SCRAPE_UPWORK_PROFILE: 'agent/scrape-upwork-profile',
6625
+ GENERATE_DEFAULT_AI_CONFIG: 'agent/generate-ai-config',
6626
+ TEST_JOB_QUALITY: 'agent/test-job-quality',
6627
+ TEST_SUITABILITY: 'agent/test-suitability',
6628
+ TEST_PROPOSAL: 'agent/test-proposal',
6629
+ TEST_SYSTEM_PROMPTS: 'agent/test-system-prompts',
6630
+ ANALYZE_LEAD: 'agent/analyze-lead',
6631
+ GENERATE_PROPOSAL: 'agent/generate-proposal',
6632
+ BID: 'agent/bid',
6632
6633
  },
6633
6634
  PLANS: {
6634
- BASE: "plans",
6635
+ BASE: 'plans',
6635
6636
  BY_ID: (id) => `plans/${id}`,
6636
6637
  },
6637
6638
  NOTIFICATIONS: {
6638
- BASE: "notifications",
6639
- SEND_NOTIFICATION: "notifications/send",
6639
+ BASE: 'notifications',
6640
+ SEND_NOTIFICATION: 'notifications/send',
6640
6641
  },
6641
6642
  USAGE_EVENTS: {
6642
- BASE: "usage-events",
6643
+ BASE: 'usage-events',
6643
6644
  BY_ID: (id) => `usage-events/${id}`,
6644
6645
  },
6645
6646
  BIDDER_INSTANCES: {
6646
- BASE: "bidder-instances",
6647
+ BASE: 'bidder-instances',
6647
6648
  BY_ID: (id) => `bidder-instances/${id}`,
6648
6649
  },
6649
6650
  };
@@ -6657,7 +6658,7 @@ const buildRoute = (route, params = {}) => {
6657
6658
  };
6658
6659
  // Helper function to get route without admin prefix
6659
6660
  const getRouteWithoutAdminPrefix = (route) => {
6660
- return route.replace("admin/", "");
6661
+ return route.replace('admin/', '');
6661
6662
  };
6662
6663
 
6663
6664
  const accountStatusOrder = [
@@ -11082,6 +11083,92 @@ const accountStatusSchema = z.enum([
11082
11083
  'invalid_credentials',
11083
11084
  ]);
11084
11085
 
11086
+ // Enum definitions for fixed options
11087
+ const projectDurationEnum = z.enum(JOB_FILTER_OPTIONS.PROJECT_DURATION);
11088
+ const engagementTypeEnum = z.enum(JOB_FILTER_OPTIONS.ENGAGEMENT_TYPE);
11089
+ const vendorTypeEnum = z.enum(JOB_FILTER_OPTIONS.VENDOR_TYPE);
11090
+ const paymentTypeEnum = z.enum(JOB_FILTER_OPTIONS.PAYMENT_TYPE);
11091
+ const categoryEnum = z.enum(JOB_FILTER_OPTIONS.CATEGORIES);
11092
+ const clientIndustryEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_INDUSTRY);
11093
+ const clientSizeEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_SIZE);
11094
+ const talentTypeEnum = z.enum(JOB_FILTER_OPTIONS.TALENT_TYPE);
11095
+ const englishLevelEnum = z.enum(JOB_FILTER_OPTIONS.ENGLISH_LEVELS);
11096
+ const experienceLevelEnum = z.enum(JOB_FILTER_OPTIONS.EXPERIENCE_LEVELS);
11097
+ const regionEnum = z.enum(["all", "Worldwide", "UKOnly", "USOnly"]);
11098
+ const requiredEarningsEnum = z.union([
11099
+ z.literal(100),
11100
+ z.literal(1000),
11101
+ z.literal(10000),
11102
+ ]);
11103
+ const requiredJSSEnum = z.enum(JOB_FILTER_OPTIONS.REQUIRED_JSS);
11104
+ const isPaymentVerifiedEnum = z.enum(["all", "true", "false"]);
11105
+ const isPhoneVerifiedEnum = z.enum(["all", "true", "false"]);
11106
+ const hasQuestionsEnum = z.enum(["all", "yes", "no"]);
11107
+ // Main job filters schema
11108
+ const jobFiltersSchema = z.object({
11109
+ keywords: z
11110
+ .object({
11111
+ includes: z.string().nullable(),
11112
+ excludes: z.string().nullable(),
11113
+ })
11114
+ .nullable(),
11115
+ isFeatured: z.enum(["all", "true", "false"]).nullable(),
11116
+ regions: z.array(regionEnum).nullable(),
11117
+ categories: z
11118
+ .object({
11119
+ includes: z.array(categoryEnum).nullable(),
11120
+ excludes: z.array(categoryEnum).nullable(),
11121
+ })
11122
+ .nullable(),
11123
+ payment: z
11124
+ .object({
11125
+ paymentType: z.array(paymentTypeEnum).nullable(),
11126
+ minFixedPrice: z.number().nullable(),
11127
+ maxFixedPrice: z.number().nullable(),
11128
+ minHourlyRate: z.number().nullable(),
11129
+ maxHourlyRate: z.number().nullable(),
11130
+ })
11131
+ .nullable(),
11132
+ projectDuration: z.array(projectDurationEnum).nullable(),
11133
+ experienceLevel: z.array(experienceLevelEnum).nullable(),
11134
+ questions: z
11135
+ .object({
11136
+ hasQuestions: arrayType(hasQuestionsEnum),
11137
+ })
11138
+ .nullable(),
11139
+ engagementType: z.array(engagementTypeEnum).nullable(),
11140
+ clientInfo: z
11141
+ .object({
11142
+ isPaymentVerified: isPaymentVerifiedEnum.default("all"),
11143
+ isPhoneVerified: isPhoneVerifiedEnum.default("all"),
11144
+ enterpriseClient: z.enum(["all", "true", "false"]).default("all"),
11145
+ clientLocationIncludes: z.array(z.string()).nullable(),
11146
+ clientLocationExcludes: z.array(z.string()).nullable(),
11147
+ minReviewScore: z.number().min(0).max(5).nullable(),
11148
+ minTotalSpent: z.number().nullable(),
11149
+ minHireRate: z.number().min(0).max(100).nullable(),
11150
+ clientIndustry: z.array(clientIndustryEnum).nullable(),
11151
+ companySize: z.array(clientSizeEnum).nullable(),
11152
+ minJobsPosted: z.number().nullable(),
11153
+ minAvgHourlyRate: z.number().nullable(),
11154
+ minNumReviews: z.number().nullable(),
11155
+ memberSinceFrom: z.string().date().nullable(),
11156
+ memberSinceTo: z.string().date().nullable(),
11157
+ })
11158
+ .nullable(),
11159
+ vendorQualifications: z
11160
+ .object({
11161
+ locationIncludes: z.array(z.string()).nullable(),
11162
+ locationExcludes: z.array(z.string()).nullable(),
11163
+ talentTypes: z.array(talentTypeEnum).nullable(),
11164
+ englishLevels: z.array(englishLevelEnum).nullable(),
11165
+ includeRisingTalent: z.string().nullable(),
11166
+ requiredEarnings: requiredEarningsEnum.nullable(),
11167
+ requiredJSS: z.array(requiredJSSEnum).nullable(),
11168
+ })
11169
+ .nullable(),
11170
+ });
11171
+
11085
11172
  const proxyCountryEnum = z.enum([
11086
11173
  'US',
11087
11174
  'CA',
@@ -11332,11 +11419,16 @@ const proxyCountryEnum = z.enum([
11332
11419
  ]);
11333
11420
 
11334
11421
  const proxyStatusSchema = z.enum([
11335
- "invalid",
11336
- "valid",
11337
- "pending_validation",
11422
+ 'invalid',
11423
+ 'valid',
11424
+ 'pending_validation',
11338
11425
  ]);
11339
- const proxyProviderSchema = z.enum(["webshare", "decodo"]);
11426
+ const proxyProviderSchema = z.enum([
11427
+ 'webshare',
11428
+ 'decodo',
11429
+ 'proxy-cheap',
11430
+ ]);
11431
+ const proxyTypeSchema = z.enum(['rotating', 'static']);
11340
11432
  const proxySchema = z.object({
11341
11433
  id: z.string(),
11342
11434
  externalId: z.string(),
@@ -11350,6 +11442,7 @@ const proxySchema = z.object({
11350
11442
  status: proxyStatusSchema.nullable(),
11351
11443
  country: proxyCountryEnum.nullable(),
11352
11444
  accountId: z.string().nullable(),
11445
+ type: proxyTypeSchema,
11353
11446
  });
11354
11447
  const externalProxySchema = proxySchema.omit({
11355
11448
  id: true,
@@ -11361,6 +11454,113 @@ const externalProxySchema = proxySchema.omit({
11361
11454
 
11362
11455
  const proxyAvailableReplacementsSchema = z.record(proxyProviderSchema, z.number());
11363
11456
 
11457
+ const bidderAccountProvider = z.enum([
11458
+ 'user-provided',
11459
+ 'lancer-provided',
11460
+ ]);
11461
+ const bidderAccountAgencySchema = z.object({
11462
+ name: z.string(),
11463
+ logoUrl: z.string().nullable(),
11464
+ contractors: z.array(z.string()),
11465
+ organizationId: z.string(),
11466
+ });
11467
+ const bidderAccountSchema = z.object({
11468
+ id: z.string(),
11469
+ provider: bidderAccountProvider,
11470
+ email: z.string().email(),
11471
+ password: z.string(),
11472
+ securityQuestionAnswer: z.string().nullable(),
11473
+ assignedOrganizations: z.array(z.string()),
11474
+ googleOauthTokens: z.any().nullable(),
11475
+ lastUsed: z.number().nullable(),
11476
+ multiLoginProfileId: z.string().nullable(),
11477
+ proxyId: z.string().nullable(),
11478
+ profilePhotoUrl: z.string().nullable(),
11479
+ name: z.string().nullable(),
11480
+ agencies: z.array(bidderAccountAgencySchema).nullable(),
11481
+ instanceId: stringType().nullable(),
11482
+ createdAt: z.number(),
11483
+ updatedAt: z.number(),
11484
+ region: regionEnum,
11485
+ isProtected: z.boolean().optional(),
11486
+ });
11487
+ const createBidderAccountSchema = bidderAccountSchema
11488
+ .pick({
11489
+ email: true,
11490
+ password: true,
11491
+ provider: true,
11492
+ securityQuestionAnswer: true,
11493
+ profilePhotoUrl: true,
11494
+ name: true,
11495
+ agencies: true,
11496
+ assignedOrganizations: true,
11497
+ region: true,
11498
+ })
11499
+ .extend({
11500
+ proxyCountry: proxyCountryEnum.nullable(),
11501
+ });
11502
+ const updateBidderAccountSchema = bidderAccountSchema
11503
+ .omit({
11504
+ id: true,
11505
+ })
11506
+ .partial();
11507
+ const verifyBidderAccountCredentialsSchema = z.object({
11508
+ email: z.string().email(),
11509
+ password: z.string(),
11510
+ securityQuestionAnswer: z.string(),
11511
+ multiloginProfileId: z.string(),
11512
+ proxy: proxySchema,
11513
+ });
11514
+ const verifyBidderAccountCredentialsResponseSchema = z.object({
11515
+ accountName: z.string().nullable(),
11516
+ accountPhotoUrl: z.string().nullable(),
11517
+ agencies: z.array(bidderAccountAgencySchema).nullable(),
11518
+ });
11519
+ const acceptUpworkInvitationSchema = z.object({
11520
+ code: z.string(),
11521
+ });
11522
+ const acceptUpworkInvitationResponseSchema = z.object({
11523
+ agencyName: z.string(),
11524
+ photoUrl: z.string(),
11525
+ contractors: z.array(z.string()),
11526
+ });
11527
+
11528
+ class BidderAccountAlreadyConnectedException extends Error {
11529
+ code = 'BIDDER_ACCOUNT_ALREADY_CONNECTED';
11530
+ email;
11531
+ constructor(email) {
11532
+ super(`Bidder account ${email} is already connected to a scraper account`);
11533
+ this.email = email;
11534
+ }
11535
+ }
11536
+ const bidderAccountAlreadyConnectedException = (email) => new BidderAccountAlreadyConnectedException(email);
11537
+
11538
+ class InvalidGoogleOAuthTokenException extends Error {
11539
+ code = 'INVALID_GOOGLE_OAUTH_TOKEN';
11540
+ constructor(message) {
11541
+ super(message);
11542
+ }
11543
+ }
11544
+ const invalidGoogleOAuthTokenSchema = (message) => new InvalidGoogleOAuthTokenException(message);
11545
+
11546
+ class NoBidderAccountsAvailableException extends Error {
11547
+ code = 'NO_BIDDER_ACCOUNTS_AVAILABLE';
11548
+ constructor(message) {
11549
+ super(message);
11550
+ }
11551
+ }
11552
+ const noBidderAccountsAvailableException = (message) => {
11553
+ return new NoBidderAccountsAvailableException(message);
11554
+ };
11555
+
11556
+ class NoGoogleOAuthTokensFoundException extends Error {
11557
+ code = 'NO_GOOGLE_OAUTH_TOKENS_FOUND';
11558
+ constructor(message) {
11559
+ super(message);
11560
+ }
11561
+ }
11562
+ const noGoogleOAuthTokensFoundException = (message) => new NoGoogleOAuthTokensFoundException(message);
11563
+
11364
11564
  const booleanSchema = z
11365
11565
  .union([z.boolean(), z.literal("true"), z.literal("false")])
11366
11566
  .transform((value) => value === true || value === "true");
@@ -11380,7 +11580,7 @@ const regionSchema = z.union([
11380
11580
  z.literal("Worldwide"),
11381
11581
  ]);
11382
11582
 
11383
- const segmentationDataSchema = objectType({
11583
+ const segmentationDataSchema$1 = objectType({
11384
11584
  customValue: stringType().nullable(),
11385
11585
  label: stringType(),
11386
11586
  name: stringType(),
@@ -11389,7 +11589,7 @@ const segmentationDataSchema = objectType({
11389
11589
  value: stringType(),
11390
11590
  skill: anyType().nullable(),
11391
11591
  });
11392
- const clientActivitySchema = objectType({
11592
+ const clientActivitySchema$1 = objectType({
11393
11593
  lastBuyerActivity: stringType(),
11394
11594
  totalApplicants: numberType(),
11395
11595
  totalHired: numberType(),
@@ -11398,23 +11598,23 @@ const clientActivitySchema = objectType({
11398
11598
  invitationsSent: numberType(),
11399
11599
  numberOfPositionsToHire: numberType(),
11400
11600
  });
11401
- const annotationsSchema = objectType({
11601
+ const annotationsSchema$1 = objectType({
11402
11602
  tags: arrayType(stringType()),
11403
11603
  });
11404
- const budgetSchema = objectType({
11604
+ const budgetSchema$1 = objectType({
11405
11605
  amount: numberType(),
11406
11606
  currencyCode: stringType(),
11407
11607
  });
11408
- const engagementDurationSchema = objectType({
11608
+ const engagementDurationSchema$1 = objectType({
11409
11609
  label: stringType(),
11410
11610
  weeks: numberType(),
11411
11611
  });
11412
- const extendedBudgetInfoSchema = objectType({
11612
+ const extendedBudgetInfoSchema$1 = objectType({
11413
11613
  hourlyBudgetMin: numberType().nullable(),
11414
11614
  hourlyBudgetMax: numberType().nullable(),
11415
11615
  hourlyBudgetType: stringType().nullable(),
11416
11616
  });
11417
- const qualificationsSchema = objectType({
11617
+ const qualificationsSchema$1 = objectType({
11418
11618
  countries: anyType().nullable(),
11419
11619
  earnings: anyType().nullable(),
11420
11620
  groupRecno: anyType().nullable(),
@@ -11448,20 +11648,20 @@ const jobSchema = objectType({
11448
11648
  name: stringType(),
11449
11649
  urlSlug: stringType(),
11450
11650
  }),
11451
- budget: budgetSchema,
11651
+ budget: budgetSchema$1,
11452
11652
  postedOn: stringType(),
11453
11653
  publishTime: stringType(),
11454
11654
  wasRenewed: booleanType(),
11455
11655
  startDate: stringType().nullable(),
11456
11656
  deliveryDate: stringType().nullable(),
11457
11657
  workload: stringType().nullable(),
11458
- engagementDuration: engagementDurationSchema,
11459
- extendedBudgetInfo: extendedBudgetInfoSchema,
11658
+ engagementDuration: engagementDurationSchema$1,
11659
+ extendedBudgetInfo: extendedBudgetInfoSchema$1,
11460
11660
  contractorTier: numberType(),
11461
11661
  description: stringType(),
11462
- segmentationData: arrayType(segmentationDataSchema),
11463
- clientActivity: clientActivitySchema,
11464
- annotations: annotationsSchema,
11662
+ segmentationData: arrayType(segmentationDataSchema$1),
11663
+ clientActivity: clientActivitySchema$1,
11664
+ annotations: annotationsSchema$1,
11465
11665
  uid: stringType(),
11466
11666
  title: stringType(),
11467
11667
  type: numberType(),
@@ -11476,12 +11676,12 @@ const jobSchema = objectType({
11476
11676
  isContractToHire: booleanType(),
11477
11677
  attachments: arrayType(anyType()),
11478
11678
  isPremium: booleanType(),
11479
- qualifications: qualificationsSchema,
11679
+ qualifications: qualificationsSchema$1,
11480
11680
  questions: arrayType(objectType({ question: stringType(), position: numberType() })),
11481
11681
  durationIdV3: numberType(),
11482
11682
  durationLabel: stringType(),
11483
11683
  });
11484
- const buyerSchema = objectType({
11684
+ const buyerSchema$1 = objectType({
11485
11685
  isEnterprise: booleanType(),
11486
11686
  isPaymentMethodVerified: booleanType(),
11487
11687
  stats: objectType({
@@ -11518,7 +11718,7 @@ const buyerSchema = objectType({
11518
11718
  amount: numberType(),
11519
11719
  }).nullable(),
11520
11720
  });
11521
- const currentUserInfoSchema = objectType({
11721
+ const currentUserInfoSchema$1 = objectType({
11522
11722
  owner: booleanType(),
11523
11723
  freelancerInfo: objectType({
11524
11724
  profileState: stringType(),
@@ -11581,7 +11781,7 @@ const workHistorySchema = arrayType(objectType({
11581
11781
  }),
11582
11782
  isEDCPublic: booleanType(),
11583
11783
  }));
11584
- const sandsSchema = objectType({
11784
+ const sandsSchema$1 = objectType({
11585
11785
  occupation: objectType({
11586
11786
  freeText: stringType().nullable(),
11587
11787
  ontologyId: stringType(),
@@ -11609,7 +11809,7 @@ const connectsSchema = objectType({
11609
11809
  }),
11610
11810
  canSeeApplicantsRates: booleanType(),
11611
11811
  });
11612
- const authSchema = objectType({
11812
+ const authSchema$1 = objectType({
11613
11813
  canFlagOpening: booleanType(),
11614
11814
  canPostJob: booleanType(),
11615
11815
  domestic: objectType({
@@ -11631,14 +11831,14 @@ const applicationContextSchema = objectType({
11631
11831
  const nuxtStateJobSchema = objectType({
11632
11832
  cache: booleanType(),
11633
11833
  job: jobSchema,
11634
- buyer: buyerSchema,
11635
- currentUserInfo: currentUserInfoSchema,
11834
+ buyer: buyerSchema$1,
11835
+ currentUserInfo: currentUserInfoSchema$1,
11636
11836
  isVisitor: booleanType(),
11637
11837
  openJobs: arrayType(anyType()),
11638
11838
  workHistory: workHistorySchema,
11639
11839
  similarJobs: arrayType(anyType()),
11640
- sands: sandsSchema,
11641
- auth: authSchema,
11840
+ sands: sandsSchema$1,
11841
+ auth: authSchema$1,
11642
11842
  applicants: objectType({
11643
11843
  applicantsBidsStats: anyType().nullable(),
11644
11844
  }),
@@ -11652,119 +11852,599 @@ const nuxtStateJobSchema = objectType({
11652
11852
  url: stringType(),
11653
11853
  }),
11654
11854
  teamUid: anyType().nullable(),
11655
- proposalPermissions: objectType({
11656
- freelancerAllowed: booleanType(),
11657
- clientAllowed: booleanType(),
11658
- }),
11855
+ proposalPermissions: objectType({
11856
+ freelancerAllowed: booleanType(),
11857
+ clientAllowed: booleanType(),
11858
+ }),
11859
+ jobSlug: anyType().nullable(),
11860
+ prefillWith: anyType().nullable(),
11861
+ isGroupOpportunity: booleanType(),
11862
+ workLocation: anyType().nullable(),
11863
+ isPhoneVerified: booleanType(),
11864
+ errorResponse: anyType().nullable(),
11865
+ isApplyBlocked: booleanType(),
11866
+ hasAiInterview: booleanType(),
11867
+ talentFeePromotion: booleanType().nullish(),
11868
+ });
11869
+
11870
+ // Filter Option Schema
11871
+ const filterOptionItemSchema = z.object({
11872
+ key: z.string(),
11873
+ count: z.number(),
11874
+ });
11875
+ // Filter Options Response Schema
11876
+ const filterOptionsResponseSchema = z.object({
11877
+ locations: z.array(filterOptionItemSchema),
11878
+ englishLevels: z.array(filterOptionItemSchema),
11879
+ talentTypes: z.array(filterOptionItemSchema),
11880
+ experienceLevels: z.array(filterOptionItemSchema),
11881
+ });
11882
+
11883
+ const clientSchema = objectType({
11884
+ location: objectType({
11885
+ country: stringType().nullable(),
11886
+ }),
11887
+ isPaymentVerified: booleanType(),
11888
+ totalSpent: stringType().nullable(),
11889
+ totalReviews: numberType(),
11890
+ totalFeedback: numberType(),
11891
+ hasFinancialPrivacy: booleanType(),
11892
+ });
11893
+ const attrsSchema$1 = objectType({
11894
+ uid: stringType(),
11895
+ parentSkillUid: stringType().nullable(),
11896
+ prefLabel: stringType(),
11897
+ prettyName: stringType(),
11898
+ freeText: anyType().nullable(),
11899
+ highlighted: booleanType(),
11900
+ });
11901
+ const amountSchema = objectType({
11902
+ amount: numberType(),
11903
+ });
11904
+ const hourlyBudgetSchema$1 = objectType({
11905
+ min: numberType(),
11906
+ max: numberType(),
11907
+ });
11908
+ const feedJobSchemaV2 = objectType({
11909
+ uid: stringType(),
11910
+ ciphertext: stringType(),
11911
+ title: stringType(),
11912
+ description: stringType(),
11913
+ createdOn: stringType(),
11914
+ publishedOn: stringType(),
11915
+ renewedOn: stringType().nullable(),
11916
+ type: numberType(),
11917
+ durationLabel: stringType().nullable(), // <--- FIX IS HERE
11918
+ engagement: stringType().nullable(),
11919
+ amount: amountSchema,
11920
+ connectPrice: numberType().nullable(),
11921
+ client: clientSchema,
11922
+ clientRelation: anyType().nullable(),
11923
+ freelancersToHire: numberType(),
11924
+ relevanceEncoded: stringType(),
11925
+ enterpriseJob: booleanType(),
11926
+ tierText: stringType(),
11927
+ isApplied: booleanType(),
11928
+ proposalsTier: stringType().nullable(),
11929
+ premium: booleanType(),
11930
+ attrs: arrayType(attrsSchema$1),
11931
+ hourlyBudget: hourlyBudgetSchema$1,
11932
+ weeklyBudget: amountSchema,
11933
+ isSTSVectorSearchResult: booleanType(),
11934
+ });
11935
+ const pagingSchema = objectType({
11936
+ total: numberType(),
11937
+ offset: numberType(),
11938
+ count: numberType(),
11939
+ });
11940
+ const jobsSearchSchema = objectType({
11941
+ status: objectType({
11942
+ loading: booleanType(),
11943
+ loaded: booleanType(),
11944
+ failed: booleanType(),
11945
+ }),
11946
+ jobs: arrayType(feedJobSchemaV2),
11947
+ paging: pagingSchema,
11948
+ abortController: anyType().nullable(),
11949
+ currentPage: numberType(),
11950
+ jobsPerPage: numberType(),
11951
+ searchQueryCache: recordType(stringType()),
11952
+ });
11953
+ const nuxtStateJobsSearchSchema = objectType({
11954
+ state: objectType({
11955
+ jobsSearch: jobsSearchSchema,
11956
+ }),
11957
+ });
11958
+
11959
+ // Field mapping from feed-job to job-details for the missing fields that were added
11960
+ const FEED_JOB_TO_JOB_DETAILS_FIELD_MAPPING = {
11961
+ // Fields that were missing in job-details and added from feed-job
11962
+ publishedOn: 'publishedOn',
11963
+ renewedOn: 'renewedOn',
11964
+ engagement: 'engagement',
11965
+ freelancersToHire: 'freelancersToHire',
11966
+ connectPrice: 'connectPrice',
11967
+ clientRelation: 'clientRelation',
11968
+ relevanceEncoded: 'relevanceEncoded',
11969
+ enterpriseJob: 'enterpriseJob',
11970
+ tierText: 'tierText',
11971
+ isApplied: 'isApplied',
11972
+ proposalsTier: 'proposalsTier',
11973
+ premium: 'premium',
11974
+ attrs: 'attrs',
11975
+ hourlyBudget: 'hourlyBudget',
11976
+ weeklyBudget: 'weeklyBudget',
11977
+ isSTSVectorSearchResult: 'isSTSVectorSearchResult',
11978
+ };
11979
+ // Segmentation data schema
11980
+ const segmentationDataSchema = objectType({
11981
+ customValue: stringType().nullable(),
11982
+ label: stringType(),
11983
+ name: stringType(),
11984
+ sortOrder: numberType(),
11985
+ type: stringType(),
11986
+ value: stringType(),
11987
+ skill: anyType().nullable(),
11988
+ });
11989
+ // Client activity schema
11990
+ const clientActivitySchema = objectType({
11991
+ lastBuyerActivity: stringType().nullable(),
11992
+ totalApplicants: numberType().nullable(),
11993
+ totalHired: numberType().nullable(),
11994
+ totalInvitedToInterview: numberType().nullable(),
11995
+ unansweredInvites: numberType().nullable(),
11996
+ invitationsSent: numberType().nullable(),
11997
+ numberOfPositionsToHire: numberType(),
11998
+ });
11999
+ // Annotations schema
12000
+ const annotationsSchema = objectType({
12001
+ tags: arrayType(stringType()),
12002
+ });
12003
+ // Budget schema
12004
+ const budgetSchema = objectType({
12005
+ amount: numberType(),
12006
+ currencyCode: stringType(),
12007
+ });
12008
+ // Engagement duration schema
12009
+ const engagementDurationSchema = objectType({
12010
+ label: stringType(),
12011
+ weeks: numberType(),
12012
+ });
12013
+ // Extended budget info schema
12014
+ const extendedBudgetInfoSchema = objectType({
12015
+ hourlyBudgetMin: numberType().nullable(),
12016
+ hourlyBudgetMax: numberType().nullable(),
12017
+ hourlyBudgetType: stringType().nullable(),
12018
+ });
12019
+ // Qualifications schema
12020
+ const qualificationsSchema = objectType({
12021
+ countries: anyType().nullable(),
12022
+ earnings: anyType().nullable(),
12023
+ groupRecno: anyType().nullable(),
12024
+ languages: anyType().nullable(),
12025
+ localDescription: anyType().nullable(),
12026
+ localFlexibilityDescription: anyType().nullable(),
12027
+ localMarket: booleanType(),
12028
+ minJobSuccessScore: numberType(),
12029
+ minOdeskHours: numberType(),
12030
+ onSiteType: anyType().nullable(),
12031
+ prefEnglishSkill: numberType(),
12032
+ regions: anyType().nullable(),
12033
+ risingTalent: booleanType(),
12034
+ shouldHavePortfolio: booleanType(),
12035
+ states: anyType().nullable(),
12036
+ tests: anyType().nullable(),
12037
+ timezones: anyType().nullable(),
12038
+ type: numberType(),
12039
+ locationCheckRequired: booleanType(),
12040
+ group: anyType().nullable(),
12041
+ location: anyType().nullable(),
12042
+ locations: anyType().nullable(),
12043
+ minHoursWeek: numberType().nullable(),
12044
+ });
12045
+ // Attrs schema (from feed-job.ts)
12046
+ const attrsSchema = objectType({
12047
+ uid: stringType(),
12048
+ parentSkillUid: stringType().nullable(),
12049
+ prefLabel: stringType(),
12050
+ prettyName: stringType(),
12051
+ freeText: anyType().nullable(),
12052
+ highlighted: booleanType(),
12053
+ });
12054
+ // Hourly budget schema (from feed-job.ts)
12055
+ const hourlyBudgetSchema = objectType({
12056
+ min: numberType(),
12057
+ max: numberType(),
12058
+ });
12059
+ // Job details schema
12060
+ const jobDetailsSchema = objectType({
12061
+ status: numberType(),
12062
+ category: objectType({
12063
+ name: stringType(),
12064
+ urlSlug: stringType(),
12065
+ }),
12066
+ categoryGroup: objectType({
12067
+ name: stringType(),
12068
+ urlSlug: stringType(),
12069
+ }),
12070
+ budget: budgetSchema,
12071
+ postedOn: stringType(),
12072
+ publishTime: stringType(),
12073
+ publishedOn: stringType().nullable().optional(),
12074
+ wasRenewed: booleanType(),
12075
+ renewedOn: stringType().nullable().optional(),
12076
+ startDate: stringType().nullable(),
12077
+ deliveryDate: stringType().nullable(),
12078
+ workload: stringType().nullable(),
12079
+ engagement: stringType().nullable().optional(),
12080
+ engagementDuration: engagementDurationSchema,
12081
+ extendedBudgetInfo: extendedBudgetInfoSchema,
12082
+ contractorTier: numberType(),
12083
+ description: stringType(),
12084
+ segmentationData: arrayType(segmentationDataSchema),
12085
+ clientActivity: clientActivitySchema,
12086
+ annotations: annotationsSchema,
12087
+ uid: stringType(),
12088
+ title: stringType(),
12089
+ type: numberType(),
12090
+ ciphertext: stringType(),
12091
+ access: numberType(),
12092
+ createdOn: stringType(),
12093
+ hideBudget: booleanType(),
12094
+ notSureProjectDuration: booleanType(),
12095
+ notSureFreelancersToHire: booleanType(),
12096
+ notSureExperienceLevel: booleanType(),
12097
+ numberOfPositionsToHire: numberType(),
12098
+ freelancersToHire: numberType().nullable().optional(),
12099
+ isContractToHire: booleanType(),
12100
+ deliverables: stringType().nullable(),
12101
+ deadline: stringType().nullable(),
12102
+ tools: arrayType(anyType()),
12103
+ weeklyRetainerBudget: anyType().nullable(),
12104
+ qualifications: qualificationsSchema,
12105
+ durationIdV3: numberType(),
12106
+ durationLabel: stringType(),
12107
+ connectPrice: numberType().nullable().optional(),
12108
+ clientRelation: anyType().nullable().optional(),
12109
+ relevanceEncoded: stringType().nullable().optional(),
12110
+ enterpriseJob: booleanType().nullable().optional(),
12111
+ tierText: stringType().nullable().optional(),
12112
+ isApplied: booleanType().nullable().optional(),
12113
+ proposalsTier: stringType().nullable().optional(),
12114
+ premium: booleanType().nullable().optional(),
12115
+ attrs: arrayType(attrsSchema).nullable().optional(),
12116
+ hourlyBudget: hourlyBudgetSchema.nullable().optional(),
12117
+ weeklyBudget: objectType({
12118
+ amount: numberType(),
12119
+ })
12120
+ .nullable()
12121
+ .optional(),
12122
+ isSTSVectorSearchResult: booleanType().nullable().optional(),
12123
+ });
12124
+ // Buyer schema
12125
+ const buyerSchema = objectType({
12126
+ isEnterprise: booleanType(),
12127
+ isPaymentMethodVerified: booleanType(),
12128
+ stats: objectType({
12129
+ totalAssignments: numberType().nullable(),
12130
+ activeAssignmentsCount: numberType().nullable(),
12131
+ hoursCount: numberType(),
12132
+ feedbackCount: numberType(),
12133
+ score: numberType().nullable(),
12134
+ totalJobsWithHires: numberType(),
12135
+ totalCharges: objectType({
12136
+ amount: numberType(),
12137
+ }).nullable(),
12138
+ }),
12139
+ location: objectType({
12140
+ offsetFromUtcMillis: numberType(),
12141
+ countryTimezone: stringType(),
12142
+ city: stringType().nullable(),
12143
+ country: stringType(),
12144
+ }),
12145
+ company: objectType({
12146
+ isEDCReplicated: anyType().nullable(),
12147
+ contractDate: stringType().nullable(),
12148
+ profile: objectType({
12149
+ industry: stringType().nullable(),
12150
+ size: anyType().nullable(), // Can be string or number
12151
+ }),
12152
+ }),
12153
+ jobs: objectType({
12154
+ postedCount: numberType().nullable(),
12155
+ openCount: numberType(),
12156
+ }),
12157
+ avgHourlyJobsRate: anyType().nullable(),
12158
+ });
12159
+ // Current user info schema
12160
+ const currentUserInfoSchema = objectType({
12161
+ freelancerInfo: objectType({
12162
+ qualificationsMatches: anyType().nullable(),
12163
+ }),
12164
+ });
12165
+ // Open jobs schema
12166
+ const openJobSchema = objectType({
12167
+ id: stringType(),
12168
+ uid: stringType(),
12169
+ isPtcPrivate: booleanType(),
12170
+ ciphertext: stringType(),
12171
+ title: stringType(),
12172
+ type: numberType(),
12173
+ access: numberType().nullable(),
12174
+ });
12175
+ // Similar jobs skill schema
12176
+ const similarJobSkillSchema = objectType({
12177
+ id: stringType().nullable(),
12178
+ prefLabel: stringType(),
12179
+ });
12180
+ // Similar jobs schema
12181
+ const similarJobSchema = objectType({
12182
+ id: stringType().nullable(),
12183
+ ciphertext: stringType(),
12184
+ title: stringType(),
12185
+ description: stringType(),
12186
+ engagement: stringType().nullable(),
12187
+ durationLabel: stringType(),
12188
+ contractorTier: numberType(),
12189
+ type: numberType(),
12190
+ createdOn: stringType(),
12191
+ renewedOn: stringType().nullable(),
12192
+ amount: objectType({
12193
+ amount: numberType(),
12194
+ }),
12195
+ maxAmount: anyType().nullable(),
12196
+ ontologySkills: arrayType(similarJobSkillSchema),
12197
+ hourlyBudgetMin: numberType(),
12198
+ hourlyBudgetMax: numberType(),
12199
+ });
12200
+ // SANDS (Skills and Services) schema
12201
+ const sandsSkillSchema = objectType({
12202
+ uid: stringType(),
12203
+ name: stringType(),
12204
+ isFreeText: booleanType(),
12205
+ relevance: stringType(),
12206
+ });
12207
+ const sandsSchema = objectType({
12208
+ occupation: objectType({
12209
+ freeText: stringType().nullable(),
12210
+ ontologyId: stringType(),
12211
+ prefLabel: stringType(),
12212
+ id: stringType(),
12213
+ uid: stringType(),
12214
+ }),
12215
+ ontologySkills: arrayType(anyType()),
12216
+ additionalSkills: arrayType(sandsSkillSchema),
12217
+ });
12218
+ // Auth schema
12219
+ const authSchema = objectType({
12220
+ isVisitor: booleanType(),
12221
+ isAgency: booleanType(),
12222
+ isFreelancer: booleanType(),
12223
+ isClient: booleanType(),
12224
+ isUpworkPlusBuyer: booleanType(),
12225
+ domestic: objectType({
12226
+ country: stringType().nullable(),
12227
+ isInfographicTooltipAvailable: booleanType(),
12228
+ }),
12229
+ });
12230
+ // SEO schema
12231
+ const seoSchema = objectType({
12232
+ title: stringType(),
12233
+ description: stringType(),
12234
+ url: stringType(),
12235
+ });
12236
+ // Main job details state schema
12237
+ const jobDetailsStateSchema = objectType({
12238
+ cache: booleanType(),
12239
+ job: jobDetailsSchema,
12240
+ buyer: buyerSchema,
12241
+ currentUserInfo: currentUserInfoSchema,
12242
+ openJobs: arrayType(openJobSchema),
12243
+ workHistory: arrayType(anyType()),
12244
+ similarJobs: arrayType(similarJobSchema),
12245
+ sands: sandsSchema,
12246
+ auth: authSchema,
12247
+ applicants: anyType().nullable(),
12248
+ connects: anyType().nullable(),
12249
+ enterpriseJobAdditionalInfo: recordType(anyType()),
12250
+ applicationContext: anyType().nullable(),
12251
+ profileMatchServiceUid: stringType().nullable(),
12252
+ seo: seoSchema,
12253
+ teamUid: anyType().nullable(),
12254
+ proposalPermissions: anyType().nullable(),
11659
12255
  jobSlug: anyType().nullable(),
11660
12256
  prefillWith: anyType().nullable(),
11661
12257
  isGroupOpportunity: booleanType(),
11662
- workLocation: anyType().nullable(),
11663
12258
  isPhoneVerified: booleanType(),
11664
12259
  errorResponse: anyType().nullable(),
11665
12260
  isApplyBlocked: booleanType(),
11666
12261
  hasAiInterview: booleanType(),
11667
- talentFeePromotion: booleanType().nullish(),
11668
- });
11669
-
11670
- // Enum definitions for fixed options
11671
- const projectDurationEnum = z.enum(JOB_FILTER_OPTIONS.PROJECT_DURATION);
11672
- const engagementTypeEnum = z.enum(JOB_FILTER_OPTIONS.ENGAGEMENT_TYPE);
11673
- const vendorTypeEnum = z.enum(JOB_FILTER_OPTIONS.VENDOR_TYPE);
11674
- const paymentTypeEnum = z.enum(JOB_FILTER_OPTIONS.PAYMENT_TYPE);
11675
- const categoryEnum = z.enum(JOB_FILTER_OPTIONS.CATEGORIES);
11676
- const clientIndustryEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_INDUSTRY);
11677
- const clientSizeEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_SIZE);
11678
- const talentTypeEnum = z.enum(JOB_FILTER_OPTIONS.TALENT_TYPE);
11679
- const englishLevelEnum = z.enum(JOB_FILTER_OPTIONS.ENGLISH_LEVELS);
11680
- const experienceLevelEnum = z.enum(JOB_FILTER_OPTIONS.EXPERIENCE_LEVELS);
11681
- const regionEnum = z.enum(["all", "Worldwide", "UKOnly", "USOnly"]);
11682
- const requiredEarningsEnum = z.union([
11683
- z.literal(100),
11684
- z.literal(1000),
11685
- z.literal(10000),
11686
- ]);
11687
- const requiredJSSEnum = z.enum(JOB_FILTER_OPTIONS.REQUIRED_JSS);
11688
- const isPaymentVerifiedEnum = z.enum(["all", "true", "false"]);
11689
- const isPhoneVerifiedEnum = z.enum(["all", "true", "false"]);
11690
- const hasQuestionsEnum = z.enum(["all", "yes", "no"]);
11691
- // Main job filters schema
11692
- const jobFiltersSchema = z.object({
11693
- keywords: z
11694
- .object({
11695
- includes: z.string().nullable(),
11696
- excludes: z.string().nullable(),
11697
- })
11698
- .nullable(),
11699
- isFeatured: z.enum(["all", "true", "false"]).nullable(),
11700
- regions: z.array(regionEnum).nullable(),
11701
- categories: z
11702
- .object({
11703
- includes: z.array(categoryEnum).nullable(),
11704
- excludes: z.array(categoryEnum).nullable(),
11705
- })
11706
- .nullable(),
11707
- payment: z
11708
- .object({
11709
- paymentType: z.array(paymentTypeEnum).nullable(),
11710
- minFixedPrice: z.number().nullable(),
11711
- maxFixedPrice: z.number().nullable(),
11712
- minHourlyRate: z.number().nullable(),
11713
- maxHourlyRate: z.number().nullable(),
11714
- })
11715
- .nullable(),
11716
- projectDuration: z.array(projectDurationEnum).nullable(),
11717
- experienceLevel: z.array(experienceLevelEnum).nullable(),
11718
- questions: z
11719
- .object({
11720
- hasQuestions: arrayType(hasQuestionsEnum),
11721
- })
11722
- .nullable(),
11723
- engagementType: z.array(engagementTypeEnum).nullable(),
11724
- clientInfo: z
11725
- .object({
11726
- isPaymentVerified: isPaymentVerifiedEnum.default("all"),
11727
- isPhoneVerified: isPhoneVerifiedEnum.default("all"),
11728
- enterpriseClient: z.enum(["all", "true", "false"]).default("all"),
11729
- clientLocationIncludes: z.array(z.string()).nullable(),
11730
- clientLocationExcludes: z.array(z.string()).nullable(),
11731
- minReviewScore: z.number().min(0).max(5).nullable(),
11732
- minTotalSpent: z.number().nullable(),
11733
- minHireRate: z.number().min(0).max(100).nullable(),
11734
- clientIndustry: z.array(clientIndustryEnum).nullable(),
11735
- companySize: z.array(clientSizeEnum).nullable(),
11736
- minJobsPosted: z.number().nullable(),
11737
- minAvgHourlyRate: z.number().nullable(),
11738
- minNumReviews: z.number().nullable(),
11739
- memberSinceFrom: z.string().date().nullable(),
11740
- memberSinceTo: z.string().date().nullable(),
11741
- })
11742
- .nullable(),
11743
- vendorQualifications: z
11744
- .object({
11745
- locationIncludes: z.array(z.string()).nullable(),
11746
- locationExcludes: z.array(z.string()).nullable(),
11747
- talentTypes: z.array(talentTypeEnum).nullable(),
11748
- englishLevels: z.array(englishLevelEnum).nullable(),
11749
- includeRisingTalent: z.string().nullable(),
11750
- requiredEarnings: requiredEarningsEnum.nullable(),
11751
- requiredJSS: z.array(requiredJSSEnum).nullable(),
11752
- })
11753
- .nullable(),
12262
+ talentFeePromotion: anyType().nullable(),
12263
+ aiInterviewRoomId: anyType().nullable(),
12264
+ aiInterviewLinkSent: booleanType(),
12265
+ aiInterviewStatus: anyType().nullable(),
12266
+ aiInterviewJoinLimitReached: booleanType(),
12267
+ });
12268
+ const nuxtStateJobDetailsSchema = objectType({
12269
+ layout: stringType(),
12270
+ data: arrayType(recordType(anyType())),
12271
+ fetch: recordType(anyType()),
12272
+ error: anyType().nullable(),
12273
+ state: objectType({
12274
+ job: objectType({
12275
+ errorResponse: anyType().nullable(),
12276
+ channel: anyType().nullable(),
12277
+ visitedJobs: arrayType(anyType()),
12278
+ }),
12279
+ qt: objectType({
12280
+ isNewVisitorNavV1Enabled: booleanType(),
12281
+ }),
12282
+ tracker: objectType({
12283
+ guids: recordType(anyType()),
12284
+ }),
12285
+ tracing: objectType({
12286
+ native: objectType({
12287
+ span: objectType({
12288
+ id: stringType(),
12289
+ parentId: stringType(),
12290
+ traceId: stringType(),
12291
+ isPopulated: booleanType(),
12292
+ geoIpHeader: stringType(),
12293
+ }),
12294
+ }),
12295
+ }),
12296
+ context: objectType({
12297
+ loaded: booleanType(),
12298
+ loading: booleanType(),
12299
+ error: anyType().nullable(),
12300
+ isLoggedIn: booleanType().nullable(),
12301
+ auth: booleanType(),
12302
+ }),
12303
+ orgs: objectType({
12304
+ current: objectType({
12305
+ id: stringType().nullable(),
12306
+ rid: stringType().nullable(),
12307
+ type: stringType().nullable(),
12308
+ legacyType: stringType().nullable(),
12309
+ enterpriseType: stringType().nullable(),
12310
+ title: stringType().nullable(),
12311
+ typeTitle: stringType().nullable(),
12312
+ photoUrl: stringType().nullable(),
12313
+ flag: objectType({
12314
+ client: booleanType().nullable(),
12315
+ vendor: booleanType().nullable(),
12316
+ agency: booleanType().nullable(),
12317
+ individual: booleanType().nullable(),
12318
+ }),
12319
+ portrait100: stringType().nullable(),
12320
+ }),
12321
+ orgs: arrayType(anyType()),
12322
+ loading: booleanType().nullable(),
12323
+ loaded: booleanType().nullable(),
12324
+ }),
12325
+ user: objectType({
12326
+ id: stringType().nullable(),
12327
+ rid: stringType().nullable(),
12328
+ nid: stringType().nullable(),
12329
+ loading: booleanType().nullable(),
12330
+ loaded: booleanType().nullable(),
12331
+ isSudo: booleanType().nullable(),
12332
+ }),
12333
+ visitor: objectType({
12334
+ id: stringType(),
12335
+ ip: stringType(),
12336
+ }),
12337
+ vpn: objectType({
12338
+ isVpn: booleanType(),
12339
+ loading: booleanType(),
12340
+ loaded: booleanType(),
12341
+ error: anyType().nullable(),
12342
+ }),
12343
+ organizations: objectType({
12344
+ items: arrayType(anyType()),
12345
+ }),
12346
+ currency: objectType({
12347
+ currencyRate: anyType().nullable(),
12348
+ currencyCode: stringType().nullable(),
12349
+ currencyPopupShow: booleanType().nullable(),
12350
+ currencyName: stringType().nullable(),
12351
+ currencySymbol: stringType().nullable(),
12352
+ }),
12353
+ bot: objectType({
12354
+ isBot: booleanType(),
12355
+ loaded: booleanType(),
12356
+ }),
12357
+ flags: objectType({
12358
+ qt: recordType(anyType()),
12359
+ qtAllocationType: recordType(anyType()),
12360
+ ff: recordType(booleanType()),
12361
+ computedName: recordType(anyType()),
12362
+ }),
12363
+ geo: objectType({
12364
+ countryCode: stringType(),
12365
+ promise: anyType().nullable(),
12366
+ }),
12367
+ i18n: objectType({
12368
+ routeParams: recordType(anyType()),
12369
+ }),
12370
+ umq: objectType({
12371
+ width: numberType().nullable(),
12372
+ mobile: booleanType(),
12373
+ desktop: booleanType(),
12374
+ tablet: booleanType(),
12375
+ }),
12376
+ tracking: objectType({
12377
+ location: stringType(),
12378
+ visitorApiKey: stringType().nullable(),
12379
+ loading: booleanType().nullable(),
12380
+ loaded: booleanType().nullable(),
12381
+ promise: anyType().nullable(),
12382
+ error: anyType().nullable(),
12383
+ suit2Enabled: booleanType(),
12384
+ context: objectType({
12385
+ visitor_id: stringType().nullable(),
12386
+ user_uid: stringType().nullable(),
12387
+ user_nid: stringType().nullable(),
12388
+ organization_uid: stringType().nullable(),
12389
+ organization_type_title: stringType().nullable(),
12390
+ user_is_sudo: booleanType().nullable(),
12391
+ is_logged_in: booleanType().nullable(),
12392
+ }),
12393
+ }),
12394
+ theme: objectType({
12395
+ isSystemThemeMode: booleanType().nullable(),
12396
+ }),
12397
+ getfeedback: objectType({
12398
+ disabled: booleanType(),
12399
+ event: anyType().nullable(),
12400
+ }),
12401
+ statsig: objectType({
12402
+ experiments: recordType(objectType({
12403
+ name: stringType(),
12404
+ params: recordType(anyType()),
12405
+ })),
12406
+ }),
12407
+ jobDetails: jobDetailsStateSchema,
12408
+ forter: objectType({
12409
+ core: booleanType(),
12410
+ token: stringType(),
12411
+ }).optional(),
12412
+ }),
12413
+ serverRendered: booleanType(),
12414
+ routePath: stringType(),
12415
+ config: objectType({
12416
+ designSystem: stringType(),
12417
+ _app: objectType({
12418
+ basePath: stringType(),
12419
+ assetsPath: stringType(),
12420
+ cdnURL: stringType(),
12421
+ }),
12422
+ }),
12423
+ isCacheable: booleanType(),
12424
+ __i18n: objectType({
12425
+ langs: recordType(anyType()),
12426
+ }),
12427
+ microAppUtilsOverrides: objectType({
12428
+ userNavOverrides: recordType(anyType()),
12429
+ userSkinnyNavSkinnyOverrides: recordType(anyType()),
12430
+ visitorNavSkinnyOverrides: recordType(anyType()),
12431
+ }),
11754
12432
  });
11755
12433
 
11756
- // Filter Option Schema
11757
- const filterOptionItemSchema = z.object({
11758
- key: z.string(),
11759
- count: z.number(),
11760
- });
11761
- // Filter Options Response Schema
11762
- const filterOptionsResponseSchema = z.object({
11763
- locations: z.array(filterOptionItemSchema),
11764
- englishLevels: z.array(filterOptionItemSchema),
11765
- talentTypes: z.array(filterOptionItemSchema),
11766
- experienceLevels: z.array(filterOptionItemSchema),
11767
- });
12434
+ class JobIsPrivateException extends Error {
12435
+ code = 'JOB_IS_PRIVATE';
12436
+ constructor(url) {
12437
+ super(`Job is private: ${url}`);
12438
+ }
12439
+ }
12440
+ const jobIsPrivateException = (url) => new JobIsPrivateException(url);
12441
+ class FailedToParseNuxtJobException extends Error {
12442
+ code = 'FAILED_TO_PARSE_NUXT_JOB';
12443
+ constructor(url) {
12444
+ super(`Failed to parse Nuxt job: ${url}`);
12445
+ }
12446
+ }
12447
+ const failedToParseNuxtJobException = (message, url) => new FailedToParseNuxtJobException(`${message}: ${url}`);
11768
12448
 
11769
12449
  const jobSkillsSchema = objectType({
11770
12450
  name: stringType(),
@@ -11903,119 +12583,13 @@ const feedJobSchema = objectType({
11903
12583
  region: regionSchema.nullable(),
11904
12584
  });
11905
12585
 
11906
- const bidderAccountProvider = z.enum([
11907
- "user-provided",
11908
- "lancer-provided",
11909
- ]);
11910
- const bidderAccountAgencySchema = z.object({
11911
- name: z.string(),
11912
- logoUrl: z.string().nullable(),
11913
- contractors: z.array(z.string()),
11914
- organizationId: z.string(),
11915
- });
11916
- const bidderAccountSchema = z.object({
11917
- id: z.string(),
11918
- provider: bidderAccountProvider,
11919
- email: z.string().email(),
11920
- password: z.string(),
11921
- securityQuestionAnswer: z.string().nullable(),
11922
- assignedOrganizations: z.array(z.string()),
11923
- googleOauthTokens: z.any().nullable(),
11924
- lastUsed: z.number().nullable(),
11925
- multiLoginProfileId: z.string().nullable(),
11926
- proxyId: z.string().nullable(),
11927
- profilePhotoUrl: z.string().nullable(),
11928
- name: z.string().nullable(),
11929
- agencies: z.array(bidderAccountAgencySchema).nullable(),
11930
- instanceId: stringType().nullable(),
11931
- createdAt: z.number(),
11932
- updatedAt: z.number(),
11933
- region: regionEnum,
11934
- isProtected: z.boolean().optional(),
11935
- });
11936
- const createBidderAccountSchema = bidderAccountSchema
11937
- .pick({
11938
- email: true,
11939
- password: true,
11940
- provider: true,
11941
- securityQuestionAnswer: true,
11942
- profilePhotoUrl: true,
11943
- name: true,
11944
- agencies: true,
11945
- assignedOrganizations: true,
11946
- region: true,
11947
- })
11948
- .extend({
11949
- proxyCountry: proxyCountryEnum.nullable(),
11950
- });
11951
- const updateBidderAccountSchema = bidderAccountSchema
11952
- .omit({
11953
- id: true,
11954
- })
11955
- .partial();
11956
- const verifyBidderAccountCredentialsSchema = z.object({
11957
- email: z.string().email(),
11958
- password: z.string(),
11959
- securityQuestionAnswer: z.string(),
11960
- multiloginProfileId: z.string(),
11961
- proxy: proxySchema,
11962
- });
11963
- const verifyBidderAccountCredentialsResponseSchema = z.object({
11964
- accountName: z.string().nullable(),
11965
- accountPhotoUrl: z.string().nullable(),
11966
- agencies: z.array(bidderAccountAgencySchema).nullable(),
11967
- });
11968
- const acceptUpworkInvitationSchema = z.object({
11969
- code: z.string(),
11970
- });
11971
- const acceptUpworkInvitationResponseSchema = z.object({
11972
- agencyName: z.string(),
11973
- photoUrl: z.string(),
11974
- contractors: z.array(z.string()),
11975
- });
11976
-
11977
- class BidderAccountAlreadyConnectedException extends Error {
11978
- code = 'BIDDER_ACCOUNT_ALREADY_CONNECTED';
11979
- email;
11980
- constructor(email) {
11981
- super(`Bidder account ${email} is already connected to a scraper account`);
11982
- this.email = email;
11983
- }
11984
- }
11985
- const bidderAccountAlreadyConnectedException = (email) => new BidderAccountAlreadyConnectedException(email);
11986
-
11987
- class InvalidGoogleOAuthTokenException extends Error {
11988
- code = 'INVALID_GOOGLE_OAUTH_TOKEN';
11989
- constructor(message) {
11990
- super(message);
11991
- }
11992
- }
11993
- const invalidGoogleOAuthTokenSchema = (message) => new InvalidGoogleOAuthTokenException(message);
11994
-
11995
- class NoBidderAccountsAvailableException extends Error {
11996
- code = 'NO_BIDDER_ACCOUNTS_AVAILABLE';
11997
- constructor(message) {
11998
- super(message);
11999
- }
12000
- }
12001
- const noBidderAccountsAvailableException = (message) => {
12002
- return new NoBidderAccountsAvailableException(message);
12003
- };
12004
-
12005
- class NoGoogleOAuthTokensFoundException extends Error {
12006
- code = 'NO_GOOGLE_OAUTH_TOKENS_FOUND';
12007
- constructor(message) {
12008
- super(message);
12009
- }
12010
- }
12011
- const noGoogleOAuthTokensFoundException = (message) => new NoGoogleOAuthTokensFoundException(message);
12012
-
12013
12586
  const scraperAccountType = z.enum([
12014
- "feed",
12015
- "job",
12016
- "status",
12017
- "activity",
12018
- "profile",
12587
+ 'feed',
12588
+ 'job',
12589
+ 'status',
12590
+ 'activity',
12591
+ 'profile',
12592
+ 'unauthenticated',
12019
12593
  ]);
12020
12594
  const scraperAccountSchema = z.object({
12021
12595
  id: z.string(),
@@ -12032,16 +12606,13 @@ const scraperAccountSchema = z.object({
12032
12606
  updatedAt: z.number(),
12033
12607
  isProtected: z.boolean().optional(),
12034
12608
  });
12035
- const createScraperAccountSchema = scraperAccountSchema
12036
- .pick({
12609
+ const createScraperAccountSchema = scraperAccountSchema.pick({
12037
12610
  region: true,
12038
12611
  email: true,
12039
12612
  password: true,
12040
12613
  securityQuestionAnswer: true,
12041
12614
  isActive: true,
12042
- })
12043
- .extend({
12044
- proxyCountry: proxyCountryEnum.nullable(),
12615
+ type: true,
12045
12616
  });
12046
12617
  const updateScraperAccountSchema = scraperAccountSchema
12047
12618
  .omit({
@@ -12565,10 +13136,8 @@ const scrapeJobStartedEventMetadata = objectType({
12565
13136
  accountEmail: stringType(),
12566
13137
  });
12567
13138
  const scrapeJobFailedEventMetadata = objectType({
12568
- listing: feedJobSchema,
13139
+ listing: feedJobSchemaV2,
12569
13140
  region: regionSchema,
12570
- accountId: stringType(),
12571
- accountEmail: stringType(),
12572
13141
  error: stringType(),
12573
13142
  });
12574
13143
  const jobActivityScrapedEventMetadata = objectType({
@@ -13863,6 +14432,8 @@ exports.DropdownOptionNotPresentException = DropdownOptionNotPresentException;
13863
14432
  exports.ElementNotClickableException = ElementNotClickableException;
13864
14433
  exports.EvaluateElementException = EvaluateElementException;
13865
14434
  exports.EvaluateFunctionException = EvaluateFunctionException;
14435
+ exports.FEED_JOB_TO_JOB_DETAILS_FIELD_MAPPING = FEED_JOB_TO_JOB_DETAILS_FIELD_MAPPING;
14436
+ exports.FailedToParseNuxtJobException = FailedToParseNuxtJobException;
13866
14437
  exports.FeedScrapeException = FeedScrapeException;
13867
14438
  exports.GetMultiloginBrowserException = GetMultiloginBrowserException;
13868
14439
  exports.GoToUrlException = GoToUrlException;
@@ -13873,6 +14444,7 @@ exports.InvalidCredentialsException = InvalidCredentialsException;
13873
14444
  exports.InvalidGoogleOAuthTokenException = InvalidGoogleOAuthTokenException;
13874
14445
  exports.InvalidJobUrlException = InvalidJobUrlException;
13875
14446
  exports.JOB_FILTER_OPTIONS = JOB_FILTER_OPTIONS;
14447
+ exports.JobIsPrivateException = JobIsPrivateException;
13876
14448
  exports.LogEventTypeEnum = LogEventTypeEnum;
13877
14449
  exports.LoginFailedException = LoginFailedException;
13878
14450
  exports.MultiloginAuthenticationException = MultiloginAuthenticationException;
@@ -13974,7 +14546,9 @@ exports.evaluateFunctionException = evaluateFunctionException;
13974
14546
  exports.eventLoggerPayloadSchema = eventLoggerPayloadSchema;
13975
14547
  exports.experienceLevelEnum = experienceLevelEnum;
13976
14548
  exports.externalProxySchema = externalProxySchema;
14549
+ exports.failedToParseNuxtJobException = failedToParseNuxtJobException;
13977
14550
  exports.feedJobSchema = feedJobSchema;
14551
+ exports.feedJobSchemaV2 = feedJobSchemaV2;
13978
14552
  exports.feedScrapeCompletedEventMetadata = feedScrapeCompletedEventMetadata;
13979
14553
  exports.feedScrapeException = feedScrapeException;
13980
14554
  exports.feedScrapeStartedEventMetadata = feedScrapeStartedEventMetadata;
@@ -14018,7 +14592,9 @@ exports.jobActivityScrapeFailedEventMetadata = jobActivityScrapeFailedEventMetad
14018
14592
  exports.jobActivityScrapedEventMetadata = jobActivityScrapedEventMetadata;
14019
14593
  exports.jobActivitySnapshotSchema = jobActivitySnapshotSchema;
14020
14594
  exports.jobActivityUpdateSchema = jobActivityUpdateSchema;
14595
+ exports.jobDetailsStateSchema = jobDetailsStateSchema;
14021
14596
  exports.jobFiltersSchema = jobFiltersSchema;
14597
+ exports.jobIsPrivateException = jobIsPrivateException;
14022
14598
  exports.jobQualityScoreSchema = jobQualityScoreSchema;
14023
14599
  exports.jobSkillsSchema = jobSkillsSchema;
14024
14600
  exports.jobStatusOrder = jobStatusOrder;
@@ -14043,7 +14619,9 @@ exports.noBidderAccountsAvailableException = noBidderAccountsAvailableException;
14043
14619
  exports.noGoogleOAuthTokensFoundException = noGoogleOAuthTokensFoundException;
14044
14620
  exports.noScraperAccountAvailableException = noScraperAccountAvailableException;
14045
14621
  exports.notificationConfigSchema = notificationConfigSchema;
14622
+ exports.nuxtStateJobDetailsSchema = nuxtStateJobDetailsSchema;
14046
14623
  exports.nuxtStateJobSchema = nuxtStateJobSchema;
14624
+ exports.nuxtStateJobsSearchSchema = nuxtStateJobsSearchSchema;
14047
14625
  exports.onboardingProgressSchema = onboardingProgressSchema;
14048
14626
  exports.openPageException = openPageException;
14049
14627
  exports.organizationCampaignStatsSchema = organizationCampaignStatsSchema;
@@ -14076,6 +14654,7 @@ exports.proxyCountryEnum = proxyCountryEnum;
14076
14654
  exports.proxyProviderSchema = proxyProviderSchema;
14077
14655
  exports.proxySchema = proxySchema;
14078
14656
  exports.proxyStatusSchema = proxyStatusSchema;
14657
+ exports.proxyTypeSchema = proxyTypeSchema;
14079
14658
  exports.puppeteerConnectionErrorException = puppeteerConnectionErrorException;
14080
14659
  exports.questionAnswerPairSchema = questionAnswerPairSchema;
14081
14660
  exports.questionPairNotMatchingException = questionPairNotMatchingException;