@mondaydotcomorg/monday-authorization 3.7.5 → 3.7.6-feat-shaime-delay-retry-when-response-code-is-429-31455cd
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/authorization-internal-service.d.ts +4 -5
- package/dist/authorization-internal-service.d.ts.map +1 -1
- package/dist/authorization-internal-service.js +11 -15
- package/dist/authorization-service.d.ts +2 -2
- package/dist/authorization-service.d.ts.map +1 -1
- package/dist/esm/authorization-internal-service.d.ts +4 -5
- package/dist/esm/authorization-internal-service.d.ts.map +1 -1
- package/dist/esm/authorization-internal-service.mjs +11 -15
- package/dist/esm/authorization-service.d.ts +2 -2
- package/dist/esm/authorization-service.d.ts.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/authorization-internal-service.ts +17 -21
- package/src/authorization-service.ts +2 -3
- package/src/index.ts +4 -2
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { OnRetryCallback, RetryPolicy, RetryDelayCallback } from '@mondaydotcomorg/monday-fetch-api';
|
|
1
|
+
import { OnRetryCallback, Response, RetryPolicy, RetryDelayCallback } from '@mondaydotcomorg/monday-fetch-api';
|
|
3
2
|
import { IgniteClient } from '@mondaydotcomorg/ignite-sdk';
|
|
4
3
|
import { BaseRequest } from './types/general';
|
|
5
4
|
export declare const MAX_RETRIES = 3;
|
|
@@ -17,11 +16,11 @@ export declare class AuthorizationInternalService {
|
|
|
17
16
|
static skipAuthorization(requset: BaseRequest): void;
|
|
18
17
|
static markAuthorized(request: BaseRequest): void;
|
|
19
18
|
static failIfNotCoveredByAuthorization(request: BaseRequest): void;
|
|
20
|
-
static throwOnHttpErrorIfNeeded(response:
|
|
19
|
+
static throwOnHttpErrorIfNeeded(response: Response, placement: string): void;
|
|
21
20
|
static throwOnHttpError(status: number, placement: string): never;
|
|
22
21
|
static generateInternalAuthToken(accountId: number, userId: number): string;
|
|
23
|
-
static setRequestFetchOptions(customMondayFetchOptions:
|
|
24
|
-
static getRequestFetchOptions():
|
|
22
|
+
static setRequestFetchOptions(customMondayFetchOptions: RetryPolicy): void;
|
|
23
|
+
static getRequestFetchOptions(): RetryPolicy;
|
|
25
24
|
static setIgniteClient(client: IgniteClient): void;
|
|
26
25
|
static getRequestTimeout(): number;
|
|
27
26
|
static getRetriesPolicy(): RetryPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-internal-service.d.ts","sourceRoot":"","sources":["../src/authorization-internal-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorization-internal-service.d.ts","sourceRoot":"","sources":["../src/authorization-internal-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,eAAe,EACf,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,MAAM,kBAA2B,CAAC;AAQ/C,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAEnC,CAAC;AAIF,qBAAa,4BAA4B;IACvC,MAAM,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACnC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIjD,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMlE,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAc5E,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;IAQjE,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIlE,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,WAAW;IAOnE,MAAM,CAAC,sBAAsB,IAAI,WAAW;IAI5C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY;IAI3C,MAAM,CAAC,iBAAiB;IA2BxB,MAAM,CAAC,gBAAgB,IAAI,WAAW;CAavC"}
|
|
@@ -28,15 +28,16 @@ const MAX_RETRIES = 3;
|
|
|
28
28
|
const RETRY_DELAY_MS = 20;
|
|
29
29
|
const logger = MondayLogger__namespace.getLogger();
|
|
30
30
|
const defaultMondayFetchOptions = {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
useRetries: true,
|
|
32
|
+
maxRetries: MAX_RETRIES,
|
|
33
|
+
retryDelayMS: RETRY_DELAY_MS,
|
|
33
34
|
};
|
|
34
35
|
const onRetryCallback = (attempt, error) => {
|
|
35
36
|
if (attempt == MAX_RETRIES) {
|
|
36
37
|
logger.error({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed');
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
39
|
-
logger.
|
|
40
|
+
logger.debug({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed, trying again');
|
|
40
41
|
}
|
|
41
42
|
};
|
|
42
43
|
/**
|
|
@@ -44,17 +45,9 @@ const onRetryCallback = (attempt, error) => {
|
|
|
44
45
|
* Calculates delay as: baseDelay * 2^(attemptCount - 1)
|
|
45
46
|
* Example: attempt 1 -> 100ms, attempt 2 -> 200ms, attempt 3 -> 400ms
|
|
46
47
|
*/
|
|
47
|
-
const calcDelayDurationInMs =
|
|
48
|
-
return RETRY_DELAY_MS * Math.pow(2, attemptCount - 1);
|
|
48
|
+
const calcDelayDurationInMs = retryData => {
|
|
49
|
+
return RETRY_DELAY_MS * Math.pow(2, retryData.attemptCount - 1);
|
|
49
50
|
};
|
|
50
|
-
function logOnFetchFail(retriesLeft, error) {
|
|
51
|
-
if (retriesLeft == 0) {
|
|
52
|
-
logger.error({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}`);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
logger.info({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}, trying again`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
51
|
let mondayFetchOptions = defaultMondayFetchOptions;
|
|
59
52
|
class AuthorizationInternalService {
|
|
60
53
|
static igniteClient;
|
|
@@ -120,9 +113,12 @@ class AuthorizationInternalService {
|
|
|
120
113
|
const fetchOptions = AuthorizationInternalService.getRequestFetchOptions();
|
|
121
114
|
const retryDelayMS = calcDelayDurationInMs;
|
|
122
115
|
return {
|
|
123
|
-
useRetries:
|
|
124
|
-
maxRetries: fetchOptions.
|
|
116
|
+
useRetries: fetchOptions.useRetries,
|
|
117
|
+
maxRetries: fetchOptions.maxRetries,
|
|
125
118
|
onRetry: onRetryCallback,
|
|
119
|
+
retryOn: (_attempt, _error, response) => {
|
|
120
|
+
return [429, 500].includes(response?.status);
|
|
121
|
+
},
|
|
126
122
|
retryDelayMS,
|
|
127
123
|
};
|
|
128
124
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
2
2
|
import { IgniteClient } from '@mondaydotcomorg/ignite-sdk';
|
|
3
3
|
import { Action, AuthorizationObject, AuthorizationParams, AuthorizationResource } from './types/general';
|
|
4
4
|
import { ScopedAction, ScopedActionPermit, ScopedActionResponseObject, ScopeOptions } from './types/scoped-actions-contracts';
|
|
@@ -7,7 +7,7 @@ export interface AuthorizeResponse {
|
|
|
7
7
|
unauthorizedIds?: number[];
|
|
8
8
|
unauthorizedObjects?: AuthorizationObject[];
|
|
9
9
|
}
|
|
10
|
-
export declare function setRequestFetchOptions(customMondayFetchOptions:
|
|
10
|
+
export declare function setRequestFetchOptions(customMondayFetchOptions: RetryPolicy): void;
|
|
11
11
|
export declare class AuthorizationService {
|
|
12
12
|
private static get graphApi();
|
|
13
13
|
private static _graphApi?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-service.d.ts","sourceRoot":"","sources":["../src/authorization-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorization-service.d.ts","sourceRoot":"","sources":["../src/authorization-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAmB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1G,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACb,MAAM,kCAAkC,CAAC;AAY1C,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED,wBAAgB,sBAAsB,CAAC,wBAAwB,EAAE,WAAW,QAE3E;AAMD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,KAAK,QAAQ,GAK1B;IACD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAW;IAEpC,OAAO,CAAC,MAAM,KAAK,WAAW,GAK7B;IACD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAc;IAE1C,MAAM,CAAC,eAAe,IAAI,IAAI;IAK9B,MAAM,CAAC,WAAW,CAAC,MAAC;IACpB,MAAM,CAAC,sCAAsC,CAAC,EAAE,MAAM,CAAC;IACvD,MAAM,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAEnC;;;OAGG;WACU,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,qBAAqB,EAAE,EAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;WAEhB,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,2BAA2B,EAAE,mBAAmB,EAAE,GACjD,OAAO,CAAC,iBAAiB,CAAC;IAY7B;;;OAGG;WACU,wBAAwB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO,GAC1C,OAAO,CAAC,OAAO,CAAC;mBAkBE,6BAA6B;IAclD,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAIlB,gBAAgB,CAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,kBAAkB,CAAC;WAMjB,wBAAwB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,YAAY,EAAE,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;mBA4CnB,oBAAoB;mBAUpB,oBAAoB;CAmF1C;AAED,wBAAgB,cAAc,CAC5B,MAAM,KAAA,EACN,sCAAsC,GAAE,MAAiD,QAY1F;AAED,wBAAsB,eAAe,kBAMpC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAiBjH"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { OnRetryCallback, RetryPolicy, RetryDelayCallback } from '@mondaydotcomorg/monday-fetch-api';
|
|
1
|
+
import { OnRetryCallback, Response, RetryPolicy, RetryDelayCallback } from '@mondaydotcomorg/monday-fetch-api';
|
|
3
2
|
import { IgniteClient } from '@mondaydotcomorg/ignite-sdk';
|
|
4
3
|
import { BaseRequest } from './types/general';
|
|
5
4
|
export declare const MAX_RETRIES = 3;
|
|
@@ -17,11 +16,11 @@ export declare class AuthorizationInternalService {
|
|
|
17
16
|
static skipAuthorization(requset: BaseRequest): void;
|
|
18
17
|
static markAuthorized(request: BaseRequest): void;
|
|
19
18
|
static failIfNotCoveredByAuthorization(request: BaseRequest): void;
|
|
20
|
-
static throwOnHttpErrorIfNeeded(response:
|
|
19
|
+
static throwOnHttpErrorIfNeeded(response: Response, placement: string): void;
|
|
21
20
|
static throwOnHttpError(status: number, placement: string): never;
|
|
22
21
|
static generateInternalAuthToken(accountId: number, userId: number): string;
|
|
23
|
-
static setRequestFetchOptions(customMondayFetchOptions:
|
|
24
|
-
static getRequestFetchOptions():
|
|
22
|
+
static setRequestFetchOptions(customMondayFetchOptions: RetryPolicy): void;
|
|
23
|
+
static getRequestFetchOptions(): RetryPolicy;
|
|
25
24
|
static setIgniteClient(client: IgniteClient): void;
|
|
26
25
|
static getRequestTimeout(): number;
|
|
27
26
|
static getRetriesPolicy(): RetryPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-internal-service.d.ts","sourceRoot":"","sources":["../../src/authorization-internal-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorization-internal-service.d.ts","sourceRoot":"","sources":["../../src/authorization-internal-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,eAAe,EACf,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,MAAM,kBAA2B,CAAC;AAQ/C,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAEnC,CAAC;AAIF,qBAAa,4BAA4B;IACvC,MAAM,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACnC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIjD,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMlE,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAc5E,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;IAQjE,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIlE,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,WAAW;IAOnE,MAAM,CAAC,sBAAsB,IAAI,WAAW;IAI5C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY;IAI3C,MAAM,CAAC,iBAAiB;IA2BxB,MAAM,CAAC,gBAAgB,IAAI,WAAW;CAavC"}
|
|
@@ -6,15 +6,16 @@ const MAX_RETRIES = 3;
|
|
|
6
6
|
const RETRY_DELAY_MS = 20;
|
|
7
7
|
const logger = MondayLogger.getLogger();
|
|
8
8
|
const defaultMondayFetchOptions = {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
useRetries: true,
|
|
10
|
+
maxRetries: MAX_RETRIES,
|
|
11
|
+
retryDelayMS: RETRY_DELAY_MS,
|
|
11
12
|
};
|
|
12
13
|
const onRetryCallback = (attempt, error) => {
|
|
13
14
|
if (attempt == MAX_RETRIES) {
|
|
14
15
|
logger.error({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed');
|
|
15
16
|
}
|
|
16
17
|
else {
|
|
17
|
-
logger.
|
|
18
|
+
logger.debug({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed, trying again');
|
|
18
19
|
}
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
@@ -22,17 +23,9 @@ const onRetryCallback = (attempt, error) => {
|
|
|
22
23
|
* Calculates delay as: baseDelay * 2^(attemptCount - 1)
|
|
23
24
|
* Example: attempt 1 -> 100ms, attempt 2 -> 200ms, attempt 3 -> 400ms
|
|
24
25
|
*/
|
|
25
|
-
const calcDelayDurationInMs =
|
|
26
|
-
return RETRY_DELAY_MS * Math.pow(2, attemptCount - 1);
|
|
26
|
+
const calcDelayDurationInMs = retryData => {
|
|
27
|
+
return RETRY_DELAY_MS * Math.pow(2, retryData.attemptCount - 1);
|
|
27
28
|
};
|
|
28
|
-
function logOnFetchFail(retriesLeft, error) {
|
|
29
|
-
if (retriesLeft == 0) {
|
|
30
|
-
logger.error({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}`);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
logger.info({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}, trying again`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
29
|
let mondayFetchOptions = defaultMondayFetchOptions;
|
|
37
30
|
class AuthorizationInternalService {
|
|
38
31
|
static igniteClient;
|
|
@@ -98,9 +91,12 @@ class AuthorizationInternalService {
|
|
|
98
91
|
const fetchOptions = AuthorizationInternalService.getRequestFetchOptions();
|
|
99
92
|
const retryDelayMS = calcDelayDurationInMs;
|
|
100
93
|
return {
|
|
101
|
-
useRetries:
|
|
102
|
-
maxRetries: fetchOptions.
|
|
94
|
+
useRetries: fetchOptions.useRetries,
|
|
95
|
+
maxRetries: fetchOptions.maxRetries,
|
|
103
96
|
onRetry: onRetryCallback,
|
|
97
|
+
retryOn: (_attempt, _error, response) => {
|
|
98
|
+
return [429, 500].includes(response?.status);
|
|
99
|
+
},
|
|
104
100
|
retryDelayMS,
|
|
105
101
|
};
|
|
106
102
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
2
2
|
import { IgniteClient } from '@mondaydotcomorg/ignite-sdk';
|
|
3
3
|
import { Action, AuthorizationObject, AuthorizationParams, AuthorizationResource } from './types/general';
|
|
4
4
|
import { ScopedAction, ScopedActionPermit, ScopedActionResponseObject, ScopeOptions } from './types/scoped-actions-contracts';
|
|
@@ -7,7 +7,7 @@ export interface AuthorizeResponse {
|
|
|
7
7
|
unauthorizedIds?: number[];
|
|
8
8
|
unauthorizedObjects?: AuthorizationObject[];
|
|
9
9
|
}
|
|
10
|
-
export declare function setRequestFetchOptions(customMondayFetchOptions:
|
|
10
|
+
export declare function setRequestFetchOptions(customMondayFetchOptions: RetryPolicy): void;
|
|
11
11
|
export declare class AuthorizationService {
|
|
12
12
|
private static get graphApi();
|
|
13
13
|
private static _graphApi?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-service.d.ts","sourceRoot":"","sources":["../../src/authorization-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorization-service.d.ts","sourceRoot":"","sources":["../../src/authorization-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAmB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1G,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACb,MAAM,kCAAkC,CAAC;AAY1C,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED,wBAAgB,sBAAsB,CAAC,wBAAwB,EAAE,WAAW,QAE3E;AAMD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,KAAK,QAAQ,GAK1B;IACD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAW;IAEpC,OAAO,CAAC,MAAM,KAAK,WAAW,GAK7B;IACD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAc;IAE1C,MAAM,CAAC,eAAe,IAAI,IAAI;IAK9B,MAAM,CAAC,WAAW,CAAC,MAAC;IACpB,MAAM,CAAC,sCAAsC,CAAC,EAAE,MAAM,CAAC;IACvD,MAAM,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAEnC;;;OAGG;WACU,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,qBAAqB,EAAE,EAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;WAEhB,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,2BAA2B,EAAE,mBAAmB,EAAE,GACjD,OAAO,CAAC,iBAAiB,CAAC;IAY7B;;;OAGG;WACU,wBAAwB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO,GAC1C,OAAO,CAAC,OAAO,CAAC;mBAkBE,6BAA6B;IAclD,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAIlB,gBAAgB,CAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,kBAAkB,CAAC;WAMjB,wBAAwB,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,YAAY,EAAE,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;mBA4CnB,oBAAoB;mBAUpB,oBAAoB;CAmF1C;AAED,wBAAgB,cAAc,CAC5B,MAAM,KAAA,EACN,sCAAsC,GAAE,MAAiD,QAY1F;AAED,wBAAsB,eAAe,kBAMpC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAiBjH"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MondayFetchOptions } from '@mondaydotcomorg/monday-fetch';
|
|
2
1
|
import { MetricsClient } from './metrics-service';
|
|
3
2
|
import * as TestKit from './testKit';
|
|
3
|
+
import { RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
4
4
|
interface MetricsInitOptions {
|
|
5
5
|
client?: MetricsClient;
|
|
6
6
|
serviceName?: string;
|
|
@@ -10,7 +10,7 @@ interface MetricsInitOptions {
|
|
|
10
10
|
}
|
|
11
11
|
export interface InitOptions {
|
|
12
12
|
prometheus?: any;
|
|
13
|
-
mondayFetchOptions?:
|
|
13
|
+
mondayFetchOptions?: RetryPolicy;
|
|
14
14
|
redisClient?: any;
|
|
15
15
|
grantedFeatureRedisExpirationInSeconds?: number;
|
|
16
16
|
metrics?: MetricsInitOptions;
|
|
@@ -31,4 +31,5 @@ export { CustomRole, BasicRole, RoleType, RoleCreateRequest, RoleUpdateRequest,
|
|
|
31
31
|
export { AttributeAssignment, AttributeOperation, ResourceAttributeDeleteAssignment, ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeDeleteAssignment, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation, ResourceAttributeAssignment as ResourceAttributeAssignmentContract, EntityAttributeAssignment as EntityAttributeAssignmentContract, } from './types/authorization-attributes-contracts';
|
|
32
32
|
export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
|
|
33
33
|
export { TestKit };
|
|
34
|
+
export type { RetryPolicy };
|
|
34
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,kCAAkC,IAAI,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAEhI,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MondayFetchOptions } from '@mondaydotcomorg/monday-fetch';
|
|
2
1
|
import { MetricsClient } from './metrics-service';
|
|
3
2
|
import * as TestKit from './testKit';
|
|
3
|
+
import { RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
4
4
|
interface MetricsInitOptions {
|
|
5
5
|
client?: MetricsClient;
|
|
6
6
|
serviceName?: string;
|
|
@@ -10,7 +10,7 @@ interface MetricsInitOptions {
|
|
|
10
10
|
}
|
|
11
11
|
export interface InitOptions {
|
|
12
12
|
prometheus?: any;
|
|
13
|
-
mondayFetchOptions?:
|
|
13
|
+
mondayFetchOptions?: RetryPolicy;
|
|
14
14
|
redisClient?: any;
|
|
15
15
|
grantedFeatureRedisExpirationInSeconds?: number;
|
|
16
16
|
metrics?: MetricsInitOptions;
|
|
@@ -31,4 +31,5 @@ export { CustomRole, BasicRole, RoleType, RoleCreateRequest, RoleUpdateRequest,
|
|
|
31
31
|
export { AttributeAssignment, AttributeOperation, ResourceAttributeDeleteAssignment, ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeDeleteAssignment, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation, ResourceAttributeAssignment as ResourceAttributeAssignmentContract, EntityAttributeAssignment as EntityAttributeAssignmentContract, } from './types/authorization-attributes-contracts';
|
|
32
32
|
export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
|
|
33
33
|
export { TestKit };
|
|
34
|
+
export type { RetryPolicy };
|
|
34
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,kCAAkC,IAAI,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAEhI,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/monday-authorization",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.6-feat-shaime-delay-retry-when-response-code-is-429-31455cd",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "BSD-3-Clause",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@mondaydotcomorg/ignite-sdk": "^2.2.7",
|
|
24
|
-
"@mondaydotcomorg/monday-fetch": "^
|
|
24
|
+
"@mondaydotcomorg/monday-fetch": "^2.2.0",
|
|
25
25
|
"@mondaydotcomorg/monday-fetch-api": "^1.0.2",
|
|
26
26
|
"@mondaydotcomorg/monday-jwt": "^3.0.14",
|
|
27
27
|
"@mondaydotcomorg/monday-logger": "^4.0.11",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { signAuthorizationHeader } from '@mondaydotcomorg/monday-jwt';
|
|
2
|
-
import { fetch, MondayFetchOptions } from '@mondaydotcomorg/monday-fetch';
|
|
3
2
|
import * as MondayLogger from '@mondaydotcomorg/monday-logger';
|
|
4
3
|
import {
|
|
5
4
|
NullableErrorWithType,
|
|
6
5
|
OnRetryCallback,
|
|
6
|
+
Response,
|
|
7
7
|
RetryPolicy,
|
|
8
8
|
RetryDelayCallback,
|
|
9
9
|
} from '@mondaydotcomorg/monday-fetch-api';
|
|
@@ -15,16 +15,17 @@ export const MAX_RETRIES = 3;
|
|
|
15
15
|
export const RETRY_DELAY_MS = 20;
|
|
16
16
|
export const logger = MondayLogger.getLogger();
|
|
17
17
|
|
|
18
|
-
const defaultMondayFetchOptions:
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const defaultMondayFetchOptions: RetryPolicy = {
|
|
19
|
+
useRetries: true,
|
|
20
|
+
maxRetries: MAX_RETRIES,
|
|
21
|
+
retryDelayMS: RETRY_DELAY_MS,
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
export const onRetryCallback: OnRetryCallback = (attempt: number, error?: NullableErrorWithType) => {
|
|
24
25
|
if (attempt == MAX_RETRIES) {
|
|
25
26
|
logger.error({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed');
|
|
26
27
|
} else {
|
|
27
|
-
logger.
|
|
28
|
+
logger.debug({ tag: 'authorization-service', attempt, error }, 'Authorization attempt failed, trying again');
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
|
|
@@ -33,19 +34,11 @@ export const onRetryCallback: OnRetryCallback = (attempt: number, error?: Nullab
|
|
|
33
34
|
* Calculates delay as: baseDelay * 2^(attemptCount - 1)
|
|
34
35
|
* Example: attempt 1 -> 100ms, attempt 2 -> 200ms, attempt 3 -> 400ms
|
|
35
36
|
*/
|
|
36
|
-
export const calcDelayDurationInMs: RetryDelayCallback =
|
|
37
|
-
return RETRY_DELAY_MS * Math.pow(2, attemptCount - 1);
|
|
37
|
+
export const calcDelayDurationInMs: RetryDelayCallback = retryData => {
|
|
38
|
+
return RETRY_DELAY_MS * Math.pow(2, retryData.attemptCount - 1);
|
|
38
39
|
};
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
if (retriesLeft == 0) {
|
|
42
|
-
logger.error({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}`);
|
|
43
|
-
} else {
|
|
44
|
-
logger.info({ retriesLeft, error }, `Authorization attempt failed due to ${error.message}, trying again`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
let mondayFetchOptions: MondayFetchOptions = defaultMondayFetchOptions;
|
|
41
|
+
let mondayFetchOptions = defaultMondayFetchOptions;
|
|
49
42
|
|
|
50
43
|
export class AuthorizationInternalService {
|
|
51
44
|
static igniteClient?: IgniteClient;
|
|
@@ -63,7 +56,7 @@ export class AuthorizationInternalService {
|
|
|
63
56
|
}
|
|
64
57
|
}
|
|
65
58
|
|
|
66
|
-
static throwOnHttpErrorIfNeeded(response:
|
|
59
|
+
static throwOnHttpErrorIfNeeded(response: Response, placement: string): void {
|
|
67
60
|
if (response.ok) {
|
|
68
61
|
return;
|
|
69
62
|
}
|
|
@@ -89,14 +82,14 @@ export class AuthorizationInternalService {
|
|
|
89
82
|
return signAuthorizationHeader({ appName: INTERNAL_APP_NAME, accountId, userId });
|
|
90
83
|
}
|
|
91
84
|
|
|
92
|
-
static setRequestFetchOptions(customMondayFetchOptions:
|
|
85
|
+
static setRequestFetchOptions(customMondayFetchOptions: RetryPolicy) {
|
|
93
86
|
mondayFetchOptions = {
|
|
94
87
|
...defaultMondayFetchOptions,
|
|
95
88
|
...customMondayFetchOptions,
|
|
96
89
|
};
|
|
97
90
|
}
|
|
98
91
|
|
|
99
|
-
static getRequestFetchOptions():
|
|
92
|
+
static getRequestFetchOptions(): RetryPolicy {
|
|
100
93
|
return mondayFetchOptions;
|
|
101
94
|
}
|
|
102
95
|
|
|
@@ -135,9 +128,12 @@ export class AuthorizationInternalService {
|
|
|
135
128
|
const fetchOptions = AuthorizationInternalService.getRequestFetchOptions();
|
|
136
129
|
const retryDelayMS = calcDelayDurationInMs;
|
|
137
130
|
return {
|
|
138
|
-
useRetries:
|
|
139
|
-
maxRetries: fetchOptions.
|
|
131
|
+
useRetries: fetchOptions.useRetries,
|
|
132
|
+
maxRetries: fetchOptions.maxRetries,
|
|
140
133
|
onRetry: onRetryCallback,
|
|
134
|
+
retryOn: (_attempt, _error, response) => {
|
|
135
|
+
return [429, 500].includes(response?.status);
|
|
136
|
+
},
|
|
141
137
|
retryDelayMS,
|
|
142
138
|
};
|
|
143
139
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { performance } from 'perf_hooks';
|
|
2
|
-
import { MondayFetchOptions } from '@mondaydotcomorg/monday-fetch';
|
|
3
2
|
import { Api } from '@mondaydotcomorg/trident-backend-api';
|
|
4
|
-
import { HttpFetcherError } from '@mondaydotcomorg/monday-fetch-api';
|
|
3
|
+
import { HttpFetcherError, RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
5
4
|
import { getIgniteClient, IgniteClient } from '@mondaydotcomorg/ignite-sdk';
|
|
6
5
|
import { Action, AuthorizationObject, AuthorizationParams, AuthorizationResource } from './types/general';
|
|
7
6
|
import { sendAuthorizationCheckResponseTimeMetric } from './prometheus-service';
|
|
@@ -29,7 +28,7 @@ export interface AuthorizeResponse {
|
|
|
29
28
|
unauthorizedObjects?: AuthorizationObject[];
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
export function setRequestFetchOptions(customMondayFetchOptions:
|
|
31
|
+
export function setRequestFetchOptions(customMondayFetchOptions: RetryPolicy) {
|
|
33
32
|
AuthorizationInternalService.setRequestFetchOptions(customMondayFetchOptions);
|
|
34
33
|
}
|
|
35
34
|
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MondayFetchOptions } from '@mondaydotcomorg/monday-fetch';
|
|
2
1
|
import { setPrometheus } from './prometheus-service';
|
|
3
2
|
import { setIgniteClient, setRedisClient, setRequestFetchOptions } from './authorization-service';
|
|
4
3
|
import { initializeMetrics, MetricsClient } from './metrics-service';
|
|
5
4
|
import * as TestKit from './testKit';
|
|
5
|
+
import { RetryPolicy } from '@mondaydotcomorg/monday-fetch-api';
|
|
6
6
|
|
|
7
7
|
interface MetricsInitOptions {
|
|
8
8
|
client?: MetricsClient;
|
|
@@ -14,7 +14,7 @@ interface MetricsInitOptions {
|
|
|
14
14
|
|
|
15
15
|
export interface InitOptions {
|
|
16
16
|
prometheus?: any;
|
|
17
|
-
mondayFetchOptions?:
|
|
17
|
+
mondayFetchOptions?: RetryPolicy;
|
|
18
18
|
redisClient?: any;
|
|
19
19
|
grantedFeatureRedisExpirationInSeconds?: number;
|
|
20
20
|
metrics?: MetricsInitOptions;
|
|
@@ -94,3 +94,5 @@ export {
|
|
|
94
94
|
export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
|
|
95
95
|
|
|
96
96
|
export { TestKit };
|
|
97
|
+
|
|
98
|
+
export type { RetryPolicy };
|