@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,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time Off API endpoints: Leaves, Leave Types, Allowances
|
|
3
|
+
*/
|
|
4
|
+
import { fetchList, fetchOne, postOne, patchOne, deleteOne, postAction } from '../http-client.js';
|
|
5
|
+
import { cached, CACHE_TTL } from '../cache.js';
|
|
6
|
+
import { buildPaginationParams, paginateResponse } from '../pagination.js';
|
|
7
|
+
import { AuditAction, auditedOperation } from '../audit.js';
|
|
8
|
+
import { validateId } from '../utils.js';
|
|
9
|
+
import { ENDPOINTS, endpointWithId, endpointWithAction } from '../endpoints.js';
|
|
10
|
+
/**
|
|
11
|
+
* List leaves with optional filtering
|
|
12
|
+
*/
|
|
13
|
+
export async function listLeaves(options) {
|
|
14
|
+
const params = buildPaginationParams(options);
|
|
15
|
+
const queryParams = {
|
|
16
|
+
page: params.page,
|
|
17
|
+
limit: params.limit,
|
|
18
|
+
};
|
|
19
|
+
if (options?.employee_id)
|
|
20
|
+
queryParams.employee_id = options.employee_id;
|
|
21
|
+
if (options?.status)
|
|
22
|
+
queryParams.status = options.status;
|
|
23
|
+
if (options?.start_on_gte)
|
|
24
|
+
queryParams.start_on_gte = options.start_on_gte;
|
|
25
|
+
if (options?.start_on_lte)
|
|
26
|
+
queryParams.start_on_lte = options.start_on_lte;
|
|
27
|
+
const leaves = await fetchList(ENDPOINTS.leaves, { params: queryParams });
|
|
28
|
+
return paginateResponse(leaves, params.page, params.limit);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get a specific leave by ID
|
|
32
|
+
*/
|
|
33
|
+
export async function getLeave(id) {
|
|
34
|
+
validateId(id, 'leave');
|
|
35
|
+
return fetchOne(endpointWithId(ENDPOINTS.leaves, id));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* List all leave types
|
|
39
|
+
*/
|
|
40
|
+
export async function listLeaveTypes() {
|
|
41
|
+
return cached('leave-types:all', () => fetchList(ENDPOINTS.leaveTypes), CACHE_TTL.leaves);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a specific leave type by ID
|
|
45
|
+
*/
|
|
46
|
+
export async function getLeaveType(id) {
|
|
47
|
+
validateId(id, 'leave type');
|
|
48
|
+
return fetchOne(endpointWithId(ENDPOINTS.leaveTypes, id));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* List allowances with optional filtering by employee
|
|
52
|
+
*/
|
|
53
|
+
export async function listAllowances(options) {
|
|
54
|
+
const params = buildPaginationParams(options);
|
|
55
|
+
const queryParams = {
|
|
56
|
+
page: params.page,
|
|
57
|
+
limit: params.limit,
|
|
58
|
+
};
|
|
59
|
+
if (options?.employee_id)
|
|
60
|
+
queryParams.employee_id = options.employee_id;
|
|
61
|
+
const allowances = await fetchList(ENDPOINTS.allowances, { params: queryParams });
|
|
62
|
+
return paginateResponse(allowances, params.page, params.limit);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a new leave request
|
|
66
|
+
*/
|
|
67
|
+
export async function createLeave(input) {
|
|
68
|
+
return auditedOperation(AuditAction.CREATE, 'leave', undefined, async () => {
|
|
69
|
+
const leave = await postOne(ENDPOINTS.leaves, input);
|
|
70
|
+
return leave;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Update a leave request
|
|
75
|
+
*/
|
|
76
|
+
export async function updateLeave(id, input) {
|
|
77
|
+
validateId(id, 'leave');
|
|
78
|
+
return auditedOperation(AuditAction.UPDATE, 'leave', id, async () => {
|
|
79
|
+
const leave = await patchOne(endpointWithId(ENDPOINTS.leaves, id), input);
|
|
80
|
+
return leave;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Cancel a leave request
|
|
85
|
+
*/
|
|
86
|
+
export async function cancelLeave(id) {
|
|
87
|
+
validateId(id, 'leave');
|
|
88
|
+
return auditedOperation(AuditAction.DELETE, 'leave', id, async () => {
|
|
89
|
+
await deleteOne(endpointWithId(ENDPOINTS.leaves, id));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Approve a leave request
|
|
94
|
+
*/
|
|
95
|
+
export async function approveLeave(id, input) {
|
|
96
|
+
validateId(id, 'leave');
|
|
97
|
+
return auditedOperation(AuditAction.APPROVE, 'leave', id, async () => {
|
|
98
|
+
const leave = await postAction(endpointWithAction(ENDPOINTS.leaves, id, 'approve'), input || {});
|
|
99
|
+
return leave;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Reject a leave request
|
|
104
|
+
*/
|
|
105
|
+
export async function rejectLeave(id, input) {
|
|
106
|
+
validateId(id, 'leave');
|
|
107
|
+
return auditedOperation(AuditAction.REJECT, 'leave', id, async () => {
|
|
108
|
+
const leave = await postAction(endpointWithAction(ENDPOINTS.leaves, id, 'reject'), input || {});
|
|
109
|
+
return leave;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=time-off.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-off.js","sourceRoot":"","sources":["../../src/api/time-off.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Training API endpoints: Trainings, Sessions, Enrollments
|
|
3
|
+
*/
|
|
4
|
+
import { type PaginatedResponse, type PaginationInput } from '../pagination.js';
|
|
5
|
+
import type { Training, TrainingSession, TrainingMembership, CreateTrainingInput, UpdateTrainingInput, CreateTrainingSessionInput, UpdateTrainingSessionInput, EnrollTrainingInput } from '../schemas.js';
|
|
6
|
+
/**
|
|
7
|
+
* List all trainings
|
|
8
|
+
*/
|
|
9
|
+
export declare function listTrainings(options?: PaginationInput): Promise<PaginatedResponse<Training>>;
|
|
10
|
+
/**
|
|
11
|
+
* Get a specific training by ID
|
|
12
|
+
*/
|
|
13
|
+
export declare function getTraining(id: number): Promise<Training>;
|
|
14
|
+
/**
|
|
15
|
+
* List training sessions
|
|
16
|
+
*/
|
|
17
|
+
export declare function listTrainingSessions(trainingId?: number, options?: PaginationInput): Promise<PaginatedResponse<TrainingSession>>;
|
|
18
|
+
/**
|
|
19
|
+
* Get a specific training session by ID
|
|
20
|
+
*/
|
|
21
|
+
export declare function getTrainingSession(id: number): Promise<TrainingSession>;
|
|
22
|
+
/**
|
|
23
|
+
* List training enrollments
|
|
24
|
+
*/
|
|
25
|
+
export declare function listTrainingEnrollments(trainingId?: number, options?: PaginationInput): Promise<PaginatedResponse<TrainingMembership>>;
|
|
26
|
+
/**
|
|
27
|
+
* Get a specific training enrollment by ID
|
|
28
|
+
*/
|
|
29
|
+
export declare function getTrainingEnrollment(id: number): Promise<TrainingMembership>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a training program
|
|
32
|
+
*/
|
|
33
|
+
export declare function createTraining(input: CreateTrainingInput): Promise<Training>;
|
|
34
|
+
/**
|
|
35
|
+
* Update a training program
|
|
36
|
+
*/
|
|
37
|
+
export declare function updateTraining(id: number, input: UpdateTrainingInput): Promise<Training>;
|
|
38
|
+
/**
|
|
39
|
+
* Delete a training program
|
|
40
|
+
*/
|
|
41
|
+
export declare function deleteTraining(id: number): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a training session
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTrainingSession(input: CreateTrainingSessionInput): Promise<TrainingSession>;
|
|
46
|
+
/**
|
|
47
|
+
* Update a training session
|
|
48
|
+
*/
|
|
49
|
+
export declare function updateTrainingSession(id: number, input: UpdateTrainingSessionInput): Promise<TrainingSession>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete a training session
|
|
52
|
+
*/
|
|
53
|
+
export declare function deleteTrainingSession(id: number): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Enroll an employee in a training
|
|
56
|
+
*/
|
|
57
|
+
export declare function enrollInTraining(input: EnrollTrainingInput): Promise<TrainingMembership>;
|
|
58
|
+
/**
|
|
59
|
+
* Remove enrollment from a training
|
|
60
|
+
*/
|
|
61
|
+
export declare function unenrollFromTraining(id: number): Promise<void>;
|
|
62
|
+
//# sourceMappingURL=training.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/api/training.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,eAAe,CAAC;AASvB;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAQtC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAS7C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAG7E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAShD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGnF;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMlF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAS9F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,eAAe,CAAC,CAI1B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI9F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpE"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Training API endpoints: Trainings, Sessions, Enrollments
|
|
3
|
+
*/
|
|
4
|
+
import { fetchList, fetchOne, postOne, patchOne, deleteOne } from '../http-client.js';
|
|
5
|
+
import { cache, cached, CACHE_TTL, CacheManager } from '../cache.js';
|
|
6
|
+
import { buildPaginationParams, sliceForPagination, } from '../pagination.js';
|
|
7
|
+
import { AuditAction, auditedOperation } from '../audit.js';
|
|
8
|
+
import { validateId } from '../utils.js';
|
|
9
|
+
import { ENDPOINTS, endpointWithId } from '../endpoints.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Training - READ endpoints
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* List all trainings
|
|
15
|
+
*/
|
|
16
|
+
export async function listTrainings(options) {
|
|
17
|
+
const params = buildPaginationParams(options);
|
|
18
|
+
const trainings = await cached(CacheManager.key('trainings', options), () => fetchList(ENDPOINTS.trainings), CACHE_TTL.default);
|
|
19
|
+
return sliceForPagination(trainings, params);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get a specific training by ID
|
|
23
|
+
*/
|
|
24
|
+
export async function getTraining(id) {
|
|
25
|
+
validateId(id, 'training');
|
|
26
|
+
return cached(`training:${id}`, () => fetchOne(endpointWithId(ENDPOINTS.trainings, id)), CACHE_TTL.default);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List training sessions
|
|
30
|
+
*/
|
|
31
|
+
export async function listTrainingSessions(trainingId, options) {
|
|
32
|
+
const params = buildPaginationParams(options);
|
|
33
|
+
const queryParams = {};
|
|
34
|
+
if (trainingId)
|
|
35
|
+
queryParams.training_id = trainingId;
|
|
36
|
+
const sessions = await fetchList(ENDPOINTS.trainingSessions, {
|
|
37
|
+
params: queryParams,
|
|
38
|
+
});
|
|
39
|
+
return sliceForPagination(sessions, params);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a specific training session by ID
|
|
43
|
+
*/
|
|
44
|
+
export async function getTrainingSession(id) {
|
|
45
|
+
validateId(id, 'session');
|
|
46
|
+
return fetchOne(endpointWithId(ENDPOINTS.trainingSessions, id));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* List training enrollments
|
|
50
|
+
*/
|
|
51
|
+
export async function listTrainingEnrollments(trainingId, options) {
|
|
52
|
+
const params = buildPaginationParams(options);
|
|
53
|
+
const queryParams = {};
|
|
54
|
+
if (trainingId)
|
|
55
|
+
queryParams.training_id = trainingId;
|
|
56
|
+
const enrollments = await fetchList(ENDPOINTS.trainingMemberships, {
|
|
57
|
+
params: queryParams,
|
|
58
|
+
});
|
|
59
|
+
return sliceForPagination(enrollments, params);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get a specific training enrollment by ID
|
|
63
|
+
*/
|
|
64
|
+
export async function getTrainingEnrollment(id) {
|
|
65
|
+
validateId(id, 'enrollment');
|
|
66
|
+
return fetchOne(endpointWithId(ENDPOINTS.trainingMemberships, id));
|
|
67
|
+
}
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// Training - WRITE endpoints
|
|
70
|
+
// ============================================================================
|
|
71
|
+
/**
|
|
72
|
+
* Create a training program
|
|
73
|
+
*/
|
|
74
|
+
export async function createTraining(input) {
|
|
75
|
+
return auditedOperation(AuditAction.CREATE, 'training', undefined, async () => {
|
|
76
|
+
const training = await postOne(ENDPOINTS.trainings, input);
|
|
77
|
+
cache.invalidatePrefix('trainings');
|
|
78
|
+
return training;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update a training program
|
|
83
|
+
*/
|
|
84
|
+
export async function updateTraining(id, input) {
|
|
85
|
+
validateId(id, 'training');
|
|
86
|
+
return auditedOperation(AuditAction.UPDATE, 'training', id, async () => {
|
|
87
|
+
const training = await patchOne(endpointWithId(ENDPOINTS.trainings, id), input);
|
|
88
|
+
cache.invalidate(`training:${id}`);
|
|
89
|
+
cache.invalidatePrefix('trainings');
|
|
90
|
+
return training;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Delete a training program
|
|
95
|
+
*/
|
|
96
|
+
export async function deleteTraining(id) {
|
|
97
|
+
validateId(id, 'training');
|
|
98
|
+
return auditedOperation(AuditAction.DELETE, 'training', id, async () => {
|
|
99
|
+
await deleteOne(endpointWithId(ENDPOINTS.trainings, id));
|
|
100
|
+
cache.invalidate(`training:${id}`);
|
|
101
|
+
cache.invalidatePrefix('trainings');
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a training session
|
|
106
|
+
*/
|
|
107
|
+
export async function createTrainingSession(input) {
|
|
108
|
+
return auditedOperation(AuditAction.CREATE, 'training_session', undefined, async () => {
|
|
109
|
+
return postOne(ENDPOINTS.trainingSessions, input);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Update a training session
|
|
114
|
+
*/
|
|
115
|
+
export async function updateTrainingSession(id, input) {
|
|
116
|
+
validateId(id, 'session');
|
|
117
|
+
return auditedOperation(AuditAction.UPDATE, 'training_session', id, async () => {
|
|
118
|
+
return patchOne(endpointWithId(ENDPOINTS.trainingSessions, id), input);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Delete a training session
|
|
123
|
+
*/
|
|
124
|
+
export async function deleteTrainingSession(id) {
|
|
125
|
+
validateId(id, 'session');
|
|
126
|
+
return auditedOperation(AuditAction.DELETE, 'training_session', id, async () => {
|
|
127
|
+
await deleteOne(endpointWithId(ENDPOINTS.trainingSessions, id));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Enroll an employee in a training
|
|
132
|
+
*/
|
|
133
|
+
export async function enrollInTraining(input) {
|
|
134
|
+
return auditedOperation(AuditAction.ASSIGN, 'training_enrollment', undefined, async () => {
|
|
135
|
+
return postOne(ENDPOINTS.trainingMemberships, input);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Remove enrollment from a training
|
|
140
|
+
*/
|
|
141
|
+
export async function unenrollFromTraining(id) {
|
|
142
|
+
validateId(id, 'enrollment');
|
|
143
|
+
return auditedOperation(AuditAction.UNASSIGN, 'training_enrollment', id, async () => {
|
|
144
|
+
await deleteOne(endpointWithId(ENDPOINTS.trainingMemberships, id));
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=training.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training.js","sourceRoot":"","sources":["../../src/api/training.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work Areas API endpoints
|
|
3
|
+
*/
|
|
4
|
+
import { type PaginatedResponse, type PaginationInput } from '../pagination.js';
|
|
5
|
+
import type { WorkArea, CreateWorkAreaInput, UpdateWorkAreaInput } from '../schemas.js';
|
|
6
|
+
/**
|
|
7
|
+
* List all work areas
|
|
8
|
+
*/
|
|
9
|
+
export declare function listWorkAreas(options?: PaginationInput): Promise<PaginatedResponse<WorkArea>>;
|
|
10
|
+
/**
|
|
11
|
+
* Get a specific work area by ID
|
|
12
|
+
*/
|
|
13
|
+
export declare function getWorkArea(id: number): Promise<WorkArea>;
|
|
14
|
+
/**
|
|
15
|
+
* Create a work area
|
|
16
|
+
*/
|
|
17
|
+
export declare function createWorkArea(input: CreateWorkAreaInput): Promise<WorkArea>;
|
|
18
|
+
/**
|
|
19
|
+
* Update a work area
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateWorkArea(id: number, input: UpdateWorkAreaInput): Promise<WorkArea>;
|
|
22
|
+
/**
|
|
23
|
+
* Archive a work area
|
|
24
|
+
*/
|
|
25
|
+
export declare function archiveWorkArea(id: number): Promise<WorkArea>;
|
|
26
|
+
/**
|
|
27
|
+
* Unarchive a work area
|
|
28
|
+
*/
|
|
29
|
+
export declare function unarchiveWorkArea(id: number): Promise<WorkArea>;
|
|
30
|
+
//# sourceMappingURL=work-areas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-areas.d.ts","sourceRoot":"","sources":["../../src/api/work-areas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKxF;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAQtC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMlF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAS9F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWrE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work Areas API endpoints
|
|
3
|
+
*/
|
|
4
|
+
import { fetchList, fetchOne, postOne, patchOne, postAction } from '../http-client.js';
|
|
5
|
+
import { cache, cached, CACHE_TTL, CacheManager } from '../cache.js';
|
|
6
|
+
import { buildPaginationParams, sliceForPagination, } from '../pagination.js';
|
|
7
|
+
import { AuditAction, auditedOperation } from '../audit.js';
|
|
8
|
+
import { validateId } from '../utils.js';
|
|
9
|
+
import { ENDPOINTS, endpointWithId, endpointWithAction } from '../endpoints.js';
|
|
10
|
+
/**
|
|
11
|
+
* List all work areas
|
|
12
|
+
*/
|
|
13
|
+
export async function listWorkAreas(options) {
|
|
14
|
+
const params = buildPaginationParams(options);
|
|
15
|
+
const workAreas = await cached(CacheManager.key('work_areas', options), () => fetchList(ENDPOINTS.workAreas), CACHE_TTL.locations);
|
|
16
|
+
return sliceForPagination(workAreas, params);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get a specific work area by ID
|
|
20
|
+
*/
|
|
21
|
+
export async function getWorkArea(id) {
|
|
22
|
+
validateId(id, 'work area');
|
|
23
|
+
return cached(`work_area:${id}`, () => fetchOne(endpointWithId(ENDPOINTS.workAreas, id)), CACHE_TTL.locations);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a work area
|
|
27
|
+
*/
|
|
28
|
+
export async function createWorkArea(input) {
|
|
29
|
+
return auditedOperation(AuditAction.CREATE, 'work_area', undefined, async () => {
|
|
30
|
+
const workArea = await postOne(ENDPOINTS.workAreas, input);
|
|
31
|
+
cache.invalidatePrefix('work_areas');
|
|
32
|
+
return workArea;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Update a work area
|
|
37
|
+
*/
|
|
38
|
+
export async function updateWorkArea(id, input) {
|
|
39
|
+
validateId(id, 'work area');
|
|
40
|
+
return auditedOperation(AuditAction.UPDATE, 'work_area', id, async () => {
|
|
41
|
+
const workArea = await patchOne(endpointWithId(ENDPOINTS.workAreas, id), input);
|
|
42
|
+
cache.invalidate(`work_area:${id}`);
|
|
43
|
+
cache.invalidatePrefix('work_areas');
|
|
44
|
+
return workArea;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Archive a work area
|
|
49
|
+
*/
|
|
50
|
+
export async function archiveWorkArea(id) {
|
|
51
|
+
validateId(id, 'work area');
|
|
52
|
+
return auditedOperation(AuditAction.ARCHIVE, 'work_area', id, async () => {
|
|
53
|
+
const workArea = await postAction(endpointWithAction(ENDPOINTS.workAreas, id, 'archive'));
|
|
54
|
+
cache.invalidate(`work_area:${id}`);
|
|
55
|
+
cache.invalidatePrefix('work_areas');
|
|
56
|
+
return workArea;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Unarchive a work area
|
|
61
|
+
*/
|
|
62
|
+
export async function unarchiveWorkArea(id) {
|
|
63
|
+
validateId(id, 'work area');
|
|
64
|
+
return auditedOperation(AuditAction.UNARCHIVE, 'work_area', id, async () => {
|
|
65
|
+
const workArea = await postAction(endpointWithAction(ENDPOINTS.workAreas, id, 'unarchive'));
|
|
66
|
+
cache.invalidate(`work_area:${id}`);
|
|
67
|
+
cache.invalidatePrefix('work_areas');
|
|
68
|
+
return workArea;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=work-areas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-areas.js","sourceRoot":"","sources":["../../src/api/work-areas.ts"],"names":[],"mappings":"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"}
|