@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
- // Resolve or reject the promise
37
+ // Get the response
38
38
  const result = await promise;
39
- resolve(result);
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,8BAA8B;gBAC9B,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,gCAAgC;gBAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA7CD,8DA6CC"}
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;AAvED,oDAuEC"}
1
+ {"version":3,"file":"EncryptionMiddleware.js","sourceRoot":"","sources":["../../core/EncryptionMiddleware.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corsa-labs/sdk",
3
- "version": "3.15.1",
3
+ "version": "3.16.0",
4
4
  "description": "SDK for Corsa API",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",