@corsa-labs/sdk 3.15.1 → 3.16.0
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.
|
@@ -28,15 +28,17 @@ class EncryptedFetchHttpRequest extends FetchHttpRequest_1.FetchHttpRequest {
|
|
|
28
28
|
const middleware = this.encryptionMiddleware;
|
|
29
29
|
return new CancelablePromise_1.CancelablePromise(async (resolve, reject, onCancel) => {
|
|
30
30
|
try {
|
|
31
|
-
// Apply encryption middleware
|
|
31
|
+
// Apply encryption middleware to the request
|
|
32
32
|
const processedOptions = await middleware.processRequest(options);
|
|
33
33
|
// Call the parent request implementation with processed options
|
|
34
34
|
const promise = (0, request_1.request)(this.config, processedOptions);
|
|
35
35
|
// Handle cancellation
|
|
36
36
|
onCancel(() => promise.cancel());
|
|
37
|
-
//
|
|
37
|
+
// Get the response
|
|
38
38
|
const result = await promise;
|
|
39
|
-
|
|
39
|
+
// Apply decryption middleware to the response
|
|
40
|
+
const decryptedResult = await middleware.processResponse(result, options);
|
|
41
|
+
resolve(decryptedResult);
|
|
40
42
|
}
|
|
41
43
|
catch (error) {
|
|
42
44
|
reject(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedFetchHttpRequest.js","sourceRoot":"","sources":["../../core/EncryptedFetchHttpRequest.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAExD,yDAAsD;AAEtD,uCAAiD;AAEjD;;GAEG;AACH,MAAa,yBAA0B,SAAQ,mCAAgB;IACrD,oBAAoB,CAAwB;IAEpD,YACE,MAAqB,EACrB,oBAA2C;QAE3C,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACa,OAAO,CAAI,OAA0B;QACnD,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,OAAO,CAAI,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,wDAAwD;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAE7C,OAAO,IAAI,qCAAiB,CAAI,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAClE,IAAI,CAAC;gBACH,
|
|
1
|
+
{"version":3,"file":"EncryptedFetchHttpRequest.js","sourceRoot":"","sources":["../../core/EncryptedFetchHttpRequest.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAExD,yDAAsD;AAEtD,uCAAiD;AAEjD;;GAEG;AACH,MAAa,yBAA0B,SAAQ,mCAAgB;IACrD,oBAAoB,CAAwB;IAEpD,YACE,MAAqB,EACrB,oBAA2C;QAE3C,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACa,OAAO,CAAI,OAA0B;QACnD,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,OAAO,CAAI,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,wDAAwD;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAE7C,OAAO,IAAI,qCAAiB,CAAI,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;YAClE,IAAI,CAAC;gBACH,6CAA6C;gBAC7C,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAElE,gEAAgE;gBAChE,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAE5D,sBAAsB;gBACtB,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEjC,mBAAmB;gBACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAE7B,8CAA8C;gBAC9C,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,eAAe,CACtD,MAAM,EACN,OAAO,CACR,CAAC;gBAEF,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApDD,8DAoDC"}
|
|
@@ -37,6 +37,25 @@ export declare class EncryptionMiddleware {
|
|
|
37
37
|
* @returns Modified API request options with encrypted fields
|
|
38
38
|
*/
|
|
39
39
|
processRequest(options: ApiRequestOptions): Promise<ApiRequestOptions>;
|
|
40
|
+
/**
|
|
41
|
+
* Process an API response, automatically detecting and decrypting encrypted values
|
|
42
|
+
* @param responseData The response data from the API
|
|
43
|
+
* @param requestOptions Original request options (not used for auto-detection)
|
|
44
|
+
* @returns Response data with decrypted fields
|
|
45
|
+
*/
|
|
46
|
+
processResponse<T>(responseData: T, requestOptions: ApiRequestOptions): Promise<T>;
|
|
47
|
+
/**
|
|
48
|
+
* Recursively traverse data structure and decrypt any encrypted values found
|
|
49
|
+
* @param data The data to process
|
|
50
|
+
* @returns Data with encrypted values decrypted
|
|
51
|
+
*/
|
|
52
|
+
private recursivelyDecryptData;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a string value is in encrypted format
|
|
55
|
+
* @param value The string to check
|
|
56
|
+
* @returns true if the value appears to be encrypted
|
|
57
|
+
*/
|
|
58
|
+
private isEncryptedValue;
|
|
40
59
|
/**
|
|
41
60
|
* Extract an operation identifier from the request options
|
|
42
61
|
* @param options API request options
|
|
@@ -53,6 +53,69 @@ class EncryptionMiddleware {
|
|
|
53
53
|
}
|
|
54
54
|
return options;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Process an API response, automatically detecting and decrypting encrypted values
|
|
58
|
+
* @param responseData The response data from the API
|
|
59
|
+
* @param requestOptions Original request options (not used for auto-detection)
|
|
60
|
+
* @returns Response data with decrypted fields
|
|
61
|
+
*/
|
|
62
|
+
async processResponse(responseData, requestOptions) {
|
|
63
|
+
if (!responseData || typeof responseData !== 'object') {
|
|
64
|
+
return responseData;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
return await this.recursivelyDecryptData(responseData);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Log error but return original data to avoid breaking the response
|
|
71
|
+
console.warn('Response decryption failed:', error);
|
|
72
|
+
return responseData;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Recursively traverse data structure and decrypt any encrypted values found
|
|
77
|
+
* @param data The data to process
|
|
78
|
+
* @returns Data with encrypted values decrypted
|
|
79
|
+
*/
|
|
80
|
+
async recursivelyDecryptData(data) {
|
|
81
|
+
// Handle arrays
|
|
82
|
+
if (Array.isArray(data)) {
|
|
83
|
+
const processedArray = [];
|
|
84
|
+
for (const item of data) {
|
|
85
|
+
processedArray.push(await this.recursivelyDecryptData(item));
|
|
86
|
+
}
|
|
87
|
+
return processedArray;
|
|
88
|
+
}
|
|
89
|
+
// Handle objects
|
|
90
|
+
if (data && typeof data === 'object') {
|
|
91
|
+
const processedObject = {};
|
|
92
|
+
for (const [key, value] of Object.entries(data)) {
|
|
93
|
+
processedObject[key] = await this.recursivelyDecryptData(value);
|
|
94
|
+
}
|
|
95
|
+
return processedObject;
|
|
96
|
+
}
|
|
97
|
+
// Handle strings - check if encrypted and decrypt
|
|
98
|
+
if (typeof data === 'string' && this.isEncryptedValue(data)) {
|
|
99
|
+
try {
|
|
100
|
+
return await this.encryptionService.decrypt(data);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
// Log warning but return original encrypted value to avoid breaking the response
|
|
104
|
+
console.warn(`Failed to decrypt value starting with "${data.substring(0, 20)}...":`, error);
|
|
105
|
+
return data;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Return primitive values as-is
|
|
109
|
+
return data;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if a string value is in encrypted format
|
|
113
|
+
* @param value The string to check
|
|
114
|
+
* @returns true if the value appears to be encrypted
|
|
115
|
+
*/
|
|
116
|
+
isEncryptedValue(value) {
|
|
117
|
+
return typeof value === 'string' && value.startsWith('__enc__');
|
|
118
|
+
}
|
|
56
119
|
/**
|
|
57
120
|
* Extract an operation identifier from the request options
|
|
58
121
|
* @param options API request options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionMiddleware.js","sourceRoot":"","sources":["../../core/EncryptionMiddleware.ts"],"names":[],"mappings":";;;AAAA,0BAA0B;AAC1B,oBAAoB;AACpB,oBAAoB;AACpB,iEAKqC;AAsBrC;;GAEG;AACH,MAAa,oBAAoB;IACvB,MAAM,CAAuB;IAC7B,iBAAiB,CAAoB;IACrC,IAAI,CAAU;IAEtB;;;;;OAKG;IACH,YACE,MAA4B,EAC5B,iBAAoC,EACpC,IAAa;QAEb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CACzB,OAA0B;QAE1B,6DAA6D;QAC7D,IACE,OAAO,CAAC,IAAI;YACZ,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,EACvD,CAAC;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,IAAI,+BAAa,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,yCAAuB,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACtE,SAAS,EAAE,gCAAc,CAAC,OAAO;gBACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,aAAa;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,MAAM;oBACvC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,OAAO;gBACV,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,OAA0B;QACvD,gDAAgD;QAChD,8DAA8D;QAC9D,OAAO,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC;IAC7B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"EncryptionMiddleware.js","sourceRoot":"","sources":["../../core/EncryptionMiddleware.ts"],"names":[],"mappings":"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"}
|