rotacloud 1.0.40 → 1.0.43
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/cjs/interfaces/index.d.ts +2 -0
- package/dist/cjs/interfaces/index.js +2 -0
- package/dist/cjs/interfaces/query-params/index.d.ts +2 -0
- package/dist/cjs/interfaces/query-params/index.js +2 -0
- package/dist/cjs/interfaces/query-params/toil-accruals-query-params.interface.d.ts +4 -0
- package/dist/cjs/interfaces/query-params/toil-accruals-query-params.interface.js +2 -0
- package/dist/cjs/interfaces/query-params/toil-allowance-query-params.interface.d.ts +3 -0
- package/dist/cjs/interfaces/query-params/toil-allowance-query-params.interface.js +2 -0
- package/dist/cjs/interfaces/toil-accrual.interface.d.ts +14 -0
- package/dist/cjs/interfaces/toil-accrual.interface.js +2 -0
- package/dist/cjs/interfaces/toil-allowance.interface.d.ts +7 -0
- package/dist/cjs/interfaces/toil-allowance.interface.js +2 -0
- package/dist/cjs/models/SDKError.model.d.ts +11 -0
- package/dist/cjs/models/SDKError.model.js +15 -0
- package/dist/cjs/models/index.d.ts +3 -1
- package/dist/cjs/models/index.js +3 -1
- package/dist/cjs/models/toil-accrual.model.d.ts +16 -0
- package/dist/cjs/models/toil-accrual.model.js +20 -0
- package/dist/cjs/models/toil-allowance.model.d.ts +9 -0
- package/dist/cjs/models/toil-allowance.model.js +13 -0
- package/dist/cjs/rotacloud.d.ts +3 -1
- package/dist/cjs/rotacloud.js +2 -0
- package/dist/cjs/services/accounts.service.js +3 -2
- package/dist/cjs/services/attendance.service.js +10 -5
- package/dist/cjs/services/auth.service.js +3 -2
- package/dist/cjs/services/availability.service.js +1 -2
- package/dist/cjs/services/daily-budgets.service.js +1 -2
- package/dist/cjs/services/daily-revenue.service.js +1 -2
- package/dist/cjs/services/day-notes.service.js +10 -5
- package/dist/cjs/services/days-off.service.js +2 -3
- package/dist/cjs/services/groups.service.js +10 -5
- package/dist/cjs/services/index.d.ts +2 -0
- package/dist/cjs/services/index.js +2 -0
- package/dist/cjs/services/leave-embargoes.service.js +10 -5
- package/dist/cjs/services/leave-request.service.js +14 -5
- package/dist/cjs/services/leave.service.js +10 -5
- package/dist/cjs/services/locations.service.js +10 -5
- package/dist/cjs/services/roles.service.js +10 -5
- package/dist/cjs/services/service.d.ts +3 -0
- package/dist/cjs/services/service.js +24 -2
- package/dist/cjs/services/settings.service.js +3 -2
- package/dist/cjs/services/shifts.service.d.ts +3 -3
- package/dist/cjs/services/shifts.service.js +21 -9
- package/dist/cjs/services/toil-accruals.service.d.ts +28 -0
- package/dist/cjs/services/toil-accruals.service.js +99 -0
- package/dist/cjs/services/toil-allowance.service.d.ts +10 -0
- package/dist/cjs/services/toil-allowance.service.js +84 -0
- package/dist/cjs/services/users.service.js +10 -5
- package/dist/cjs/version.js +1 -1
- package/dist/mjs/interfaces/index.d.ts +2 -0
- package/dist/mjs/interfaces/index.js +2 -0
- package/dist/mjs/interfaces/query-params/index.d.ts +2 -0
- package/dist/mjs/interfaces/query-params/index.js +2 -0
- package/dist/mjs/interfaces/query-params/toil-accruals-query-params.interface.d.ts +4 -0
- package/dist/mjs/interfaces/query-params/toil-accruals-query-params.interface.js +1 -0
- package/dist/mjs/interfaces/query-params/toil-allowance-query-params.interface.d.ts +3 -0
- package/dist/mjs/interfaces/query-params/toil-allowance-query-params.interface.js +1 -0
- package/dist/mjs/interfaces/toil-accrual.interface.d.ts +14 -0
- package/dist/mjs/interfaces/toil-accrual.interface.js +1 -0
- package/dist/mjs/interfaces/toil-allowance.interface.d.ts +7 -0
- package/dist/mjs/interfaces/toil-allowance.interface.js +1 -0
- package/dist/mjs/models/SDKError.model.d.ts +11 -0
- package/dist/mjs/models/SDKError.model.js +10 -0
- package/dist/mjs/models/index.d.ts +3 -1
- package/dist/mjs/models/index.js +3 -1
- package/dist/mjs/models/toil-accrual.model.d.ts +16 -0
- package/dist/mjs/models/toil-accrual.model.js +16 -0
- package/dist/mjs/models/toil-allowance.model.d.ts +9 -0
- package/dist/mjs/models/toil-allowance.model.js +9 -0
- package/dist/mjs/rotacloud.d.ts +3 -1
- package/dist/mjs/rotacloud.js +3 -1
- package/dist/mjs/services/accounts.service.js +3 -2
- package/dist/mjs/services/attendance.service.js +10 -5
- package/dist/mjs/services/auth.service.js +3 -2
- package/dist/mjs/services/availability.service.js +1 -2
- package/dist/mjs/services/daily-budgets.service.js +1 -2
- package/dist/mjs/services/daily-revenue.service.js +1 -2
- package/dist/mjs/services/day-notes.service.js +10 -5
- package/dist/mjs/services/days-off.service.js +2 -3
- package/dist/mjs/services/groups.service.js +10 -5
- package/dist/mjs/services/index.d.ts +2 -0
- package/dist/mjs/services/index.js +2 -0
- package/dist/mjs/services/leave-embargoes.service.js +10 -5
- package/dist/mjs/services/leave-request.service.js +14 -5
- package/dist/mjs/services/leave.service.js +10 -5
- package/dist/mjs/services/locations.service.js +10 -5
- package/dist/mjs/services/roles.service.js +10 -5
- package/dist/mjs/services/service.d.ts +3 -0
- package/dist/mjs/services/service.js +23 -1
- package/dist/mjs/services/settings.service.js +3 -2
- package/dist/mjs/services/shifts.service.d.ts +3 -3
- package/dist/mjs/services/shifts.service.js +21 -9
- package/dist/mjs/services/toil-accruals.service.d.ts +28 -0
- package/dist/mjs/services/toil-accruals.service.js +38 -0
- package/dist/mjs/services/toil-allowance.service.d.ts +10 -0
- package/dist/mjs/services/toil-allowance.service.js +23 -0
- package/dist/mjs/services/users.service.js +10 -5
- package/dist/mjs/version.js +1 -1
- package/package.json +1 -1
- package/src/interfaces/index.ts +2 -0
- package/src/interfaces/query-params/index.ts +2 -0
- package/src/interfaces/query-params/toil-accruals-query-params.interface.ts +4 -0
- package/src/interfaces/query-params/toil-allowance-query-params.interface.ts +3 -0
- package/src/interfaces/toil-accrual.interface.ts +14 -0
- package/src/interfaces/toil-allowance.interface.ts +7 -0
- package/src/models/SDKError.model.ts +20 -0
- package/src/models/index.ts +3 -1
- package/src/models/toil-accrual.model.ts +30 -0
- package/src/models/toil-allowance.model.ts +16 -0
- package/src/rotacloud.ts +4 -0
- package/src/services/accounts.service.ts +3 -5
- package/src/services/attendance.service.ts +10 -17
- package/src/services/auth.service.ts +3 -5
- package/src/services/availability.service.ts +1 -5
- package/src/services/daily-budgets.service.ts +1 -5
- package/src/services/daily-revenue.service.ts +1 -5
- package/src/services/day-notes.service.ts +10 -18
- package/src/services/days-off.service.ts +2 -10
- package/src/services/groups.service.ts +10 -18
- package/src/services/index.ts +2 -0
- package/src/services/leave-embargoes.service.ts +10 -17
- package/src/services/leave-request.service.ts +17 -17
- package/src/services/leave.service.ts +11 -17
- package/src/services/locations.service.ts +11 -17
- package/src/services/roles.service.ts +11 -17
- package/src/services/service.ts +31 -2
- package/src/services/settings.service.ts +4 -5
- package/src/services/shifts.service.ts +28 -34
- package/src/services/toil-accruals.service.ts +59 -0
- package/src/services/toil-allowance.service.ts +29 -0
- package/src/services/users.service.ts +11 -17
- package/src/version.ts +1 -1
- package/dist/cjs/models/error-response.model.d.ts +0 -8
- package/dist/cjs/models/error-response.model.js +0 -13
- package/dist/mjs/models/error-response.model.d.ts +0 -8
- package/dist/mjs/models/error-response.model.js +0 -8
- package/src/models/error-response.model.ts +0 -14
|
@@ -2,8 +2,6 @@ import { AxiosResponse } from 'axios';
|
|
|
2
2
|
import { ApiDayNote } from '../interfaces/index.js';
|
|
3
3
|
import { Service, Options } from './index.js';
|
|
4
4
|
|
|
5
|
-
import { ErrorResponse } from '../models/error-response.model.js';
|
|
6
|
-
|
|
7
5
|
import { DayNote } from '../models/day-note.model.js';
|
|
8
6
|
import { DayNotesQueryParams } from '../interfaces/query-params/day-notes-query-params.interface';
|
|
9
7
|
|
|
@@ -14,20 +12,18 @@ export class DayNotesService extends Service {
|
|
|
14
12
|
create(data: ApiDayNote, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiDayNote, any>>;
|
|
15
13
|
create(data: ApiDayNote, options: Options): Promise<DayNote>;
|
|
16
14
|
create(data: ApiDayNote, options?: Options) {
|
|
17
|
-
return super
|
|
18
|
-
(
|
|
19
|
-
(
|
|
20
|
-
);
|
|
15
|
+
return super
|
|
16
|
+
.fetch<ApiDayNote>({ url: this.apiPath, data, method: 'POST' })
|
|
17
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new DayNote(res.data)));
|
|
21
18
|
}
|
|
22
19
|
|
|
23
20
|
get(id: number): Promise<DayNote>;
|
|
24
21
|
get(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiDayNote, any>>;
|
|
25
22
|
get(id: number, options: Options): Promise<DayNote>;
|
|
26
23
|
get(id: number, options?: Options) {
|
|
27
|
-
return super
|
|
28
|
-
(
|
|
29
|
-
(
|
|
30
|
-
);
|
|
24
|
+
return super
|
|
25
|
+
.fetch<ApiDayNote>({ url: `${this.apiPath}/${id}` }, options)
|
|
26
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new DayNote(res.data)));
|
|
31
27
|
}
|
|
32
28
|
|
|
33
29
|
async *list(query: DayNotesQueryParams, options?: Options) {
|
|
@@ -63,19 +59,15 @@ export class DayNotesService extends Service {
|
|
|
63
59
|
data,
|
|
64
60
|
method: 'POST',
|
|
65
61
|
})
|
|
66
|
-
.then(
|
|
67
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new DayNote(res.data)),
|
|
68
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
69
|
-
);
|
|
62
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new DayNote(res.data)));
|
|
70
63
|
}
|
|
71
64
|
|
|
72
65
|
delete(id: number): Promise<number>;
|
|
73
66
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<any, any>>;
|
|
74
67
|
delete(id: number, options: Options): Promise<number>;
|
|
75
68
|
delete(id: number, options?: Options) {
|
|
76
|
-
return super
|
|
77
|
-
(
|
|
78
|
-
(
|
|
79
|
-
);
|
|
69
|
+
return super
|
|
70
|
+
.fetch<ApiDayNote>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
71
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
80
72
|
}
|
|
81
73
|
}
|
|
@@ -2,8 +2,6 @@ import { AxiosResponse } from 'axios';
|
|
|
2
2
|
import { ApiDaysOff } from '../interfaces/index.js';
|
|
3
3
|
import { Service, Options } from './index.js';
|
|
4
4
|
|
|
5
|
-
import { ErrorResponse } from '../models/error-response.model.js';
|
|
6
|
-
|
|
7
5
|
import { DaysOff } from '../models/days-off.model.js';
|
|
8
6
|
import { DaysOffQueryParams } from '../interfaces/query-params/days-off-query-params.interface.js';
|
|
9
7
|
|
|
@@ -27,10 +25,7 @@ export class DaysOffService extends Service<ApiDaysOff> {
|
|
|
27
25
|
},
|
|
28
26
|
method: 'POST',
|
|
29
27
|
})
|
|
30
|
-
.then(
|
|
31
|
-
(res) => Promise.resolve(options?.rawResponse ? res : res.status),
|
|
32
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
33
|
-
);
|
|
28
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
34
29
|
}
|
|
35
30
|
|
|
36
31
|
async *list(query: DaysOffQueryParams, options?: Options) {
|
|
@@ -65,9 +60,6 @@ export class DaysOffService extends Service<ApiDaysOff> {
|
|
|
65
60
|
users,
|
|
66
61
|
},
|
|
67
62
|
})
|
|
68
|
-
.then(
|
|
69
|
-
(res) => Promise.resolve(options?.rawResponse ? res : res.status),
|
|
70
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
71
|
-
);
|
|
63
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
72
64
|
}
|
|
73
65
|
}
|
|
@@ -2,8 +2,6 @@ import { AxiosResponse } from 'axios';
|
|
|
2
2
|
import { ApiGroup } from '../interfaces/index.js';
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
|
-
import { ErrorResponse } from '../models/error-response.model.js';
|
|
6
|
-
|
|
7
5
|
import { Group } from '../models/group.model.js';
|
|
8
6
|
import { GroupsQueryParams } from '../interfaces/query-params/groups-query-params.interface.js';
|
|
9
7
|
|
|
@@ -19,20 +17,18 @@ export class GroupsService extends Service {
|
|
|
19
17
|
): Promise<AxiosResponse<ApiGroup, any>>;
|
|
20
18
|
create(data: RequirementsOf<ApiGroup, RequiredProps>, options: Options): Promise<Group>;
|
|
21
19
|
create(data: RequirementsOf<ApiGroup, RequiredProps>, options?: Options) {
|
|
22
|
-
return super
|
|
23
|
-
(
|
|
24
|
-
(
|
|
25
|
-
);
|
|
20
|
+
return super
|
|
21
|
+
.fetch<ApiGroup>({ url: this.apiPath, data, method: 'POST' })
|
|
22
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)));
|
|
26
23
|
}
|
|
27
24
|
|
|
28
25
|
get(id: number): Promise<Group>;
|
|
29
26
|
get(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiGroup, any>>;
|
|
30
27
|
get(id: number, options: Options): Promise<Group>;
|
|
31
28
|
get(id: number, options?: Options) {
|
|
32
|
-
return super
|
|
33
|
-
(
|
|
34
|
-
(
|
|
35
|
-
);
|
|
29
|
+
return super
|
|
30
|
+
.fetch<ApiGroup>({ url: `${this.apiPath}/${id}` }, options)
|
|
31
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)));
|
|
36
32
|
}
|
|
37
33
|
|
|
38
34
|
async *list(query?: GroupsQueryParams, options?: Options) {
|
|
@@ -68,19 +64,15 @@ export class GroupsService extends Service {
|
|
|
68
64
|
data,
|
|
69
65
|
method: 'POST',
|
|
70
66
|
})
|
|
71
|
-
.then(
|
|
72
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)),
|
|
73
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
74
|
-
);
|
|
67
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)));
|
|
75
68
|
}
|
|
76
69
|
|
|
77
70
|
delete(id: number): Promise<number>;
|
|
78
71
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<any, any>>;
|
|
79
72
|
delete(id: number, options: Options): Promise<number>;
|
|
80
73
|
delete(id: number, options?: Options) {
|
|
81
|
-
return super
|
|
82
|
-
(
|
|
83
|
-
(
|
|
84
|
-
);
|
|
74
|
+
return super
|
|
75
|
+
.fetch<ApiGroup>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
76
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
85
77
|
}
|
|
86
78
|
}
|
package/src/services/index.ts
CHANGED
|
@@ -14,4 +14,6 @@ export * from './locations.service.js';
|
|
|
14
14
|
export * from './roles.service.js';
|
|
15
15
|
export * from './settings.service.js';
|
|
16
16
|
export * from './shifts.service.js';
|
|
17
|
+
export * from './toil-accruals.service.js';
|
|
18
|
+
export * from './toil-allowance.service.js';
|
|
17
19
|
export * from './users.service.js';
|
|
@@ -3,7 +3,6 @@ import { ApiLeaveEmbargo } from '../interfaces/index.js';
|
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
5
|
import { LeaveEmbargo } from '../models/leave-embargo.model.js';
|
|
6
|
-
import { ErrorResponse } from '../models/error-response.model.js';
|
|
7
6
|
import { LeaveEmbargoesQueryParams } from '../rotacloud.js';
|
|
8
7
|
|
|
9
8
|
type RequiredProps = 'start_date' | 'end_date' | 'users';
|
|
@@ -18,20 +17,18 @@ export class LeaveEmbargoesService extends Service {
|
|
|
18
17
|
): Promise<AxiosResponse<ApiLeaveEmbargo, any>>;
|
|
19
18
|
create(data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>, options: Options): Promise<LeaveEmbargo>;
|
|
20
19
|
create(data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>, options?: Options) {
|
|
21
|
-
return super
|
|
22
|
-
(
|
|
23
|
-
(
|
|
24
|
-
);
|
|
20
|
+
return super
|
|
21
|
+
.fetch<ApiLeaveEmbargo>({ url: this.apiPath, data, method: 'POST' })
|
|
22
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveEmbargo(res.data)));
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
get(id: number): Promise<LeaveEmbargo>;
|
|
28
26
|
get(id: number, options: { rawResponse: true }): Promise<AxiosResponse<ApiLeaveEmbargo, any>>;
|
|
29
27
|
get(id: number, options: Options): Promise<LeaveEmbargo>;
|
|
30
28
|
get(id: number, options?: Options) {
|
|
31
|
-
return super
|
|
32
|
-
(
|
|
33
|
-
(
|
|
34
|
-
);
|
|
29
|
+
return super
|
|
30
|
+
.fetch<ApiLeaveEmbargo>({ url: `${this.apiPath}/${id}` }, options)
|
|
31
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveEmbargo(res.data)));
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
async *list(query: LeaveEmbargoesQueryParams, options?: Options) {
|
|
@@ -67,19 +64,15 @@ export class LeaveEmbargoesService extends Service {
|
|
|
67
64
|
data,
|
|
68
65
|
method: 'POST',
|
|
69
66
|
})
|
|
70
|
-
.then(
|
|
71
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new LeaveEmbargo(res.data)),
|
|
72
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
73
|
-
);
|
|
67
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveEmbargo(res.data)));
|
|
74
68
|
}
|
|
75
69
|
|
|
76
70
|
delete(id: number): Promise<number>;
|
|
77
71
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<any, any>>;
|
|
78
72
|
delete(id: number, options: Options): Promise<number>;
|
|
79
73
|
delete(id: number, options?: Options) {
|
|
80
|
-
return super
|
|
81
|
-
(
|
|
82
|
-
(
|
|
83
|
-
);
|
|
74
|
+
return super
|
|
75
|
+
.fetch<ApiLeaveEmbargo>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
76
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
84
77
|
}
|
|
85
78
|
}
|
|
@@ -2,7 +2,6 @@ import { AxiosResponse } from 'axios';
|
|
|
2
2
|
import { ApiLeaveRequest } from '../interfaces/index.js';
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
|
-
import { ErrorResponse } from '../models/error-response.model.js';
|
|
6
5
|
import { LeaveRequestsQueryParams } from '../interfaces/query-params/leave-requests-query-params.interface.js';
|
|
7
6
|
|
|
8
7
|
import { LeaveRequest } from '../models/leave-request.model.js';
|
|
@@ -19,20 +18,25 @@ export class LeaveRequestService extends Service {
|
|
|
19
18
|
): Promise<AxiosResponse<ApiLeaveRequest, any>>;
|
|
20
19
|
create(data: RequirementsOf<ApiLeaveRequest, RequiredProps>, options: Options): Promise<LeaveRequest>;
|
|
21
20
|
create(data: RequirementsOf<ApiLeaveRequest, RequiredProps>, options?: Options) {
|
|
22
|
-
return super
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
return super
|
|
22
|
+
.fetch<ApiLeaveRequest>(
|
|
23
|
+
{
|
|
24
|
+
url: this.apiPath,
|
|
25
|
+
data,
|
|
26
|
+
method: 'POST',
|
|
27
|
+
},
|
|
28
|
+
options
|
|
29
|
+
)
|
|
30
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveRequest(res.data)));
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
get(id: number): Promise<LeaveRequest>;
|
|
29
34
|
get(id: number, options: { rawResponse: true }): Promise<AxiosResponse<ApiLeaveRequest, any>>;
|
|
30
35
|
get(id: number, options: Options): Promise<LeaveRequest>;
|
|
31
36
|
get(id: number, options?: Options) {
|
|
32
|
-
return super
|
|
33
|
-
(
|
|
34
|
-
(
|
|
35
|
-
);
|
|
37
|
+
return super
|
|
38
|
+
.fetch<ApiLeaveRequest>({ url: `${this.apiPath}/${id}` }, options)
|
|
39
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveRequest(res.data)));
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
async *list(query?: LeaveRequestsQueryParams, options?: Options) {
|
|
@@ -68,19 +72,15 @@ export class LeaveRequestService extends Service {
|
|
|
68
72
|
data,
|
|
69
73
|
method: 'POST',
|
|
70
74
|
})
|
|
71
|
-
.then(
|
|
72
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new LeaveRequest(res.data)),
|
|
73
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
74
|
-
);
|
|
75
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new LeaveRequest(res.data)));
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
delete(id: number): Promise<number>;
|
|
78
79
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiLeaveRequest, any>>;
|
|
79
80
|
delete(id: number, options: Options): Promise<number>;
|
|
80
81
|
delete(id: number, options?: Options) {
|
|
81
|
-
return super
|
|
82
|
-
(
|
|
83
|
-
(
|
|
84
|
-
);
|
|
82
|
+
return super
|
|
83
|
+
.fetch<ApiLeaveRequest>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
84
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -3,7 +3,7 @@ import { ApiLeave, ApiLeaveType } from '../interfaces/index.js';
|
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
5
|
import { Leave } from '../models/leave.model.js';
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
import { LeaveQueryParams } from '../interfaces/query-params/leave-query-params.interface.js';
|
|
8
8
|
|
|
9
9
|
import { LeaveType } from '../models/leave-type.model.js';
|
|
@@ -20,20 +20,18 @@ export class LeaveService extends Service {
|
|
|
20
20
|
): Promise<AxiosResponse<ApiLeave[], any>>;
|
|
21
21
|
create(data: RequirementsOf<ApiLeave, RequiredProps>, options: Options): Promise<Leave[]>;
|
|
22
22
|
create(data: RequirementsOf<ApiLeave, RequiredProps>, options?: Options) {
|
|
23
|
-
return super
|
|
24
|
-
(
|
|
25
|
-
(
|
|
26
|
-
);
|
|
23
|
+
return super
|
|
24
|
+
.fetch<ApiLeave[]>({ url: this.apiPath, data, method: 'POST' }, options)
|
|
25
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : [...res.data.map((leave) => new Leave(leave))]));
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
get(id: number): Promise<Leave>;
|
|
30
29
|
get(id: number, options: { rawResponse: true }): Promise<AxiosResponse<ApiLeave, any>>;
|
|
31
30
|
get(id: number, options: Options): Promise<Leave>;
|
|
32
31
|
get(id: number, options?: Options) {
|
|
33
|
-
return super
|
|
34
|
-
(
|
|
35
|
-
(
|
|
36
|
-
);
|
|
32
|
+
return super
|
|
33
|
+
.fetch<ApiLeave>({ url: `${this.apiPath}/${id}` }, options)
|
|
34
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Leave(res.data)));
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
async *list(query: LeaveQueryParams, options?: Options) {
|
|
@@ -75,19 +73,15 @@ export class LeaveService extends Service {
|
|
|
75
73
|
data,
|
|
76
74
|
method: 'POST',
|
|
77
75
|
})
|
|
78
|
-
.then(
|
|
79
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new Leave(res.data)),
|
|
80
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
81
|
-
);
|
|
76
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Leave(res.data)));
|
|
82
77
|
}
|
|
83
78
|
|
|
84
79
|
delete(id: number): Promise<number>;
|
|
85
80
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiLeave, any>>;
|
|
86
81
|
delete(id: number, options: Options): Promise<number>;
|
|
87
82
|
delete(id: number, options?: Options) {
|
|
88
|
-
return super
|
|
89
|
-
(
|
|
90
|
-
(
|
|
91
|
-
);
|
|
83
|
+
return super
|
|
84
|
+
.fetch<ApiLeave>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
85
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
92
86
|
}
|
|
93
87
|
}
|
|
@@ -3,7 +3,7 @@ import { ApiLocation } from '../interfaces/index.js';
|
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
5
|
import { Location } from '../models/location.model.js';
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
import { LocationsQueryParams } from '../interfaces/query-params/locations-query-params.interface.js';
|
|
8
8
|
|
|
9
9
|
type RequiredProps = 'name';
|
|
@@ -18,20 +18,18 @@ export class LocationsService extends Service {
|
|
|
18
18
|
): Promise<AxiosResponse<ApiLocation, any>>;
|
|
19
19
|
create(data: RequirementsOf<ApiLocation, RequiredProps>, options: Options): Promise<Location>;
|
|
20
20
|
create(data: RequirementsOf<ApiLocation, RequiredProps>, options?: Options) {
|
|
21
|
-
return super
|
|
22
|
-
(
|
|
23
|
-
(
|
|
24
|
-
);
|
|
21
|
+
return super
|
|
22
|
+
.fetch<ApiLocation>({ url: `${this.apiPath}`, data, method: 'POST' })
|
|
23
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Location(res.data)));
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
get(id: number): Promise<Location>;
|
|
28
27
|
get(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiLocation, any>>;
|
|
29
28
|
get(id: number, options: Options): Promise<Location>;
|
|
30
29
|
get(id: number, options?: Options) {
|
|
31
|
-
return super
|
|
32
|
-
(
|
|
33
|
-
(
|
|
34
|
-
);
|
|
30
|
+
return super
|
|
31
|
+
.fetch<ApiLocation>({ url: `${this.apiPath}/${id}` }, options)
|
|
32
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Location(res.data)));
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
async *list(query?: LocationsQueryParams, options?: Options) {
|
|
@@ -67,19 +65,15 @@ export class LocationsService extends Service {
|
|
|
67
65
|
data,
|
|
68
66
|
method: 'POST',
|
|
69
67
|
})
|
|
70
|
-
.then(
|
|
71
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new Location(res.data)),
|
|
72
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
73
|
-
);
|
|
68
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Location(res.data)));
|
|
74
69
|
}
|
|
75
70
|
|
|
76
71
|
delete(id: number): Promise<number>;
|
|
77
72
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<any, any>>;
|
|
78
73
|
delete(id: number, options: Options): Promise<number>;
|
|
79
74
|
delete(id: number, options?: Options) {
|
|
80
|
-
return super
|
|
81
|
-
(
|
|
82
|
-
(
|
|
83
|
-
);
|
|
75
|
+
return super
|
|
76
|
+
.fetch<ApiLocation>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
77
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
84
78
|
}
|
|
85
79
|
}
|
|
@@ -3,7 +3,7 @@ import { ApiRole } from '../interfaces/index.js';
|
|
|
3
3
|
import { Service, Options, RequirementsOf } from './index.js';
|
|
4
4
|
|
|
5
5
|
import { Role } from '../models/role.model.js';
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
import { RolesQueryParams } from '../interfaces/query-params/roles-query-params.interface.js';
|
|
8
8
|
|
|
9
9
|
type RequiredProps = 'name';
|
|
@@ -18,20 +18,18 @@ export class RolesService extends Service {
|
|
|
18
18
|
): Promise<AxiosResponse<ApiRole, any>>;
|
|
19
19
|
create(data: RequirementsOf<ApiRole, RequiredProps>, options: Options): Promise<Role>;
|
|
20
20
|
create(data: RequirementsOf<ApiRole, RequiredProps>, options?: Options) {
|
|
21
|
-
return super
|
|
22
|
-
(
|
|
23
|
-
(
|
|
24
|
-
);
|
|
21
|
+
return super
|
|
22
|
+
.fetch<ApiRole>({ url: this.apiPath, data, method: 'POST' })
|
|
23
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Role(res.data)));
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
get(id: number): Promise<Role>;
|
|
28
27
|
get(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiRole, any>>;
|
|
29
28
|
get(id: number, options: Options): Promise<Role>;
|
|
30
29
|
get(id: number, options?: Options) {
|
|
31
|
-
return super
|
|
32
|
-
(
|
|
33
|
-
(
|
|
34
|
-
);
|
|
30
|
+
return super
|
|
31
|
+
.fetch<ApiRole>({ url: `${this.apiPath}/${id}` }, options)
|
|
32
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Role(res.data)));
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
async *list(query?: RolesQueryParams, options?: Options) {
|
|
@@ -66,19 +64,15 @@ export class RolesService extends Service {
|
|
|
66
64
|
data,
|
|
67
65
|
method: 'POST',
|
|
68
66
|
})
|
|
69
|
-
.then(
|
|
70
|
-
(res) => Promise.resolve(options?.rawResponse ? res : new Role(res.data)),
|
|
71
|
-
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
72
|
-
);
|
|
67
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Role(res.data)));
|
|
73
68
|
}
|
|
74
69
|
|
|
75
70
|
delete(id: number): Promise<number>;
|
|
76
71
|
delete(id: number, options: { rawResponse: true } & Options): Promise<AxiosResponse<any, any>>;
|
|
77
72
|
delete(id: number, options: Options): Promise<number>;
|
|
78
73
|
delete(id: number, options?: Options) {
|
|
79
|
-
return super
|
|
80
|
-
(
|
|
81
|
-
(
|
|
82
|
-
);
|
|
74
|
+
return super
|
|
75
|
+
.fetch<ApiRole>({ url: `${this.apiPath}/${id}`, method: 'DELETE' })
|
|
76
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : res.status));
|
|
83
77
|
}
|
|
84
78
|
}
|
package/src/services/service.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import axios, { AxiosInstance, AxiosRequestConfig, AxiosRequestHeaders, AxiosResponse } from 'axios';
|
|
1
|
+
import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosRequestHeaders, AxiosResponse } from 'axios';
|
|
2
2
|
import axiosRetry from 'axios-retry';
|
|
3
3
|
import { RotaCloud } from '../rotacloud.js';
|
|
4
4
|
import { Version } from '../version.js';
|
|
5
|
+
import { SDKErrorConfig, SDKError } from '../models/SDKError.model.js';
|
|
5
6
|
|
|
6
7
|
export type RequirementsOf<T, K extends keyof T> = Required<Pick<T, K>> & Partial<T>;
|
|
7
8
|
|
|
@@ -46,6 +47,7 @@ export interface Options {
|
|
|
46
47
|
expand?: string[];
|
|
47
48
|
fields?: string[];
|
|
48
49
|
limit?: number;
|
|
50
|
+
dryRun?: boolean;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
interface PagingObject {
|
|
@@ -59,7 +61,33 @@ type ParameterPrimitive = string | boolean | number | null;
|
|
|
59
61
|
type ParameterValue = ParameterPrimitive | ParameterPrimitive[] | undefined;
|
|
60
62
|
|
|
61
63
|
export abstract class Service<ApiResponse = any> {
|
|
62
|
-
protected client: AxiosInstance =
|
|
64
|
+
protected client: AxiosInstance = this.initialiseAxios();
|
|
65
|
+
|
|
66
|
+
private initialiseAxios(): AxiosInstance {
|
|
67
|
+
const client = axios.create();
|
|
68
|
+
client.interceptors.response.use(
|
|
69
|
+
(response) => response,
|
|
70
|
+
(error) => {
|
|
71
|
+
const parsedError = this.parseClientError(error);
|
|
72
|
+
|
|
73
|
+
return Promise.reject(parsedError);
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
return client;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private parseClientError(error: unknown | AxiosError): SDKError | unknown {
|
|
80
|
+
if (!axios.isAxiosError(error)) return error;
|
|
81
|
+
const axiosErrorLocation = error.response || error.request;
|
|
82
|
+
const apiErrorMessage = axiosErrorLocation.data?.error;
|
|
83
|
+
const sdkErrorParams: SDKErrorConfig = {
|
|
84
|
+
code: axiosErrorLocation.status,
|
|
85
|
+
message: apiErrorMessage || error.message,
|
|
86
|
+
data: axiosErrorLocation.data,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
return new SDKError(sdkErrorParams);
|
|
90
|
+
}
|
|
63
91
|
|
|
64
92
|
public isLeaveRequest(endpoint?: string): boolean {
|
|
65
93
|
return endpoint === '/leave_requests';
|
|
@@ -118,6 +146,7 @@ export abstract class Service<ApiResponse = any> {
|
|
|
118
146
|
expand: options?.expand,
|
|
119
147
|
fields: options?.fields,
|
|
120
148
|
limit: options?.limit,
|
|
149
|
+
dry_run: options?.dryRun,
|
|
121
150
|
...httpOptions?.params,
|
|
122
151
|
},
|
|
123
152
|
paramsSerializer: this.buildQueryStr,
|
|
@@ -3,7 +3,7 @@ import { Settings } from '../models/settings.model.js';
|
|
|
3
3
|
import { Service, Options } from './index.js';
|
|
4
4
|
|
|
5
5
|
import { ApiSettings } from '../interfaces/index.js';
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
import { SettingsQueryParams } from '../rotacloud.js';
|
|
8
8
|
|
|
9
9
|
class SettingsService extends Service {
|
|
@@ -13,10 +13,9 @@ class SettingsService extends Service {
|
|
|
13
13
|
get(query: SettingsQueryParams, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiSettings, any>>;
|
|
14
14
|
get(query: SettingsQueryParams, options: Options): Promise<Settings>;
|
|
15
15
|
get(query: SettingsQueryParams, options?: Options) {
|
|
16
|
-
return super
|
|
17
|
-
(
|
|
18
|
-
(
|
|
19
|
-
);
|
|
16
|
+
return super
|
|
17
|
+
.fetch<ApiSettings>({ url: `${this.apiPath}`, params: query }, options)
|
|
18
|
+
.then((res) => Promise.resolve(options?.rawResponse ? res : new Settings(res.data)));
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
|