@dakkitor/api-contracts 1.7.1 → 1.8.0
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/abilities/abilities.contract.spec.js +39 -19
- package/dist/abilities/interconnection.abilities.json +6 -0
- package/dist/abilities/outreach.abilities.json +0 -7
- package/dist/abilities/second-agent.abilities.json +2 -91
- package/dist/abilities/team-leads.json +1 -0
- package/dist/abilities/worker-curator.abilities.json +2 -0
- package/dist/actives/actives.contract.d.ts +2562 -2515
- package/dist/actives/actives.contract.d.ts.map +1 -1
- package/dist/agent-client-links/agent-client-links.contract.d.ts +908 -908
- package/dist/auth/auth.contract.d.ts +50 -44
- package/dist/auth/auth.contract.d.ts.map +1 -1
- package/dist/auth/auth.contract.js +1 -0
- package/dist/bookings/backdate-guard.spec.d.ts +2 -0
- package/dist/bookings/backdate-guard.spec.d.ts.map +1 -0
- package/dist/bookings/backdate-guard.spec.js +80 -0
- package/dist/bookings/bookings.contract.d.ts +4918 -4824
- package/dist/bookings/bookings.contract.d.ts.map +1 -1
- package/dist/bookings/bookings.contract.js +26 -2
- package/dist/call-history/call-history.contract.d.ts +434 -434
- package/dist/calls-feed/calls-feed.contract.d.ts +70 -70
- package/dist/client-contacts/client-contacts.contract.d.ts +290 -290
- package/dist/clients/clients.contract.d.ts +110 -110
- package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +1412 -1412
- package/dist/collaborations/collaborations.contract.d.ts +1278 -1278
- package/dist/common/common-schemas.d.ts +13 -13
- package/dist/common/common-schemas.d.ts.map +1 -1
- package/dist/common/common-schemas.js +1 -0
- package/dist/common/nino.d.ts +8 -0
- package/dist/common/nino.d.ts.map +1 -0
- package/dist/common/nino.js +26 -0
- package/dist/common/nino.spec.d.ts +2 -0
- package/dist/common/nino.spec.d.ts.map +1 -0
- package/dist/common/nino.spec.js +32 -0
- package/dist/companies/companies.contract.d.ts +30 -30
- package/dist/crews/crews.contract.d.ts +300 -300
- package/dist/cron-executions/cron-executions.contract.d.ts +19 -6
- package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
- package/dist/cron-executions/cron-executions.contract.js +1 -0
- package/dist/cron-executions/cron-executions.contract.spec.d.ts +2 -0
- package/dist/cron-executions/cron-executions.contract.spec.d.ts.map +1 -0
- package/dist/cron-executions/cron-executions.contract.spec.js +27 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts +2 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.js +59 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +1255 -1188
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/candidate-coordination.contract.js +22 -6
- package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +11 -0
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +347 -304
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/contact-history.spec.js +1 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +2 -85
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +17 -41
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.js +30 -0
- package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +30 -0
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts +6058 -5381
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/jobs-tab.contract.js +64 -12
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +88 -88
- package/dist/curated-workers/curated-workers.contract.d.ts +1173 -962
- package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
- package/dist/curated-workers/curated-workers.contract.js +37 -6
- package/dist/dashboards/dashboard-widgets.contract.d.ts +43 -73
- package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
- package/dist/dashboards/dashboard-widgets.contract.js +1 -11
- package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts +2 -0
- package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts.map +1 -0
- package/dist/dashboards/dashboard-widgets.retirement.spec.js +22 -0
- package/dist/document-intake/document-intake.automation.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.automation.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.automation.spec.js +469 -0
- package/dist/document-intake/document-intake.card-side.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.card-side.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.card-side.spec.js +51 -0
- package/dist/document-intake/document-intake.contract.d.ts +9421 -1071
- package/dist/document-intake/document-intake.contract.d.ts.map +1 -1
- package/dist/document-intake/document-intake.contract.js +219 -5
- package/dist/document-intake/document-intake.contract.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.contract.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.contract.spec.js +37 -0
- package/dist/document-intake/document-intake.nino.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.nino.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.nino.spec.js +42 -0
- package/dist/export-jobs/export-jobs.contract.d.ts +426 -426
- package/dist/files/files.contract.d.ts +36 -36
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -9
- package/dist/job-clusters/job-clusters.contract.d.ts +52 -52
- package/dist/jobs/jobs.contract.d.ts +3610 -3610
- package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +56 -56
- package/dist/lead-assignments/lead-assignments.contract.d.ts +706 -706
- package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +220 -220
- package/dist/lead-distribution/lead-distribution-config.contract.d.ts +10 -10
- package/dist/leads/leads.contract.d.ts +86 -86
- package/dist/locations/locations.contract.d.ts +46 -46
- package/dist/notifications/notifications.contract.d.ts +18 -18
- package/dist/offices/offices.contract.d.ts +24 -24
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +27 -0
- package/dist/outreach/lab-outreach.contract.d.ts +48 -48
- package/dist/outreach/outreach-requests.contract.d.ts +272 -272
- package/dist/outreach/outreach-requests.schemas.d.ts +14 -14
- package/dist/outreach/outreach.contract.d.ts +12 -12
- package/dist/outreach/outreach.schemas.d.ts +2 -2
- package/dist/outreach/relay-hub-outreach.contract.d.ts +1156 -0
- package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -0
- package/dist/outreach/relay-hub-outreach.contract.js +103 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.d.ts +2 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.d.ts.map +1 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.js +119 -0
- package/dist/own-research/own-research.contract.d.ts +708 -708
- package/dist/proofs/proofs.contract.d.ts +196 -196
- package/dist/proofs/proofs.dtos.d.ts +104 -104
- package/dist/qualifications/qualifications.contract.d.ts +22 -22
- package/dist/realtime/realtime-telemetry.contract.d.ts +181 -0
- package/dist/realtime/realtime-telemetry.contract.d.ts.map +1 -0
- package/dist/realtime/realtime-telemetry.contract.js +81 -0
- package/dist/realtime/realtime-telemetry.contract.spec.d.ts +2 -0
- package/dist/realtime/realtime-telemetry.contract.spec.d.ts.map +1 -0
- package/dist/realtime/realtime-telemetry.contract.spec.js +41 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.d.ts +9 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.d.ts.map +1 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.js +17 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts +2 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts.map +1 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.js +20 -0
- package/dist/relay-pods/relay-hub.contract.d.ts +1463 -0
- package/dist/relay-pods/relay-hub.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.contract.js +140 -0
- package/dist/relay-pods/relay-hub.contract.spec.d.ts +2 -0
- package/dist/relay-pods/relay-hub.contract.spec.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.contract.spec.js +180 -0
- package/dist/relay-pods/relay-hub.schemas.d.ts +577 -0
- package/dist/relay-pods/relay-hub.schemas.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.schemas.js +158 -0
- package/dist/relay-pods/relay-lab-fleet.contract.d.ts +81 -81
- package/dist/relay-pods/relay-lab-fleet.schemas.d.ts +53 -53
- package/dist/{curated-worker-leads/lead-agent-area.contract.d.ts → relay-pods/relay-pod-members.contract.d.ts} +233 -126
- package/dist/relay-pods/relay-pod-members.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-pod-members.contract.js +73 -0
- package/dist/relay-pods/relay-pod-sessions.contract.d.ts +58 -58
- package/dist/relay-pods/relay-pods.contract.d.ts +169 -169
- package/dist/relay-pods/relay-pods.schemas.d.ts +46 -46
- package/dist/shared/summary-schemas.d.ts +10 -10
- package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +22 -2
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +30 -0
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -1
- package/dist/sheets-sync/sheets-sync-events.schemas.js +16 -1
- package/dist/sheets-sync/sheets-sync.contract.d.ts +829 -262
- package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -1
- package/dist/sheets-sync/sheets-sync.contract.js +156 -34
- package/dist/telegram/telegram.contract.d.ts +12 -12
- package/dist/trades/trades.contract.d.ts +16 -16
- package/dist/user-access-grants/user-access-grants.contract.d.ts +226 -226
- package/dist/users/__tests__/assignable-roles.spec.js +1 -1
- package/dist/users/users.contract.d.ts +327 -325
- package/dist/users/users.contract.d.ts.map +1 -1
- package/dist/users/users.contract.js +10 -7
- package/dist/users/users.contract.spec.js +15 -0
- package/dist/voice-screener/voice-screener.contract.d.ts +237 -0
- package/dist/voice-screener/voice-screener.contract.d.ts.map +1 -0
- package/dist/voice-screener/voice-screener.contract.js +89 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +500 -260
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
- package/dist/worker-identity-cases/worker-identity-cases.contract.js +17 -1
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +130 -130
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +35 -35
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +15 -15
- package/dist/workers/do-not-contact.contract.d.ts +4 -4
- package/dist/workers/qualification-back-proof.spec.d.ts +2 -0
- package/dist/workers/qualification-back-proof.spec.d.ts.map +1 -0
- package/dist/workers/qualification-back-proof.spec.js +39 -0
- package/dist/workers/workers.contract.d.ts +1969 -1775
- package/dist/workers/workers.contract.d.ts.map +1 -1
- package/dist/workers/workers.contract.js +5 -0
- package/package.json +1 -1
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +0 -4527
- package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/consent-queue.contract.js +0 -201
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +0 -135
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/curated-worker-leads.contract.js +0 -32
- package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/lead-agent-area.contract.js +0 -51
|
@@ -14,12 +14,12 @@ export declare const ImpersonationContextSchema: z.ZodObject<{
|
|
|
14
14
|
lastName: z.ZodString;
|
|
15
15
|
}, "strip", z.ZodTypeAny, {
|
|
16
16
|
id: string;
|
|
17
|
-
firstName: string;
|
|
18
17
|
lastName: string;
|
|
18
|
+
firstName: string;
|
|
19
19
|
}, {
|
|
20
20
|
id: string;
|
|
21
|
-
firstName: string;
|
|
22
21
|
lastName: string;
|
|
22
|
+
firstName: string;
|
|
23
23
|
}>;
|
|
24
24
|
canImpersonateUsers: z.ZodArray<z.ZodObject<{
|
|
25
25
|
id: z.ZodString;
|
|
@@ -27,34 +27,34 @@ export declare const ImpersonationContextSchema: z.ZodObject<{
|
|
|
27
27
|
lastName: z.ZodString;
|
|
28
28
|
}, "strip", z.ZodTypeAny, {
|
|
29
29
|
id: string;
|
|
30
|
-
firstName: string;
|
|
31
30
|
lastName: string;
|
|
31
|
+
firstName: string;
|
|
32
32
|
}, {
|
|
33
33
|
id: string;
|
|
34
|
-
firstName: string;
|
|
35
34
|
lastName: string;
|
|
35
|
+
firstName: string;
|
|
36
36
|
}>, "many">;
|
|
37
37
|
}, "strip", z.ZodTypeAny, {
|
|
38
38
|
canImpersonateUsers: {
|
|
39
39
|
id: string;
|
|
40
|
-
firstName: string;
|
|
41
40
|
lastName: string;
|
|
41
|
+
firstName: string;
|
|
42
42
|
}[];
|
|
43
43
|
originalUser: {
|
|
44
44
|
id: string;
|
|
45
|
-
firstName: string;
|
|
46
45
|
lastName: string;
|
|
46
|
+
firstName: string;
|
|
47
47
|
};
|
|
48
48
|
}, {
|
|
49
49
|
canImpersonateUsers: {
|
|
50
50
|
id: string;
|
|
51
|
-
firstName: string;
|
|
52
51
|
lastName: string;
|
|
52
|
+
firstName: string;
|
|
53
53
|
}[];
|
|
54
54
|
originalUser: {
|
|
55
55
|
id: string;
|
|
56
|
-
firstName: string;
|
|
57
56
|
lastName: string;
|
|
57
|
+
firstName: string;
|
|
58
58
|
};
|
|
59
59
|
}>;
|
|
60
60
|
export type ImpersonationContext = z.infer<typeof ImpersonationContextSchema>;
|
|
@@ -62,11 +62,11 @@ export declare const LoginSchema: z.ZodObject<{
|
|
|
62
62
|
email: z.ZodString;
|
|
63
63
|
password: z.ZodString;
|
|
64
64
|
}, "strip", z.ZodTypeAny, {
|
|
65
|
-
email: string;
|
|
66
65
|
password: string;
|
|
67
|
-
}, {
|
|
68
66
|
email: string;
|
|
67
|
+
}, {
|
|
69
68
|
password: string;
|
|
69
|
+
email: string;
|
|
70
70
|
}>;
|
|
71
71
|
export type Login = z.infer<typeof LoginSchema>;
|
|
72
72
|
export declare const EvictedDeviceSchema: z.ZodObject<{
|
|
@@ -120,6 +120,7 @@ export declare const LoginResponseSchema: z.ZodObject<{
|
|
|
120
120
|
userAgent: string | null;
|
|
121
121
|
lastUsedAt: string | Date;
|
|
122
122
|
}>>>;
|
|
123
|
+
relayPodIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
123
124
|
}, "strip", z.ZodTypeAny, {
|
|
124
125
|
id: string;
|
|
125
126
|
email: string;
|
|
@@ -129,9 +130,9 @@ export declare const LoginResponseSchema: z.ZodObject<{
|
|
|
129
130
|
isPrimary: boolean;
|
|
130
131
|
description?: string | null | undefined;
|
|
131
132
|
}[];
|
|
132
|
-
firstName?: string | undefined;
|
|
133
|
-
lastName?: string | undefined;
|
|
134
133
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
134
|
+
lastName?: string | undefined;
|
|
135
|
+
firstName?: string | undefined;
|
|
135
136
|
impersonatedBy?: string | undefined;
|
|
136
137
|
managedOfficeIds?: string[] | undefined;
|
|
137
138
|
avatarUrl?: string | undefined;
|
|
@@ -143,18 +144,19 @@ export declare const LoginResponseSchema: z.ZodObject<{
|
|
|
143
144
|
userAgent: string | null;
|
|
144
145
|
lastUsedAt: string | Date;
|
|
145
146
|
} | null | undefined;
|
|
147
|
+
relayPodIds?: string[] | undefined;
|
|
146
148
|
}, {
|
|
147
149
|
id: string;
|
|
148
150
|
email: string;
|
|
149
|
-
|
|
151
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
150
152
|
lastName?: string | undefined;
|
|
153
|
+
firstName?: string | undefined;
|
|
151
154
|
phoneNumbers?: {
|
|
152
155
|
id: string;
|
|
153
156
|
phoneNumber: string;
|
|
154
157
|
description?: string | null | undefined;
|
|
155
158
|
isPrimary?: boolean | undefined;
|
|
156
159
|
}[] | undefined;
|
|
157
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
158
160
|
impersonatedBy?: string | undefined;
|
|
159
161
|
managedOfficeIds?: string[] | undefined;
|
|
160
162
|
avatarUrl?: string | undefined;
|
|
@@ -166,6 +168,7 @@ export declare const LoginResponseSchema: z.ZodObject<{
|
|
|
166
168
|
userAgent: string | null;
|
|
167
169
|
lastUsedAt: string | Date;
|
|
168
170
|
} | null | undefined;
|
|
171
|
+
relayPodIds?: string[] | undefined;
|
|
169
172
|
}>;
|
|
170
173
|
export type LoginResponse = z.infer<typeof LoginResponseSchema>;
|
|
171
174
|
export declare const SessionInfoSchema: z.ZodObject<{
|
|
@@ -200,11 +203,11 @@ export declare const authContract: {
|
|
|
200
203
|
email: z.ZodString;
|
|
201
204
|
password: z.ZodString;
|
|
202
205
|
}, "strip", z.ZodTypeAny, {
|
|
203
|
-
email: string;
|
|
204
206
|
password: string;
|
|
205
|
-
}, {
|
|
206
207
|
email: string;
|
|
208
|
+
}, {
|
|
207
209
|
password: string;
|
|
210
|
+
email: string;
|
|
208
211
|
}>;
|
|
209
212
|
path: "/v2/auth/login";
|
|
210
213
|
responses: {
|
|
@@ -298,6 +301,7 @@ export declare const authContract: {
|
|
|
298
301
|
userAgent: string | null;
|
|
299
302
|
lastUsedAt: string | Date;
|
|
300
303
|
}>>>;
|
|
304
|
+
relayPodIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
301
305
|
}, "strip", z.ZodTypeAny, {
|
|
302
306
|
id: string;
|
|
303
307
|
email: string;
|
|
@@ -307,9 +311,9 @@ export declare const authContract: {
|
|
|
307
311
|
isPrimary: boolean;
|
|
308
312
|
description?: string | null | undefined;
|
|
309
313
|
}[];
|
|
310
|
-
firstName?: string | undefined;
|
|
311
|
-
lastName?: string | undefined;
|
|
312
314
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
315
|
+
lastName?: string | undefined;
|
|
316
|
+
firstName?: string | undefined;
|
|
313
317
|
impersonatedBy?: string | undefined;
|
|
314
318
|
managedOfficeIds?: string[] | undefined;
|
|
315
319
|
avatarUrl?: string | undefined;
|
|
@@ -321,18 +325,19 @@ export declare const authContract: {
|
|
|
321
325
|
userAgent: string | null;
|
|
322
326
|
lastUsedAt: string | Date;
|
|
323
327
|
} | null | undefined;
|
|
328
|
+
relayPodIds?: string[] | undefined;
|
|
324
329
|
}, {
|
|
325
330
|
id: string;
|
|
326
331
|
email: string;
|
|
327
|
-
|
|
332
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
328
333
|
lastName?: string | undefined;
|
|
334
|
+
firstName?: string | undefined;
|
|
329
335
|
phoneNumbers?: {
|
|
330
336
|
id: string;
|
|
331
337
|
phoneNumber: string;
|
|
332
338
|
description?: string | null | undefined;
|
|
333
339
|
isPrimary?: boolean | undefined;
|
|
334
340
|
}[] | undefined;
|
|
335
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
336
341
|
impersonatedBy?: string | undefined;
|
|
337
342
|
managedOfficeIds?: string[] | undefined;
|
|
338
343
|
avatarUrl?: string | undefined;
|
|
@@ -344,6 +349,7 @@ export declare const authContract: {
|
|
|
344
349
|
userAgent: string | null;
|
|
345
350
|
lastUsedAt: string | Date;
|
|
346
351
|
} | null | undefined;
|
|
352
|
+
relayPodIds?: string[] | undefined;
|
|
347
353
|
}>;
|
|
348
354
|
401: z.ZodObject<{
|
|
349
355
|
statusCode: z.ZodNumber;
|
|
@@ -470,9 +476,9 @@ export declare const authContract: {
|
|
|
470
476
|
isPrimary: boolean;
|
|
471
477
|
description?: string | null | undefined;
|
|
472
478
|
}[];
|
|
473
|
-
firstName?: string | undefined;
|
|
474
|
-
lastName?: string | undefined;
|
|
475
479
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
480
|
+
lastName?: string | undefined;
|
|
481
|
+
firstName?: string | undefined;
|
|
476
482
|
impersonatedBy?: string | undefined;
|
|
477
483
|
managedOfficeIds?: string[] | undefined;
|
|
478
484
|
avatarUrl?: string | undefined;
|
|
@@ -483,15 +489,15 @@ export declare const authContract: {
|
|
|
483
489
|
}, {
|
|
484
490
|
id: string;
|
|
485
491
|
email: string;
|
|
486
|
-
|
|
492
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
487
493
|
lastName?: string | undefined;
|
|
494
|
+
firstName?: string | undefined;
|
|
488
495
|
phoneNumbers?: {
|
|
489
496
|
id: string;
|
|
490
497
|
phoneNumber: string;
|
|
491
498
|
description?: string | null | undefined;
|
|
492
499
|
isPrimary?: boolean | undefined;
|
|
493
500
|
}[] | undefined;
|
|
494
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
495
501
|
impersonatedBy?: string | undefined;
|
|
496
502
|
managedOfficeIds?: string[] | undefined;
|
|
497
503
|
avatarUrl?: string | undefined;
|
|
@@ -1133,9 +1139,9 @@ export declare const authContract: {
|
|
|
1133
1139
|
isPrimary: boolean;
|
|
1134
1140
|
description?: string | null | undefined;
|
|
1135
1141
|
}[];
|
|
1136
|
-
firstName?: string | undefined;
|
|
1137
|
-
lastName?: string | undefined;
|
|
1138
1142
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1143
|
+
lastName?: string | undefined;
|
|
1144
|
+
firstName?: string | undefined;
|
|
1139
1145
|
impersonatedBy?: string | undefined;
|
|
1140
1146
|
managedOfficeIds?: string[] | undefined;
|
|
1141
1147
|
avatarUrl?: string | undefined;
|
|
@@ -1146,15 +1152,15 @@ export declare const authContract: {
|
|
|
1146
1152
|
}, {
|
|
1147
1153
|
id: string;
|
|
1148
1154
|
email: string;
|
|
1149
|
-
|
|
1155
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1150
1156
|
lastName?: string | undefined;
|
|
1157
|
+
firstName?: string | undefined;
|
|
1151
1158
|
phoneNumbers?: {
|
|
1152
1159
|
id: string;
|
|
1153
1160
|
phoneNumber: string;
|
|
1154
1161
|
description?: string | null | undefined;
|
|
1155
1162
|
isPrimary?: boolean | undefined;
|
|
1156
1163
|
}[] | undefined;
|
|
1157
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1158
1164
|
impersonatedBy?: string | undefined;
|
|
1159
1165
|
managedOfficeIds?: string[] | undefined;
|
|
1160
1166
|
avatarUrl?: string | undefined;
|
|
@@ -1363,9 +1369,9 @@ export declare const authContract: {
|
|
|
1363
1369
|
isPrimary: boolean;
|
|
1364
1370
|
description?: string | null | undefined;
|
|
1365
1371
|
}[];
|
|
1366
|
-
firstName?: string | undefined;
|
|
1367
|
-
lastName?: string | undefined;
|
|
1368
1372
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1373
|
+
lastName?: string | undefined;
|
|
1374
|
+
firstName?: string | undefined;
|
|
1369
1375
|
impersonatedBy?: string | undefined;
|
|
1370
1376
|
managedOfficeIds?: string[] | undefined;
|
|
1371
1377
|
avatarUrl?: string | undefined;
|
|
@@ -1376,15 +1382,15 @@ export declare const authContract: {
|
|
|
1376
1382
|
}, {
|
|
1377
1383
|
id: string;
|
|
1378
1384
|
email: string;
|
|
1379
|
-
|
|
1385
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1380
1386
|
lastName?: string | undefined;
|
|
1387
|
+
firstName?: string | undefined;
|
|
1381
1388
|
phoneNumbers?: {
|
|
1382
1389
|
id: string;
|
|
1383
1390
|
phoneNumber: string;
|
|
1384
1391
|
description?: string | null | undefined;
|
|
1385
1392
|
isPrimary?: boolean | undefined;
|
|
1386
1393
|
}[] | undefined;
|
|
1387
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1388
1394
|
impersonatedBy?: string | undefined;
|
|
1389
1395
|
managedOfficeIds?: string[] | undefined;
|
|
1390
1396
|
avatarUrl?: string | undefined;
|
|
@@ -1499,9 +1505,9 @@ export declare const authContract: {
|
|
|
1499
1505
|
isPrimary: boolean;
|
|
1500
1506
|
description?: string | null | undefined;
|
|
1501
1507
|
}[];
|
|
1502
|
-
firstName?: string | undefined;
|
|
1503
|
-
lastName?: string | undefined;
|
|
1504
1508
|
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1509
|
+
lastName?: string | undefined;
|
|
1510
|
+
firstName?: string | undefined;
|
|
1505
1511
|
impersonatedBy?: string | undefined;
|
|
1506
1512
|
managedOfficeIds?: string[] | undefined;
|
|
1507
1513
|
avatarUrl?: string | undefined;
|
|
@@ -1512,15 +1518,15 @@ export declare const authContract: {
|
|
|
1512
1518
|
}, {
|
|
1513
1519
|
id: string;
|
|
1514
1520
|
email: string;
|
|
1515
|
-
|
|
1521
|
+
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1516
1522
|
lastName?: string | undefined;
|
|
1523
|
+
firstName?: string | undefined;
|
|
1517
1524
|
phoneNumbers?: {
|
|
1518
1525
|
id: string;
|
|
1519
1526
|
phoneNumber: string;
|
|
1520
1527
|
description?: string | null | undefined;
|
|
1521
1528
|
isPrimary?: boolean | undefined;
|
|
1522
1529
|
}[] | undefined;
|
|
1523
|
-
roles?: ("ADMIN" | "SECOND_AGENT" | "FIRST_AGENT" | "COMPANY_CHECKING" | "KPI" | "TEAM_LEADS" | "OFFICE_MANAGER" | "WORKER_CURATOR" | "INTERCONNECTION" | "OUTREACH")[] | undefined;
|
|
1524
1530
|
impersonatedBy?: string | undefined;
|
|
1525
1531
|
managedOfficeIds?: string[] | undefined;
|
|
1526
1532
|
avatarUrl?: string | undefined;
|
|
@@ -1704,12 +1710,12 @@ export declare const authContract: {
|
|
|
1704
1710
|
lastName: z.ZodString;
|
|
1705
1711
|
}, "strip", z.ZodTypeAny, {
|
|
1706
1712
|
id: string;
|
|
1707
|
-
firstName: string;
|
|
1708
1713
|
lastName: string;
|
|
1714
|
+
firstName: string;
|
|
1709
1715
|
}, {
|
|
1710
1716
|
id: string;
|
|
1711
|
-
firstName: string;
|
|
1712
1717
|
lastName: string;
|
|
1718
|
+
firstName: string;
|
|
1713
1719
|
}>;
|
|
1714
1720
|
canImpersonateUsers: z.ZodArray<z.ZodObject<{
|
|
1715
1721
|
id: z.ZodString;
|
|
@@ -1717,34 +1723,34 @@ export declare const authContract: {
|
|
|
1717
1723
|
lastName: z.ZodString;
|
|
1718
1724
|
}, "strip", z.ZodTypeAny, {
|
|
1719
1725
|
id: string;
|
|
1720
|
-
firstName: string;
|
|
1721
1726
|
lastName: string;
|
|
1727
|
+
firstName: string;
|
|
1722
1728
|
}, {
|
|
1723
1729
|
id: string;
|
|
1724
|
-
firstName: string;
|
|
1725
1730
|
lastName: string;
|
|
1731
|
+
firstName: string;
|
|
1726
1732
|
}>, "many">;
|
|
1727
1733
|
}, "strip", z.ZodTypeAny, {
|
|
1728
1734
|
canImpersonateUsers: {
|
|
1729
1735
|
id: string;
|
|
1730
|
-
firstName: string;
|
|
1731
1736
|
lastName: string;
|
|
1737
|
+
firstName: string;
|
|
1732
1738
|
}[];
|
|
1733
1739
|
originalUser: {
|
|
1734
1740
|
id: string;
|
|
1735
|
-
firstName: string;
|
|
1736
1741
|
lastName: string;
|
|
1742
|
+
firstName: string;
|
|
1737
1743
|
};
|
|
1738
1744
|
}, {
|
|
1739
1745
|
canImpersonateUsers: {
|
|
1740
1746
|
id: string;
|
|
1741
|
-
firstName: string;
|
|
1742
1747
|
lastName: string;
|
|
1748
|
+
firstName: string;
|
|
1743
1749
|
}[];
|
|
1744
1750
|
originalUser: {
|
|
1745
1751
|
id: string;
|
|
1746
|
-
firstName: string;
|
|
1747
1752
|
lastName: string;
|
|
1753
|
+
firstName: string;
|
|
1748
1754
|
};
|
|
1749
1755
|
}>;
|
|
1750
1756
|
401: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.contract.d.ts","sourceRoot":"","sources":["../../contracts/auth/auth.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,iBAAiB;;;;;;EAIM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASM,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,WAAW;;;;;;;;;EAKM,CAAC;AAE/B,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;;EAUM,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"auth.contract.d.ts","sourceRoot":"","sources":["../../contracts/auth/auth.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,iBAAiB;;;;;;EAIM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASM,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,WAAW;;;;;;;;;EAKM,CAAC;AAE/B,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;;EAUM,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMM,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAYM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgLxB,CAAC"}
|
|
@@ -43,6 +43,7 @@ exports.LoginResponseSchema = users_contract_1.ProfileSchema.extend({
|
|
|
43
43
|
evictedDevice: exports.EvictedDeviceSchema.nullable()
|
|
44
44
|
.optional()
|
|
45
45
|
.describe('Set when this login pushed the account over the device cap and signed out another device'),
|
|
46
|
+
relayPodIds: zod_1.z.array(zod_1.z.string().uuid()).optional(),
|
|
46
47
|
}).openapi({ title: 'LoginResponse' });
|
|
47
48
|
exports.SessionInfoSchema = zod_1.z
|
|
48
49
|
.object({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backdate-guard.spec.d.ts","sourceRoot":"","sources":["../../contracts/bookings/backdate-guard.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bookings_contract_1 = require("./bookings.contract");
|
|
4
|
+
// Fixed "now" so the date math is deterministic.
|
|
5
|
+
const NOW = new Date('2026-08-13T10:00:00Z');
|
|
6
|
+
const daysBefore = (n) => {
|
|
7
|
+
const d = new Date(NOW);
|
|
8
|
+
d.setUTCDate(d.getUTCDate() - n);
|
|
9
|
+
return d.toISOString().split('T')[0];
|
|
10
|
+
};
|
|
11
|
+
describe('backdateDaysFrom', () => {
|
|
12
|
+
it('exposes the threshold as 31', () => {
|
|
13
|
+
expect(bookings_contract_1.MAX_BOOKING_BACKDATE_DAYS).toBe(31);
|
|
14
|
+
});
|
|
15
|
+
it('returns 0 for today', () => {
|
|
16
|
+
expect((0, bookings_contract_1.backdateDaysFrom)(daysBefore(0), NOW)).toBe(0);
|
|
17
|
+
});
|
|
18
|
+
it('counts whole days into the past', () => {
|
|
19
|
+
expect((0, bookings_contract_1.backdateDaysFrom)(daysBefore(31), NOW)).toBe(31);
|
|
20
|
+
expect((0, bookings_contract_1.backdateDaysFrom)(daysBefore(32), NOW)).toBe(32);
|
|
21
|
+
});
|
|
22
|
+
it('returns a negative count for future dates', () => {
|
|
23
|
+
expect((0, bookings_contract_1.backdateDaysFrom)('2026-08-20', NOW)).toBe(-7);
|
|
24
|
+
});
|
|
25
|
+
it('measures the 2016 incident at 3772 days', () => {
|
|
26
|
+
expect((0, bookings_contract_1.backdateDaysFrom)('2016-04-15', new Date('2026-08-13T00:00:00Z'))).toBe(3772);
|
|
27
|
+
});
|
|
28
|
+
it('is unaffected by the time of day', () => {
|
|
29
|
+
expect((0, bookings_contract_1.backdateDaysFrom)(daysBefore(5), new Date('2026-08-13T23:59:59Z'))).toBe(5);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('BookingItemSchema backdating rule', () => {
|
|
33
|
+
// BookingItemSchema's only other required field is `worker` (ResourceIdSchema);
|
|
34
|
+
// there is no `jobId` on this schema — job assignment happens one level up on
|
|
35
|
+
// CreateBookingSchema.
|
|
36
|
+
const base = {
|
|
37
|
+
worker: { id: '11111111-1111-4111-8111-111111111111' },
|
|
38
|
+
};
|
|
39
|
+
// BookingItemSchema's cross-field rules call backdateDaysFrom(data.startDate)
|
|
40
|
+
// with the DEFAULT `now = new Date()` — the real wall clock, not the pinned
|
|
41
|
+
// NOW above. Fixtures in this block must be built from the real clock too,
|
|
42
|
+
// or the two clocks drift apart (by a day, then more) and these tests
|
|
43
|
+
// become flaky/false-failing over time.
|
|
44
|
+
const daysBeforeReal = (n) => {
|
|
45
|
+
const d = new Date();
|
|
46
|
+
d.setUTCDate(d.getUTCDate() - n);
|
|
47
|
+
return d.toISOString().split('T')[0];
|
|
48
|
+
};
|
|
49
|
+
it('rejects a start date 32 days in the past', () => {
|
|
50
|
+
const result = bookings_contract_1.BookingItemSchema.safeParse({
|
|
51
|
+
...base,
|
|
52
|
+
startDate: daysBeforeReal(32),
|
|
53
|
+
});
|
|
54
|
+
expect(result.success).toBe(false);
|
|
55
|
+
if (!result.success) {
|
|
56
|
+
const issue = result.error.issues.find((i) => i.path[0] === 'startDate');
|
|
57
|
+
expect(issue?.message).toBe('Start date cannot be more than 31 days in the past (received 32 days).');
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
it('accepts a start date exactly 31 days in the past', () => {
|
|
61
|
+
const result = bookings_contract_1.BookingItemSchema.safeParse({
|
|
62
|
+
...base,
|
|
63
|
+
startDate: daysBeforeReal(31),
|
|
64
|
+
});
|
|
65
|
+
const startDateIssue = result.success
|
|
66
|
+
? undefined
|
|
67
|
+
: result.error.issues.find((i) => i.path[0] === 'startDate');
|
|
68
|
+
expect(startDateIssue).toBeUndefined();
|
|
69
|
+
});
|
|
70
|
+
it('accepts today', () => {
|
|
71
|
+
const result = bookings_contract_1.BookingItemSchema.safeParse({
|
|
72
|
+
...base,
|
|
73
|
+
startDate: daysBeforeReal(0),
|
|
74
|
+
});
|
|
75
|
+
const startDateIssue = result.success
|
|
76
|
+
? undefined
|
|
77
|
+
: result.error.issues.find((i) => i.path[0] === 'startDate');
|
|
78
|
+
expect(startDateIssue).toBeUndefined();
|
|
79
|
+
});
|
|
80
|
+
});
|