@t4dhg/mcp-factorial 7.0.1 → 8.2.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/README.md +321 -49
- package/dist/api/ats.d.ts +78 -0
- package/dist/api/ats.d.ts.map +1 -0
- package/dist/api/ats.js +173 -0
- package/dist/api/ats.js.map +1 -0
- package/dist/api/attendance.d.ts +27 -0
- package/dist/api/attendance.d.ts.map +1 -0
- package/dist/api/attendance.js +62 -0
- package/dist/api/attendance.js.map +1 -0
- package/dist/api/contracts.d.ts +40 -0
- package/dist/api/contracts.d.ts.map +1 -0
- package/dist/api/contracts.js +146 -0
- package/dist/api/contracts.js.map +1 -0
- package/dist/api/documents.d.ts +95 -0
- package/dist/api/documents.d.ts.map +1 -0
- package/dist/api/documents.js +265 -0
- package/dist/api/documents.js.map +1 -0
- package/dist/api/employees.d.ts +35 -0
- package/dist/api/employees.d.ts.map +1 -0
- package/dist/api/employees.js +116 -0
- package/dist/api/employees.js.map +1 -0
- package/dist/api/index.d.ts +22 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +36 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/job-catalog.d.ts +21 -0
- package/dist/api/job-catalog.d.ts.map +1 -0
- package/dist/api/job-catalog.js +34 -0
- package/dist/api/job-catalog.js.map +1 -0
- package/dist/api/locations.d.ts +26 -0
- package/dist/api/locations.d.ts.map +1 -0
- package/dist/api/locations.js +59 -0
- package/dist/api/locations.js.map +1 -0
- package/dist/api/payroll.d.ts +30 -0
- package/dist/api/payroll.d.ts.map +1 -0
- package/dist/api/payroll.js +68 -0
- package/dist/api/payroll.js.map +1 -0
- package/dist/api/projects.d.ts +82 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +193 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/shared.d.ts +12 -0
- package/dist/api/shared.d.ts.map +1 -0
- package/dist/api/shared.js +17 -0
- package/dist/api/shared.js.map +1 -0
- package/dist/api/teams.d.ts +26 -0
- package/dist/api/teams.d.ts.map +1 -0
- package/dist/api/teams.js +59 -0
- package/dist/api/teams.js.map +1 -0
- package/dist/api/time-off.d.ts +47 -0
- package/dist/api/time-off.d.ts.map +1 -0
- package/dist/api/time-off.js +112 -0
- package/dist/api/time-off.js.map +1 -0
- package/dist/api/training.d.ts +62 -0
- package/dist/api/training.d.ts.map +1 -0
- package/dist/api/training.js +147 -0
- package/dist/api/training.js.map +1 -0
- package/dist/api/work-areas.d.ts +30 -0
- package/dist/api/work-areas.d.ts.map +1 -0
- package/dist/api/work-areas.js +71 -0
- package/dist/api/work-areas.js.map +1 -0
- package/dist/api.d.ts +3 -434
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -1154
- package/dist/api.js.map +1 -1
- package/dist/audit.d.ts +8 -3
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +8 -3
- package/dist/audit.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3701
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +63 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +143 -0
- package/dist/oauth.js.map +1 -0
- package/dist/schemas/ats.d.ts +326 -0
- package/dist/schemas/ats.d.ts.map +1 -0
- package/dist/schemas/ats.js +121 -0
- package/dist/schemas/ats.js.map +1 -0
- package/dist/schemas/documents.d.ts +78 -0
- package/dist/schemas/documents.d.ts.map +1 -0
- package/dist/schemas/documents.js +34 -0
- package/dist/schemas/documents.js.map +1 -0
- package/dist/schemas/employees.d.ts +528 -0
- package/dist/schemas/employees.d.ts.map +1 -0
- package/dist/schemas/employees.js +206 -0
- package/dist/schemas/employees.js.map +1 -0
- package/dist/schemas/index.d.ts +18 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +28 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/job-catalog.d.ts +57 -0
- package/dist/schemas/job-catalog.d.ts.map +1 -0
- package/dist/schemas/job-catalog.js +27 -0
- package/dist/schemas/job-catalog.js.map +1 -0
- package/dist/schemas/payroll.d.ts +98 -0
- package/dist/schemas/payroll.d.ts.map +1 -0
- package/dist/schemas/payroll.js +43 -0
- package/dist/schemas/payroll.js.map +1 -0
- package/dist/schemas/projects.d.ts +277 -0
- package/dist/schemas/projects.d.ts.map +1 -0
- package/dist/schemas/projects.js +114 -0
- package/dist/schemas/projects.js.map +1 -0
- package/dist/schemas/shared.d.ts +42 -0
- package/dist/schemas/shared.d.ts.map +1 -0
- package/dist/schemas/shared.js +65 -0
- package/dist/schemas/shared.js.map +1 -0
- package/dist/schemas/time-off.d.ts +286 -0
- package/dist/schemas/time-off.d.ts.map +1 -0
- package/dist/schemas/time-off.js +111 -0
- package/dist/schemas/time-off.js.map +1 -0
- package/dist/schemas/training.d.ts +223 -0
- package/dist/schemas/training.d.ts.map +1 -0
- package/dist/schemas/training.js +88 -0
- package/dist/schemas/training.js.map +1 -0
- package/dist/schemas/work-areas.d.ts +71 -0
- package/dist/schemas/work-areas.d.ts.map +1 -0
- package/dist/schemas/work-areas.js +30 -0
- package/dist/schemas/work-areas.js.map +1 -0
- package/dist/schemas.d.ts +4 -1879
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +4 -755
- package/dist/schemas.js.map +1 -1
- package/dist/tool-utils.d.ts +0 -14
- package/dist/tool-utils.d.ts.map +1 -1
- package/dist/tool-utils.js +5 -18
- package/dist/tool-utils.js.map +1 -1
- package/dist/tools/ats.d.ts +6 -0
- package/dist/tools/ats.d.ts.map +1 -0
- package/dist/tools/ats.js +206 -0
- package/dist/tools/ats.js.map +1 -0
- package/dist/tools/attendance.d.ts +6 -0
- package/dist/tools/attendance.d.ts.map +1 -0
- package/dist/tools/attendance.js +86 -0
- package/dist/tools/attendance.js.map +1 -0
- package/dist/tools/contracts.d.ts +6 -0
- package/dist/tools/contracts.d.ts.map +1 -0
- package/dist/tools/contracts.js +63 -0
- package/dist/tools/contracts.js.map +1 -0
- package/dist/tools/documents.d.ts +6 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +135 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/employees.d.ts +6 -0
- package/dist/tools/employees.d.ts.map +1 -0
- package/dist/tools/employees.js +125 -0
- package/dist/tools/employees.js.map +1 -0
- package/dist/tools/index.d.ts +17 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +221 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/job-catalog.d.ts +6 -0
- package/dist/tools/job-catalog.d.ts.map +1 -0
- package/dist/tools/job-catalog.js +39 -0
- package/dist/tools/job-catalog.js.map +1 -0
- package/dist/tools/locations.d.ts +6 -0
- package/dist/tools/locations.d.ts.map +1 -0
- package/dist/tools/locations.js +93 -0
- package/dist/tools/locations.js.map +1 -0
- package/dist/tools/payroll.d.ts +6 -0
- package/dist/tools/payroll.d.ts.map +1 -0
- package/dist/tools/payroll.js +76 -0
- package/dist/tools/payroll.js.map +1 -0
- package/dist/tools/projects.d.ts +6 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +203 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/shared.d.ts +84 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +164 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/teams.d.ts +6 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +81 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/tools/time-off.d.ts +6 -0
- package/dist/tools/time-off.d.ts.map +1 -0
- package/dist/tools/time-off.js +144 -0
- package/dist/tools/time-off.js.map +1 -0
- package/dist/tools/training.d.ts +6 -0
- package/dist/tools/training.d.ts.map +1 -0
- package/dist/tools/training.js +160 -0
- package/dist/tools/training.js.map +1 -0
- package/dist/tools/work-areas.d.ts +6 -0
- package/dist/tools/work-areas.d.ts.map +1 -0
- package/dist/tools/work-areas.js +85 -0
- package/dist/tools/work-areas.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +35 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -1
- package/dist/write-safety.d.ts +229 -2
- package/dist/write-safety.d.ts.map +1 -1
- package/dist/write-safety.js +42 -3
- package/dist/write-safety.js.map +1 -1
- package/llms.txt +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Management schemas: Project, ProjectTask, ProjectWorker, TimeRecord
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Project schema
|
|
7
|
+
*/
|
|
8
|
+
export declare const ProjectSchema: z.ZodObject<{
|
|
9
|
+
id: z.ZodNumber;
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
code: z.ZodNullable<z.ZodString>;
|
|
12
|
+
description: z.ZodNullable<z.ZodString>;
|
|
13
|
+
status: z.ZodNullable<z.ZodEnum<["active", "inactive", "archived"]>>;
|
|
14
|
+
employees_assignment: z.ZodNullable<z.ZodEnum<["manual", "company"]>>;
|
|
15
|
+
company_id: z.ZodNullable<z.ZodNumber>;
|
|
16
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
17
|
+
updated_at: z.ZodNullable<z.ZodString>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
code: string | null;
|
|
20
|
+
status: "active" | "inactive" | "archived" | null;
|
|
21
|
+
id: number;
|
|
22
|
+
company_id: number | null;
|
|
23
|
+
created_at: string | null;
|
|
24
|
+
updated_at: string | null;
|
|
25
|
+
name: string;
|
|
26
|
+
description: string | null;
|
|
27
|
+
employees_assignment: "manual" | "company" | null;
|
|
28
|
+
}, {
|
|
29
|
+
code: string | null;
|
|
30
|
+
status: "active" | "inactive" | "archived" | null;
|
|
31
|
+
id: number;
|
|
32
|
+
company_id: number | null;
|
|
33
|
+
created_at: string | null;
|
|
34
|
+
updated_at: string | null;
|
|
35
|
+
name: string;
|
|
36
|
+
description: string | null;
|
|
37
|
+
employees_assignment: "manual" | "company" | null;
|
|
38
|
+
}>;
|
|
39
|
+
export type Project = z.infer<typeof ProjectSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* Project create input schema
|
|
42
|
+
*/
|
|
43
|
+
export declare const CreateProjectInputSchema: z.ZodObject<{
|
|
44
|
+
name: z.ZodString;
|
|
45
|
+
code: z.ZodOptional<z.ZodString>;
|
|
46
|
+
description: z.ZodOptional<z.ZodString>;
|
|
47
|
+
employees_assignment: z.ZodOptional<z.ZodEnum<["manual", "company"]>>;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
name: string;
|
|
50
|
+
code?: string | undefined;
|
|
51
|
+
description?: string | undefined;
|
|
52
|
+
employees_assignment?: "manual" | "company" | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
name: string;
|
|
55
|
+
code?: string | undefined;
|
|
56
|
+
description?: string | undefined;
|
|
57
|
+
employees_assignment?: "manual" | "company" | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
export type CreateProjectInput = z.infer<typeof CreateProjectInputSchema>;
|
|
60
|
+
/**
|
|
61
|
+
* Project update input schema
|
|
62
|
+
*/
|
|
63
|
+
export declare const UpdateProjectInputSchema: z.ZodObject<{
|
|
64
|
+
name: z.ZodOptional<z.ZodString>;
|
|
65
|
+
code: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
66
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
67
|
+
employees_assignment: z.ZodOptional<z.ZodOptional<z.ZodEnum<["manual", "company"]>>>;
|
|
68
|
+
} & {
|
|
69
|
+
status: z.ZodOptional<z.ZodEnum<["active", "inactive", "archived"]>>;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
code?: string | undefined;
|
|
72
|
+
status?: "active" | "inactive" | "archived" | undefined;
|
|
73
|
+
name?: string | undefined;
|
|
74
|
+
description?: string | undefined;
|
|
75
|
+
employees_assignment?: "manual" | "company" | undefined;
|
|
76
|
+
}, {
|
|
77
|
+
code?: string | undefined;
|
|
78
|
+
status?: "active" | "inactive" | "archived" | undefined;
|
|
79
|
+
name?: string | undefined;
|
|
80
|
+
description?: string | undefined;
|
|
81
|
+
employees_assignment?: "manual" | "company" | undefined;
|
|
82
|
+
}>;
|
|
83
|
+
export type UpdateProjectInput = z.infer<typeof UpdateProjectInputSchema>;
|
|
84
|
+
/**
|
|
85
|
+
* Project Task schema
|
|
86
|
+
*/
|
|
87
|
+
export declare const ProjectTaskSchema: z.ZodObject<{
|
|
88
|
+
id: z.ZodNumber;
|
|
89
|
+
name: z.ZodString;
|
|
90
|
+
project_id: z.ZodNumber;
|
|
91
|
+
subproject_id: z.ZodNullable<z.ZodNumber>;
|
|
92
|
+
description: z.ZodNullable<z.ZodString>;
|
|
93
|
+
completed: z.ZodDefault<z.ZodBoolean>;
|
|
94
|
+
due_on: z.ZodNullable<z.ZodString>;
|
|
95
|
+
due_status: z.ZodNullable<z.ZodString>;
|
|
96
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
97
|
+
updated_at: z.ZodNullable<z.ZodString>;
|
|
98
|
+
}, "strip", z.ZodTypeAny, {
|
|
99
|
+
id: number;
|
|
100
|
+
created_at: string | null;
|
|
101
|
+
updated_at: string | null;
|
|
102
|
+
name: string;
|
|
103
|
+
description: string | null;
|
|
104
|
+
project_id: number;
|
|
105
|
+
subproject_id: number | null;
|
|
106
|
+
completed: boolean;
|
|
107
|
+
due_on: string | null;
|
|
108
|
+
due_status: string | null;
|
|
109
|
+
}, {
|
|
110
|
+
id: number;
|
|
111
|
+
created_at: string | null;
|
|
112
|
+
updated_at: string | null;
|
|
113
|
+
name: string;
|
|
114
|
+
description: string | null;
|
|
115
|
+
project_id: number;
|
|
116
|
+
subproject_id: number | null;
|
|
117
|
+
due_on: string | null;
|
|
118
|
+
due_status: string | null;
|
|
119
|
+
completed?: boolean | undefined;
|
|
120
|
+
}>;
|
|
121
|
+
export type ProjectTask = z.infer<typeof ProjectTaskSchema>;
|
|
122
|
+
/**
|
|
123
|
+
* Project Task create input schema
|
|
124
|
+
*/
|
|
125
|
+
export declare const CreateProjectTaskInputSchema: z.ZodObject<{
|
|
126
|
+
name: z.ZodString;
|
|
127
|
+
project_id: z.ZodNumber;
|
|
128
|
+
description: z.ZodOptional<z.ZodString>;
|
|
129
|
+
due_on: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, "strip", z.ZodTypeAny, {
|
|
131
|
+
name: string;
|
|
132
|
+
project_id: number;
|
|
133
|
+
description?: string | undefined;
|
|
134
|
+
due_on?: string | undefined;
|
|
135
|
+
}, {
|
|
136
|
+
name: string;
|
|
137
|
+
project_id: number;
|
|
138
|
+
description?: string | undefined;
|
|
139
|
+
due_on?: string | undefined;
|
|
140
|
+
}>;
|
|
141
|
+
export type CreateProjectTaskInput = z.infer<typeof CreateProjectTaskInputSchema>;
|
|
142
|
+
/**
|
|
143
|
+
* Project Task update input schema
|
|
144
|
+
*/
|
|
145
|
+
export declare const UpdateProjectTaskInputSchema: z.ZodObject<Omit<{
|
|
146
|
+
name: z.ZodOptional<z.ZodString>;
|
|
147
|
+
project_id: z.ZodOptional<z.ZodNumber>;
|
|
148
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
149
|
+
due_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
150
|
+
}, "project_id"> & {
|
|
151
|
+
completed: z.ZodOptional<z.ZodBoolean>;
|
|
152
|
+
}, "strip", z.ZodTypeAny, {
|
|
153
|
+
name?: string | undefined;
|
|
154
|
+
description?: string | undefined;
|
|
155
|
+
completed?: boolean | undefined;
|
|
156
|
+
due_on?: string | undefined;
|
|
157
|
+
}, {
|
|
158
|
+
name?: string | undefined;
|
|
159
|
+
description?: string | undefined;
|
|
160
|
+
completed?: boolean | undefined;
|
|
161
|
+
due_on?: string | undefined;
|
|
162
|
+
}>;
|
|
163
|
+
export type UpdateProjectTaskInput = z.infer<typeof UpdateProjectTaskInputSchema>;
|
|
164
|
+
/**
|
|
165
|
+
* Project Worker schema
|
|
166
|
+
*/
|
|
167
|
+
export declare const ProjectWorkerSchema: z.ZodObject<{
|
|
168
|
+
id: z.ZodNumber;
|
|
169
|
+
project_id: z.ZodNumber;
|
|
170
|
+
employee_id: z.ZodNumber;
|
|
171
|
+
company_labor_cost_cents: z.ZodNullable<z.ZodNumber>;
|
|
172
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
173
|
+
updated_at: z.ZodNullable<z.ZodString>;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
id: number;
|
|
176
|
+
created_at: string | null;
|
|
177
|
+
updated_at: string | null;
|
|
178
|
+
employee_id: number;
|
|
179
|
+
project_id: number;
|
|
180
|
+
company_labor_cost_cents: number | null;
|
|
181
|
+
}, {
|
|
182
|
+
id: number;
|
|
183
|
+
created_at: string | null;
|
|
184
|
+
updated_at: string | null;
|
|
185
|
+
employee_id: number;
|
|
186
|
+
project_id: number;
|
|
187
|
+
company_labor_cost_cents: number | null;
|
|
188
|
+
}>;
|
|
189
|
+
export type ProjectWorker = z.infer<typeof ProjectWorkerSchema>;
|
|
190
|
+
/**
|
|
191
|
+
* Project Worker assign input schema
|
|
192
|
+
*/
|
|
193
|
+
export declare const AssignProjectWorkerInputSchema: z.ZodObject<{
|
|
194
|
+
project_id: z.ZodNumber;
|
|
195
|
+
employee_id: z.ZodNumber;
|
|
196
|
+
}, "strip", z.ZodTypeAny, {
|
|
197
|
+
employee_id: number;
|
|
198
|
+
project_id: number;
|
|
199
|
+
}, {
|
|
200
|
+
employee_id: number;
|
|
201
|
+
project_id: number;
|
|
202
|
+
}>;
|
|
203
|
+
export type AssignProjectWorkerInput = z.infer<typeof AssignProjectWorkerInputSchema>;
|
|
204
|
+
/**
|
|
205
|
+
* Time Record schema
|
|
206
|
+
*/
|
|
207
|
+
export declare const TimeRecordSchema: z.ZodObject<{
|
|
208
|
+
id: z.ZodNumber;
|
|
209
|
+
project_worker_id: z.ZodNumber;
|
|
210
|
+
subproject_id: z.ZodNullable<z.ZodNumber>;
|
|
211
|
+
attendance_shift_id: z.ZodNullable<z.ZodNumber>;
|
|
212
|
+
minutes: z.ZodNumber;
|
|
213
|
+
date: z.ZodString;
|
|
214
|
+
description: z.ZodNullable<z.ZodString>;
|
|
215
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
216
|
+
updated_at: z.ZodNullable<z.ZodString>;
|
|
217
|
+
}, "strip", z.ZodTypeAny, {
|
|
218
|
+
date: string;
|
|
219
|
+
id: number;
|
|
220
|
+
created_at: string | null;
|
|
221
|
+
updated_at: string | null;
|
|
222
|
+
description: string | null;
|
|
223
|
+
subproject_id: number | null;
|
|
224
|
+
project_worker_id: number;
|
|
225
|
+
attendance_shift_id: number | null;
|
|
226
|
+
minutes: number;
|
|
227
|
+
}, {
|
|
228
|
+
date: string;
|
|
229
|
+
id: number;
|
|
230
|
+
created_at: string | null;
|
|
231
|
+
updated_at: string | null;
|
|
232
|
+
description: string | null;
|
|
233
|
+
subproject_id: number | null;
|
|
234
|
+
project_worker_id: number;
|
|
235
|
+
attendance_shift_id: number | null;
|
|
236
|
+
minutes: number;
|
|
237
|
+
}>;
|
|
238
|
+
export type TimeRecord = z.infer<typeof TimeRecordSchema>;
|
|
239
|
+
/**
|
|
240
|
+
* Time Record create input schema
|
|
241
|
+
*/
|
|
242
|
+
export declare const CreateTimeRecordInputSchema: z.ZodObject<{
|
|
243
|
+
project_worker_id: z.ZodNumber;
|
|
244
|
+
date: z.ZodString;
|
|
245
|
+
minutes: z.ZodNumber;
|
|
246
|
+
description: z.ZodOptional<z.ZodString>;
|
|
247
|
+
}, "strip", z.ZodTypeAny, {
|
|
248
|
+
date: string;
|
|
249
|
+
project_worker_id: number;
|
|
250
|
+
minutes: number;
|
|
251
|
+
description?: string | undefined;
|
|
252
|
+
}, {
|
|
253
|
+
date: string;
|
|
254
|
+
project_worker_id: number;
|
|
255
|
+
minutes: number;
|
|
256
|
+
description?: string | undefined;
|
|
257
|
+
}>;
|
|
258
|
+
export type CreateTimeRecordInput = z.infer<typeof CreateTimeRecordInputSchema>;
|
|
259
|
+
/**
|
|
260
|
+
* Time Record update input schema
|
|
261
|
+
*/
|
|
262
|
+
export declare const UpdateTimeRecordInputSchema: z.ZodObject<Omit<{
|
|
263
|
+
project_worker_id: z.ZodOptional<z.ZodNumber>;
|
|
264
|
+
date: z.ZodOptional<z.ZodString>;
|
|
265
|
+
minutes: z.ZodOptional<z.ZodNumber>;
|
|
266
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
267
|
+
}, "project_worker_id">, "strip", z.ZodTypeAny, {
|
|
268
|
+
date?: string | undefined;
|
|
269
|
+
description?: string | undefined;
|
|
270
|
+
minutes?: number | undefined;
|
|
271
|
+
}, {
|
|
272
|
+
date?: string | undefined;
|
|
273
|
+
description?: string | undefined;
|
|
274
|
+
minutes?: number | undefined;
|
|
275
|
+
}>;
|
|
276
|
+
export type UpdateTimeRecordInput = z.infer<typeof UpdateTimeRecordInputSchema>;
|
|
277
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/schemas/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUxB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;EAKvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;EAGzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAKtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;EAEtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Management schemas: Project, ProjectTask, ProjectWorker, TimeRecord
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { dateString } from './shared.js';
|
|
6
|
+
/**
|
|
7
|
+
* Project schema
|
|
8
|
+
*/
|
|
9
|
+
export const ProjectSchema = z.object({
|
|
10
|
+
id: z.number(),
|
|
11
|
+
name: z.string(),
|
|
12
|
+
code: z.string().nullable(),
|
|
13
|
+
description: z.string().nullable(),
|
|
14
|
+
status: z.enum(['active', 'inactive', 'archived']).nullable(),
|
|
15
|
+
employees_assignment: z.enum(['manual', 'company']).nullable(),
|
|
16
|
+
company_id: z.number().nullable(),
|
|
17
|
+
created_at: z.string().nullable(),
|
|
18
|
+
updated_at: z.string().nullable(),
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Project create input schema
|
|
22
|
+
*/
|
|
23
|
+
export const CreateProjectInputSchema = z.object({
|
|
24
|
+
name: z.string().min(1).max(100),
|
|
25
|
+
code: z.string().max(20).optional(),
|
|
26
|
+
description: z.string().max(500).optional(),
|
|
27
|
+
employees_assignment: z.enum(['manual', 'company']).optional(),
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Project update input schema
|
|
31
|
+
*/
|
|
32
|
+
export const UpdateProjectInputSchema = CreateProjectInputSchema.partial().extend({
|
|
33
|
+
status: z.enum(['active', 'inactive', 'archived']).optional(),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Project Task schema
|
|
37
|
+
*/
|
|
38
|
+
export const ProjectTaskSchema = z.object({
|
|
39
|
+
id: z.number(),
|
|
40
|
+
name: z.string(),
|
|
41
|
+
project_id: z.number(),
|
|
42
|
+
subproject_id: z.number().nullable(),
|
|
43
|
+
description: z.string().nullable(),
|
|
44
|
+
completed: z.boolean().default(false),
|
|
45
|
+
due_on: z.string().nullable(),
|
|
46
|
+
due_status: z.string().nullable(),
|
|
47
|
+
created_at: z.string().nullable(),
|
|
48
|
+
updated_at: z.string().nullable(),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Project Task create input schema
|
|
52
|
+
*/
|
|
53
|
+
export const CreateProjectTaskInputSchema = z.object({
|
|
54
|
+
name: z.string().min(1).max(100),
|
|
55
|
+
project_id: z.number().positive(),
|
|
56
|
+
description: z.string().max(500).optional(),
|
|
57
|
+
due_on: dateString.optional(),
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Project Task update input schema
|
|
61
|
+
*/
|
|
62
|
+
export const UpdateProjectTaskInputSchema = CreateProjectTaskInputSchema.partial()
|
|
63
|
+
.omit({ project_id: true })
|
|
64
|
+
.extend({
|
|
65
|
+
completed: z.boolean().optional(),
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Project Worker schema
|
|
69
|
+
*/
|
|
70
|
+
export const ProjectWorkerSchema = z.object({
|
|
71
|
+
id: z.number(),
|
|
72
|
+
project_id: z.number(),
|
|
73
|
+
employee_id: z.number(),
|
|
74
|
+
company_labor_cost_cents: z.number().nullable(),
|
|
75
|
+
created_at: z.string().nullable(),
|
|
76
|
+
updated_at: z.string().nullable(),
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Project Worker assign input schema
|
|
80
|
+
*/
|
|
81
|
+
export const AssignProjectWorkerInputSchema = z.object({
|
|
82
|
+
project_id: z.number().positive(),
|
|
83
|
+
employee_id: z.number().positive(),
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Time Record schema
|
|
87
|
+
*/
|
|
88
|
+
export const TimeRecordSchema = z.object({
|
|
89
|
+
id: z.number(),
|
|
90
|
+
project_worker_id: z.number(),
|
|
91
|
+
subproject_id: z.number().nullable(),
|
|
92
|
+
attendance_shift_id: z.number().nullable(),
|
|
93
|
+
minutes: z.number(),
|
|
94
|
+
date: z.string(),
|
|
95
|
+
description: z.string().nullable(),
|
|
96
|
+
created_at: z.string().nullable(),
|
|
97
|
+
updated_at: z.string().nullable(),
|
|
98
|
+
});
|
|
99
|
+
/**
|
|
100
|
+
* Time Record create input schema
|
|
101
|
+
*/
|
|
102
|
+
export const CreateTimeRecordInputSchema = z.object({
|
|
103
|
+
project_worker_id: z.number().positive(),
|
|
104
|
+
date: dateString,
|
|
105
|
+
minutes: z.number().min(1).max(1440),
|
|
106
|
+
description: z.string().max(500).optional(),
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* Time Record update input schema
|
|
110
|
+
*/
|
|
111
|
+
export const UpdateTimeRecordInputSchema = CreateTimeRecordInputSchema.partial().omit({
|
|
112
|
+
project_worker_id: true,
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/schemas/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared schema utilities and validation helpers
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Date string validator - validates YYYY-MM-DD format
|
|
7
|
+
*/
|
|
8
|
+
export declare const dateString: z.ZodString;
|
|
9
|
+
/**
|
|
10
|
+
* API response wrapper schema
|
|
11
|
+
*/
|
|
12
|
+
export declare function createApiResponseSchema<T extends z.ZodTypeAny>(dataSchema: T): z.ZodObject<{
|
|
13
|
+
data: T;
|
|
14
|
+
}, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
|
|
15
|
+
data: T;
|
|
16
|
+
}>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
|
|
17
|
+
data: T;
|
|
18
|
+
}> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
|
|
19
|
+
/**
|
|
20
|
+
* API list response wrapper schema
|
|
21
|
+
*/
|
|
22
|
+
export declare function createApiListResponseSchema<T extends z.ZodTypeAny>(itemSchema: T): z.ZodObject<{
|
|
23
|
+
data: z.ZodArray<T, "many">;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
data: T["_output"][];
|
|
26
|
+
}, {
|
|
27
|
+
data: T["_input"][];
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Parse and validate data against a schema
|
|
31
|
+
* @throws SchemaValidationError if validation fails
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseData<T>(schemaName: string, schema: z.ZodSchema<T>, data: unknown): T;
|
|
34
|
+
/**
|
|
35
|
+
* Safely parse data without throwing (returns undefined on failure)
|
|
36
|
+
*/
|
|
37
|
+
export declare function safeParseData<T>(schema: z.ZodSchema<T>, data: unknown): T | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Parse an array of items against a schema
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseArray<T>(schemaName: string, itemSchema: z.ZodSchema<T>, data: unknown): T[];
|
|
42
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/schemas/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,UAAU,aAAqE,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;;;;kEAI5E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;;;;GAIhF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAOzF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAGrF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,CAYhG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared schema utilities and validation helpers
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { SchemaValidationError } from '../errors.js';
|
|
6
|
+
/**
|
|
7
|
+
* Date string pattern (YYYY-MM-DD)
|
|
8
|
+
*/
|
|
9
|
+
const datePattern = /^\d{4}-\d{2}-\d{2}$/;
|
|
10
|
+
/**
|
|
11
|
+
* Date string validator - validates YYYY-MM-DD format
|
|
12
|
+
*/
|
|
13
|
+
export const dateString = z.string().regex(datePattern, 'Date must be in YYYY-MM-DD format');
|
|
14
|
+
/**
|
|
15
|
+
* API response wrapper schema
|
|
16
|
+
*/
|
|
17
|
+
export function createApiResponseSchema(dataSchema) {
|
|
18
|
+
return z.object({
|
|
19
|
+
data: dataSchema,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* API list response wrapper schema
|
|
24
|
+
*/
|
|
25
|
+
export function createApiListResponseSchema(itemSchema) {
|
|
26
|
+
return z.object({
|
|
27
|
+
data: z.array(itemSchema),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse and validate data against a schema
|
|
32
|
+
* @throws SchemaValidationError if validation fails
|
|
33
|
+
*/
|
|
34
|
+
export function parseData(schemaName, schema, data) {
|
|
35
|
+
const result = schema.safeParse(data);
|
|
36
|
+
if (!result.success) {
|
|
37
|
+
const issues = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
|
|
38
|
+
throw new SchemaValidationError(schemaName, issues, { data });
|
|
39
|
+
}
|
|
40
|
+
return result.data;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Safely parse data without throwing (returns undefined on failure)
|
|
44
|
+
*/
|
|
45
|
+
export function safeParseData(schema, data) {
|
|
46
|
+
const result = schema.safeParse(data);
|
|
47
|
+
return result.success ? result.data : undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parse an array of items against a schema
|
|
51
|
+
*/
|
|
52
|
+
export function parseArray(schemaName, itemSchema, data) {
|
|
53
|
+
if (!Array.isArray(data)) {
|
|
54
|
+
throw new SchemaValidationError(schemaName, 'Expected an array', { data });
|
|
55
|
+
}
|
|
56
|
+
return data.map((item, index) => {
|
|
57
|
+
const result = itemSchema.safeParse(item);
|
|
58
|
+
if (!result.success) {
|
|
59
|
+
const issues = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
|
|
60
|
+
throw new SchemaValidationError(`${schemaName}[${index}]`, issues, { item });
|
|
61
|
+
}
|
|
62
|
+
return result.data;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/schemas/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAyB,UAAa;IAC3E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAyB,UAAa;IAC/E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,UAAkB,EAAE,MAAsB,EAAE,IAAa;IACpF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,MAAsB,EAAE,IAAa;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAI,UAAkB,EAAE,UAA0B,EAAE,IAAa;IACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5F,MAAM,IAAI,qBAAqB,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}
|