@arrowsphere/api-client 3.180.0-rc.fdi.1 → 3.180.0-rc.fdi.10
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/build/axiosSingleton.d.ts +1 -8
- package/build/axiosSingleton.js +51 -31
- package/package.json +1 -1
|
@@ -18,12 +18,5 @@ export declare class AxiosSingleton {
|
|
|
18
18
|
* @param isLogging - Must log
|
|
19
19
|
*/
|
|
20
20
|
private static _handleResponse;
|
|
21
|
-
|
|
22
|
-
* @param request - Axios Request
|
|
23
|
-
*/
|
|
24
|
-
private static cleanRequestLog;
|
|
25
|
-
/**
|
|
26
|
-
* @param response - Axios Response
|
|
27
|
-
*/
|
|
28
|
-
private static cleanResponseLog;
|
|
21
|
+
private static sanitizeObject;
|
|
29
22
|
}
|
package/build/axiosSingleton.js
CHANGED
|
@@ -5,7 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AxiosSingleton = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
|
|
8
|
+
var DefaultObfuscateFields;
|
|
9
|
+
(function (DefaultObfuscateFields) {
|
|
10
|
+
DefaultObfuscateFields["API_KEY"] = "apiKey";
|
|
11
|
+
DefaultObfuscateFields["PASSWORD"] = "password";
|
|
12
|
+
DefaultObfuscateFields["AUTHORIZATION"] = "Authorization";
|
|
13
|
+
DefaultObfuscateFields["NEW_PASSWORD"] = "newPassword";
|
|
14
|
+
DefaultObfuscateFields["OLD_PASSWORD"] = "oldPassword";
|
|
15
|
+
})(DefaultObfuscateFields || (DefaultObfuscateFields = {}));
|
|
9
16
|
class AxiosSingleton {
|
|
10
17
|
static getInstance(configuration = {}) {
|
|
11
18
|
this._isLogging = !!configuration.isLogging;
|
|
@@ -29,7 +36,7 @@ class AxiosSingleton {
|
|
|
29
36
|
*/
|
|
30
37
|
static _handleRequest(request, isLogging = false) {
|
|
31
38
|
if (isLogging) {
|
|
32
|
-
console.info('AXIOS - Request : ', AxiosSingleton.
|
|
39
|
+
console.info('AXIOS - Request : ', AxiosSingleton.sanitizeObject(request));
|
|
33
40
|
}
|
|
34
41
|
return request;
|
|
35
42
|
}
|
|
@@ -39,39 +46,52 @@ class AxiosSingleton {
|
|
|
39
46
|
*/
|
|
40
47
|
static _handleResponse(response, isLogging = false) {
|
|
41
48
|
if (isLogging) {
|
|
42
|
-
console.info('AXIOS - Response : ', AxiosSingleton.
|
|
49
|
+
console.info('AXIOS - Response : ', AxiosSingleton.sanitizeObject(response));
|
|
43
50
|
}
|
|
44
51
|
return response;
|
|
45
52
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
53
|
+
static sanitizeObject(obj, fieldsToObfuscate = [
|
|
54
|
+
DefaultObfuscateFields.API_KEY,
|
|
55
|
+
DefaultObfuscateFields.PASSWORD,
|
|
56
|
+
DefaultObfuscateFields.AUTHORIZATION,
|
|
57
|
+
DefaultObfuscateFields.NEW_PASSWORD,
|
|
58
|
+
DefaultObfuscateFields.OLD_PASSWORD,
|
|
59
|
+
], seen = new WeakMap()) {
|
|
60
|
+
if (!obj || typeof obj !== 'object')
|
|
61
|
+
return obj;
|
|
62
|
+
// Vérifie si l'objet a déjà été traité (évite les boucles infinies)
|
|
63
|
+
if (seen.has(obj))
|
|
64
|
+
return seen.get(obj);
|
|
65
|
+
// Crée une copie de l'objet pour éviter de le modifier directement
|
|
66
|
+
const sanitizedCopy = Array.isArray(obj) ? [] : {};
|
|
67
|
+
// Stocke l'objet dans WeakMap avant la récursion
|
|
68
|
+
seen.set(obj, sanitizedCopy);
|
|
69
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
70
|
+
if (fieldsToObfuscate
|
|
71
|
+
.map((field) => field.toUpperCase())
|
|
72
|
+
.includes(key.toUpperCase())) {
|
|
73
|
+
let obfuscatedFields = '';
|
|
74
|
+
switch (key.toUpperCase()) {
|
|
75
|
+
case DefaultObfuscateFields.API_KEY.toUpperCase():
|
|
76
|
+
case DefaultObfuscateFields.AUTHORIZATION.toUpperCase():
|
|
77
|
+
obfuscatedFields =
|
|
78
|
+
'****************************' +
|
|
79
|
+
value.substring(value.length - 4);
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
obfuscatedFields = '***';
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
sanitizedCopy[key] = obfuscatedFields;
|
|
86
|
+
}
|
|
87
|
+
else if (typeof value === 'object' && value !== null) {
|
|
88
|
+
sanitizedCopy[key] = AxiosSingleton.sanitizeObject(value, fieldsToObfuscate, seen); // 🔄 Récursion avec WeakMap
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
sanitizedCopy[key] = value;
|
|
92
|
+
}
|
|
72
93
|
}
|
|
73
|
-
|
|
74
|
-
return tempResponse;
|
|
94
|
+
return sanitizedCopy;
|
|
75
95
|
}
|
|
76
96
|
}
|
|
77
97
|
exports.AxiosSingleton = AxiosSingleton;
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "git",
|
|
5
5
|
"url": "https://github.com/ArrowSphere/nodejs-api-client.git"
|
|
6
6
|
},
|
|
7
|
-
"version": "3.180.0-rc.fdi.
|
|
7
|
+
"version": "3.180.0-rc.fdi.10",
|
|
8
8
|
"description": "Node.js client for ArrowSphere's public API",
|
|
9
9
|
"main": "build/index.js",
|
|
10
10
|
"types": "build/index.d.ts",
|