rotacloud 1.0.28 → 1.0.31
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 +27 -1
- package/dist/cjs/interfaces/index.d.ts +2 -1
- package/dist/cjs/interfaces/index.js +2 -1
- package/dist/cjs/interfaces/query-params/index.d.ts +1 -0
- package/dist/cjs/interfaces/query-params/index.js +1 -0
- package/dist/cjs/interfaces/query-params/settings-query-params.interface.d.ts +3 -0
- package/dist/cjs/interfaces/query-params/settings-query-params.interface.js +2 -0
- package/dist/cjs/interfaces/sdk-config.interface.d.ts +2 -0
- package/dist/cjs/interfaces/settings.interface.d.ts +64 -0
- package/dist/cjs/interfaces/settings.interface.js +2 -0
- package/dist/cjs/models/attendance.model.d.ts +21 -1
- package/dist/cjs/models/attendance.model.js +20 -0
- package/dist/cjs/models/settings.model.d.ts +2 -6
- package/dist/cjs/models/settings.model.js +3 -0
- package/dist/cjs/rotacloud.d.ts +4 -2
- package/dist/cjs/rotacloud.js +10 -6
- package/dist/cjs/services/accounts.service.d.ts +7 -1
- package/dist/cjs/services/accounts.service.js +4 -0
- package/dist/cjs/services/index.d.ts +1 -0
- package/dist/cjs/services/index.js +1 -0
- package/dist/cjs/services/service.d.ts +19 -1
- package/dist/cjs/services/service.js +38 -3
- package/dist/cjs/services/settings.service.d.ts +14 -0
- package/dist/cjs/services/settings.service.js +16 -0
- package/dist/cjs/version.js +1 -1
- package/dist/mjs/interfaces/index.d.ts +2 -1
- package/dist/mjs/interfaces/index.js +2 -1
- package/dist/mjs/interfaces/query-params/index.d.ts +1 -0
- package/dist/mjs/interfaces/query-params/index.js +1 -0
- package/dist/mjs/interfaces/query-params/settings-query-params.interface.d.ts +3 -0
- package/dist/mjs/interfaces/query-params/settings-query-params.interface.js +1 -0
- package/dist/mjs/interfaces/sdk-config.interface.d.ts +2 -0
- package/dist/mjs/interfaces/settings.interface.d.ts +64 -0
- package/dist/mjs/interfaces/settings.interface.js +1 -0
- package/dist/mjs/models/attendance.model.d.ts +21 -1
- package/dist/mjs/models/attendance.model.js +20 -0
- package/dist/mjs/models/settings.model.d.ts +2 -6
- package/dist/mjs/models/settings.model.js +3 -0
- package/dist/mjs/rotacloud.d.ts +4 -2
- package/dist/mjs/rotacloud.js +12 -6
- package/dist/mjs/services/accounts.service.d.ts +7 -1
- package/dist/mjs/services/accounts.service.js +4 -0
- package/dist/mjs/services/index.d.ts +1 -0
- package/dist/mjs/services/index.js +1 -0
- package/dist/mjs/services/service.d.ts +19 -1
- package/dist/mjs/services/service.js +37 -2
- package/dist/mjs/services/settings.service.d.ts +14 -0
- package/dist/mjs/services/settings.service.js +13 -0
- package/dist/mjs/version.js +1 -1
- package/package.json +2 -1
- package/src/interfaces/index.ts +2 -1
- package/src/interfaces/query-params/index.ts +1 -0
- package/src/interfaces/query-params/settings-query-params.interface.ts +3 -0
- package/src/interfaces/sdk-config.interface.ts +3 -0
- package/src/interfaces/settings.interface.ts +63 -0
- package/src/models/attendance.model.ts +41 -1
- package/src/models/settings.model.ts +5 -3
- package/src/rotacloud.ts +14 -5
- package/src/services/accounts.service.ts +12 -0
- package/src/services/index.ts +1 -0
- package/src/services/service.ts +57 -3
- package/src/services/settings.service.ts +23 -0
- package/src/version.ts +1 -1
package/src/services/service.ts
CHANGED
|
@@ -1,9 +1,46 @@
|
|
|
1
|
-
import axios, { AxiosRequestConfig, AxiosRequestHeaders, AxiosResponse } from 'axios';
|
|
1
|
+
import axios, { AxiosInstance, AxiosRequestConfig, AxiosRequestHeaders, AxiosResponse } from 'axios';
|
|
2
|
+
import axiosRetry from 'axios-retry';
|
|
2
3
|
import { RotaCloud } from '../rotacloud.js';
|
|
3
4
|
import { Version } from '../version.js';
|
|
4
5
|
|
|
5
6
|
export type RequirementsOf<T, K extends keyof T> = Required<Pick<T, K>> & Partial<T>;
|
|
6
7
|
|
|
8
|
+
export enum RetryStrategy {
|
|
9
|
+
Exponential = 'expo',
|
|
10
|
+
Static = 'static',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type RetryOptions =
|
|
14
|
+
| {
|
|
15
|
+
/** Use exponential back-off */
|
|
16
|
+
exponential?: false;
|
|
17
|
+
/** The maximum number of retries before erroring */
|
|
18
|
+
maxRetries: number;
|
|
19
|
+
/** Delay in milliseconds between retry attempts - not used in exponential back-off */
|
|
20
|
+
delay: number;
|
|
21
|
+
}
|
|
22
|
+
| {
|
|
23
|
+
/** Use exponential back-off */
|
|
24
|
+
exponential: true;
|
|
25
|
+
/** The maximum number of retries before erroring */
|
|
26
|
+
maxRetries: number;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const DEFAULT_RETRIES = 3;
|
|
30
|
+
const DEFAULT_RETRY_DELAY = 2000;
|
|
31
|
+
|
|
32
|
+
const DEFAULT_RETRY_STRATEGY_OPTIONS: Record<RetryStrategy, RetryOptions> = {
|
|
33
|
+
[RetryStrategy.Exponential]: {
|
|
34
|
+
exponential: true,
|
|
35
|
+
maxRetries: DEFAULT_RETRIES,
|
|
36
|
+
},
|
|
37
|
+
[RetryStrategy.Static]: {
|
|
38
|
+
exponential: false,
|
|
39
|
+
maxRetries: DEFAULT_RETRIES,
|
|
40
|
+
delay: DEFAULT_RETRY_DELAY,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
7
44
|
export interface Options {
|
|
8
45
|
rawResponse?: boolean;
|
|
9
46
|
expand?: string[];
|
|
@@ -22,7 +59,7 @@ type ParameterPrimitive = string | boolean | number | null;
|
|
|
22
59
|
type ParameterValue = ParameterPrimitive | ParameterPrimitive[] | undefined;
|
|
23
60
|
|
|
24
61
|
export abstract class Service<ApiResponse = any> {
|
|
25
|
-
|
|
62
|
+
protected client: AxiosInstance = axios.create();
|
|
26
63
|
|
|
27
64
|
public isLeaveRequest(endpoint?: string): boolean {
|
|
28
65
|
return endpoint === '/leave_requests';
|
|
@@ -80,7 +117,24 @@ export abstract class Service<ApiResponse = any> {
|
|
|
80
117
|
},
|
|
81
118
|
};
|
|
82
119
|
|
|
83
|
-
|
|
120
|
+
if (RotaCloud.config.retry) {
|
|
121
|
+
const retryConfig =
|
|
122
|
+
typeof RotaCloud.config.retry === 'string'
|
|
123
|
+
? DEFAULT_RETRY_STRATEGY_OPTIONS[RotaCloud.config.retry]
|
|
124
|
+
: RotaCloud.config.retry;
|
|
125
|
+
|
|
126
|
+
axiosRetry(this.client, {
|
|
127
|
+
retries: retryConfig.maxRetries,
|
|
128
|
+
retryDelay: (retryCount) => {
|
|
129
|
+
if (retryConfig.exponential) {
|
|
130
|
+
return axiosRetry.exponentialDelay(retryCount);
|
|
131
|
+
}
|
|
132
|
+
return retryConfig.delay;
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const response = await this.client.request<T>(reqObject);
|
|
84
138
|
return response;
|
|
85
139
|
}
|
|
86
140
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AxiosResponse } from 'axios';
|
|
2
|
+
import { Settings } from '../models/settings.model.js';
|
|
3
|
+
import { Service, Options } from './index.js';
|
|
4
|
+
|
|
5
|
+
import { ApiSettings } from '../interfaces/index.js';
|
|
6
|
+
import { ErrorResponse } from '../models/error-response.model.js';
|
|
7
|
+
import { SettingsQueryParams } from '../rotacloud.js';
|
|
8
|
+
|
|
9
|
+
class SettingsService extends Service {
|
|
10
|
+
private apiPath = '/settings';
|
|
11
|
+
|
|
12
|
+
get(query: SettingsQueryParams): Promise<Settings>;
|
|
13
|
+
get(query: SettingsQueryParams, options: { rawResponse: true } & Options): Promise<AxiosResponse<ApiSettings, any>>;
|
|
14
|
+
get(query: SettingsQueryParams, options: Options): Promise<Settings>;
|
|
15
|
+
get(query: SettingsQueryParams, options?: Options) {
|
|
16
|
+
return super.fetch<ApiSettings>({ url: `${this.apiPath}`, params: query }, options).then(
|
|
17
|
+
(res) => Promise.resolve(options?.rawResponse ? res : new Settings(res.data)),
|
|
18
|
+
(err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { SettingsService };
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const Version = { version: '1.0.
|
|
1
|
+
export const Version = { version: '1.0.31' };
|