itrm-tools 1.3.17 → 1.3.19-beta.1
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/api/alegra/AlegraConnectionManager.d.ts +30 -30
- package/dist/api/check/route/CorsCheckApiRouter.js +1 -1
- package/dist/api/check/route/CorsCheckApiRouter.js.map +1 -1
- package/dist/api/check/route/SimpleCheckableAPIRouter.js +4 -1
- package/dist/api/check/route/SimpleCheckableAPIRouter.js.map +1 -1
- package/dist/api/express/ExpressStandardConfiguration.js +7 -2
- package/dist/api/express/ExpressStandardConfiguration.js.map +1 -1
- package/dist/api/request/crud/CrudManager.d.ts +11 -11
- package/dist/api/request/crud/CrudServiceManager.d.ts +28 -28
- package/dist/api/request/crud/CrudServiceManager.js +98 -98
- package/dist/api/request/crud/CrudServiceManager.js.map +1 -1
- package/dist/api/request/crud/common/ActivityHistoryManager.d.ts +38 -38
- package/dist/api/request/crud/common/ActivityHistoryManager.js +68 -68
- package/dist/api/request/crud/common/ApplicationManager.d.ts +37 -37
- package/dist/api/request/crud/common/ApplicationManager.js +56 -56
- package/dist/api/request/crud/common/AvailablePlatformManager.d.ts +38 -38
- package/dist/api/request/crud/common/AvailablePlatformManager.js +68 -68
- package/dist/api/request/crud/common/ComponentManager.d.ts +51 -48
- package/dist/api/request/crud/common/ComponentManager.js +62 -62
- package/dist/api/request/crud/common/ComponentManager.js.map +1 -1
- package/dist/api/request/crud/common/KeyManager.d.ts +41 -41
- package/dist/api/request/crud/common/KeyManager.js +69 -69
- package/dist/api/request/crud/common/PlatformManager.d.ts +44 -41
- package/dist/api/request/crud/common/PlatformManager.js +59 -59
- package/dist/api/request/crud/common/PlatformManager.js.map +1 -1
- package/dist/api/request/crud/common/RoleManager.d.ts +41 -40
- package/dist/api/request/crud/common/RoleManager.js +56 -56
- package/dist/api/request/crud/common/RoleManager.js.map +1 -1
- package/dist/api/request/crud/common/ServiceSessionManager.d.ts +29 -0
- package/dist/api/request/crud/common/ServiceSessionManager.js +224 -0
- package/dist/api/request/crud/common/ServiceSessionManager.js.map +1 -0
- package/dist/api/request/crud/common/StatusManager.d.ts +32 -32
- package/dist/api/request/crud/common/StatusManager.js +56 -56
- package/dist/api/request/crud/common/TypeManager.d.ts +32 -32
- package/dist/api/request/crud/common/TypeManager.js +56 -56
- package/dist/api/request/crud/common/UserCredentialsManager.d.ts +37 -37
- package/dist/api/request/crud/common/UserCredentialsManager.js +66 -66
- package/dist/api/request/crud/common/UserManager.d.ts +38 -38
- package/dist/api/request/crud/common/UserManager.js +62 -62
- package/dist/api/utils/Response.d.ts +25 -25
- package/dist/api/utils/Response.js +85 -85
- package/dist/cryptography/jwt/JwtUtils.d.ts +18 -18
- package/dist/cryptography/jwt/JwtUtils.js +36 -36
- package/dist/cryptography/password/PasswordUtils.d.ts +6 -6
- package/dist/cryptography/password/PasswordUtils.js +34 -34
- package/dist/index.d.ts +63 -62
- package/dist/index.js +128 -126
- package/dist/index.js.map +1 -1
- package/dist/types/api.d.ts +21 -21
- package/dist/types/api.js +2 -2
- package/package.json +6 -6
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoleManager = void 0;
|
|
4
|
-
const CrudServiceManager_1 = require("../CrudServiceManager");
|
|
5
|
-
class RoleManager extends CrudServiceManager_1.CrudServiceManager {
|
|
6
|
-
url;
|
|
7
|
-
constructor(url) {
|
|
8
|
-
super();
|
|
9
|
-
this.url = url;
|
|
10
|
-
}
|
|
11
|
-
find(details) {
|
|
12
|
-
return this.sendFinding(`${this.url}/roles?name=${details.name}`, details.config);
|
|
13
|
-
}
|
|
14
|
-
findById(details) {
|
|
15
|
-
return this.sendFinding(`${this.url}/roles?id=${details.id}`, details.config);
|
|
16
|
-
}
|
|
17
|
-
async count(details) {
|
|
18
|
-
let url = this.buildRequestUrl(`${this.url}/roles`, details);
|
|
19
|
-
return (await this.sendCounting(url, details.config)) ?? 0;
|
|
20
|
-
}
|
|
21
|
-
async findAll(details) {
|
|
22
|
-
let roles = [];
|
|
23
|
-
let url = this.buildRequestUrl(`${this.url}/roles`, details);
|
|
24
|
-
if (details.limit) {
|
|
25
|
-
roles = (await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${details.limit}&offset=${details.offset}`, details.config)) ?? [];
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
let limit = 5000, offset = 0, isEmpty = false;
|
|
29
|
-
do {
|
|
30
|
-
let values = await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${limit}&offset=${offset}`, details.config);
|
|
31
|
-
if (values)
|
|
32
|
-
roles = roles.concat(values);
|
|
33
|
-
isEmpty = values == undefined || values.length == 0;
|
|
34
|
-
offset += limit;
|
|
35
|
-
} while (!isEmpty);
|
|
36
|
-
}
|
|
37
|
-
return roles;
|
|
38
|
-
}
|
|
39
|
-
buildRequestUrl(url, details) {
|
|
40
|
-
let suffix = `${details.id ? `&id=${details.id}` : ""}${details.name ? `&name=${details.name}` : ""}`;
|
|
41
|
-
return `${url}?${suffix.substring(1)}`;
|
|
42
|
-
}
|
|
43
|
-
create(details) {
|
|
44
|
-
return this.sendCreation(`${this.url}/roles`, { name: details.name, permissions: details.permissions }, details.config);
|
|
45
|
-
}
|
|
46
|
-
createMany(details) {
|
|
47
|
-
return this.sendCreationMany(`${this.url}/roles`, details.values ?? [], details.config);
|
|
48
|
-
}
|
|
49
|
-
modify(role) {
|
|
50
|
-
return this.sendModification(`${this.url}/roles/${role.roleId}`, { name: role.name, permissions: role.permissions }, role.config);
|
|
51
|
-
}
|
|
52
|
-
destroy(role) {
|
|
53
|
-
return this.sendDestruction(`${this.url}/roles/${role.roleId}`, role.config);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.RoleManager = RoleManager;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoleManager = void 0;
|
|
4
|
+
const CrudServiceManager_1 = require("../CrudServiceManager");
|
|
5
|
+
class RoleManager extends CrudServiceManager_1.CrudServiceManager {
|
|
6
|
+
url;
|
|
7
|
+
constructor(url) {
|
|
8
|
+
super();
|
|
9
|
+
this.url = url;
|
|
10
|
+
}
|
|
11
|
+
find(details) {
|
|
12
|
+
return this.sendFinding(`${this.url}/roles?name=${details.name}`, details.config);
|
|
13
|
+
}
|
|
14
|
+
findById(details) {
|
|
15
|
+
return this.sendFinding(`${this.url}/roles?id=${details.id}`, details.config);
|
|
16
|
+
}
|
|
17
|
+
async count(details) {
|
|
18
|
+
let url = this.buildRequestUrl(`${this.url}/roles`, details);
|
|
19
|
+
return (await this.sendCounting(url, details.config)) ?? 0;
|
|
20
|
+
}
|
|
21
|
+
async findAll(details) {
|
|
22
|
+
let roles = [];
|
|
23
|
+
let url = this.buildRequestUrl(`${this.url}/roles`, details);
|
|
24
|
+
if (details.limit) {
|
|
25
|
+
roles = (await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${details.limit}&offset=${details.offset}`, details.config)) ?? [];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
let limit = 5000, offset = 0, isEmpty = false;
|
|
29
|
+
do {
|
|
30
|
+
let values = await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${limit}&offset=${offset}`, details.config);
|
|
31
|
+
if (values)
|
|
32
|
+
roles = roles.concat(values);
|
|
33
|
+
isEmpty = values == undefined || values.length == 0;
|
|
34
|
+
offset += limit;
|
|
35
|
+
} while (!isEmpty);
|
|
36
|
+
}
|
|
37
|
+
return roles;
|
|
38
|
+
}
|
|
39
|
+
buildRequestUrl(url, details) {
|
|
40
|
+
let suffix = `${details.id ? `&id=${details.id}` : ""}${details.name ? `&name=${details.name}` : ""}${details.roleType ? `&roleType=${details.roleType}` : ""}`;
|
|
41
|
+
return `${url}?${suffix.substring(1)}`;
|
|
42
|
+
}
|
|
43
|
+
create(details) {
|
|
44
|
+
return this.sendCreation(`${this.url}/roles`, { name: details.name, permissions: details.permissions }, details.config);
|
|
45
|
+
}
|
|
46
|
+
createMany(details) {
|
|
47
|
+
return this.sendCreationMany(`${this.url}/roles`, details.values ?? [], details.config);
|
|
48
|
+
}
|
|
49
|
+
modify(role) {
|
|
50
|
+
return this.sendModification(`${this.url}/roles/${role.roleId}`, { name: role.name, permissions: role.permissions }, role.config);
|
|
51
|
+
}
|
|
52
|
+
destroy(role) {
|
|
53
|
+
return this.sendDestruction(`${this.url}/roles/${role.roleId}`, role.config);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.RoleManager = RoleManager;
|
|
57
57
|
//# sourceMappingURL=RoleManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoleManager.js","sourceRoot":"","sources":["../../../../../src/api/request/crud/common/RoleManager.ts"],"names":[],"mappings":";;;AACA,8DAAwF;
|
|
1
|
+
{"version":3,"file":"RoleManager.js","sourceRoot":"","sources":["../../../../../src/api/request/crud/common/RoleManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from "axios";
|
|
2
|
+
export declare class ServiceSessionManager {
|
|
3
|
+
private readonly cipheringAlgorithm;
|
|
4
|
+
private readonly apiKeySigner;
|
|
5
|
+
private readonly serviceReferer;
|
|
6
|
+
private readonly serviceSecretKey;
|
|
7
|
+
private readonly sessionServiceUrl;
|
|
8
|
+
private readonly service;
|
|
9
|
+
private readonly role;
|
|
10
|
+
private readonly application;
|
|
11
|
+
private readonly platform;
|
|
12
|
+
private keys?;
|
|
13
|
+
private authToken?;
|
|
14
|
+
constructor(service: string, role: string, application: string, platform: string, referer: string, secretKey: string, sessionServiceUrl: string);
|
|
15
|
+
requestHeaders(): Promise<AxiosRequestConfig>;
|
|
16
|
+
private tryUseExistingToken;
|
|
17
|
+
private requestNewToken;
|
|
18
|
+
private checkKeys;
|
|
19
|
+
private requestKeys;
|
|
20
|
+
private isCurrentKeysValid;
|
|
21
|
+
private handleTokenExpiration;
|
|
22
|
+
private exponentialBackoff;
|
|
23
|
+
private isUnauthorizedError;
|
|
24
|
+
buildHeaders(additionalHeaders?: Record<string, string>): {
|
|
25
|
+
headers: Record<string, string>;
|
|
26
|
+
};
|
|
27
|
+
encryptPayload(payload: string): string;
|
|
28
|
+
decryptPayload(payload: string): string;
|
|
29
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServiceSessionManager = void 0;
|
|
4
|
+
const AesCipheringAlgorithm_1 = require("../../../../cryptography/algorithm/AesCipheringAlgorithm");
|
|
5
|
+
const ApiKeySigner_1 = require("../../../../cryptography/sign/ApiKeySigner");
|
|
6
|
+
const RequestAxiosCall_1 = require("../../RequestAxiosCall");
|
|
7
|
+
const APIRequest_1 = require("../../../APIRequest");
|
|
8
|
+
const MAX_RETRIES = 3;
|
|
9
|
+
const RETRY_DELAY_MS = 100; // Base delay for exponential backoff
|
|
10
|
+
class ServiceSessionManager {
|
|
11
|
+
cipheringAlgorithm;
|
|
12
|
+
apiKeySigner;
|
|
13
|
+
serviceReferer;
|
|
14
|
+
serviceSecretKey;
|
|
15
|
+
sessionServiceUrl;
|
|
16
|
+
service;
|
|
17
|
+
role;
|
|
18
|
+
application;
|
|
19
|
+
platform;
|
|
20
|
+
keys;
|
|
21
|
+
authToken;
|
|
22
|
+
constructor(service, role, application, platform, referer, secretKey, sessionServiceUrl) {
|
|
23
|
+
this.cipheringAlgorithm = new AesCipheringAlgorithm_1.AesCipheringAlgorithm();
|
|
24
|
+
this.apiKeySigner = new ApiKeySigner_1.ApiKeySigner();
|
|
25
|
+
this.serviceReferer = referer;
|
|
26
|
+
this.serviceSecretKey = secretKey;
|
|
27
|
+
this.sessionServiceUrl = sessionServiceUrl;
|
|
28
|
+
this.service = service;
|
|
29
|
+
this.role = role;
|
|
30
|
+
this.application = application;
|
|
31
|
+
this.platform = platform;
|
|
32
|
+
}
|
|
33
|
+
async requestHeaders() {
|
|
34
|
+
let attempts = 0;
|
|
35
|
+
while (attempts < MAX_RETRIES) {
|
|
36
|
+
try {
|
|
37
|
+
if (!(await this.checkKeys())) {
|
|
38
|
+
console.warn(`[${this.application}/${this.service}] Failed to obtain or validate keys (attempt ${attempts + 1}/${MAX_RETRIES})`);
|
|
39
|
+
attempts++;
|
|
40
|
+
await this.exponentialBackoff(attempts);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
// Try to validate and use existing token
|
|
44
|
+
const existingTokenHeaders = await this.tryUseExistingToken(attempts);
|
|
45
|
+
if (existingTokenHeaders) {
|
|
46
|
+
return existingTokenHeaders;
|
|
47
|
+
}
|
|
48
|
+
// Request new token
|
|
49
|
+
const newTokenHeaders = await this.requestNewToken(attempts);
|
|
50
|
+
if (newTokenHeaders) {
|
|
51
|
+
return newTokenHeaders;
|
|
52
|
+
}
|
|
53
|
+
// Both attempts failed, retry
|
|
54
|
+
attempts++;
|
|
55
|
+
await this.exponentialBackoff(attempts);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error(`[${this.application}/${this.service}] Unexpected error in requestHeaders (attempt ${attempts + 1}/${MAX_RETRIES}):`, error);
|
|
59
|
+
attempts++;
|
|
60
|
+
await this.exponentialBackoff(attempts);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
console.error(`[${this.application}/${this.service}] Failed to obtain auth headers after ${MAX_RETRIES} attempts`);
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
async tryUseExistingToken(attemptNumber) {
|
|
67
|
+
if (!this.authToken)
|
|
68
|
+
return null;
|
|
69
|
+
try {
|
|
70
|
+
const response = await RequestAxiosCall_1.RequestAxiosCall.post(`${this.sessionServiceUrl}/service/validate/token`, {
|
|
71
|
+
payload: this.encryptPayload(`${this.application}:${this.service}:${this.authToken}`),
|
|
72
|
+
}, this.buildHeaders({
|
|
73
|
+
authorization: `${this.application} ${this.apiKeySigner.sign({
|
|
74
|
+
method: APIRequest_1.RequestMethod.POST,
|
|
75
|
+
path: `/service/validate/token`,
|
|
76
|
+
}, this.keys)}`
|
|
77
|
+
}));
|
|
78
|
+
if (response.success && response.payload) {
|
|
79
|
+
console.debug(`[${this.application}/${this.service}] Existing token is still valid`);
|
|
80
|
+
return {
|
|
81
|
+
headers: {
|
|
82
|
+
Referer: this.encryptPayload(this.serviceReferer),
|
|
83
|
+
Authorization: `Bearer ${this.authToken}`,
|
|
84
|
+
Platform: this.platform,
|
|
85
|
+
Application: this.application,
|
|
86
|
+
Service: this.service,
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (this.isUnauthorizedError(error)) {
|
|
94
|
+
console.warn(`[${this.application}/${this.service}] Token validation returned 401, triggering re-authentication`);
|
|
95
|
+
await this.handleTokenExpiration();
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async requestNewToken(attemptNumber) {
|
|
101
|
+
try {
|
|
102
|
+
const tokenUrl = `${this.sessionServiceUrl}/service/token?role=${encodeURIComponent(this.role)}&application=${encodeURIComponent(this.application)}&platform=${encodeURIComponent(this.platform)}&service=${encodeURIComponent(this.service)}`;
|
|
103
|
+
const response = await RequestAxiosCall_1.RequestAxiosCall.get(tokenUrl, this.buildHeaders({
|
|
104
|
+
authorization: `${this.application} ${this.apiKeySigner.sign({
|
|
105
|
+
method: APIRequest_1.RequestMethod.GET,
|
|
106
|
+
path: `/service/token?role=${encodeURIComponent(this.role)}&application=${encodeURIComponent(this.application)}&platform=${encodeURIComponent(this.platform)}&service=${encodeURIComponent(this.service)}`,
|
|
107
|
+
}, this.keys)}`
|
|
108
|
+
}));
|
|
109
|
+
if (response.success && response.payload) {
|
|
110
|
+
this.authToken = response.payload;
|
|
111
|
+
console.debug(`[${this.application}/${this.service}] Successfully obtained new auth token`);
|
|
112
|
+
return {
|
|
113
|
+
headers: {
|
|
114
|
+
Referer: this.encryptPayload(this.serviceReferer),
|
|
115
|
+
Authorization: `Bearer ${response.payload}`,
|
|
116
|
+
Platform: this.platform,
|
|
117
|
+
Application: this.application,
|
|
118
|
+
Service: this.service,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
console.warn(`[${this.application}/${this.service}] Token request returned unsuccessful response (attempt ${attemptNumber + 1}/${MAX_RETRIES})`);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (this.isUnauthorizedError(error)) {
|
|
127
|
+
console.warn(`[${this.application}/${this.service}] Token request returned 401, refreshing credentials (attempt ${attemptNumber + 1}/${MAX_RETRIES})`);
|
|
128
|
+
await this.handleTokenExpiration();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.error(`[${this.application}/${this.service}] Error during token request (attempt ${attemptNumber + 1}/${MAX_RETRIES}):`, error);
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async checkKeys() {
|
|
137
|
+
this.keys = this.keys ?? await this.requestKeys();
|
|
138
|
+
if (!(await this.isCurrentKeysValid()))
|
|
139
|
+
this.keys = await this.requestKeys();
|
|
140
|
+
return this.keys !== undefined;
|
|
141
|
+
}
|
|
142
|
+
async requestKeys() {
|
|
143
|
+
try {
|
|
144
|
+
const response = await RequestAxiosCall_1.RequestAxiosCall.get(`${this.sessionServiceUrl}/service/credentials?service=${encodeURIComponent(this.service)}&application=${encodeURIComponent(this.application)}`, this.buildHeaders());
|
|
145
|
+
if (response.success) {
|
|
146
|
+
this.keys = JSON.parse(this.decryptPayload(response.payload));
|
|
147
|
+
console.debug(`[${this.application}/${this.service}] Successfully obtained new credentials`);
|
|
148
|
+
return this.keys;
|
|
149
|
+
}
|
|
150
|
+
console.warn(`[${this.application}/${this.service}] Credentials request returned unsuccessful response`);
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
if (this.isUnauthorizedError(error)) {
|
|
155
|
+
console.error(`[${this.application}/${this.service}] Credentials request returned 401 - authentication system may be unavailable`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.error(`[${this.application}/${this.service}] Failed to request new keys:`, error);
|
|
159
|
+
}
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async isCurrentKeysValid() {
|
|
164
|
+
if (this.keys) {
|
|
165
|
+
try {
|
|
166
|
+
const response = await RequestAxiosCall_1.RequestAxiosCall.post(`${this.sessionServiceUrl}/service/validate/credentials`, {
|
|
167
|
+
payload: this.encryptPayload(`${this.application}:${this.service}:${this.keys?.publicKey}`),
|
|
168
|
+
}, this.buildHeaders());
|
|
169
|
+
return response.success && response.payload;
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
if (this.isUnauthorizedError(error)) {
|
|
173
|
+
console.warn(`[${this.application}/${this.service}] Key validation returned 401, keys are expired or invalid`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.error(`[${this.application}/${this.service}] Key validation failed, will attempt to refetch:`, error);
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
async handleTokenExpiration() {
|
|
184
|
+
console.info(`[${this.application}/${this.service}] Clearing expired credentials and keys`);
|
|
185
|
+
this.authToken = undefined;
|
|
186
|
+
this.keys = undefined;
|
|
187
|
+
}
|
|
188
|
+
async exponentialBackoff(attemptNumber) {
|
|
189
|
+
if (attemptNumber >= MAX_RETRIES)
|
|
190
|
+
return;
|
|
191
|
+
const delayMs = RETRY_DELAY_MS * Math.pow(2, attemptNumber - 1);
|
|
192
|
+
console.debug(`[${this.application}/${this.service}] Waiting ${delayMs}ms before retry`);
|
|
193
|
+
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
194
|
+
}
|
|
195
|
+
isUnauthorizedError(error) {
|
|
196
|
+
if (error && typeof error === 'object' && 'response' in error) {
|
|
197
|
+
const response = error.response;
|
|
198
|
+
return response?.status === 401;
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
buildHeaders(additionalHeaders) {
|
|
203
|
+
const headers = {
|
|
204
|
+
Referer: this.encryptPayload(this.serviceReferer),
|
|
205
|
+
};
|
|
206
|
+
if (additionalHeaders) {
|
|
207
|
+
for (const [key, value] of Object.entries(additionalHeaders)) {
|
|
208
|
+
if (value) {
|
|
209
|
+
const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
|
|
210
|
+
headers[capitalizedKey] = value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return { headers };
|
|
215
|
+
}
|
|
216
|
+
encryptPayload(payload) {
|
|
217
|
+
return this.cipheringAlgorithm.encrypt(payload, this.serviceSecretKey);
|
|
218
|
+
}
|
|
219
|
+
decryptPayload(payload) {
|
|
220
|
+
return this.cipheringAlgorithm.decrypt(payload, this.serviceSecretKey);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.ServiceSessionManager = ServiceSessionManager;
|
|
224
|
+
//# sourceMappingURL=ServiceSessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceSessionManager.js","sourceRoot":"","sources":["../../../../../src/api/request/crud/common/ServiceSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { CrudServiceManager, StandardIdRequestDefinition } from "../CrudServiceManager";
|
|
2
|
-
import { AxiosRequestConfig } from "axios";
|
|
3
|
-
export interface IStatus {
|
|
4
|
-
statusId?: number;
|
|
5
|
-
status?: string;
|
|
6
|
-
details?: Record<string, Record<string, string>>;
|
|
7
|
-
updatedAt?: string;
|
|
8
|
-
createdAt?: string;
|
|
9
|
-
config?: AxiosRequestConfig;
|
|
10
|
-
}
|
|
11
|
-
export interface IStatusSearchDetails {
|
|
12
|
-
id?: string | number;
|
|
13
|
-
status?: string;
|
|
14
|
-
details?: any;
|
|
15
|
-
values?: IStatus[];
|
|
16
|
-
limit?: number;
|
|
17
|
-
offset?: number;
|
|
18
|
-
config?: AxiosRequestConfig;
|
|
19
|
-
}
|
|
20
|
-
export declare class StatusManager extends CrudServiceManager<IStatusSearchDetails, IStatus> {
|
|
21
|
-
private readonly url;
|
|
22
|
-
constructor(url: string);
|
|
23
|
-
find(details: IStatusSearchDetails): Promise<IStatus | undefined>;
|
|
24
|
-
findById(details: StandardIdRequestDefinition): Promise<IStatus | undefined>;
|
|
25
|
-
count(details: IStatusSearchDetails): Promise<number>;
|
|
26
|
-
findAll(details: IStatusSearchDetails): Promise<IStatus[] | undefined>;
|
|
27
|
-
private buildRequestUrl;
|
|
28
|
-
create(details: IStatusSearchDetails): Promise<IStatus | undefined>;
|
|
29
|
-
createMany(details: IStatusSearchDetails): Promise<IStatus[] | undefined>;
|
|
30
|
-
modify(status: IStatus): Promise<IStatus | undefined>;
|
|
31
|
-
destroy(status: IStatus): Promise<void | number>;
|
|
32
|
-
}
|
|
1
|
+
import { CrudServiceManager, StandardIdRequestDefinition } from "../CrudServiceManager";
|
|
2
|
+
import { AxiosRequestConfig } from "axios";
|
|
3
|
+
export interface IStatus {
|
|
4
|
+
statusId?: number;
|
|
5
|
+
status?: string;
|
|
6
|
+
details?: Record<string, Record<string, string>>;
|
|
7
|
+
updatedAt?: string;
|
|
8
|
+
createdAt?: string;
|
|
9
|
+
config?: AxiosRequestConfig;
|
|
10
|
+
}
|
|
11
|
+
export interface IStatusSearchDetails {
|
|
12
|
+
id?: string | number;
|
|
13
|
+
status?: string;
|
|
14
|
+
details?: any;
|
|
15
|
+
values?: IStatus[];
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
config?: AxiosRequestConfig;
|
|
19
|
+
}
|
|
20
|
+
export declare class StatusManager extends CrudServiceManager<IStatusSearchDetails, IStatus> {
|
|
21
|
+
private readonly url;
|
|
22
|
+
constructor(url: string);
|
|
23
|
+
find(details: IStatusSearchDetails): Promise<IStatus | undefined>;
|
|
24
|
+
findById(details: StandardIdRequestDefinition): Promise<IStatus | undefined>;
|
|
25
|
+
count(details: IStatusSearchDetails): Promise<number>;
|
|
26
|
+
findAll(details: IStatusSearchDetails): Promise<IStatus[] | undefined>;
|
|
27
|
+
private buildRequestUrl;
|
|
28
|
+
create(details: IStatusSearchDetails): Promise<IStatus | undefined>;
|
|
29
|
+
createMany(details: IStatusSearchDetails): Promise<IStatus[] | undefined>;
|
|
30
|
+
modify(status: IStatus): Promise<IStatus | undefined>;
|
|
31
|
+
destroy(status: IStatus): Promise<void | number>;
|
|
32
|
+
}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StatusManager = void 0;
|
|
4
|
-
const CrudServiceManager_1 = require("../CrudServiceManager");
|
|
5
|
-
class StatusManager extends CrudServiceManager_1.CrudServiceManager {
|
|
6
|
-
url;
|
|
7
|
-
constructor(url) {
|
|
8
|
-
super();
|
|
9
|
-
this.url = url;
|
|
10
|
-
}
|
|
11
|
-
find(details) {
|
|
12
|
-
return this.sendFinding(`${this.url}/status?status=${details.status}`, details.config);
|
|
13
|
-
}
|
|
14
|
-
findById(details) {
|
|
15
|
-
return this.sendFinding(`${this.url}/status?id=${details.id}`, details.config);
|
|
16
|
-
}
|
|
17
|
-
async count(details) {
|
|
18
|
-
let url = this.buildRequestUrl(`${this.url}/status`, details);
|
|
19
|
-
return (await this.sendCounting(url, details.config)) ?? 0;
|
|
20
|
-
}
|
|
21
|
-
async findAll(details) {
|
|
22
|
-
let status = [];
|
|
23
|
-
let url = this.buildRequestUrl(`${this.url}/status`, details);
|
|
24
|
-
if (details.limit) {
|
|
25
|
-
status = (await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${details.limit}&offset=${details.offset}`, details.config)) ?? [];
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
let limit = 5000, offset = 0, isEmpty = false;
|
|
29
|
-
do {
|
|
30
|
-
let values = await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${limit}&offset=${offset}`, details.config);
|
|
31
|
-
if (values)
|
|
32
|
-
status = status.concat(values);
|
|
33
|
-
isEmpty = values == undefined || values.length == 0;
|
|
34
|
-
offset += limit;
|
|
35
|
-
} while (!isEmpty);
|
|
36
|
-
}
|
|
37
|
-
return status;
|
|
38
|
-
}
|
|
39
|
-
buildRequestUrl(url, details) {
|
|
40
|
-
let suffix = `${details.id ? `&id=${details.id}` : ""}${details.status ? `&status=${details.status}` : ""}`;
|
|
41
|
-
return `${url}?${suffix.substring(1)}`;
|
|
42
|
-
}
|
|
43
|
-
create(details) {
|
|
44
|
-
return this.sendCreation(`${this.url}/status`, { status: details.status, details: details.details }, details.config);
|
|
45
|
-
}
|
|
46
|
-
createMany(details) {
|
|
47
|
-
return this.sendCreationMany(`${this.url}/status`, details.values ?? [], details.config);
|
|
48
|
-
}
|
|
49
|
-
modify(status) {
|
|
50
|
-
return this.sendModification(`${this.url}/status/${status.statusId}`, { status: status.status, details: status.details }, status.config);
|
|
51
|
-
}
|
|
52
|
-
destroy(status) {
|
|
53
|
-
return this.sendDestruction(`${this.url}/status/${status.statusId}`, status.config);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.StatusManager = StatusManager;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusManager = void 0;
|
|
4
|
+
const CrudServiceManager_1 = require("../CrudServiceManager");
|
|
5
|
+
class StatusManager extends CrudServiceManager_1.CrudServiceManager {
|
|
6
|
+
url;
|
|
7
|
+
constructor(url) {
|
|
8
|
+
super();
|
|
9
|
+
this.url = url;
|
|
10
|
+
}
|
|
11
|
+
find(details) {
|
|
12
|
+
return this.sendFinding(`${this.url}/status?status=${details.status}`, details.config);
|
|
13
|
+
}
|
|
14
|
+
findById(details) {
|
|
15
|
+
return this.sendFinding(`${this.url}/status?id=${details.id}`, details.config);
|
|
16
|
+
}
|
|
17
|
+
async count(details) {
|
|
18
|
+
let url = this.buildRequestUrl(`${this.url}/status`, details);
|
|
19
|
+
return (await this.sendCounting(url, details.config)) ?? 0;
|
|
20
|
+
}
|
|
21
|
+
async findAll(details) {
|
|
22
|
+
let status = [];
|
|
23
|
+
let url = this.buildRequestUrl(`${this.url}/status`, details);
|
|
24
|
+
if (details.limit) {
|
|
25
|
+
status = (await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${details.limit}&offset=${details.offset}`, details.config)) ?? [];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
let limit = 5000, offset = 0, isEmpty = false;
|
|
29
|
+
do {
|
|
30
|
+
let values = await this.sendAllFinding(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}limit=${limit}&offset=${offset}`, details.config);
|
|
31
|
+
if (values)
|
|
32
|
+
status = status.concat(values);
|
|
33
|
+
isEmpty = values == undefined || values.length == 0;
|
|
34
|
+
offset += limit;
|
|
35
|
+
} while (!isEmpty);
|
|
36
|
+
}
|
|
37
|
+
return status;
|
|
38
|
+
}
|
|
39
|
+
buildRequestUrl(url, details) {
|
|
40
|
+
let suffix = `${details.id ? `&id=${details.id}` : ""}${details.status ? `&status=${details.status}` : ""}`;
|
|
41
|
+
return `${url}?${suffix.substring(1)}`;
|
|
42
|
+
}
|
|
43
|
+
create(details) {
|
|
44
|
+
return this.sendCreation(`${this.url}/status`, { status: details.status, details: details.details }, details.config);
|
|
45
|
+
}
|
|
46
|
+
createMany(details) {
|
|
47
|
+
return this.sendCreationMany(`${this.url}/status`, details.values ?? [], details.config);
|
|
48
|
+
}
|
|
49
|
+
modify(status) {
|
|
50
|
+
return this.sendModification(`${this.url}/status/${status.statusId}`, { status: status.status, details: status.details }, status.config);
|
|
51
|
+
}
|
|
52
|
+
destroy(status) {
|
|
53
|
+
return this.sendDestruction(`${this.url}/status/${status.statusId}`, status.config);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.StatusManager = StatusManager;
|
|
57
57
|
//# sourceMappingURL=StatusManager.js.map
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from "axios";
|
|
2
|
-
import { CrudServiceManager, StandardIdRequestDefinition } from "../CrudServiceManager";
|
|
3
|
-
export interface IType {
|
|
4
|
-
typeId?: number;
|
|
5
|
-
type?: string;
|
|
6
|
-
details?: Record<string, Record<string, string> | string>;
|
|
7
|
-
updatedAt?: string;
|
|
8
|
-
createdAt?: string;
|
|
9
|
-
config?: AxiosRequestConfig;
|
|
10
|
-
}
|
|
11
|
-
export interface ITypeSearchDetails {
|
|
12
|
-
id?: string | number;
|
|
13
|
-
type?: string;
|
|
14
|
-
details?: any;
|
|
15
|
-
values?: IType[];
|
|
16
|
-
limit?: number;
|
|
17
|
-
offset?: number;
|
|
18
|
-
config?: AxiosRequestConfig;
|
|
19
|
-
}
|
|
20
|
-
export declare class TypeManager extends CrudServiceManager<ITypeSearchDetails, IType> {
|
|
21
|
-
private readonly url;
|
|
22
|
-
constructor(url: string);
|
|
23
|
-
find(details: ITypeSearchDetails): Promise<IType | undefined>;
|
|
24
|
-
findById(details: StandardIdRequestDefinition): Promise<IType | undefined>;
|
|
25
|
-
count(details: ITypeSearchDetails): Promise<number>;
|
|
26
|
-
findAll(details: ITypeSearchDetails): Promise<IType[] | undefined>;
|
|
27
|
-
private buildRequestUrl;
|
|
28
|
-
create(details: ITypeSearchDetails): Promise<IType | undefined>;
|
|
29
|
-
createMany(details: ITypeSearchDetails): Promise<IType[] | undefined>;
|
|
30
|
-
modify(type: IType): Promise<IType | undefined>;
|
|
31
|
-
destroy(type: IType): Promise<void | number>;
|
|
32
|
-
}
|
|
1
|
+
import { AxiosRequestConfig } from "axios";
|
|
2
|
+
import { CrudServiceManager, StandardIdRequestDefinition } from "../CrudServiceManager";
|
|
3
|
+
export interface IType {
|
|
4
|
+
typeId?: number;
|
|
5
|
+
type?: string;
|
|
6
|
+
details?: Record<string, Record<string, string> | string>;
|
|
7
|
+
updatedAt?: string;
|
|
8
|
+
createdAt?: string;
|
|
9
|
+
config?: AxiosRequestConfig;
|
|
10
|
+
}
|
|
11
|
+
export interface ITypeSearchDetails {
|
|
12
|
+
id?: string | number;
|
|
13
|
+
type?: string;
|
|
14
|
+
details?: any;
|
|
15
|
+
values?: IType[];
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
config?: AxiosRequestConfig;
|
|
19
|
+
}
|
|
20
|
+
export declare class TypeManager extends CrudServiceManager<ITypeSearchDetails, IType> {
|
|
21
|
+
private readonly url;
|
|
22
|
+
constructor(url: string);
|
|
23
|
+
find(details: ITypeSearchDetails): Promise<IType | undefined>;
|
|
24
|
+
findById(details: StandardIdRequestDefinition): Promise<IType | undefined>;
|
|
25
|
+
count(details: ITypeSearchDetails): Promise<number>;
|
|
26
|
+
findAll(details: ITypeSearchDetails): Promise<IType[] | undefined>;
|
|
27
|
+
private buildRequestUrl;
|
|
28
|
+
create(details: ITypeSearchDetails): Promise<IType | undefined>;
|
|
29
|
+
createMany(details: ITypeSearchDetails): Promise<IType[] | undefined>;
|
|
30
|
+
modify(type: IType): Promise<IType | undefined>;
|
|
31
|
+
destroy(type: IType): Promise<void | number>;
|
|
32
|
+
}
|