lancer-shared 1.2.26 → 1.2.28
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.
- package/dist/bundle.cjs.js +11808 -11402
- package/dist/constants/campaign-notifications.d.ts +2 -0
- package/dist/constants/routes.d.ts +12 -8
- package/dist/constants/upwork-accounts.d.ts +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/schemas/account/account-status.d.ts +2 -2
- package/dist/schemas/account/bidder-account.d.ts +285 -35
- package/dist/schemas/account/exceptions/index.d.ts +3 -0
- package/dist/schemas/account/exceptions/invalid-google-oauth-token.exception.d.ts +5 -0
- package/dist/schemas/account/exceptions/no-bidder-accounts-available.exception.d.ts +5 -0
- package/dist/schemas/account/exceptions/no-google-oauth-tokens-found.exception.d.ts +5 -0
- package/dist/schemas/account/index.d.ts +4 -3
- package/dist/schemas/account/scraper-account.d.ts +7 -7
- package/dist/schemas/bid/exceptions/cloudflare-challenge-failed.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/delete-multilogin-profile.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/dropdown-option-not-present.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/element-not-clickable.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/evalaute-element.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/evaluate-function.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/get-multilogin-browser.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/incorrect-security-question-answer.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/index.d.ts +61 -0
- package/dist/schemas/bid/exceptions/init-browser.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/insufficient-connects.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/invalid-credentials.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/invalid-job-url.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/login-failed.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/multilogin-authentication.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/navigation-timeout.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/new-browser-page.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/new-page.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/open-new-url.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/parse-connects.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/proposal-error-alert.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/proposal-form-warning-alert.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/proposal-submit-failed.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/pupeteer-conection-error.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/question-pair-not-matching.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/select-agency.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/select-contractor.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/selector-not-found.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/typed-value-not-matching.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/typing-input-field.exception.d.ts +5 -0
- package/dist/schemas/bid/exceptions/wait-for-function-timeout.exception.d.ts +5 -0
- package/dist/schemas/bid/index.d.ts +1 -0
- package/dist/schemas/campaign/campaign-notifications.d.ts +9 -0
- package/dist/schemas/campaign/campaign.d.ts +171 -238
- package/dist/schemas/campaign/index.d.ts +6 -6
- package/dist/schemas/logger/log-event.d.ts +18 -17
- package/dist/schemas/organization/index.d.ts +5 -62
- package/dist/schemas/organization/organization.d.ts +22 -118
- package/dist/schemas/scraper/scrape-payload.d.ts +65 -60
- package/dist/types/campaign/campaign-insights.d.ts +1 -2
- package/dist/types/campaign/campaign-notifications.d.ts +7 -0
- package/dist/types/campaign/campaign.d.ts +3 -5
- package/dist/types/campaign/index.d.ts +3 -6
- package/dist/types/logger/log-event.d.ts +5 -4
- package/package.json +1 -1
- package/dist/constants/collections.js +0 -14
- package/dist/constants/common-questions.js +0 -57
- package/dist/constants/index.js +0 -18
- package/dist/constants/job-filter-options.js +0 -265
- package/dist/constants/job-status.js +0 -21
- package/dist/constants/mappings/countryMapping.js +0 -120
- package/dist/constants/mappings/regionMapping.js +0 -240
- package/dist/constants/routes.js +0 -116
- package/dist/constants/upwork-accounts.js +0 -18
- package/dist/index.js +0 -4
- package/dist/schemas/account/account-status.js +0 -8
- package/dist/schemas/account/bidder-account.js +0 -35
- package/dist/schemas/account/index.js +0 -3
- package/dist/schemas/account/scraper-account.js +0 -34
- package/dist/schemas/ai/ai-config.d.ts +0 -36
- package/dist/schemas/ai/ai-config.js +0 -9
- package/dist/schemas/ai/index.d.ts +0 -3
- package/dist/schemas/ai/index.js +0 -3
- package/dist/schemas/ai/proposal.d.ts +0 -82
- package/dist/schemas/ai/proposal.js +0 -13
- package/dist/schemas/ai/suitability.d.ts +0 -37
- package/dist/schemas/ai/suitability.js +0 -14
- package/dist/schemas/bid/bid-result.js +0 -11
- package/dist/schemas/bid/bid.js +0 -35
- package/dist/schemas/bid/index.js +0 -2
- package/dist/schemas/campaign/campaign-ai-metrics.js +0 -6
- package/dist/schemas/campaign/campaign-analytics.js +0 -42
- package/dist/schemas/campaign/campaign-expenses.js +0 -6
- package/dist/schemas/campaign/campaign-insights.js +0 -31
- package/dist/schemas/campaign/campaign-integrations.js +0 -13
- package/dist/schemas/campaign/campaign-job-count.js +0 -3
- package/dist/schemas/campaign/campaign.js +0 -41
- package/dist/schemas/campaign/index.js +0 -7
- package/dist/schemas/chat-message/chat-message.js +0 -10
- package/dist/schemas/chat-message/index.js +0 -1
- package/dist/schemas/config/agency-config.js +0 -7
- package/dist/schemas/config/index.js +0 -1
- package/dist/schemas/event/index.d.ts +0 -58
- package/dist/schemas/index.js +0 -17
- package/dist/schemas/job-filters/index.js +0 -1
- package/dist/schemas/job-filters/job-filters.js +0 -84
- package/dist/schemas/lead/index.js +0 -173
- package/dist/schemas/lead/lead-note.js +0 -27
- package/dist/schemas/lead/lead-status.js +0 -23
- package/dist/schemas/lead/nuxt.js +0 -287
- package/dist/schemas/logger/index.js +0 -1
- package/dist/schemas/logger/log-event.js +0 -117
- package/dist/schemas/meter-event/index.d.ts +0 -12
- package/dist/schemas/organization/index.js +0 -70
- package/dist/schemas/organization/member.js +0 -7
- package/dist/schemas/organization/organization.js +0 -16
- package/dist/schemas/organization/subscription.js +0 -17
- package/dist/schemas/proxy/index.js +0 -3
- package/dist/schemas/proxy/proxy-available-replacements.js +0 -3
- package/dist/schemas/proxy/proxy-country.js +0 -249
- package/dist/schemas/proxy/proxy.js +0 -29
- package/dist/schemas/saved-search/index.js +0 -9
- package/dist/schemas/scraper/index.js +0 -2
- package/dist/schemas/scraper/scrape-payload.js +0 -21
- package/dist/schemas/scraper/scrape-result.js +0 -23
- package/dist/schemas/shared.js +0 -19
- package/dist/schemas/tier/index.d.ts +0 -119
- package/dist/schemas/time-filter/index.js +0 -6
- package/dist/schemas/transaction/index.js +0 -17
- package/dist/schemas/usage/index.js +0 -18
- package/dist/schemas/user/index.js +0 -52
- package/dist/types/account/account-status.js +0 -1
- package/dist/types/account/bidder-account.js +0 -1
- package/dist/types/account/index.js +0 -3
- package/dist/types/account/scraper-account.js +0 -1
- package/dist/types/ai/ai-config.d.ts +0 -6
- package/dist/types/ai/ai-config.js +0 -1
- package/dist/types/ai/index.d.ts +0 -3
- package/dist/types/ai/index.js +0 -3
- package/dist/types/ai/proposal.d.ts +0 -10
- package/dist/types/ai/proposal.js +0 -1
- package/dist/types/ai/suitability.d.ts +0 -6
- package/dist/types/ai/suitability.js +0 -1
- package/dist/types/bid/bid-result.js +0 -1
- package/dist/types/bid/bid.js +0 -1
- package/dist/types/bid/index.js +0 -2
- package/dist/types/campaign/campaign-analytics.js +0 -1
- package/dist/types/campaign/campaign-expenses.js +0 -1
- package/dist/types/campaign/campaign-insights.js +0 -1
- package/dist/types/campaign/campaign-integrations.js +0 -1
- package/dist/types/campaign/campaign-job-count.js +0 -1
- package/dist/types/campaign/campaign.js +0 -1
- package/dist/types/campaign/index.js +0 -6
- package/dist/types/chat-message/chat-message.js +0 -1
- package/dist/types/chat-message/index.js +0 -1
- package/dist/types/config/agency-config.js +0 -1
- package/dist/types/config/index.js +0 -1
- package/dist/types/index.js +0 -15
- package/dist/types/job/index.js +0 -3
- package/dist/types/job/job-note.js +0 -1
- package/dist/types/job/job-status.js +0 -9
- package/dist/types/job/nuxt.js +0 -1
- package/dist/types/job-filters/index.js +0 -1
- package/dist/types/job-filters/job-filters.js +0 -1
- package/dist/types/logger/index.js +0 -1
- package/dist/types/logger/log-event.js +0 -1
- package/dist/types/saved-search/index.js +0 -1
- package/dist/types/scraper/index.js +0 -2
- package/dist/types/scraper/scrape-payload.js +0 -1
- package/dist/types/scraper/scrape-result.js +0 -1
- package/dist/types/shared.js +0 -1
- package/dist/types/time-filter/index.js +0 -1
- package/dist/types/transaction/index.js +0 -1
- package/dist/types/usage/index.js +0 -1
- package/dist/types/user/index.js +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/try-catch.js +0 -10
package/dist/schemas/bid/bid.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export const bidPayloadProposalDataSchema = z.object({
|
|
3
|
-
coverLetter: z.string(),
|
|
4
|
-
questionAnswerPairs: z
|
|
5
|
-
.array(z.object({
|
|
6
|
-
question: z.string(),
|
|
7
|
-
answer: z.string(),
|
|
8
|
-
}))
|
|
9
|
-
.nullable(),
|
|
10
|
-
boostingEnabled: z.boolean(),
|
|
11
|
-
minimumBoost: z.number().nullable(),
|
|
12
|
-
maximumBoost: z.number().nullable(),
|
|
13
|
-
});
|
|
14
|
-
export const freelancerBidProposalDataSchema = bidPayloadProposalDataSchema;
|
|
15
|
-
export const agencyBidProposalDataSchema = bidPayloadProposalDataSchema.extend({
|
|
16
|
-
agencyName: z.string(),
|
|
17
|
-
contractorName: z.string(),
|
|
18
|
-
specializedProfile: z.string().nullable(),
|
|
19
|
-
});
|
|
20
|
-
export const bidPayloadSchema = z.object({
|
|
21
|
-
jobUrl: z.string(),
|
|
22
|
-
username: z.string(),
|
|
23
|
-
password: z.string(),
|
|
24
|
-
});
|
|
25
|
-
export const agencyBidPayloadSchema = bidPayloadSchema.extend({
|
|
26
|
-
proposalData: agencyBidProposalDataSchema,
|
|
27
|
-
});
|
|
28
|
-
export const freelancerBidPayloadSchema = bidPayloadSchema.extend({
|
|
29
|
-
proposalData: freelancerBidProposalDataSchema,
|
|
30
|
-
});
|
|
31
|
-
export const bidDtoSchema = z.object({
|
|
32
|
-
organizationId: z.string(),
|
|
33
|
-
campaignId: z.string(),
|
|
34
|
-
leadId: z.string(),
|
|
35
|
-
});
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { leadStatusSchema, upworkJobSchema } from "../lead";
|
|
3
|
-
export const campaignAnalyticsStatsSchema = z.object({
|
|
4
|
-
jobsAnalyzed: z.number(),
|
|
5
|
-
totalStats: z.object({
|
|
6
|
-
contacted: z.number(),
|
|
7
|
-
viewed: z.number(),
|
|
8
|
-
replied: z.number(),
|
|
9
|
-
negotiations: z.number(),
|
|
10
|
-
won: z.number(),
|
|
11
|
-
}),
|
|
12
|
-
statsByDate: z.array(z.object({
|
|
13
|
-
label: z.string(),
|
|
14
|
-
contacted: z.number(),
|
|
15
|
-
viewed: z.number(),
|
|
16
|
-
replied: z.number(),
|
|
17
|
-
negotiations: z.number(),
|
|
18
|
-
won: z.number(),
|
|
19
|
-
})),
|
|
20
|
-
});
|
|
21
|
-
export const campaignAnalyticsResponseSchema = z.object({
|
|
22
|
-
jobsAnalyzed: z.number(),
|
|
23
|
-
contacted: z.number(),
|
|
24
|
-
viewed: z.number(),
|
|
25
|
-
replied: z.number(),
|
|
26
|
-
negotiations: z.number(),
|
|
27
|
-
won: z.number(),
|
|
28
|
-
});
|
|
29
|
-
export const campaignActivitySchema = z.object({
|
|
30
|
-
createdAt: z.number(),
|
|
31
|
-
status: leadStatusSchema,
|
|
32
|
-
job: upworkJobSchema.pick({
|
|
33
|
-
id: true,
|
|
34
|
-
title: true,
|
|
35
|
-
datetime: true,
|
|
36
|
-
jobUrl: true,
|
|
37
|
-
}),
|
|
38
|
-
});
|
|
39
|
-
export const campaignActivityCreateSchema = campaignActivitySchema.pick({
|
|
40
|
-
status: true,
|
|
41
|
-
job: true,
|
|
42
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { agentStatusSchema } from "../lead";
|
|
3
|
-
export const campaignCountByStatusSchema = z.object({
|
|
4
|
-
// Using z.enum values to create a schema with all possible job statuses
|
|
5
|
-
...Object.fromEntries(Object.values(agentStatusSchema.enum).map((status) => [
|
|
6
|
-
status,
|
|
7
|
-
z.object({
|
|
8
|
-
boosted: z.number(),
|
|
9
|
-
organic: z.number(),
|
|
10
|
-
total: z.number(),
|
|
11
|
-
}),
|
|
12
|
-
])),
|
|
13
|
-
});
|
|
14
|
-
export const campaignInsightsSchema = z.object({
|
|
15
|
-
pipelineHealth: campaignCountByStatusSchema,
|
|
16
|
-
biddingAmount: z.number().default(0),
|
|
17
|
-
boostingAmount: z.number().default(0),
|
|
18
|
-
boostedProposalsCount: z.number().default(0),
|
|
19
|
-
totalProposalsCount: z.number().default(0),
|
|
20
|
-
totalExpenses: z.number().default(0),
|
|
21
|
-
suitabilityRange0to10: z.number(),
|
|
22
|
-
suitabilityRange10to20: z.number(),
|
|
23
|
-
suitabilityRange20to30: z.number(),
|
|
24
|
-
suitabilityRange30to40: z.number(),
|
|
25
|
-
suitabilityRange40to50: z.number(),
|
|
26
|
-
suitabilityRange50to60: z.number(),
|
|
27
|
-
suitabilityRange60to70: z.number(),
|
|
28
|
-
suitabilityRange70to80: z.number(),
|
|
29
|
-
suitabilityRange80to90: z.number(),
|
|
30
|
-
suitabilityRange90to100: z.number(),
|
|
31
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export const campaignIntegrations = z.enum(["discord", "slack"]);
|
|
3
|
-
export const campaignIntegrationsSchema = z.object({
|
|
4
|
-
suitabilityHooks: z.object({
|
|
5
|
-
discord: z.string().url().nullable(),
|
|
6
|
-
slack: z.string().url().nullable(),
|
|
7
|
-
}),
|
|
8
|
-
proposalSentHooks: z.object({
|
|
9
|
-
discord: z.string().url().nullable(),
|
|
10
|
-
slack: z.string().url().nullable(),
|
|
11
|
-
}),
|
|
12
|
-
});
|
|
13
|
-
export const updateCampaignIntegrationsSchema = campaignIntegrationsSchema.partial();
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { number, z } from "zod";
|
|
2
|
-
import { jobFiltersSchema } from "../job-filters";
|
|
3
|
-
import { leadStatusSchema } from "../lead";
|
|
4
|
-
import { campaignExpensesSchema } from "./campaign-expenses";
|
|
5
|
-
import { campaignIntegrationsSchema } from "./campaign-integrations";
|
|
6
|
-
export const campaignStatusSchema = z.union([
|
|
7
|
-
z.literal("active"),
|
|
8
|
-
z.literal("draft"),
|
|
9
|
-
z.literal("paused"),
|
|
10
|
-
z.literal("error"),
|
|
11
|
-
]);
|
|
12
|
-
export const campaignSchema = z.object({
|
|
13
|
-
id: z.string(),
|
|
14
|
-
name: z.string(),
|
|
15
|
-
filters: jobFiltersSchema,
|
|
16
|
-
createdAt: number(),
|
|
17
|
-
updatedAt: number(),
|
|
18
|
-
confirmedBillingAt: number().nullable(),
|
|
19
|
-
automatedSuitability: z.boolean().nullable(),
|
|
20
|
-
automatedBidding: z.boolean().nullable(),
|
|
21
|
-
boostingEnabled: z.boolean().nullable().default(false),
|
|
22
|
-
maximumBoost: z.number().nullable().default(30),
|
|
23
|
-
minimumBoost: z.number().nullable().default(0),
|
|
24
|
-
webhookUrl: z.string().nullable(),
|
|
25
|
-
monthlyBudget: z.number().nullable(),
|
|
26
|
-
suitabilityThreshold: z.number().min(0).max(100).nullable().default(0),
|
|
27
|
-
boostingThreshold: z.number().min(0).max(100).nullable().default(0),
|
|
28
|
-
leadCounts: z.record(leadStatusSchema, z.number()).nullable(),
|
|
29
|
-
expenses: campaignExpensesSchema,
|
|
30
|
-
integrations: campaignIntegrationsSchema,
|
|
31
|
-
status: campaignStatusSchema.optional(),
|
|
32
|
-
});
|
|
33
|
-
export const createCampaignSchema = campaignSchema.omit({
|
|
34
|
-
id: true,
|
|
35
|
-
createdAt: true,
|
|
36
|
-
updatedAt: true,
|
|
37
|
-
});
|
|
38
|
-
export const updateCampaignSchema = campaignSchema.omit({
|
|
39
|
-
createdAt: true,
|
|
40
|
-
updatedAt: true,
|
|
41
|
-
});
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './campaign';
|
|
2
|
-
export * from './campaign-insights';
|
|
3
|
-
export * from './campaign-job-count';
|
|
4
|
-
export * from './campaign-expenses';
|
|
5
|
-
export * from './campaign-integrations';
|
|
6
|
-
export * from './campaign-analytics';
|
|
7
|
-
export * from './campaign-ai-metrics';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export const chatMessageSchema = z.object({
|
|
3
|
-
id: z.string(),
|
|
4
|
-
content: z.string(),
|
|
5
|
-
role: z.enum(['user', 'assistant']),
|
|
6
|
-
timestamp: z.string(),
|
|
7
|
-
});
|
|
8
|
-
export const newChatMessageSchema = chatMessageSchema.omit({
|
|
9
|
-
id: true,
|
|
10
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './chat-message';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './agency-config';
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
export declare const logEventSchemaWithMetadata: import("zod").ZodIntersection<import("zod").ZodIntersection<import("zod").ZodObject<{
|
|
2
|
-
type: import("zod").ZodEnum<["scraperStarted", "scraperCompleted", "jobScraped", "jobScrapeFailed", "jobsIndexed", "jobDuplicateSkipped", "scraperFailed", "jobActivityScraped", "jobActivityScrapeFailed", "feedScrapeStarted", "feedScrapeCompleted", "feedScrapeFailed", "jobListingScraped", "jobSyncPublished", "jobSyncReceived", "leadsCreatedAndSynced", "suitabilityPending", "suitabilityProcessing", "suitabilityComplete", "suitabilityFailed", "manualSuitabilityAnalyzed", "proposalProcessing", "proposalComplete", "proposalFailed", "manualProposalGenerated", "biddingProcessing", "biddingComplete", "biddingFailed", "biddingSkipped", "biddingPending", "errorLogged", "cloudTaskRetry", "manualLeadEdited", "leadArchived", "auditTrailLogged"]>;
|
|
3
|
-
source: import("zod").ZodString;
|
|
4
|
-
resourceType: import("zod").ZodDefault<import("zod").ZodString>;
|
|
5
|
-
resourceId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
6
|
-
leadId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
7
|
-
campaignId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
8
|
-
userId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
9
|
-
reason: import("zod").ZodNullable<import("zod").ZodString>;
|
|
10
|
-
timestamp: import("zod").ZodNumber;
|
|
11
|
-
}, "strip", import("zod").ZodTypeAny, {
|
|
12
|
-
type: "scraperStarted" | "scraperCompleted" | "jobScraped" | "jobScrapeFailed" | "jobsIndexed" | "jobDuplicateSkipped" | "scraperFailed" | "jobActivityScraped" | "jobActivityScrapeFailed" | "feedScrapeStarted" | "feedScrapeCompleted" | "feedScrapeFailed" | "jobListingScraped" | "jobSyncPublished" | "jobSyncReceived" | "leadsCreatedAndSynced" | "suitabilityPending" | "suitabilityProcessing" | "suitabilityComplete" | "suitabilityFailed" | "manualSuitabilityAnalyzed" | "proposalProcessing" | "proposalComplete" | "proposalFailed" | "manualProposalGenerated" | "biddingProcessing" | "biddingComplete" | "biddingFailed" | "biddingSkipped" | "biddingPending" | "errorLogged" | "cloudTaskRetry" | "manualLeadEdited" | "leadArchived" | "auditTrailLogged";
|
|
13
|
-
source: string;
|
|
14
|
-
resourceType: string;
|
|
15
|
-
resourceId: string | null;
|
|
16
|
-
leadId: string | null;
|
|
17
|
-
campaignId: string | null;
|
|
18
|
-
userId: string | null;
|
|
19
|
-
reason: string | null;
|
|
20
|
-
timestamp: number;
|
|
21
|
-
}, {
|
|
22
|
-
type: "scraperStarted" | "scraperCompleted" | "jobScraped" | "jobScrapeFailed" | "jobsIndexed" | "jobDuplicateSkipped" | "scraperFailed" | "jobActivityScraped" | "jobActivityScrapeFailed" | "feedScrapeStarted" | "feedScrapeCompleted" | "feedScrapeFailed" | "jobListingScraped" | "jobSyncPublished" | "jobSyncReceived" | "leadsCreatedAndSynced" | "suitabilityPending" | "suitabilityProcessing" | "suitabilityComplete" | "suitabilityFailed" | "manualSuitabilityAnalyzed" | "proposalProcessing" | "proposalComplete" | "proposalFailed" | "manualProposalGenerated" | "biddingProcessing" | "biddingComplete" | "biddingFailed" | "biddingSkipped" | "biddingPending" | "errorLogged" | "cloudTaskRetry" | "manualLeadEdited" | "leadArchived" | "auditTrailLogged";
|
|
23
|
-
source: string;
|
|
24
|
-
resourceId: string | null;
|
|
25
|
-
leadId: string | null;
|
|
26
|
-
campaignId: string | null;
|
|
27
|
-
userId: string | null;
|
|
28
|
-
reason: string | null;
|
|
29
|
-
timestamp: number;
|
|
30
|
-
resourceType?: string | undefined;
|
|
31
|
-
}>, import("zod").ZodDiscriminatedUnion<"type", [import("zod").ZodObject<{
|
|
32
|
-
type: import("zod").ZodEnum<["jobActivityScraped"]>;
|
|
33
|
-
}, "strip", import("zod").ZodTypeAny, {
|
|
34
|
-
type: "jobActivityScraped";
|
|
35
|
-
}, {
|
|
36
|
-
type: "jobActivityScraped";
|
|
37
|
-
}>, import("zod").ZodObject<{
|
|
38
|
-
type: import("zod").ZodEnum<["scraperStarted", "scraperCompleted", "jobScraped", "jobScrapeFailed", "jobsIndexed", "jobDuplicateSkipped", "scraperFailed", "jobActivityScrapeFailed", "feedScrapeStarted", "feedScrapeCompleted", "feedScrapeFailed", "jobListingScraped", "jobSyncPublished", "jobSyncReceived", "leadsCreatedAndSynced", "suitabilityPending", "suitabilityProcessing", "suitabilityComplete", "suitabilityFailed", "manualSuitabilityAnalyzed", "proposalProcessing", "proposalComplete", "proposalFailed", "manualProposalGenerated", "biddingProcessing", "biddingComplete", "biddingFailed", "biddingSkipped", "biddingPending", "errorLogged", "cloudTaskRetry", "manualLeadEdited", "leadArchived", "auditTrailLogged"]>;
|
|
39
|
-
metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
40
|
-
}, "strip", import("zod").ZodTypeAny, {
|
|
41
|
-
type: "scraperStarted" | "scraperCompleted" | "jobScraped" | "jobScrapeFailed" | "jobsIndexed" | "jobDuplicateSkipped" | "scraperFailed" | "jobActivityScrapeFailed" | "feedScrapeStarted" | "feedScrapeCompleted" | "feedScrapeFailed" | "jobListingScraped" | "jobSyncPublished" | "jobSyncReceived" | "leadsCreatedAndSynced" | "suitabilityPending" | "suitabilityProcessing" | "suitabilityComplete" | "suitabilityFailed" | "manualSuitabilityAnalyzed" | "proposalProcessing" | "proposalComplete" | "proposalFailed" | "manualProposalGenerated" | "biddingProcessing" | "biddingComplete" | "biddingFailed" | "biddingSkipped" | "biddingPending" | "errorLogged" | "cloudTaskRetry" | "manualLeadEdited" | "leadArchived" | "auditTrailLogged";
|
|
42
|
-
metadata: Record<string, unknown> | null;
|
|
43
|
-
}, {
|
|
44
|
-
type: "scraperStarted" | "scraperCompleted" | "jobScraped" | "jobScrapeFailed" | "jobsIndexed" | "jobDuplicateSkipped" | "scraperFailed" | "jobActivityScrapeFailed" | "feedScrapeStarted" | "feedScrapeCompleted" | "feedScrapeFailed" | "jobListingScraped" | "jobSyncPublished" | "jobSyncReceived" | "leadsCreatedAndSynced" | "suitabilityPending" | "suitabilityProcessing" | "suitabilityComplete" | "suitabilityFailed" | "manualSuitabilityAnalyzed" | "proposalProcessing" | "proposalComplete" | "proposalFailed" | "manualProposalGenerated" | "biddingProcessing" | "biddingComplete" | "biddingFailed" | "biddingSkipped" | "biddingPending" | "errorLogged" | "cloudTaskRetry" | "manualLeadEdited" | "leadArchived" | "auditTrailLogged";
|
|
45
|
-
metadata: Record<string, unknown> | null;
|
|
46
|
-
}>]>>, import("zod").ZodDiscriminatedUnion<"type", [import("zod").ZodObject<{
|
|
47
|
-
type: import("zod").ZodEnum<["jobActivityScraped"]>;
|
|
48
|
-
}, "strip", import("zod").ZodTypeAny, {
|
|
49
|
-
type: "jobActivityScraped";
|
|
50
|
-
}, {
|
|
51
|
-
type: "jobActivityScraped";
|
|
52
|
-
}>, import("zod").ZodObject<{
|
|
53
|
-
type: import("zod").ZodEnum<["jobActivityScraped"]>;
|
|
54
|
-
}, "strip", import("zod").ZodTypeAny, {
|
|
55
|
-
type: "jobActivityScraped";
|
|
56
|
-
}, {
|
|
57
|
-
type: "jobActivityScraped";
|
|
58
|
-
}>]>>;
|
package/dist/schemas/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export * from "./account";
|
|
2
|
-
export * from "./bid";
|
|
3
|
-
export * from "./campaign";
|
|
4
|
-
export * from "./chat-message";
|
|
5
|
-
export * from "./config";
|
|
6
|
-
export * from "./job-filters";
|
|
7
|
-
export * from "./lead";
|
|
8
|
-
export * from "./logger";
|
|
9
|
-
export * from "./organization";
|
|
10
|
-
export * from "./proxy";
|
|
11
|
-
export * from "./saved-search";
|
|
12
|
-
export * from "./scraper";
|
|
13
|
-
export * from "./shared";
|
|
14
|
-
export * from "./time-filter";
|
|
15
|
-
export * from "./user";
|
|
16
|
-
export * from "./usage";
|
|
17
|
-
export * from "./transaction";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './job-filters';
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { JOB_FILTER_OPTIONS } from "../../constants/job-filter-options";
|
|
3
|
-
// Enum definitions for fixed options
|
|
4
|
-
export const projectDurationEnum = z.enum(JOB_FILTER_OPTIONS.PROJECT_DURATION);
|
|
5
|
-
export const engagementTypeEnum = z.enum(JOB_FILTER_OPTIONS.ENGAGEMENT_TYPE);
|
|
6
|
-
export const vendorTypeEnum = z.enum(JOB_FILTER_OPTIONS.VENDOR_TYPE);
|
|
7
|
-
export const paymentTypeEnum = z.enum(JOB_FILTER_OPTIONS.PAYMENT_TYPE);
|
|
8
|
-
export const categoryEnum = z.enum(JOB_FILTER_OPTIONS.CATEGORIES);
|
|
9
|
-
export const clientIndustryEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_INDUSTRY);
|
|
10
|
-
export const clientSizeEnum = z.enum(JOB_FILTER_OPTIONS.CLIENT_SIZE);
|
|
11
|
-
export const talentTypeEnum = z.enum(JOB_FILTER_OPTIONS.TALENT_TYPE);
|
|
12
|
-
export const englishLevelEnum = z.enum(JOB_FILTER_OPTIONS.ENGLISH_LEVELS);
|
|
13
|
-
export const experienceLevelEnum = z.enum(JOB_FILTER_OPTIONS.EXPERIENCE_LEVELS);
|
|
14
|
-
export const regionEnum = z.enum(["all", "Worldwide", "UKOnly", "USOnly"]);
|
|
15
|
-
export const requiredEarningsEnum = z.union([
|
|
16
|
-
z.literal(100),
|
|
17
|
-
z.literal(1000),
|
|
18
|
-
z.literal(10000),
|
|
19
|
-
]);
|
|
20
|
-
export const requiredJSSEnum = z.enum(JOB_FILTER_OPTIONS.REQUIRED_JSS);
|
|
21
|
-
// Main job filters schema
|
|
22
|
-
export const jobFiltersSchema = z.object({
|
|
23
|
-
keywords: z
|
|
24
|
-
.object({
|
|
25
|
-
includes: z.string().nullable(),
|
|
26
|
-
excludes: z.string().nullable(),
|
|
27
|
-
})
|
|
28
|
-
.nullable(),
|
|
29
|
-
isFeatured: z.enum(["all", "true", "false"]).nullable(),
|
|
30
|
-
regions: z.array(regionEnum).nullable(),
|
|
31
|
-
categories: z
|
|
32
|
-
.object({
|
|
33
|
-
includes: z.array(categoryEnum).nullable(),
|
|
34
|
-
excludes: z.array(categoryEnum).nullable(),
|
|
35
|
-
})
|
|
36
|
-
.nullable(),
|
|
37
|
-
payment: z
|
|
38
|
-
.object({
|
|
39
|
-
paymentType: z.array(paymentTypeEnum).nullable(),
|
|
40
|
-
minFixedPrice: z.number().nullable(),
|
|
41
|
-
maxFixedPrice: z.number().nullable(),
|
|
42
|
-
minHourlyRate: z.number().nullable(),
|
|
43
|
-
maxHourlyRate: z.number().nullable(),
|
|
44
|
-
})
|
|
45
|
-
.nullable(),
|
|
46
|
-
projectDuration: z.array(projectDurationEnum).nullable(),
|
|
47
|
-
experienceLevel: z.array(experienceLevelEnum).nullable(),
|
|
48
|
-
questions: z
|
|
49
|
-
.object({
|
|
50
|
-
hasQuestions: z.enum(["all", "yes", "no"]).default("all"),
|
|
51
|
-
})
|
|
52
|
-
.nullable(),
|
|
53
|
-
engagementType: z.array(engagementTypeEnum).nullable(),
|
|
54
|
-
clientInfo: z
|
|
55
|
-
.object({
|
|
56
|
-
isPaymentVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
57
|
-
isPhoneVerified: z.enum(["all", "true", "false"]).default("all"),
|
|
58
|
-
enterpriseClient: z.enum(["all", "true", "false"]).default("all"),
|
|
59
|
-
clientLocationIncludes: z.array(z.string()).nullable(),
|
|
60
|
-
clientLocationExcludes: z.array(z.string()).nullable(),
|
|
61
|
-
minReviewScore: z.number().min(0).max(5).nullable(),
|
|
62
|
-
minTotalSpent: z.number().nullable(),
|
|
63
|
-
minHireRate: z.number().min(0).max(100).nullable(),
|
|
64
|
-
clientIndustry: z.array(clientIndustryEnum).nullable(),
|
|
65
|
-
companySize: z.array(clientSizeEnum).nullable(),
|
|
66
|
-
minJobsPosted: z.number().nullable(),
|
|
67
|
-
minAvgHourlyRate: z.number().nullable(),
|
|
68
|
-
minNumReviews: z.number().nullable(),
|
|
69
|
-
memberSinceFrom: z.string().date().nullable(),
|
|
70
|
-
memberSinceTo: z.string().date().nullable(),
|
|
71
|
-
})
|
|
72
|
-
.nullable(),
|
|
73
|
-
vendorQualifications: z
|
|
74
|
-
.object({
|
|
75
|
-
locationIncludes: z.array(z.string()).nullable(),
|
|
76
|
-
locationExcludes: z.array(z.string()).nullable(),
|
|
77
|
-
talentTypes: z.array(talentTypeEnum).nullable(),
|
|
78
|
-
englishLevels: z.array(englishLevelEnum).nullable(),
|
|
79
|
-
includeRisingTalent: z.string().nullable(),
|
|
80
|
-
requiredEarnings: requiredEarningsEnum.nullable(),
|
|
81
|
-
requiredJSS: z.array(requiredJSSEnum).nullable(),
|
|
82
|
-
})
|
|
83
|
-
.nullable(),
|
|
84
|
-
});
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { array, boolean, custom, number, object, record, string, z } from "zod";
|
|
2
|
-
import { regionSchema } from "../shared";
|
|
3
|
-
import { leadNoteSchema } from "./lead-note";
|
|
4
|
-
import { agentStatusSchema, leadStatusSchema } from "./lead-status";
|
|
5
|
-
export const jobSkillsSchema = object({
|
|
6
|
-
name: string(),
|
|
7
|
-
});
|
|
8
|
-
export const vendorQualificationSchema = object({
|
|
9
|
-
location: string().nullable(),
|
|
10
|
-
talentType: z.enum(["Agency", "Independent", "unspecified"]).nullable(),
|
|
11
|
-
englishLevel: string().nullable(),
|
|
12
|
-
minimumEarnings: number().nullable(),
|
|
13
|
-
jobSuccessScore: string().nullable(),
|
|
14
|
-
includeRisingTalent: string().nullable(),
|
|
15
|
-
});
|
|
16
|
-
export const clientInfoSchema = object({
|
|
17
|
-
isPaymentVerified: boolean().nullable(),
|
|
18
|
-
isPhoneVerified: boolean().nullable(),
|
|
19
|
-
numberOfReviews: number().nullable(),
|
|
20
|
-
rating: number().nullable(),
|
|
21
|
-
country: string().nullable(),
|
|
22
|
-
region: string().nullable(),
|
|
23
|
-
jobsPosted: number().nullable(),
|
|
24
|
-
totalSpent: number().nullable(),
|
|
25
|
-
numberOfHires: number().nullable(),
|
|
26
|
-
activeEngagements: number().nullable(),
|
|
27
|
-
openJobs: number().nullable(),
|
|
28
|
-
hireRate: number().nullable(),
|
|
29
|
-
memberSince: string().nullable(),
|
|
30
|
-
companyIndustry: string().nullable(),
|
|
31
|
-
companySize: string().nullable(),
|
|
32
|
-
enterpriseClient: boolean().nullable(),
|
|
33
|
-
avgHourlyRatePaid: number().nullable(),
|
|
34
|
-
});
|
|
35
|
-
export const clientReviewSchema = object({
|
|
36
|
-
jobTitle: string().nullable(),
|
|
37
|
-
freelancerName: string().nullable(),
|
|
38
|
-
freelancerRating: number().nullable(),
|
|
39
|
-
freelancerFeedback: string().nullable(),
|
|
40
|
-
clientFeedback: string().nullable(),
|
|
41
|
-
clientFeedbackRating: number().nullable(),
|
|
42
|
-
dateRange: string().nullable(),
|
|
43
|
-
paymentType: string().nullable(),
|
|
44
|
-
fixedPrice: number().nullable(),
|
|
45
|
-
hourlyRate: number().nullable(),
|
|
46
|
-
numHours: number().nullable(),
|
|
47
|
-
totalBilled: number().nullable(),
|
|
48
|
-
});
|
|
49
|
-
export const bidRangeSchema = object({
|
|
50
|
-
high: number().nullable(),
|
|
51
|
-
avg: number().nullable(),
|
|
52
|
-
low: number().nullable(),
|
|
53
|
-
});
|
|
54
|
-
export const jobActivitySchema = object({
|
|
55
|
-
proposals: object({
|
|
56
|
-
min: number().nullable(),
|
|
57
|
-
max: number().nullable(),
|
|
58
|
-
}),
|
|
59
|
-
lastViewedByClient: string().nullable(),
|
|
60
|
-
lastViewedByClientTimestamp: number().nullable(),
|
|
61
|
-
hires: number().nullable(),
|
|
62
|
-
interviewing: number().nullable(),
|
|
63
|
-
invitesSent: number().nullable(),
|
|
64
|
-
unansweredInvites: number().nullable(),
|
|
65
|
-
updatedAt: number().nullable(),
|
|
66
|
-
});
|
|
67
|
-
export const jobActivityDeltaSchema = object({
|
|
68
|
-
proposals: number(),
|
|
69
|
-
interviewing: number(),
|
|
70
|
-
hires: number(),
|
|
71
|
-
invitesSent: number(),
|
|
72
|
-
unansweredInvites: number(),
|
|
73
|
-
});
|
|
74
|
-
export const metadataSchema = object({
|
|
75
|
-
hours: string().nullable(),
|
|
76
|
-
duration: string().nullable(),
|
|
77
|
-
experienceLevel: string().nullable(),
|
|
78
|
-
hourlyRate: z
|
|
79
|
-
.object({
|
|
80
|
-
min: number().nullable(),
|
|
81
|
-
max: number().nullable(),
|
|
82
|
-
})
|
|
83
|
-
.nullable(),
|
|
84
|
-
paymentType: string().nullable(),
|
|
85
|
-
fixedPrice: number().nullable(),
|
|
86
|
-
});
|
|
87
|
-
export const jobActivityOffsetHours = [4, 24];
|
|
88
|
-
export const jobActivityOffsetEnum = z.enum(jobActivityOffsetHours.map((h) => `${h}h`));
|
|
89
|
-
export const upworkJobSchema = object({
|
|
90
|
-
id: string().nullable(),
|
|
91
|
-
uid: string().nullable(),
|
|
92
|
-
createdAt: number().nullable(),
|
|
93
|
-
title: string().nullable(),
|
|
94
|
-
category: string().nullable(),
|
|
95
|
-
skills: array(jobSkillsSchema).nullable(),
|
|
96
|
-
datetime: number().nullable(),
|
|
97
|
-
description: string().nullable(),
|
|
98
|
-
descriptionLength: number().nullable(),
|
|
99
|
-
connectsRequired: number().nullable(),
|
|
100
|
-
projectType: string().nullable(),
|
|
101
|
-
projectDuration: string().nullable(),
|
|
102
|
-
questions: array(string()).nullable(),
|
|
103
|
-
jobUrl: string().nullable(),
|
|
104
|
-
metadata: metadataSchema.nullable(),
|
|
105
|
-
clientInfo: clientInfoSchema.nullable(),
|
|
106
|
-
vendorQualifications: vendorQualificationSchema.nullable(),
|
|
107
|
-
processed: boolean().nullable(),
|
|
108
|
-
isFeatured: boolean().nullable(),
|
|
109
|
-
clientReviews: array(clientReviewSchema).nullable(),
|
|
110
|
-
region: regionSchema.nullable(),
|
|
111
|
-
bidRange: bidRangeSchema.nullable(),
|
|
112
|
-
jobActivity: jobActivitySchema.nullable(),
|
|
113
|
-
activityUpdates: z
|
|
114
|
-
.union([z.literal(1), z.literal(2), z.literal(3)])
|
|
115
|
-
.nullable(),
|
|
116
|
-
activity: record(jobActivityOffsetEnum, jobActivitySchema).nullish(),
|
|
117
|
-
activityDelta: jobActivityDeltaSchema.nullish(),
|
|
118
|
-
});
|
|
119
|
-
export const questionAnswerPairSchema = z.object({
|
|
120
|
-
question: z.string(),
|
|
121
|
-
answer: z.string(),
|
|
122
|
-
});
|
|
123
|
-
export const leadSchema = upworkJobSchema
|
|
124
|
-
.extend({
|
|
125
|
-
jobId: string(),
|
|
126
|
-
updatedAt: number().nullable(),
|
|
127
|
-
suitabilityRating: number().nullable(),
|
|
128
|
-
suitabilityReason: string().nullable(),
|
|
129
|
-
proposal: string().nullable(),
|
|
130
|
-
questionAnswerPairs: array(questionAnswerPairSchema).nullable(),
|
|
131
|
-
agentStatus: agentStatusSchema.nullable(),
|
|
132
|
-
leadStatus: leadStatusSchema.nullable(),
|
|
133
|
-
notes: array(leadNoteSchema).nullable(),
|
|
134
|
-
biddingAmount: number().nullable(),
|
|
135
|
-
boosted: boolean().nullable(),
|
|
136
|
-
boostingAmount: number().nullable(),
|
|
137
|
-
biddingTaskScheduled: boolean().nullable(),
|
|
138
|
-
scheduledBiddingTime: number().nullable(),
|
|
139
|
-
})
|
|
140
|
-
.omit({
|
|
141
|
-
processed: true,
|
|
142
|
-
});
|
|
143
|
-
export const leadResponseSchema = object({
|
|
144
|
-
leads: array(leadSchema),
|
|
145
|
-
nextCursor: string().nullable(),
|
|
146
|
-
hasMore: boolean(),
|
|
147
|
-
leadCounts: number().nullable(),
|
|
148
|
-
});
|
|
149
|
-
export const jobListingSchema = object({
|
|
150
|
-
uid: string().nullable(),
|
|
151
|
-
title: string().nullable(),
|
|
152
|
-
jobUrl: string().nullable(),
|
|
153
|
-
datetime: string().nullable(),
|
|
154
|
-
isFeatured: boolean().nullable(),
|
|
155
|
-
region: regionSchema.nullable(),
|
|
156
|
-
});
|
|
157
|
-
export const jobActivityOffsetHourSchema = custom((val) => jobActivityOffsetHours.includes(val));
|
|
158
|
-
export const jobActivityUpdateSchema = object({
|
|
159
|
-
jobUrl: string(),
|
|
160
|
-
data: jobActivitySchema,
|
|
161
|
-
offsetHour: jobActivityOffsetHourSchema,
|
|
162
|
-
scrapedAt: number(),
|
|
163
|
-
});
|
|
164
|
-
export const jobActivitySnapshotSchema = object({
|
|
165
|
-
jobUrl: string(),
|
|
166
|
-
activity: jobActivitySchema,
|
|
167
|
-
postedAt: number(),
|
|
168
|
-
scrapedAt: number(),
|
|
169
|
-
hoursSincePosted: number(),
|
|
170
|
-
});
|
|
171
|
-
export * from "./lead-note";
|
|
172
|
-
export * from "./lead-status";
|
|
173
|
-
export * from "./nuxt";
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export const leadNoteSchema = z.object({
|
|
3
|
-
id: z.string(),
|
|
4
|
-
jobId: z.string(),
|
|
5
|
-
content: z.string(),
|
|
6
|
-
order: z.number(),
|
|
7
|
-
bgColor: z.string(),
|
|
8
|
-
createdAt: z.number(),
|
|
9
|
-
updatedAt: z.number(),
|
|
10
|
-
});
|
|
11
|
-
export const createLeadNoteSchema = leadNoteSchema.pick({
|
|
12
|
-
id: true,
|
|
13
|
-
content: true,
|
|
14
|
-
order: true,
|
|
15
|
-
bgColor: true,
|
|
16
|
-
});
|
|
17
|
-
export const updateLeadNoteSchema = leadNoteSchema
|
|
18
|
-
.pick({
|
|
19
|
-
id: true,
|
|
20
|
-
content: true,
|
|
21
|
-
order: true,
|
|
22
|
-
bgColor: true,
|
|
23
|
-
})
|
|
24
|
-
.partial({ content: true, order: true, bgColor: true });
|
|
25
|
-
export const updateLeadNotesOrderSchema = z.object({
|
|
26
|
-
order: z.array(z.object({ id: z.string(), order: z.number() })),
|
|
27
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export const agentStatusSchema = z.enum([
|
|
3
|
-
"suitabilityPending",
|
|
4
|
-
"suitabilityProcessing",
|
|
5
|
-
"suitabilityComplete",
|
|
6
|
-
"suitabilityFailed",
|
|
7
|
-
"proposalProcessing",
|
|
8
|
-
"proposalComplete",
|
|
9
|
-
"proposalFailed",
|
|
10
|
-
"biddingProcessing",
|
|
11
|
-
"biddingComplete",
|
|
12
|
-
"biddingFailed",
|
|
13
|
-
"jobArchived",
|
|
14
|
-
]);
|
|
15
|
-
export const leadStatusSchema = z.enum([
|
|
16
|
-
"leads",
|
|
17
|
-
"contacted",
|
|
18
|
-
"viewed",
|
|
19
|
-
"replied",
|
|
20
|
-
"negotiations",
|
|
21
|
-
"won",
|
|
22
|
-
"lost",
|
|
23
|
-
]);
|